Middleware

PeopleSoft Campus Solutions ↔ Brightspace LMS Roster and Grade Sync

PSBD Oracle PeopleSoft Campus Solutions ──▶ Brightspace (D2L)

Middleware layer enabling bidirectional PeopleSoft Campus Solutions roster enrollment and LTI-based grade passback synchronization with Brightspace LMS.

TypeMiddleware
Indicative timeline4–8 weeks
ComplexityHigh
DeliveryFixed-scope
  • Automated section enrollment sync from PeopleSoft to Brightspace courses on enrollment changes
  • LTI 1.3 compliant roster provisioning using NRPS with near-real-time delta sync on adds/drops
  • Bidirectional grade passback supporting LTI AGS for instructor grade submissions back to PeopleSoft
lms sis roster-sync lti grade-passback higher-ed oracle peoplesoft brightspace d2l
How it works

This middleware integration connects Oracle PeopleSoft Campus Solutions to Brightspace (D2L) by exposing PeopleSoft enrollment data through an LTI 1.3 tool registration pipeline that provisions course sections and roster memberships in Brightspace's org unit hierarchy. When a student enrolls or drops a course section in PeopleSoft, the middleware translates the enrollment event, maps PeopleSoft's STRM term and CLASS_NBR to Brightspace course offerings, and pushes the updated roster via the Names and Roles Provisioning Service (NRPS). After an instructor posts grades in Brightspace, the middleware invokes the Assignment and Grade Services (AGS) to write final grades back into PeopleSoft's grade table, completing a closed-loop academic workflow.

The hardest part of this integration is reconciling the data model mismatch: PeopleSoft models enrollment at the CLASS_NBR level with multiple enrollment statuses (enrolled, dropped, waitlisted), while Brightspace uses org units with direct enrollments that lack a native waitlist concept. The middleware must transform effective-dated enrollment records, handle term cross-references for multi-term programs, and manage instructor assignments as Brightspace instructors. Institutions running both systems often have years of historical enrollment data that can conflict during initial sync, requiring a phased cutover strategy.

Free reference snippet

Yours to use

A working piece from this integration — no sign-up. The full build handles the edge cases, safeguards, and cutover.

// Middleware: PeopleSoft Enrollment → Brightspace Enrollment Mapping
// Trigger: PS_CLASS_TBL enrollment changes via Integration Broker

// 1. Inbound payload from PeopleSoft (REST/Webhook)
{
  "EMPLID": "01458932",
  "CRSE_ID": "CS-201-01",
  "TERM": "2024-FALL",
  "CLASS_NBR": "45678",
  "ENROLL_STATUS": "E",
  "STRM": "2440",
  "CRSE_GRADE_OFF": "A"
}

// 2. Middleware resolves Brightspace org unit and user identifiers
orgUnitId = resolveBrightspaceOrgUnit(CRSE_ID, TERM)
userId = resolveBrightspaceUser(EMPLID)

// 3. Outbound call to Brightspace LMS API
POST https://{brightspace-domain}/d2l/api/lp/1.43/enrollments/
Content-Type: application/json
Authorization: Bearer {D2L_API_TOKEN}

{
  "OrgUnitId": orgUnitId,      // e.g., 67890
  "UserId": userId,          // e.g., 12345
  "RoleId": "Learner",     // Student role = 3
  "IsCancelled": false
}

// 4. Grade Passback via LTI Assignment and Grade Service
POST https://{brightspace-domain}/d2l/api/grades/1.43/{orgUnitId}/grades/
{
  "GradeObjectType": "Numeric",
  "Name": "CS-201-01 Final Exam",
  "ShortName": "FINAL",
  "MaxPoints": 100,
  "CanExceedMaxPoints": false
}

// LTI Grade Passback (AgsService) - sent back to PeopleSoft
POST {LineItem.url}/lineitems/{lineItemId}/scores
{
  "userId": "https://lms.example.edu/d2l/api/lp/1.43/users/{userId}",
  "gradeGiven": 92,
  "timestamp": "2024-12-15T14:30:00Z",
  "activityProgress": "Submitted",
  "gradingProgress": "FullyGraded"
}

Implementation pathway

Step by step

How we'd take this from discovery to a production-safe cutover — the phases, the canonical mapping, and the edge cases that bite.

This implementation pathway covers the middleware integration between Oracle PeopleSoft Campus Solutions and Brightspace LMS, enabling automated roster synchronization and LTI-based grade passback. The solution uses PeopleSoft Integration Broker as the source of truth for enrollment data, a middleware layer for transformation and orchestration, and Brightspace's Data Sets API for roster management combined with LTI Advantage for grade synchronization.

