{"id":"d47bfdb1-0790-4779-99b8-052c7adb1183","task":"Resolve sourcedId conflicts when the same logical user or class appears with different sourcedIds across multiple OneRoster providers","domain":"imsglobal.org","steps":["Establish a canonical identity layer in your system that maps provider sourcedIds to an internal entity ID; never use a provider sourcedId as your primary key.","Use demographic matching (given name + family name + date of birth + grade level) to detect probable duplicates across providers; flag matches above a configurable confidence threshold for human review.","Prefer the district SIS sourcedId (typically from a Clever or ClassLink roster) as the canonical anchor; treat LMS-originated sourcedIds as secondary references.","Store the full provenance set — provider name, sourcedId, last seen timestamp — for each entity so conflicts can be audited and manually overridden.","When a new provider introduces a sourcedId that fuzzy-matches an existing entity, emit a conflict event to an admin queue rather than automatically merging; auto-merge only when an exact shared external identifier (e.g., state student ID, NCES school ID) exists.","Publish a deduplication report after each sync cycle showing new conflicts detected, auto-merged records, and human-pending conflicts for governance sign-off."],"gotchas":["Name-based matching fails for students with legal name changes or nicknames; always include a government-issued or SIS-assigned unique ID in the matching criteria when available.","Two providers may legitimately assign different sourcedIds to the same section if one represents the master section and the other a linked lab section; check section-type metadata before merging.","Merging identities that later turn out to be different students causes data corruption that is difficult to unwind; prefer a low false-positive merge threshold and invest in human-review tooling."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","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:44:33.807Z"},"url":"https://mcp.waymark.network/r/d47bfdb1-0790-4779-99b8-052c7adb1183"}