Integration
Batch-migrate student enrollment, demographic, and academic-record data from Jenzabar CX into Workday Student using staged ETL with pre- and post-migration validation.
Institutions sunsetting Jenzabar CX need a structured, repeatable path to land core student data in Workday Student. This engagement extracts enrollment, program-enrollment, academic-unit affiliation, and biographical data from Jenzabar's relational snapshot, applies a canonical transformation layer that resolves term codes, student identifiers, and status semantics, then bulk-loads the result via Workday's integration tools.
The hard part is bridging two fundamentally different data models: Jenzabar's term structure uses a four-digit term code (e.g., 202410) while Workday models academic periods as dated ranges, and identifier policies often conflict when both systems share a campus Active Directory. Historical data quality—missing GPAs, duplicate addresses, inactive programs—must be Cleansed and audited before any load, and a rollback strategy is required for go-live rollback without data loss.
A working piece from this integration — no sign-up. The full build handles the edge cases, safeguards, and cutover.
-- Jenzabar CX: Extract student enrollment for Workday staging SELECT stu.SGBSTDN_PIDM AS Source_System_ID, stu.SGBSTDN_ID AS Student_Identifier, enr.SZFSTDN_TERM_CODE AS Academic_Period, enr.SZFSTDN_STSP_KEY AS Enrollment_Status, CASE enr.SZFSTDN_STSP_KEY WHEN 'E' THEN 'Active' WHEN 'W' THEN 'Withdrawn' WHEN 'G' THEN 'Graduated' ELSE 'Unknown' END AS Workday_Status_Term, stu.SGBSTDN_SURNAME AS Last_Name, stu.SGBSTDN_FIRST_NAME AS First_Name, GETDATE() AS Extract_Timestamp FROM SGBSTDN stu INNER JOIN SZFSTDN enr ON stu.SGBSTDN_PIDM = enr.SZFSTDN_PIDM WHERE enr.SZFSTDN_TERM_CODE = :migration_term AND stu.SGBSTDN_MAJR_CODE IS NOT NULL AND enr.SZFSTDN_SEQNO = ( SELECT MAX(e2.SZFSTDN_SEQNO) FROM SZFSTDN e2 WHERE e2.SZFSTDN_PIDM = stu.SGBSTDN_PIDM AND e2.SZFSTDN_TERM_CODE = enr.SZFSTDN_TERM_CODE );
How we'd take this from discovery to a production-safe cutover — the phases, the canonical mapping, and the edge cases that bite.
Batch migration of student enrollment, demographic, and academic-record data from Jenzabar CX into Workday Student requires staged ETL with validated staging tables, deterministic ID resolution, and a reversible cutover plan. The following pathway assumes Jenzabar CX relational schema (J1/JIS modules) and Workday Student cloud tenant with full-incremental load capability.
STUDENT, STU_ADDR, STU_COHORT, STU_ENROLL, STU_CRS_GRD, and DEGREE_AWARDED. Extract data dictionaries and confirm which columns are active versus soft-deleted. Validate that STUDENT_ID is the stable primary key and document any legacy ID ranges used for mergers or test accounts that must be excluded.stg_WD_Student, stg_WD_Enrollment, stg_WD_AcademicRecord. Load Jenzabar extracts as read-only source snapshots with an etl_batch_id and source_extract_ts stamp on every record.StudentHCM and AcademicRecord payload objects; write to the staging target table; and emit a row-count manifest to the etl_manifest control table.STUDENT_ID, malformed email addresses, missing program affiliations, and duplicate NationalID values. Flag records for analyst review before they enter the migration queue.WorkerID and StudentReferenceID mappings and persist them in etl_id_map for downstream linking.| Jenzabar CX Field | Workday Student Object | Workday Student Field | Transform Rule |
|---|---|---|---|
STUDENT_ID |
Worker / Student | StudentWorkerID |
Pass-through; must be unique in Workday. Reject duplicates. |
SSN |
National ID | National_ID_Number |
Encrypt in staging; map to Workday US_SSN ID type; suppress in logs. |
FIRST_NAME || MIDDLE_NAME || LAST_NAME |
Student | Name (Primary) |
Parse into Legal_Name_Data components; apply title-case normalization. |
ADDR_LINE_1/2, CITY, STATE, ZIP |
Student Contact | Address_Data |
Map ADDR_TYPE = 'M' to Workday Home address usage. |
STU_ENROLL.CAMPUS + STU_ENROLL.ACAD_TERM |
Academic Record | AcademicPeriodReference |
Join to Workday AcademicPeriod dimension by term code; default to Fall/Spring if ambiguous. |
STU_ENROLL.ENROLL_STATUS |
Enrollment | EnrollmentStatus |
Map Jenzabar codes ('A' → 'Enrolled', 'D' → 'Withdrawn', 'G' → 'Graduated') to Workday EnrollmentStatusType. |
STU_CRS_GRD.CRED_HRS |
Academic Record | CreditsAttempted |
Numeric coercion; default null to 0; flag negative values as data error. |
CUM_GPA |
Academic Record | CumulativeGPA |
Decimal(5,3); reject values outside 0.000–4.000; populate only for students with completed terms. |
STUDENT_ID across different campuses. These must be split before load or Workday will reject the inbound payload.STU_ENROLL rows with no corresponding STUDENT record must be held and reported; loading them creates unresolved foreign-key breaks in Workday.AcademicPeriod entries. An unmapped term will cause the enrollment record to be rejected.NAME_CHANGE rows in Jenzabar require a "latest-wins" rule. If the staging load captures an intermediate row, Workday will reject the duplicate name entry.AcademicRecord must exist before Enrollment is committed. Loading enrollments in parallel across ETL packages will produce integration failures.DEGREE_AWARDED. If a student's graduation date is future-dated in Jenzabar, do not set Workday AcademicLevelCompletion until the cutover date passes; premature setting triggers degree-conferral workflows.Cutover begins with a Jenzabar CX read-only gate: notify the registrar to close registration and halt grade entry, then extract a final delta snapshot covering any records changed since the last staging load. Run the full ETL sequence under a transactional wrapper; if any domain job fails, abort the batch and roll back the Workday inbound commits using the etl_id_map snapshot taken before the run. Once all three domains (students, enrollments, academic records) commit successfully, compare the etl_manifest row counts against Workday audit log counts and against the final Jenzabar source extract totals. Reconcile any delta; investigate any record missing from Workday before declaring the migration complete. Retain the Jenzabar snapshot and staging tables for 30 days post-cutover to support retroactive corrections via supplemental Workday inbound integrations.
Reading the reference is free. Delivering it under liability — with the safeguards that keep production running through the cutover — is what we do.