Implementation Phases

  1. Environment Assessment and Credential Procurement — Validate access to PeopleSoft Integration Broker (IB) domain configuration, confirm Brightspace API credentials with LMS admin, establish middleware runtime environment, and review current enrollment data structures in STDNT_CAR_TERM and CLASS_TBL.
  2. PeopleSoft Web Services Configuration — Enable and configure Integration Broker in PeopleSoft; create asynchronous service operations for enrollment events (STUDENT_ENROLLMENT message); expose STUDENT_REGISTRATIONS component interface for bulk extraction; configure target connectors for HTTP-based middleware consumption.
  3. Middleware Transformation Layer Development — Build integration flows in the chosen middleware (MuleSoft, Boomi, or custom); implement PeopleSoft XML-to-JSON transformation; construct Brightspace Data Sets payload structure; develop error handling with dead-letter queues for failed transformations.
  4. Brightspace Roster Import Configuration — Configure Brightspace org unit structure (offerings and sections hierarchy); set up CSV async import for enrollment via /d2l/api/lp/<version>/import/; map PeopleSoft term codes (STRM) to Brightspace semester identifiers; test with synthetic enrollment records.
  5. LTI Advantage Grade Passback Setup — Register PeopleSoft as an LTI 1.3 Tool Provider in Brightspace; configure lineitem creation scope for grade columns; implement assignment grade sync endpoint receiving LineItem and Result POSTs; validate JWT token exchange with Brightspace's platform OAuth2 endpoint.
  6. Full Load and Delta Sync Validation — Execute initial bulk roster load for current term; compare enrollment counts between ENRL_ACTIVITY and Brightspace section rosters; validate LTI grade passback for sample assignments; log discrepancies for reconciliation.
  7. User Acceptance Testing and Cutover — Conduct parallel-run with manual enrollment for one test section; verify dropped students reflect within sync interval; confirm grade updates propagate back to PeopleSoft grading tables; switch production flag and monitor for 72-hour stability window.

Canonical Field Mapping

PeopleSoft Field Brightspace Payload Path Notes
STDNT_ENRL.EMPLID Users[].OrgId or Enrollments[].UserId Primary student identifier; may require crosswalk to Brightspace's internal user ID via /d2l/api/lp/<ver>/users/
STDNT_ENRL.STRM OrgUnits[].Code parent reference Academic term; 4-digit format (e.g., 1241 for Fall 2024); maps to Brightspace semester OfferingCode
CLASS_TBL.CRSE_ID Offerings[].Code Course identifier from course catalog; stripped of spaces and special chars for Brightspace compatibility
STDNT_ENRL.CLASS_NBR Sections[].Code Unique class number per term; forms Brightspace section code as CRSE_ID-CLASS_NBR
STDNT_ENRL.STDNT_ENRL_STATUS Enrollments[].IsActive Map E (enrolled) to true; D (dropped) to false; exclude W (withdrawn)
STDNT_ENRL.CLASS_ROLE Enrollments[].Role STUDENT or INSTRUCTOR; instructor role maps to Brightspace section enrollment type Teacher
STDNT_CRSE_VW.CRSE_GRADE_OFF GradeObjects[].FinalGradeValue (via LTI) Posted to LTI lineitem; ensure letter-to-numeric mapping if Brightspace uses weighted scales

Edge Cases

  • Double enrollment across term variants — Students repeating a course in consecutive terms may have duplicate EMPLID + CRSE_ID entries; Brightspace section matching must include STRM to prevent incorrect roster additions.
  • Section cross-listings — PeopleSoft CRSE_ID with multiple CLASS_NBR values (split sections) must map to a single Brightspace section or instructor receives duplicate grade columns; validate with academic scheduling team.
  • LTI grade score type mismatch — Brightspace may expect decimal while PeopleSoft CRSE_GRADE_OFF contains letter grades; implement grade translation table before posting to LTI resultScoreMaximum.
  • Mid-term section merges — If PeopleSoft consolidates sections post-enrollment, Brightspace sections retain orphaned enrollments; middleware must detect CLASS_NBR changes and re-map enrollments.
  • Late enrollment processing lag — Bulk nightly sync may miss students added within 24 hours of grade submission; configure PeopleSoft IB to trigger real-time enrollment events for high-stakes courses.
  • Grade rollback in PeopleSoft — If an instructor corrects a grade post-sync, LTI does not support grade updates without re-submission; middleware must track ltiResult.sourcedId to resubmit corrected values to the same lineitem.

Cutover

Cutover requires a reversible migration strategy to protect academic records. Before switching to automated sync, export current Brightspace enrollment rosters as a snapshot and store alongside PeopleSoft STDNT_ENRL extract. Configure middleware to operate in shadow mode for the first production term—validating data without writing—then compare counts by section and resolve discrepancies in PeopleSoft before committing. Implement a cutover hold period of 48 hours during which manual enrollment in PeopleSoft remains authoritative; if corruption occurs, disable Brightspace grade passback, restore rosters from the snapshot, and re-enable sync after identifying the failing record. All automated operations must write audit logs to INTEGRATION_LOG (PeopleSoft) and Brightspace API audit endpoints with timestamps, record counts, and error codes for post-incident reconciliation.

What a full implementation includes

  • Canonical mapping between Oracle PeopleSoft Campus Solutions and Brightspace (D2L), to the field level.
  • The edge cases that corrupt data at cutover — identified, handled, and tested.
  • Production-safe rollout: reversible, phased, with reconciliation checks.
  • Handover documentation your team can operate from.

Build this against your estate

Reading the reference is free. Delivering it under liability — with the safeguards that keep production running through the cutover — is what we do.

$15,000–$35,000
Contact us