Sync / roster

Workday Student to Canvas LMS LTI Roster Sync

WDCV Workday Student ──▶ Canvas LMS

Bidirectional sync of student roster and grade data between Workday Student and Canvas LMS using LTI Advantage.

TypeSync / roster
Indicative timeline3–6 weeks
ComplexityEnterprise
DeliveryFixed-scope
  • Real-time roster and grade synchronization between Workday Student and Canvas LMS
  • Automated enrollment updates via LTI Advantage reducing manual data entry
  • Improved student experience with accurate course rosters and timely grade posting
workday canvas lms lti roster grade sync integration higher-ed
How it works

This integration connects Workday Student, the university’s student information system, with Canvas LMS via the LTI Advantage standard, enabling automatic bidirectional sync of enrollment (roster) data and grade submissions. The implementation requires mapping Workday’s academic unit structures and term definitions to Canvas’s course and section models, handling differences in identity formats, and ensuring compliance with LTI 1.3/Advantage specifications. Complexity arises from the need to maintain data consistency across systems, manage asynchronous synchronization, and support legacy term calendars while preserving auditability of changes.

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.

Canvas exposes its LTI 1.3 Names and Roles Provisioning Service (NRPS) at a course-scoped URL. Workday invokes this with an OAuth 2.0 bearer token to pull the canonical enrollment payload:

# Canvas NRPS endpoint for a specific course (course_id = 84720000000001234)
GET https://university.instructure.com/api/lti/courses/84720000000001234/names_and_roles
Authorization: Bearer oauth2_access_token

# Response (JSON-LD per LTI 1.3 NRPS spec)
{
  "@context": "http://purl.imsglobal.org/ctx/lti/v2/namesandroleservice/v1",
  "@type": "Page",
  "id": "https://university.instructure.com/api/lti/courses/84720000000001234/names_and_roles",
  "context": {
    "@type": "CourseSection",
    "id": "84720000000001234",
    "label": "BIO-201-01",
    "title": "Molecular Biology"
  },
  "members": [
    {
      "status": "Active",
      "name": "Priya Mehta",
      "given_name": "Priya",
      "family_name": "Mehta",
      "email": "[email protected]",
      "user_id": "ab6f3e9f-8c2d-4e1a-b9f0-1d2e3f4a5b6c",
      "roles": ["http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor"]
    },
    {
      "status": "Active",
      "name": "Tyler Okonkwo",
      "given_name": "Tyler",
      "family_name": "Okonkwo",
      "email": "[email protected]",
      "user_id": "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f",
      "roles": ["http://purl.imsglobal.org/vocab/lis/v2/membership#Learner"]
    }
  ]
}

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 integration syncs student enrollments and grade passback between Workday Student (the system of record) and Canvas LMS using LTI 1.3 Advantage, specifically the Assignment and Grade Services (AGS) and Names and Role Provisioning Service (NRPS). The architecture treats Workday as the authoritative source; Canvas grades flow back via LTI AGS for学籍 reconciliation.

Implementation Phases

  1. Discovery & API Scoping — Enumerate Workday Student web services (REST or SOAP), identify relevant business events (enrollment, drop/add, section changes), and confirm Canvas instance LTI registration endpoints. Map Workday student identifiers to Canvas user_id format (typically sis_user_id or lms_id).
  2. LTI 1.3 Platform Registration — Register Canvas as an LTI 1.3 platform in Workday (or vice versa). Configure OAuth 2.0 public/private keyset, deployment_id, and JWKS endpoint. Validate the LTI 1.3 launch handshake in a sandbox environment.
  3. Names and Role Provisioning Service (NRPS) Setup — Enable NRPS on the Canvas tool registration. Configure Workday to expose the /learning/courses/{courseId}/roster equivalent endpoint. Implement the OAuth bearer token retrieval flow for NRPS calls from Canvas to Workday.
  4. Grade Passback (AGS) Configuration — Configure Assignment and Grade Services so Canvas can POST grades back to Workday. Register the AGS lineitem endpoint. Map Canvas lineitem identifiers to Workday grade categories (assignments, exams, participation).
  5. Data Transformation Layer — Build a middleware or integration user (Workday EIB, Studio, or MuleSoft) that transforms Workday enrollment events into LTI-compatible JSON. Handle enrollment status codes (active, inactive, dropped) mapping to Canvas enrollment types.
  6. Testing & Parallel Run — Execute unit tests on field mappings, then integrate with Canvas test environment. Run a 30-day parallel sync comparing Workday roster counts against Canvas enrollment reports. Validate grade passback accuracy for a pilot course section.
  7. Cutover & Validation — Switch the production LTI registration, disable legacy SIS import methods, and run a full reconciliation comparing Workday enrollment counts, section rosters, and grade totals against Canvas output reports.

Field Mapping

Workday Student FieldCanvas LTI/NRPS FieldNotes
Student_IDuser_id (or sub)Must match sis_user_id in Canvas user provisioning
Academic_Periodcontext.labelTerm identifier for scoped roster queries
Course_Section_IDcourse_idMaps to Canvas section or course enrollment
Enrollment_StatusstatusActive → Active; Dropped → Inactive
Role_CoderoleStudent, Instructor, TeachingAssistant per NRPS spec
Assignment_Identifierlineitem.idAGS grade lineitem; unique per course
Numeric_GraderesultScorePosted via AGS POST /lineitems/{id}/results

Edge Cases

  • Cross-listed sections — A single Workday section maps to multiple Canvas courses; duplicate enrollment pushes must de-duplicate on the Workday side to avoid grade conflicts.
  • Retroactive drops — A drop processed after the term ends may not trigger a real-time webhook; schedule a nightly delta compare against Canvas enrollments.
  • Incomplete grade passback — Canvas may POST a grade before the Workday assignment record exists; queue these with a status: pending flag and retry after Workday assignment creation.
  • Mid-term role changes — A student promoted to TA mid-semester must update both role and grade visibility permissions in Canvas.
  • Identifier mismatches — Workday Student_ID formats (numeric vs. alphanumeric) must normalize to the sis_user_id pattern configured in Canvas or the sync fails silently.

Cutover

Cutover requires a reversible, reconciled handoff. First, run a full export of current Canvas enrollment data as a rollback snapshot. Enable the LTI production registration and point Workday to the live AGS/NRPS endpoints, but retain the legacy SIS import as a shadow fallback for 48 hours. Execute a three-way reconciliation: compare Workday enrollments, Canvas live roster, and the pre-cutover snapshot. Any discrepancies exceeding a 0.1% threshold trigger an alert and hold on grade passback until resolved. Document the rollback procedure — disabling LTI registration and re-enabling manual SIS import — and require a sign-off from the registrar before closing the cutover window.

What a full implementation includes

  • Canonical mapping between Workday Student and Canvas LMS, 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–$60,000
Contact us