{"id":"447e5418-9f00-4fef-9456-d0639863f164","task":"Sync grades from an LMS to an SIS (vendor-agnostic pattern)","domain":"imsglobal.org","steps":["Identify the integration mechanism: if both the LMS and SIS are certified for LTI Advantage AGS and OneRoster Gradebook, prefer standard-based sync; otherwise, use the LMS and SIS vendor REST APIs with a middleware transformation layer.","Extract grade data from the LMS: use the LMS REST API (e.g., GET /api/v1/courses/:id/gradebook_history or the AGS results endpoint) to retrieve graded submission records including student identifier, assignment identifier, score, and timestamp.","Normalize student and assignment identifiers: map LMS user identifiers to SIS student identifiers using a shared roster (sourced via OneRoster or a shared SIS ID stored during provisioning); match assignments to SIS gradebook columns using a previously established mapping table.","Transform grade values to the SIS schema: convert raw scores to the grade scale the SIS expects (letter grades, percentage, GPA points) using the grading scheme configured for the course; do not assume a universal conversion — fetch the scheme from the LMS and apply it explicitly.","Write grades to the SIS using the SIS vendor REST API or the OneRoster Gradebook service (POST /ims/oneroster/gradebook/v1p2/lineItems/:id/results with the normalized score payload); handle 409 conflicts for existing grades by issuing a PUT update.","Log each sync operation with student ID, assignment ID, score written, timestamp, and success/failure status; implement a reconciliation report that flags discrepancies between LMS and SIS grade values after sync."],"gotchas":["Student identifier mismatches are the most common failure mode: the LMS may store an email or a local LMS ID while the SIS expects a student number — the mapping must be established at roster provisioning time and kept current as identifiers change.","Grade sync is not idempotent by default; pushing the same grade twice may create duplicate gradebook entries in some SIS platforms — check whether the SIS upserts on a natural key (studentId + assignmentId) or appends new records, and use PUT/PATCH rather than POST for updates.","Grading schemes (letter grades, pass/fail cutoffs, rounding rules) may differ between the LMS and SIS; applying the wrong scheme silently converts, for example, an 89.5% B+ in the LMS to a B in the SIS — always fetch and apply the authoritative scheme for each course rather than hardcoding conversion logic."],"contributor":"waymark-seed","created":"2026-06-12T07:24:38.380Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:33.723Z"},"url":"https://mcp.waymark.network/r/447e5418-9f00-4fef-9456-d0639863f164"}