TTechclick ⚡ XP 0% All lessons
Okta · Identity & Access · SCIM ProvisioningInteractive · L1 / L2 / L3

Okta Provisioning & SCIM — OIN, Lifecycle & Group Push

Okta provisioning automates the create-update-deactivate lifecycle using SCIM 2.0, with thousands of pre-built connectors in the Okta Integration Network and a clear model for outbound, inbound and group sync. This lesson maps exactly how a user appears in Okta and automatically lands — and later disappears — from every connected app.

📅 2026-06-20 · ⏱ 15 min · 4 infographics · live block demo · 🏷 10-Q assessment + AI Tutor inline

⚡ Quick Answer

Learn how Okta uses SCIM and the OIN to automate lifecycle provisioning — outbound and inbound user sync, group push, attribute mappings — in one clear, interactive guide (2026).

🎯 By the end you will be able to

Read as:

Pick where you want to start

1

SCIM & the OIN

What SCIM does and why OIN matters.

2

Outbound provisioning

Push users & groups from Okta to apps.

3

Inbound & mappings

Sync from external sources, map attributes.

4

Lifecycle & Group Push

Full CRUD path, group sync, deactivate.

🧠 Warm-up — 3 questions, no score

Just notice which ones make you pause. We answer all three inside the lesson.

1. Does Okta use its own proprietary protocol for provisioning?

Answered in SCIM & the OIN.

2. Which directory holds pre-built provisioning connectors for thousands of apps?

Answered in SCIM & the OIN.

3. What does 'Group Push' do?

Answered in Lifecycle & Group Push.

Most engineers think…

Most people treat provisioning as 'just turning on a toggle in Okta'. In practice, you need to understand the SCIM resource model, the difference between outbound and inbound sync directions, attribute mapping precedence, and why Group Push can silently overwrite entitlements if misconfigured.

Okta provisioning is a bidirectional pipeline built on SCIM 2.0. The OIN gives you pre-built connectors; attribute mappings decide what flows; and Group Push keeps entitlements consistent. Understanding each layer is what separates a clean, audit-ready directory from one full of ghost accounts.

① SCIM 2.0 and the Okta Integration Network

SCIM 2.0 (System for Cross-domain Identity Management) is the open REST standard that defines how identity providers push and receive user and group objects. Okta implements SCIM 2.0 as its core provisioning protocol: when Okta provisions a user to an app, it makes a SCIM POST /Users call; when it updates a user it sends a PATCH; when it deactivates it sends a PATCH setting active=false. No proprietary format, no custom scripts.

The Okta Integration Network (OIN) is the catalog of pre-built integrations. For provisioning, an OIN-listed connector already implements the required SCIM endpoints on the app side and has been tested by Okta. Enabling provisioning for an OIN app is a matter of entering the SCIM base URL, an auth token, and toggling the capabilities you need — Create Users, Update User Attributes, Deactivate Users, Group Push. The OIN removes weeks of custom connector work for the most common SaaS targets.

Figure 1 — SCIM provisioning loop
Okta fires SCIM REST calls for each lifecycle event — Create, Update, Deactivate — using the OIN connector or a custom SCIM endpoint.SCIM provisioning loopAssign usertrigger in OktaSCIM POSTcreate account in appSCIM PATCHsync profile updatesDeactivateactive=false on exit
Okta fires SCIM REST calls for each lifecycle event — Create, Update, Deactivate — using the OIN connector or a custom SCIM endpoint.
Quick check · Q1 of 10 · Remember

Which protocol does Okta use for provisioning user accounts to connected apps?

Correct: c. Okta implements SCIM 2.0 (System for Cross-domain Identity Management) as its provisioning protocol, using REST calls like POST /Users, PATCH, and DELETE to manage accounts in target applications.
👉 So far: Okta provisioning = SCIM 2.0 REST calls (POST/PATCH) + OIN pre-built connectors; write once in Okta, accounts appear in every assigned app automatically.

② Outbound provisioning — pushing from Okta to apps

Outbound provisioning flows from Okta (the IdP/authoritative source) into a target application. The Admin Console surfaces this as the To App tab under the app's Provisioning settings. Four capabilities can be toggled independently: Create Users (create the account in the app when a user is assigned), Update User Attributes (sync profile changes), Deactivate Users (disable the account when unassigned or deactivated in Okta), and Sync Password (for apps that support it).

Assignment is the trigger: a user or group is assigned to the app (directly or via a group rule), and provisioning fires. The Okta profile fields that flow to the app are controlled by the attribute mappings — each mapping names the Okta field, the app field and the direction/priority. You can use expressions (Okta Expression Language) to transform values, e.g. concatenating first and last name for a displayName field.

