Sync / roster
Real-time bidirectional sync of student records, course enrollments, and grade data between Unit4 and PeopleSoft Campus Solutions using middleware orchestrations.
This integration establishes a bidirectional sync between Unit4 Student Information System and PeopleSoft Campus Solutions, enabling institutions migrating between these platforms to operate in dual-write or coexistence mode. The challenge lies in reconciling differing data models (Unit4's multi-entity structure vs. PeopleSoft's setID and academic organization hierarchy) while maintaining referential integrity for students, courses, sections, and enrollment transactions across both systems.
How we'd take this from discovery to a production-safe cutover — the phases, the canonical mapping, and the edge cases that bite.
Implement a bidirectional sync between Unit4 Student Information System and Oracle PeopleSoft Campus Solutions, exchanging student demographics, course enrollments, and grade data via middleware orchestrations with conflict resolution for overlapping source-of-truth scenarios.
PS_STUDENT_TABLE, PS_PERSON, PS_STDNT_CARGR, and PS_ENROLLMENT. Map Unit4 entity endpoints and webhook subscriptions. Document authentication requirements (OAuth 2.0 for Unit4; Integration Broker security for PeopleSoft). Identify data ownership boundaries: which system holds authoritative record for each entity type.STUDENT_ID, PERSON_NAME, ENROLLMENT_STATUS, GRADE_VALUE, and associated effective-dates. Resolve type mismatches (e.g., PeopleSoft uses EMPLID as the primary key; Unit4 uses student_uuid). Create a cross-reference table mapping each system's surrogate keys to a shared identifier.student.demographics.changed, enrollment.created, grade.posted. Implement idempotent message processing using correlation IDs to prevent duplicate inserts. Configure dead-letter queues for failed transformations.PS_INT_STG_STUDENT). Validate data integrity before posting to production tables via Component Interface. Run parallel mode for 30 days, comparing record counts and field-level diffs. Do not enable bidirectional flow until error rate drops below 0.1%.CRSE_ID, TERM, and EMPLID composite key.LASTUPDDTTM (PeopleSoft) against updated_at (Unit4). For grade conflicts, enforce PeopleSoft as authoritative and log discrepancies. Execute a big-bang cutover with a 48-hour freeze window, followed by a 14-day hypercare period with hourly reconciliation reports.| Concept | Unit4 Identifier | PeopleSoft Identifier | Notes |
|---|---|---|---|
| Student Primary Key | student_uuid |
EMPLID |
Cross-reference table required |
| Student Name | person.name.formatted |
PS_NAMES.NAME |
Parse into NAME_PREFIX, NAME_FIRST, NAME_LAST |
| Enrollment Status | enrollment.status |
PS_STDNT_ENRL.STATUS |
Map "active" ↔ "E", "withdrawn" ↔ "W" |
| Course Identifier | section_uuid |
CRSE_ID + CRSE_OFFER_NBR |
Composite key on PeopleSoft side |
| Grade Value | grade.posted_value |
PS_STDNT_CARGR.GRADE_POINTS |
PeopleSoft uses numeric; handle letter-grade mapping |
| Academic Term | term.code |
STRM |
Four-digit term code (e.g., 2241) |
| Last Modified Timestamp | updated_at |
LASTUPDDTTM |
Used for conflict resolution |
null, the middleware must map explicitly to PeopleSoft's placeholder rather than clearing the field.Cutover requires a full reversible path. Before the go-live window, export a snapshot of both systems' student, enrollment, and grade tables. Deploy the sync middleware in "shadow mode" for 72 hours prior: all transformations execute but writes are suppressed, and a diff report highlights any records that would diverge. At cutover, enable writes in a graduated ramp: first 10% of active students for 4 hours, then 50% for 8 hours, then 100%. Maintain a rollback script that re-imports the pre-cutover snapshots and disables the middleware listeners. Run reconciliation queries hourly for the first 48 hours, comparing aggregate counts by term, enrollment status, and grade distribution histograms. If reconciliation error rate exceeds 0.5%, pause the sync and investigate before resuming.
Reading the reference is free. Delivering it under liability — with the safeguards that keep production running through the cutover — is what we do.