Sync / roster
Synchronizes user identities and entitlements from Okta into SailPoint Identity Governance for automated provisioning and compliance.
This integration synchronizes user identities and attributes from Okta into SailPoint Identity Governance using a secure API loop, enabling automated provisioning and access certification.
Challenges include handling divergent attribute schemas, managing delta-sync vs full-sync cycles, and ensuring latency-sensitive updates for privileged accounts without disrupting SSO flows.
A working piece from this integration — no sign-up. The full build handles the edge cases, safeguards, and cutover.
Okta pushes users via SCIM 2.0 provisioning; SailPoint maps incoming attributes to identity fields for provisioning and access certification.
// Okta → SailPoint: POST /scim/Users (SCIM 2.0 payload) { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "externalId": "00u3kl9wqr7QxgpLO0g7", "userName": "[email protected]", "name": { "givenName": "John", "familyName": "Smith", "formatted": "Smith, John" }, "displayName": "John Smith", "emails": [{ "primary": true, "value": "[email protected]" }], "active": true, "title": "Software Engineer", "department": "Engineering", "groups": [{ "value": "Engineering", "display": "Engineering" }] }
| Okta Attribute | SailPoint Identity Attribute | Notes |
|---|---|---|
userName | email | Used as identity alias |
name.givenName | firstName | |
name.familyName | lastName | |
department | attribute.department | Used in role mining |
title | attribute.title | Used in access risk scoring |
groups[].value | memberOf | Mapped to entitlement sources |
active | inactive | Triggers deprovisioning workflow |
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 near-real-time sync from Okta to SailPoint Identity Governance that pulls user identities, group memberships, and application assignments so SailPoint can manage provisioning workflows, access certifications, and compliance reporting against a unified identity store.
https://{yourOrg}.okta.com). Confirm which user attributes are populated: userName, email, displayName, department, title, employeeType, managerId.userName or externalId to SailPoint's identity.name.Active, Terminated) to Okta user status transitions (ACTIVE, SUSPENDED). Configure Provisioning Targets: HTTP POST to https://{org}.okta.com/api/v1/users/{userId}/lifecycle/activate.GET /api/v1/users?limit=200) and compare against SailPoint aggregated identities (Reports → Identity Summary). Reconciliation criteria: userName match, email match, entitlement count parity per user.| Okta Attribute | SailPoint Identity Attribute | Transform / Notes |
|---|---|---|
user.login (userName) |
identity.name |
Direct map; used as correlation key |
profile.email |
identity.email |
Direct map |
profile.displayName |
identity.displayName |
Direct map |
profile.department |
identity.department |
Direct map; used in role assignment rules |
profile.title |
identity.title |
Direct map |
profile.manager.value |
identity.manager |
Resolve Okta user ref to SailPoint identity.name |
group.value |
identity.entitlements |
Map each Okta group to an entitlement with entitlement.type = "group" |
status |
identity.lifecycle |
Map ACTIVE → ACTIVE; SUSPENDED/DEPROVISIONED → TERMINATED |
userName across Okta orgs will corrupt SailPoint correlation. Enforce uniqueness constraints before enabling the source.managerId references, orphaning reporting relationships.urn:okta:profile:sourceAttribute) must be explicitly mapped in the Identity Profile; unmapped attributes are dropped silently.email from another source, the Okta aggregation may create a duplicate identity instead of merging, violating identity uniqueness rules.Make cutover reversible by retaining the Okta aggregation source in passthrough mode (aggregate only, no provisioning) for 30 days post-go-live. Export a daily identity snapshot from SailPoint (Admin → Identities → Export) and compare counts and attribute values against the prior day's Okta extract. Reconciliation criteria: identity count delta ≤ 0.1%, status attribute match ≥ 99.5%, entitlement count parity per user. If reconciliation fails, roll back the source to active aggregation and halt all downstream provisioning workflows pending root-cause analysis. Re-enable the original Okta provisioning workflows from the rollback snapshot taken at cutover initiation.
Reading the reference is free. Delivering it under liability — with the safeguards that keep production running through the cutover — is what we do.