Common outbound pitfalls

Watch for conflicting mappings (two rules writing the same app field), deactivation not enabled (ghost accounts pile up), and sync delays on large directories — Okta queues provisioning tasks, so a bulk import can take time to flush.

Figure 2 — OIN: one IdP, many apps
The Okta Integration Network gives pre-built SCIM connectors to thousands of SaaS targets — no custom code needed per app.OIN: one IdP, many appsOkta IdPSCIM 2.0 engineSalesforceGoogle WorkspaceAWS SSOSlackServiceNowZoom
The Okta Integration Network gives pre-built SCIM connectors to thousands of SaaS targets — no custom code needed per app.
🔄
SCIM 2.0
tap to flip

Open REST standard for identity provisioning. Okta uses SCIM POST/PATCH/PUT to create, update and deactivate users and groups across connected apps.

🗂️
OIN
tap to flip

Okta Integration Network — a catalog of thousands of pre-built app integrations with tested SCIM connectors. Enable provisioning in minutes instead of writing custom code.

➡️
Group Push
tap to flip

Outbound sync that keeps Okta group memberships mirrored in the target app. Membership changes in Okta propagate within minutes. Standard group name/description only — no custom attributes.

🗺️
Attribute Mapping
tap to flip

Per-field rules in the Okta Profile Editor that control which Okta attributes flow to/from an app, the direction, and optional Expression Language transforms.

Name all four outbound capabilities

In an interview, list all four To App provisioning capabilities: Create Users, Update User Attributes, Deactivate Users, and Sync Password. Knowing that each is a separate toggle — and that Deactivate is the one most often forgotten — demonstrates production-level awareness, not just checkbox knowledge.

▶ Watch a new hire get provisioned end-to-end

How a single Okta assignment turns into a live account in a target app. Press Play for the happy path, then Break it to see the most common failure.

① AssignThe IT admin assigns the new hire to the CRM app in Okta (directly or via a group rule).
② SCIM POSTOkta fires a SCIM 2.0 POST /Users request to the CRM's SCIM endpoint, sending the mapped user attributes.
③ Account createdThe CRM creates the account, returns HTTP 201 with the new user's SCIM ID, and Okta links it internally.
④ Group Push syncOkta Group Push syncs the user's group membership to the CRM group, setting their role and entitlements.
Press Play to step through the new-hire provisioning path. Then press Break it.
Quick check · Q2 of 10 · Understand

What triggers outbound provisioning in Okta for a specific user?

Correct: b. Assignment is the trigger for outbound provisioning. When a user or group is assigned to an app in Okta, the provisioning engine fires a SCIM Create call to create the account in the target application.
👉 So far: Outbound (To App): Okta is master, assignment triggers Create; four capabilities — Create, Update, Deactivate, Sync Password — each toggled independently.

③ Inbound provisioning and attribute mappings

Inbound provisioning is the reverse: an external system (another IdP, an HR platform, or a custom app) pushes user records into Okta. Okta exposes its own SCIM 2.0 API so authoritative sources like Workday, BambooHR or a custom HRMS can create, update and deactivate Okta user accounts directly — making the HR system the master record and Okta the downstream consumer.

The From App tab in the Provisioning settings controls inbound capabilities: Import New Users and Profile Updates (pull records on a schedule or on demand), Import Groups (mirror app-side groups into Okta groups), and the Okta Profile Editor decides whether imported attributes can overwrite the Okta master profile or only fill in gaps (priority-based mapping). Inbound sync typically runs on a schedule — every few hours — or can be triggered manually from the Import tab.

Attribute mapping mechanics

Every provisioning integration has an attribute mapping table in the Okta Profile Editor. Each row maps an Okta Universal Directory attribute to the app attribute, specifies direction (To App / From App / Both / None), and can apply an Okta Expression Language transform. The mapping priority for multi-source environments determines which source wins when two systems try to write the same Okta attribute.

Figure 3 — Outbound vs inbound provisioning
Direction matters: outbound pushes from Okta to apps; inbound pulls from authoritative sources into Okta.Outbound vs inbound provisioningOutbound (To App)Okta is the masterPushes on assignmentControls: Create/Update/DeactivateAttribute map: Okta → AppInbound (From App)HR system is masterImports on schedule or demandControls: Import Users/GroupsAttribute map: App → Okta
Direction matters: outbound pushes from Okta to apps; inbound pulls from authoritative sources into Okta.
'Provisioning is just one direction' misconception

Provisioning is bidirectional. Outbound (To App) pushes from Okta to target apps. Inbound (From App) imports authoritative records from HR systems or external IdPs into Okta. Confusing direction in an exam or interview answer is a common error — always state 'which way the data is flowing and who is the master source'.

Quick check · Q3 of 10 · Apply

An HR system is the authoritative source for all employee records. Which Okta provisioning direction should you configure?

Correct: b. When an HR system is the master record, you configure inbound provisioning so the HR platform pushes or Okta imports user records from it. This makes the HR system the authoritative source and Okta the downstream consumer.
👉 So far: Inbound (From App): HR/external source is master, imports push records into Okta; attribute mapping table controls direction and priority per field.

④ Full lifecycle & Group Push

The Okta provisioning lifecycle follows the CRUD model with a twist on Delete: Create (user assigned to app → account created), Read/Import (import or sync pulls current state), Update (profile or group change triggers a SCIM PATCH), and Deactivate (unassign or deactivate in Okta → active=false in the app — Okta deliberately deactivates rather than deletes to preserve audit records in the target). A hard delete only happens if the app integration is configured to support it and the admin explicitly enables it.

Group Push is a dedicated outbound capability that syncs Okta groups — and their membership — to groups in the target app. Each pushed group maps to an app-side group (the mapping can be by name or by explicit rule). When a user joins or leaves the Okta group, the push syncs the membership change within minutes. Group Push does not support custom group attributes in Okta — only standard group name and description flow.

Lifecycle in an exam scenario

The key interview line: Okta deactivates, not deletes. A leaver whose Okta account is deactivated has their app accounts set to active=false via SCIM — access is cut but the account and audit trail remain. Deletion requires an explicit extra step and is usually governed by a retention policy, not the provisioning engine.

Figure 4 — Full lifecycle — hire to deactivate
The complete Okta provisioning lifecycle from new-hire assignment to leaver deactivation — Okta deactivates, never silently deletes.Full lifecycle — hire to deactivateHire / Assignuser added to appCreateSCIM POST accountUpdateprofile / group syncDeactivateactive=false on leave
The complete Okta provisioning lifecycle from new-hire assignment to leaver deactivation — Okta deactivates, never silently deletes.

Priya at a Pune-based fintech faces this

After enabling provisioning to their cloud CRM, former employees still appear as active users in the CRM weeks after their Okta accounts were deactivated.

Likely cause

The 'Deactivate Users' toggle was never enabled in the CRM app's Provisioning > To App settings.

Diagnosis

Check Admin Console > Applications > CRM app > Provisioning > To App — 'Deactivate Users' is OFF. Ghost accounts exist for every leaver since provisioning was first enabled.

Admin Console ▸ Applications ▸ [App] ▸ Provisioning ▸ To App
Fix

Enable 'Deactivate Users', save, then use the Import/Force Sync option to reconcile existing accounts. For each leaver already in Okta as Deactivated, trigger a manual provisioning push to deactivate them in the CRM.

Verify

Re-check the CRM — all former employees should now show as inactive/disabled. Run a Provisioning report in Okta to confirm deactivation events fired successfully.

Check provisioning logs, not assumptions

Okta records every SCIM call in System Log (event type: app.user.provision.*). When provisioning seems broken, read the System Log entry for the specific user and app — it shows whether the SCIM call succeeded, was rejected by the app, or was never sent. Never troubleshoot provisioning by looking only at the app side.

Quick check · Q4 of 10 · Analyze

A leaver's Okta account is deactivated. What happens to their accounts in provisioned apps by default?

Correct: c. Okta deactivates, not deletes. When a user is deactivated in Okta, the provisioning engine sends a SCIM PATCH with active=false to each connected app, cutting access while preserving the account and audit trail. Hard delete requires explicit additional configuration.
👉 So far: Okta deactivates (active=false), never silently deletes. Group Push syncs group membership to the app; standard attributes only — no custom group attributes.

🤖 Ask the AI Tutor

Tap any question — instant, scoped to this lesson. No login, no waiting.

Pre-curated from vendor docs + community Q&A, scoped to this lesson. For a live prod issue, paste your export into chat.techclick.in.

📝 Wrap-up assessment — six more

You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.

Q5 · Remember

Which setting in Okta controls what user attributes flow from Okta into a target app?

Correct: a. Attribute mappings in the Okta Profile Editor control which Okta Universal Directory fields flow to the app, in which direction, and with what optional transforms. The SCIM URL is just the endpoint; Group Push handles groups; System Log is read-only audit.
Q6 · Understand

When does Okta outbound provisioning fire for a user?

Correct: d. Assignment is the provisioning trigger. When a user (or a group containing the user) is assigned to an app, Okta fires a SCIM POST to create their account. Profile updates and deactivations also fire on subsequent changes.
Q7 · Apply

Former employees still appear active in a provisioned SaaS app after their Okta accounts are deactivated. Most likely cause?

Correct: c. If 'Deactivate Users' is OFF, Okta never sends the SCIM PATCH active=false to the app, so accounts remain active even after the Okta user is deactivated. This is the most common cause of ghost accounts in provisioned apps.
Q8 · Analyze

An HR platform is the authoritative source for all employee data. What provisioning architecture best matches this?

Correct: b. When an HR system is the authoritative source, inbound provisioning is the correct model: the HR platform (via SCIM or scheduled import) creates and updates Okta user accounts, making the HR system the master and Okta the downstream consumer.
Q9 · Evaluate

An interviewer asks how Okta handles a user who leaves the company. What is the most complete and accurate answer?

Correct: d. Okta deactivates, not deletes by default. The Deactivate Users capability sends SCIM PATCH active=false to each app, cutting access while keeping the account for audit purposes. Hard delete is a separate, explicit step not enabled by default.
Q10 · Evaluate

You need to mirror Okta group memberships into a cloud CRM app so that role assignments stay in sync automatically. Which feature should you use?

Correct: b. Group Push is the dedicated Okta feature for syncing Okta group memberships to app-side groups. When a user joins or leaves an Okta group, Group Push propagates the membership change to the mapped CRM group within minutes, keeping role entitlements in sync. Attribute mappings handle field-level data only, not group membership.
Lesson complete — saved to your profile.
Almost! You need 70% (7 of 10) — re-read the path that tripped you up and tap "Try again".

🧠 In your own words

Type one line: what is the difference between outbound and inbound Okta provisioning, and which one uses the HR system as master? Then compare with the expert version.

Expert version: Outbound provisioning flows from Okta (the master) into connected apps via SCIM — user changes in Okta propagate to each assigned application. Inbound provisioning is the reverse: an authoritative external system (like Workday or BambooHR) pushes records into Okta, making it the downstream consumer. When the HR system is the master, inbound provisioning is the correct model: the HR platform creates, updates and deactivates Okta accounts, and Okta then fans those changes out to every connected app via outbound provisioning.

🗣 Teach a friend

Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.

📖 Glossary

SCIM 2.0
System for Cross-domain Identity Management — the open REST standard Okta uses to automate Create, Update and Deactivate operations across connected apps.
OIN (Okta Integration Network)
Okta's catalog of thousands of pre-built app integrations with tested SCIM connectors, enabling provisioning without custom code for supported apps.
Outbound provisioning
Provisioning direction where Okta is the master — user and group changes in Okta flow to the target application via SCIM.
Inbound provisioning
Provisioning direction where an external system (e.g. an HR platform) is the master — it pushes records into Okta, which becomes the downstream consumer.
Group Push
An Okta outbound capability that mirrors Okta group memberships to groups in a target app, keeping role entitlements in sync automatically.
Attribute mapping
A per-field rule in the Okta Profile Editor controlling which Okta attribute maps to which app attribute, in which direction, and with optional Expression Language transforms.
Deactivate Users
A To App provisioning capability that sends SCIM PATCH active=false when a user is deactivated in Okta, cutting app access while preserving the account for audit.
Okta Expression Language
A transform syntax used in attribute mappings to manipulate values (e.g. concatenate, format, conditionally set) before they are sent to or stored from the app.

📚 Sources

  1. Okta Developer — Understanding SCIM and Okta provisioning concepts. developer.okta.com/docs/concepts/scim/
  2. Okta Help — Add SCIM provisioning to app integrations (To App and From App settings). help.okta.com/en-us/content/topics/apps/apps_app_integration_wizard_scim.htm
  3. Okta Developer — Build a SCIM provisioning integration — overview and OIN submission. developer.okta.com/docs/guides/scim-provisioning-integration-overview/main/
  4. Okta Help — SCIM app integrations — capabilities, Group Push and attribute mappings. help.okta.com/en-us/content/topics/apps/apps-about-scim.htm
  5. Okta Developer — Okta and SCIM Version 2.0 — endpoints and resource model. developer.okta.com/docs/api/openapi/okta-scim/guides/scim-20
  6. Okta Developer — Okta Classic Engine & Identity Engine API release notes 2026. developer.okta.com/docs/release-notes/2026/

What's next?

Provisioned? Next, go deep on Okta Workflows and Lifecycle Management hooks that trigger custom logic on user events — suspend, reactivate and custom on/off-boarding automations.