App Provisioning in Okta: Create, Update, Deactivate

App Provisioning in Okta: Create, Update, Deactivate

A plain-English guide to how Okta builds, changes and closes accounts inside your apps automatically: how each step works, what Okta actually sends, how to set it up, what can go wrong, and how to keep it safe.

Every working day, something quiet and important happens inside a company. A new person starts and needs accounts in a dozen apps. A colleague changes team and needs a different set of access and a corrected title in every system. Another person leaves, and every account they hold must be closed before the end of the day. If these three events are handled by hand, they are slow, they are forgotten, and mistakes pile up. If they are handled by a trusted automatic system, they happen in seconds, the same way every time, and leave a record.

Okta is one such system. Its job is to know who people are and what they should have, and then to make the apps match. The feature that does this is called provisioning, and its three core actions are create, update and deactivate. This guide explains all three from zero. Every new word is explained when it first appears, and each big idea comes with an everyday comparison. By the end you will know what Okta sends to an app, when it sends it, how to set it up, how to find the cause when something fails, and which habits keep the whole thing safe and tidy.

1Why Accounts Must Follow People

Signing in proves who someone is. It does not make sure the app has a correct account for them. That second job needs its own solution.

Two different problems

Single sign-on solves the problem of passwords. A person proves themselves once to Okta, and Okta tells each app who they are. But before any app can welcome a person, it usually needs a record for them: an account with a name, an email, a role and some settings. Single sign-on does not build that record. Somebody, or something, must create it, keep it correct as the person changes, and close it when the person leaves.

This second problem is called provisioning. The word comes from “provide”. The company provides each person with the accounts they need. The opposite word, deprovisioning, means taking those accounts away.

What happens without automation

In a company without automatic provisioning, each app has its own administrator or its own spreadsheet. When a new hire starts, someone sends a request to every app owner. Some respond in an hour, some in three days. The new hire spends the first week waiting. When the person changes team, nobody remembers to update their title or remove their old access. When they leave, a checklist is sent around, and one or two apps are always forgotten. Months later, an audit finds former employees with active accounts in systems that hold customer data.

Analogy

Think of a school that issues locker keys, library cards, lab passes and canteen accounts. If a clerk in each department handles its own list, a new student waits days to get everything, and a student who leaves may still hold a lab key for years. A central office that updates all lists at once, the moment a student joins, moves or leaves, is the idea behind provisioning.

Create
Build the account when a person needs it
Update
Keep details and access correct as things change
Deactivate
Close the account when access should end
i
Good to know

The three actions map to three moments in every working life: joining, moving and leaving. People in security and human resources often call them joiner, mover and leaver. Provisioning is the technical machinery behind those three moments.

2What Are Create, Update and Deactivate?

Three simple verbs describe everything an identity system needs to do to an account over its life.

Create

Create means making a new account in an app for a person who does not yet have one. Okta sends the app the facts it needs, such as name, email and role. The app builds the account and returns its own identifier for it. From that moment, the person can use the app, and Okta remembers which app account belongs to which Okta user.

Update

Update means changing an existing account when something about the person changes. Maybe they were promoted and their title changed. Maybe they moved to another office and their location changed. Maybe they got married and their last name changed. Okta notices the change in the central profile and sends the new values to each app that stores them.

Deactivate

Deactivate means switching an account off, so the person can no longer use it, while usually keeping the account’s data in the app. It happens when a person leaves the company, when they lose access to the app, or when an administrator decides so. Deactivation is the safe, reversible way to remove access. Deleting an account is a different and more drastic step, which we cover later.

ActionPlain meaningTypical trigger in OktaReversible?
CreateMake a new account in the appThe person is assigned to the app, directly or through a groupYes, by deactivating
UpdateChange details of an existing accountA mapped profile attribute changes in OktaYes, by changing it back
DeactivateSwitch the account offThe person is unassigned from the app, or deactivated in OktaYes, by reactivating

Joiner, mover, leaver

These three verbs line up with the three life events. A joiner triggers create. A mover triggers update, and sometimes also creates and deactivates, because a new team may bring different apps. A leaver triggers deactivate across every app at once. Designing provisioning means deciding, for each event, what should happen in each app.

Analogy

Think of a hotel guest record. Check-in creates the record. A change of room or a late checkout updates it. Check-out deactivates it, but the hotel keeps the folder for billing and audit. Provisioning gives every app the same kind of careful record keeping.

3How Okta Thinks About Provisioning

Okta treats itself as the source of truth for who people are, and treats each app as a place that must match.

Inside Okta, every person has one central profile in the Universal Directory, Okta’s list of people and their facts. Every app that Okta provisions gets its own separate record of that person, called the app user. The app user is Okta’s note about the person’s account in that specific app. It holds the app-specific facts, such as the app username and the app’s own identifier for the person, plus a status that says whether the account is working.

Two directions

Provisioning in Okta can flow in two directions, and each direction is switched on separately in the app’s settings.

Direction one

To the app

Okta is the boss. It pushes creates, updates and deactivations to the app. This is the direction this guide focuses on, and the one people usually mean by provisioning.

Direction two

To Okta

The app is the boss for some facts. Okta imports users and changes from the app, to find existing people and keep certain details in step.

The settings on the Provisioning tab

When an app supports provisioning, its page in the Admin Console shows a Provisioning tab. In the “to app” direction, the tab typically offers a short list of switches that correspond to the three core actions.

  • Create Users. When a person is assigned to the app, Okta creates their account in the app.
  • Update User Attributes. When a mapped profile fact changes in Okta, Okta sends the new value to the app.
  • Deactivate Users. When a person is unassigned from the app, or deactivated in Okta, Okta switches off their account in the app.
  • Sync Password. For some apps, Okta can also keep a password in step. This is an optional extra, and often avoided where single sign-on is in use.

The exact names and available switches depend on the app and on the Okta version. Some apps offer only some of the actions, depending on what the app itself supports.

Analogy

Imagine a central staff register that sends instructions to the offices of many branches. The “to app” direction is the register telling each branch to open a file, correct a file or close a file. The “to Okta” direction is a branch reporting back, “we already have a file for this person, here are its details”.

i
Remember

Assignment is the trigger for almost everything. A person who is not assigned to an app never gets an account created there by Okta, and a person who is unassigned has their account deactivated. Assignment is how Okta decides who belongs in each app.

4Ways to Get Accounts into Apps

Provisioning through Okta is one of several ways to create accounts. Seeing them together shows when each one fits.

MethodWho does the work?Handles create?Handles update?Handles deactivate?
Manual in each appAn app administratorYesOnly if rememberedOnly if remembered
Bulk file importAn administratorYes, onceNoNo
Just-in-time at first loginThe app, using the login messageYesAt later logins, if the app allowsNo
SCIM or native integrationOkta, calling the appYesYesYes
Custom workflow or scriptA program that you buildYesYesYes

Reading the table in plain words

Manual work is fine for tiny teams. Bulk import is good for a one-time move. Just-in-time creation, which builds the account when a person first logs in, is quick but it never closes accounts. The method in this guide, in which Okta itself calls the app to create, update and deactivate, is the only common method that covers the whole life of an account automatically. A custom workflow can do the same job for apps that lack a standard interface, but you must build and maintain it.

Best for

Full lifecycle control

Choose Okta provisioning when the app holds sensitive data, costs money per account, or must remove access quickly.

Best for

Quick start

Choose just-in-time when accounts hold little data and a slow cleanup of leavers is acceptable.

Best for

One-time moves

Choose a bulk import to load an existing list, and then switch to automatic provisioning.

Best for

Odd cases

Choose a custom workflow when an app has no standard interface but does have an interface of some kind.

Analogy

Think of how a restaurant seats guests. A host who writes names in a book is the manual method. A walk-in table filled at the door is just-in-time. A reservation system that books, changes and cancels tables across all restaurants of a chain is Okta provisioning. Only the last one keeps every table list correct without anyone remembering to clean up.

5Core Vocabulary You Must Know

Eighteen small words carry most of the meaning in this topic. Learn them once and every Okta provisioning screen becomes easier to read.

Idea

Provisioning

Creating, updating and removing accounts in apps so they match the people and access that the company intends.

Idea

Deprovisioning

Taking accounts or access away, usually by deactivating them, when they are no longer needed.

Record

Okta User

The central profile of a person in Universal Directory. It is the master from which app records are built.

Record

App User

Okta’s note about one person’s account in one app, with the app username, the app’s identifier and a status.

Trigger

Assignment

Linking a person, or a group of people, to an app. It is what tells Okta that an account should exist.

Standard

SCIM

System for Cross-domain Identity Management. A standard set of web requests for creating, reading, changing and closing accounts.

Link

Connector

The piece that lets Okta talk to one particular app. It may be a SCIM connection or a built-in integration.

Link

API

The set of web addresses and rules an app offers so other programs can work with it. Okta provisions through the app’s API.

Mapping

Attribute Mapping

The rules connecting a field in the Okta profile to a field in the app profile, such as work email to email.

Mapping

Profile Editor

The admin screen where profiles and mappings are defined and edited.

Master

Source of Truth

The one system trusted to hold the right value for a fact. Okta, an HR system or a directory may play this role.

Group

Push Groups

An Okta feature that creates matching groups in an app and keeps their membership in step with Okta groups.

Match

Matching

Deciding whether an account already exists in the app for an Okta user, usually by comparing username or email.

Match

Linking

Connecting an existing app account to an Okta user, so that Okta manages it from then on.

State

Status

The condition of an app user, such as pending, active, error or deprovisioned.

Queue

Provisioning Task

A waiting job that failed or needs attention, shown on a tasks page so an administrator can retry or fix it.

Limit

Rate Limit

A cap on how many requests an app accepts in a given time. Exceeding it causes temporary refusals.

Log

System Log

Okta’s searchable record of what happened, including provisioning attempts and their results.

Putting it together

Think of a head office that keeps a master list of staff, the Okta users. Each branch keeps its own local card for each person, the app users. A standard form, SCIM, lets the head office ask a branch to open, change or close a card. A rules sheet, the mapping, says which master-list fact goes to which box on the local card. The delivery is triggered by a posting order, the assignment.

6Architecture and Components

Provisioning involves a source of people, Okta’s engine, a connector, and the app itself, each with a clear job.

The architecture looks like a delivery chain. At the start is the place where facts about people first appear. In the middle is Okta, which collects, combines and decides. At the end is the app, which receives instructions and changes its own records. Between them, a connector translates Okta’s decisions into the language the app understands.

flowchart LR
    SRC["Source of people: HR system or directory"] --> UD["Okta Universal Directory"]
    UD --> GR["Groups and group rules"]
    GR --> AS["App assignments"]
    AS --> ENG["Okta provisioning engine"]
    UD --> MAP["Attribute mappings"]
    MAP --> ENG
    ENG --> CON["Connector: SCIM or native integration"]
    CON --> APP["Application accounts"]
    APP --> CON
    CON --> ENG
    ENG --> AU["App user records and status"]
    ENG --> LOG["System Log"]
    ENG --> TSK["Tasks for failed jobs"]
    
Figure 1. The chain from source of people to app account, with Okta’s engine in the middle.

The parts, one by one

The source of people. Many companies keep the original list of employees in an HR system or a directory. Okta imports from it, so the facts start in a trusted place.

Universal Directory. Okta’s central list. Each person has one profile here. Provisioning copies selected facts from this profile into app accounts.

Groups and rules. Groups collect people by team, role or place, and rules fill the groups automatically from profile facts. Groups are the usual way to decide who gets which apps.

App assignments. Assigning a group to an app tells Okta that every member should have an account there.

Attribute mappings. The rules that decide which profile facts are sent and how they are named and shaped for the app.

The provisioning engine. The part of Okta that watches for changes, decides what must be created, updated or deactivated, queues the jobs and records the results.

The connector. It turns each decision into a web request that the app understands, and reads the app’s reply. Where the app supports SCIM, this is a standard connector. Otherwise it may be a built-in integration made for that specific app.

The app user record. Okta stores the app account’s identifier and status, so that later updates and deactivations are sent to the right account.

Tasks and the System Log. Failures appear as tasks that an administrator can retry, and every attempt is recorded in the log.

!
Key point

Okta can only do what the app’s interface allows. If an app offers create and update but no way to deactivate, Okta cannot deactivate there. Always read what each connector supports before promising that leavers will be removed automatically.

Analogy

Think of a postal system. Letters start at a sender, pass through a central sorting office, and travel by a courier to the destination. The courier understands the destination’s rules. If the destination refuses a certain kind of parcel, the sorting office knows only because the courier reports it back.

7SCIM in Plain Words

SCIM is the most common way Okta talks to apps. Understanding it makes every provisioning message easier to read.

SCIM stands for System for Cross-domain Identity Management. It is a pair of public standards, numbered RFC 7643 and RFC 7644, that describe two things: what a user record should look like, and what web requests may be used to create, read, change and remove such records. Before SCIM, each app had its own private way of doing this, and every integration was custom work. With SCIM, an app that follows the standard can be provisioned by any identity system that also follows it.

Web requests in simple terms

An app that supports SCIM publishes a web address, often ending with the word “Users”. The identity system sends requests to this address, using a few common request types. Here is how they match the three actions.

Request typePlain meaningUsed for
Search or readAsk the app whether a user with a given username existsMatching before create
PostSend a new user record to be createdCreate
Patch or putSend changes to an existing user recordUpdate, and also deactivate
DeleteRemove the user record entirelyRarely used by Okta for deprovisioning

How deactivate works in SCIM

A SCIM user record has a field called “active”. It is true when the account works and false when it does not. When Okta deactivates an account, it normally sends a change that sets this field to false. The app keeps the record and its data, but blocks use. This is why deactivation is reversible: Okta can later set the field back to true.

The shape of a user record

A SCIM user record contains a few standard fields, such as a username, a name made of given and family parts, a list of emails, and the active flag. It can also carry extension fields for company-specific facts. Because the shape is standard, mapping between Okta’s profile and the app’s record becomes a matter of matching field names.

Authentication between Okta and the app

The app must know that requests really come from Okta. SCIM connections therefore use a credential, most often a long secret token that Okta presents with each request, or an OAuth-based credential that expires and is renewed. Keep these credentials safe, since anyone holding one can create and delete accounts.

i
Tip

Many popular apps come with a ready-made Okta connector that already knows their SCIM details, so you only fill in the base address and a credential. For an app that supports SCIM but has no ready connector, Okta offers a generic SCIM connector that you configure yourself.

Analogy

SCIM is like a standard order form used by all shops of an industry. The form has fixed boxes for name, address and status. Any head office that knows the form can place, change or cancel an order at any shop that accepts it, without learning each shop’s private paperwork.

8Create, in Detail

Creating an account looks like one step, but Okta actually performs several small checks to avoid mistakes and duplicates.

sequenceDiagram
    participant A as Administrator or Group Rule
    participant O as Okta Engine
    participant C as Connector
    participant P as Application
    A->>O: Assign the person to the app
    O->>O: Build the app profile from the mappings
    O->>C: Ask whether a matching user exists
    C->>P: Search for the username
    P-->>C: No match found
    C->>P: Create the user with the mapped attributes
    P-->>C: Success with the app's own identifier
    C-->>O: Report success
    O->>O: Save the app user with its identifier and status
    
Figure 2. A create request: Okta checks for a match first, and only then creates.
1

The person is assigned

A group rule places them in a group, and the group is assigned to the app. Or an administrator assigns them directly.

2

Okta checks the settings

The engine confirms that Create Users is switched on for the app, and that the person’s status allows creation.

3

Okta builds the app profile

It applies the mappings, turning the Okta profile into the set of facts the app expects. Required facts must be present.

4

Okta looks for an existing account

Before creating, it searches the app for a user with the same username. This avoids duplicate accounts when the person already exists.

5

If none exists, create

Okta sends the create request. The app builds the account and returns its own identifier for it.

6

If one exists, link

If the app already has a matching account, Okta can link to it instead of creating a second one, and then manage it from now on.

7

Okta saves the result

It stores the app user record with the identifier and the status. The person’s tile now works, and updates know where to go.

8

If it fails, Okta tells you

A failed create becomes a task. The reason is recorded, so an administrator can fix the cause and retry.

What the app does with the request

The app checks that required facts are present and valid, makes sure the username is unique, applies its own rules, such as license limits, and then creates the record. Some apps also send the new person a welcome email. Others place the account in a “pending” state until the person signs in for the first time. Know how your app behaves, so that the first-day experience is what you expect.

Analogy

A new library member is first looked up in the register to see whether a card exists. Only if none is found does the librarian make a new one. Looking before creating is the most important habit in provisioning, since it prevents the two-cards-for-one-person problem.

!
Common trap

Some apps charge for every account. Assigning a large group by mistake can create hundreds of paid accounts in minutes. Always check the size of a group before assigning it to a licensed app.

9Matching and Linking Existing Accounts

Most companies turn on provisioning for apps that already have users. Matching decides whether those people are recognized or duplicated.

Imagine an app with two hundred existing accounts that were created by hand over several years. You now switch on Okta provisioning and assign everyone. If Okta cannot recognize the old accounts, it creates two hundred new ones, or fails with errors, because the usernames are already taken. To avoid that, Okta compares the person’s profile with the app’s accounts, using one value as the match key, usually the username or email.

Two ways to bring old accounts under Okta’s control

  • Match during create. When Okta is about to create an account, it searches for an existing one with the same key, and links to it if found.
  • Import from the app first. Okta imports the app’s existing users into a staging list, matches each one to an Okta user using rules you set, and asks an administrator to confirm. Only confirmed matches are linked.

Why exactness matters

Matching is usually exact. A difference as small as a capital letter, a missing dot or a different email domain can make a match fail. For example, “sam.lee@example.com” and “samlee@example.com” look like two different people. Before a big rollout, export the app’s user list and compare it with Okta’s. Fix mismatches in advance, either in Okta or in the app.

SituationWhat Okta doesWhat you should do
Exact match foundLinks to the existing accountNothing, but spot-check a few
No match, new personCreates a new accountConfirm the person should have access
No match, but a similar account existsMay create a duplicate or failFix the key before assigning
Two Okta users match one app accountReports a conflictResolve the duplicate people in Okta first
App account has no matching Okta userLeaves it unmanagedDecide whether to remove or adopt it

Example: moving a chat tool under Okta

A company has 300 people in a chat tool, created by hand. The administrator first exports the tool’s user list and compares emails with Okta. Twelve people use old or personal emails. The administrator fixes those in the tool. Then provisioning is switched on, an import is run, and Okta matches 298 people automatically. Two leftover accounts belong to people who left long ago. The administrator confirms the matches and removes the stale accounts.

Analogy

It is like merging two address books. If you simply paste one into the other, many people appear twice with slightly different spellings. A careful merge first compares names, fixes spellings and only then combines the lists. Matching before provisioning is that careful merge.

10Attribute Mapping: Which Fact Goes Where

A mapping is a simple rule saying “this box in Okta feeds that box in the app”. Good mappings are the quiet heart of good provisioning.

Okta’s profile and the app’s profile are two different forms with different box names. The Okta form may say “department” and the app’s form may say “dept”. A mapping connects them. In the Profile Editor, each app has a mapping screen with two directions. The “Okta to App” mapping controls what Okta pushes out. The “App to Okta” mapping controls what Okta pulls in during imports.

Kinds of mapping

Simple

Direct copy

The Okta value is copied unchanged, such as first name to first name. Most mappings are of this type.

Built

Expression

The value is built from one or more facts using Okta’s expression language, such as joining first and last name into a display name.

Fixed

Constant

The same value is sent for everyone, such as a default role of “basic user”.

Off

Not mapped

The fact is not sent at all. Use this for fields the app should manage itself.

When a mapping applies

Each mapping has a setting for when it is used. One choice is “create and update”, which means the value is sent when the account is first made and again whenever it changes in Okta. Another choice is “create only”, which sends the value once, when the account is first made, and leaves it alone afterwards. Create-only is useful for facts that the app owner will edit later, such as a preferred display name or a local role.

App fieldOkta sourceApply whenWhy
UsernamePrimary emailCreate onlyA stable key must not change by accident
EmailPrimary emailCreate and updateThe app should follow email changes
First and last nameProfile namesCreate and updateNames change and apps should match
TitleJob titleCreate and updatePromotions should flow everywhere
DepartmentDepartmentCreate and updateMovers should reflect new teams
Default roleA fixed valueCreate onlyStart with minimum access, adjust in the app later

Who is the master of a fact?

For each fact, one system should be the master, which means its value wins. If Okta is the master of job title, the app’s title is overwritten at every update. If the app is the master, Okta imports the value instead. Two masters for one fact cause a tug of war in which each side keeps overwriting the other. Decide who is the master for each field, and map in only one direction.

!
Watch out

Never map a field that people can edit themselves into a role or permission field. If a person can change their own “department” and the app turns that into admin rights, someone will eventually give themselves more access than intended.

Analogy

A mapping is like a translation sheet between two forms. The head office form says “Surname” and the branch form says “Family name”. The sheet says which goes where and who has the final say on spelling. If both sides edit the same box, the spelling flips back and forth forever.

11Update, in Detail

People change all the time. Updates make sure each app keeps up without anyone remembering to type the change in twenty places.

flowchart TD
    A["A profile fact changes in Okta"] --> B{"Is the fact mapped to this app?"}
    B -->|"No"| X["No action for this app"]
    B -->|"Yes"| C{"Is Update User Attributes switched on?"}
    C -->|"No"| X
    C -->|"Yes"| D{"Is the mapping set to create and update?"}
    D -->|"No"| X
    D -->|"Yes"| E["Okta builds the new value from the mapping"]
    E --> F["Connector sends the change to the app"]
    F --> G{"Did the app accept it?"}
    G -->|"Yes"| H["Status stays active and the log records success"]
    G -->|"No"| I["A task appears with the reason"]
    
Figure 3. How a profile change turns into an update, or is skipped.

What triggers an update

An update starts whenever a mapped fact changes in the Okta profile. The change may come from an administrator editing the profile, from an HR system that Okta imports from, from a directory sync, or from the person themselves if you allow self-editing of certain fields. Okta compares old and new values, and only sends changes to apps that actually map the changed fact.

Changes that move people between apps

Some updates have a bigger effect than just a corrected value. If a person moves from Sales to Finance, a group rule may remove them from the Sales group and add them to the Finance group. Apps assigned only to the Sales group are then unassigned, which triggers deactivation there. Apps assigned to the Finance group are newly assigned, which triggers creation there. A single department change can therefore cause updates, creates and deactivations at the same time.

1

The change happens

HR records a promotion, or an administrator edits the profile.

2

Okta spots which facts differ

The engine compares the new profile with the old and lists the changed facts.

3

Group rules re-run

Group memberships update, which may change assignments to apps.

4

Okta prepares the messages

For each affected app, it builds the update, create or deactivate that the new situation needs.

5

The connector delivers

The messages go to the apps, usually within seconds to a few minutes, depending on the app and on load.

6

Results are recorded

Successes are logged. Failures become tasks to fix and retry.

Updates that do not stick

If you see an update sent successfully but the value in the app keeps changing back, an app owner or another integration is probably overwriting it. That means two masters exist for the fact. Settle who is in charge and map the fact in only one direction.

i
Tip

Test an update with one harmless change on one test user, such as a middle initial. Watch how long it takes to appear in the app and what the System Log says. That small test teaches you the real timing of your app.

Analogy

Think of a change of address. You tell the main post office once, and it forwards the news to each business that holds your address. If the post office knows which businesses care about addresses, only those are told. A change of job title does not need to bother the bank.

12Deactivate, in Detail

Closing accounts is the most important action for security, and the one most often handled badly. This chapter explains what really happens.

flowchart TD
    S["Reason to remove access"] --> R1{"Which reason?"}
    R1 -->|"Person unassigned from the app"| D1["Okta marks the app user for deactivation"]
    R1 -->|"Okta user deactivated"| D1
    R1 -->|"Group membership lost"| D1
    D1 --> Q{"Is Deactivate Users switched on?"}
    Q -->|"No"| N["Account stays active in the app. Manual cleanup needed"]
    Q -->|"Yes"| E["Connector tells the app to switch off the account"]
    E --> F{"Did the app confirm?"}
    F -->|"Yes"| G["App user status becomes deprovisioned"]
    F -->|"No"| H["A task appears with the reason"]
    
Figure 4. Three reasons for removal, one path, and one critical switch.

What causes deactivation

  • Unassigning a person from the app. If an administrator removes the assignment, Okta deactivates the account in the app.
  • Losing a group. If the person leaves the only group that gave them the app, they are no longer assigned, and the same thing follows.
  • Deactivating the Okta user. When a person leaves the company and their Okta user is deactivated, Okta deactivates their accounts in every provisioned app.

Deactivate versus delete

Beginners often mix these. Deactivate switches the account off but keeps it, with its data, in the app. Delete removes it completely. Okta’s usual behavior for leavers is to deactivate, not delete, because deactivation is reversible and keeps records that audits and handover work may need. Deletion, if wanted, is usually done later in the app itself, or through a separate process, after any retention period passes.

ActionEffect on the accountEffect on the dataReversible?
DeactivateCannot be usedKept in the appYes
DeleteRemoved completelyMay be lost, depending on the appUsually not
Remove license onlyAccount remains with limited featuresKeptYes

Things deactivation does not do

  • It may not end live sessions. A person already signed in to the app may stay signed in until the session expires.
  • It may not free the license. Some apps still count a deactivated account toward the paid seats until it is deleted or its license is removed.
  • It does not transfer work. Files, tickets and projects owned by the person stay with the deactivated account unless someone reassigns them.
  • It does not touch other sign-in paths. Saved passwords, access tokens and keys created inside the app may still work.
!
Security rule

Switching off Deactivate Users is the most dangerous setting on the page. With it off, leavers keep their accounts in the app until someone cleans up by hand. Keep it on for every provisioned app unless there is a written reason.

Analogy

When an employee leaves, the office cancels their badge so the doors no longer open for them. That is deactivation. The employee’s desk papers are still kept for a while, and a manager reviews them. That is the retained data. Shredding the papers at once, deletion, would be fast but could not be undone.

13Groups, Roles and Entitlements

Creating an account is only half the story. People also need the right role inside the app, and that role must be kept correct.

Assignment by group

The cleanest way to decide who gets an account is to assign apps to groups, not to individuals. Group rules place people in groups from their profile facts, so that a new person in the Sales department appears in the Sales group automatically. The Sales group is assigned to the sales apps, so provisioning creates the accounts. When the person leaves Sales, the opposite happens.

Roles inside the app

Many apps have their own roles, such as viewer, editor and admin. Okta can send a role as part of the create or update. There are three common patterns.

  • A fixed default role. Every new account starts with the lowest role. Extra rights are given inside the app, or through a separate request process.
  • A role chosen from a profile fact. The mapping turns a fact, such as job level, into a role. Use with caution, and only with facts that people cannot edit themselves.
  • A role chosen by assignment. Some connectors let you pick a role at assignment time, so different groups bring different roles.

Push Groups

Some apps have groups of their own, used to give permissions to many people at once. Okta’s Push Groups feature creates a matching group in the app and keeps its members in step with an Okta group. When someone joins the Okta group, they are added to the app’s group, and when they leave, they are removed. This lets the app’s permissions follow Okta’s group structure, with no manual work in the app.

NeedBest toolNote
Decide who has an accountAssignment of groups to the appControls create and deactivate
Set a starting roleA mapping with a fixed or derived valueKeep the default low
Keep app groups matching Okta groupsPush GroupsOkta stays the master of membership
Give extra rights for a short timeA request and approval processAvoids permanent over-access

Example: three-level access in a project tool

A project tool has viewer, editor and admin roles. The company creates three Okta groups with matching names and assigns each group to the app with a different role. Most people land in viewer or editor through department rules. Only a small, reviewed group reaches admin. When a person is moved between groups, provisioning updates their role automatically.

Analogy

At a conference, a badge gets you into the building, and a colored ribbon says what you may do inside. Provisioning issues both: the badge when you are created, and the ribbon when you are placed in a role. If the organizers change your ribbon in the main list, the ribbon at the door changes too.

14The Life of an App User

Each person’s account in each app moves through states. Knowing them helps you read the Admin Console and find stuck accounts.

flowchart LR
    NA["Not assigned"] -->|"Assign"| PE["Pending"]
    PE -->|"Create succeeds"| AC["Active"]
    PE -->|"Create fails"| ER["Error"]
    ER -->|"Fix and retry"| PE
    AC -->|"Profile change"| UP["Update sent"]
    UP --> AC
    AC -->|"Unassign or user deactivated"| DE["Deprovisioned"]
    DE -->|"Assign again"| PE
    
Figure 5. The states of an app user as Okta provisions and removes the account.
StateMeaningWhat to do
Not assignedThe person has no link to the appNothing, unless they should have access
PendingOkta is creating or has queued the accountWait a short time, then check for errors
ActiveThe account exists and worksNothing, this is the healthy state
ErrorA create or update failedRead the reason, fix it, then retry
DeprovisionedThe account was switched off by OktaReassign to bring it back, if intended

Reading a stuck account

A person who sits in the pending or error state for a long time needs attention. Open the app user record, read the last message, and look for a pattern. If one account is stuck, the cause is usually specific to that person, such as a duplicate username. If many accounts are stuck at once, the cause is usually shared, such as an expired credential or an app outage.

Analogy

A parcel tracking page shows stages: ordered, packed, shipped, delivered or failed. A parcel stuck at “packed” for days tells the warehouse to look at that parcel. The app user statuses give administrators the same kind of tracking view for each account.

15Setting Up Provisioning Step by Step

Here is a complete route from an app with no provisioning to one where create, update and deactivate all run on their own. Labels differ slightly between apps.

1

Confirm the app supports it

Read the app’s documentation, and Okta’s integration page for it. Note which of create, update, deactivate and group push are supported.

2

Prepare the app side

Create a dedicated service account or token in the app with only the rights needed to manage users. Never use a personal administrator login.

3

Add the app in Okta

Add the app integration, and set up single sign-on first, so people can sign in before accounts appear.

4

Enable the integration

Open the Provisioning tab, choose to configure the integration, and enter the app’s address and credential. Test the connection.

5

Choose the actions

Switch on Create Users, Update User Attributes and Deactivate Users. Add Sync Password only if you truly need it.

6

Review the mappings

Open the attribute mappings. Remove facts you do not need, set username to create-only, and make the default role the lowest.

7

Test with one person

Assign a test user. Confirm the account appears with the right details. Change a fact and watch the update. Unassign and watch the deactivation.

8

Handle existing accounts

Align usernames, then import and match existing users before assigning broad groups.

9

Assign in waves

Assign a small group first, then larger ones, checking the System Log and the tasks page after each wave.

10

Document and monitor

Write down the settings, the owner and the review dates, and set up alerts for failures.

i
Tip

Always test the three actions in order on a test user: create, update, deactivate. A setup that creates well but cannot deactivate looks fine on day one and becomes a security problem months later.

Analogy

Starting provisioning is like opening a new branch office. You first confirm the branch can receive orders, give it a dedicated key and not the manager’s personal key, send a few test orders of each kind, bring over the old customer cards, and only then start sending the whole customer list.

16The Other Direction: Importing from the App

Provisioning is not only pushing. Sometimes Okta must also listen, to learn about accounts that already exist in an app.

The “to Okta” direction brings information from the app into Okta. It has two main uses. The first is the user import, a one-time or scheduled read of all users in the app, used to find and match existing accounts. The second is profile updates from the app, in which certain facts that the app owns flow back into Okta’s profile.

How an import works

  • Okta asks the app for its list of users. The connector reads the list in pages, so it can handle large apps.
  • Okta tries to match each app user to an Okta user. Matching rules compare fields, such as username or email.
  • Okta shows the result for confirmation. Clear matches are listed, unmatched users are shown, and conflicts are flagged.
  • An administrator confirms. Confirmed matches become linked app users that Okta now manages.

When to use it

Use a first import whenever you move an app that already has users under Okta’s control. Use scheduled imports only for facts that the app truly owns. For most companies, Okta is the master of identity, so imports are mainly a clean-up tool at the start, and not a daily process.

!
Careful with automatic confirmation

Letting imports confirm and create Okta users automatically from an app is powerful, and risky. A messy or abused app list can flood Okta with unwanted users. Keep confirmation manual until you trust the data.

Analogy

Before a head office takes over a branch, it asks the branch for its customer list and compares it with the head office list. It then reports which customers are recognized, which are new and which look wrong. Only after that review does the head office start managing the branch’s cards.

17Choosing the Right Method for Each App

Not every app supports the same thing. A short decision path helps you choose a method without guessing.

flowchart TD
    A["App needs automatic accounts"] --> B{"Does Okta have a ready connector for it?"}
    B -->|"Yes"| C["Use the connector and map attributes"]
    B -->|"No"| D{"Does the app support SCIM?"}
    D -->|"Yes"| E["Use a generic SCIM connection"]
    D -->|"No"| F{"Does the app have any web interface for users?"}
    F -->|"Yes"| G["Build a workflow or custom integration"]
    F -->|"No"| H{"Does it support just-in-time creation at login?"}
    H -->|"Yes"| I["Use just-in-time and add a review for leavers"]
    H -->|"No"| J["Manual process with a documented checklist"]
    
Figure 6. A decision path from best to last-resort provisioning method.

Reading the path

The path runs from the strongest, most automatic option to the weakest. A ready connector is the best, since it already knows the app’s rules. A generic SCIM connection is next. A custom workflow works when the app has some interface but not a standard one. Just-in-time creation is a partial answer that handles creation only. A manual checklist is the last resort, and it needs an owner who runs it on every joiner, mover and leaver.

MethodCreateUpdateDeactivateEffort to set up
Ready connectorYesYesYesLow
Generic SCIMYesYesYesMedium
Custom workflowYesYesYesHigh
Just-in-timeYesSometimesNoLow
Manual checklistBy handBy handBy handLow, but costly forever
Analogy

Choosing a method is like choosing how to deliver parcels. A ready courier contract is the easiest. A standard shipping form works almost anywhere. A custom van route is possible but costs effort. Leaving parcels at the door and hoping, the just-in-time style, handles only arrivals. Carrying each parcel by hand is always possible and always slow.

18Data Flow, Timing, Retries and Limits

Provisioning is not instant magic. It is a queue of small jobs, sent to apps that have their own speed limits and moods.

Queues and order

When many people change at once, Okta places the work into a queue and sends jobs to each app at a measured pace. Jobs for the same person are kept in order, so that a create happens before an update. Jobs for different people may run in parallel. In normal conditions, a single change reaches the app in seconds. After a large change, such as assigning a big group, the queue may take minutes or hours to clear.

Rate limits

Most apps limit how many requests they accept in a given time, to protect themselves from overload. When Okta sends too many, the app replies “slow down”, and Okta waits and tries again. This is normal during large rollouts and is the main reason for staged assignment. A huge wave of assignments does not fail, but it can be slow and can use up the app’s allowance, which might block other tools that use the same quota.

Retries and idempotence

If a request fails for a temporary reason, such as a network blip, Okta retries it after a delay. A well-built connector is careful that repeating a request does not cause harm: creating the same user twice should not make two accounts. That safety is called idempotence. It is the reason Okta checks for an existing user before it creates one.

Typical response codes

App replyPlain meaningUsual causeFix
UnauthorizedThe credential was refusedExpired or revoked tokenCreate a new credential and update Okta
ForbiddenThe credential lacks the rightThe service account is too limitedGrant only the missing right
Not foundThe user or address does not existThe account was removed in the app, or the address is wrongReconcile the record, or correct the base address
ConflictThe user already existsUsername taken by another accountLink the existing account, or change the username
Bad requestThe data was not acceptableA required fact is missing or malformedFix the mapping or the profile value
Too many requestsThe app asks Okta to slow downA large wave of changesWait, or stage the rollout
Server errorThe app had a problemAn outage or a bug at the appWait and retry, then contact the vendor
Seconds
A single change usually reaches an app quickly
Minutes
A large wave may take longer to clear
Retry
Temporary failures are tried again automatically
Analogy

Think of a factory loading dock with one door. Trucks queue up, the dock handles a fixed number per hour, and a truck that arrives at the wrong moment waits and tries again. A big delivery needs spreading across the day. Provisioning to an app behaves the same way.

19Security of Provisioning

Provisioning holds the keys to every app’s user list. If that power is misused or stolen, an attacker can create accounts, change roles or lock people out. This chapter shows how to protect it.

Think about what provisioning can do. It can create accounts, write profile facts, set roles and switch accounts off, all without any person clicking inside the app. That is exactly what makes it useful, and exactly what makes it a target. The connection between Okta and each app is therefore a high-value path and deserves the same care as an administrator login.

The main risks

Risk

Stolen provisioning credential

An API token or secret for the app leaks. An attacker can then create admin accounts directly in the app, bypassing Okta completely.

Risk

Over-powerful service account

The credential can do far more than manage users, so a single leak exposes data and settings as well.

Risk

Unsafe mappings

A fact that people can edit themselves is mapped into a role, so users can give themselves more access.

Risk

Leavers left active

Deactivation is off, fails silently or is ignored, so former staff keep working accounts.

Risk

Rogue changes in Okta

Someone with Okta administrator rights changes assignments or mappings to grant access to themselves or a friend.

Risk

Orphan accounts

Accounts created directly in the app, outside Okta, are never touched by provisioning and are never removed.

The protections

  • Least privilege for the service account. Give the token only the rights needed to create, read, update and deactivate users. Do not use a personal super-admin login, which would also break when that person leaves.
  • Secure storage and rotation. Keep secrets only where Okta stores them. Rotate on a schedule, and immediately after any suspicion or after an administrator leaves.
  • Restrict where the credential works. If the app allows it, limit the token to Okta’s network addresses.
  • Small, named owners. Each app integration has a named owner who reviews settings on a schedule.
  • Protect Okta administrators. Require strong sign-in for anyone who can change assignments or mappings, and give each person only the administrator role they need.
  • Review mappings for risk. Make sure no self-editable fact decides a role.
  • Hunt for orphans. Regularly compare the app’s user list against Okta’s, and handle accounts that Okta does not know about.
  • Alert on sensitive events. Raise alerts when a provisioning credential changes, a mapping changes, or an admin role is assigned.
flowchart LR
    ADM["Okta administrator"] -->|"changes assignments and mappings"| OK["Okta provisioning engine"]
    OK -->|"uses stored credential"| APP["Application user store"]
    ATT["Attacker"] -.->|"steals credential"| APP
    ATT -.->|"phishes an administrator"| ADM
    OK --> LOG["System Log and alerts"]
    APP --> AUD["App audit trail"]
    LOG --> SEC["Security team review"]
    AUD --> SEC
    
Figure 7. Two attack paths against provisioning, and the logs that expose them.

Reading the picture

The solid lines show the normal flow: an administrator changes settings, Okta uses its stored credential, and the app’s user store changes. The dotted lines show where attackers aim. One goes straight to the app using a stolen credential. The other goes through an administrator, using phishing. Both leave traces in the logs, which is why the log arrows to the security team matter as much as the prevention.

!
Remember

Prevention is never perfect. Plan for detection too: a regular check that compares the people who should have access with the accounts that actually exist will catch what protections miss.

Analogy

Provisioning is like the locksmith who cuts and cancels keys for every door in a building. The locksmith’s tools need a locked cabinet, the shop needs a good lock, and the log of every key cut must be checked. A stolen locksmith’s toolkit is far worse than one stolen key.

20Monitoring, Logging and Troubleshooting

Provisioning runs quietly in the background, so you need ways to see what it did and to find out quickly when it did not work.

Where to look

PlaceWhat it showsBest used for
System LogEvery provisioning event with time, actor, target and resultFinding exactly what happened to one person
Tasks pageFailed or pending actions that need a personDaily clean-up of errors
App user recordThe status and last message for one person in one appChecking a single account
Provisioning tabThe connection test, switches and mappingsChecking configuration
App audit trailWhat the app itself recordedConfirming the app really changed
Reports and alertsSummaries and notificationsSpotting trends and early warnings

A calm way to troubleshoot

1

Name the symptom exactly

Which person, which app, which action: create, update or deactivate? One account or many?

2

Check the assignment

Is the person actually assigned, directly or through a group? Is the group rule placing them correctly?

3

Check the switch

Is the matching action switched on in the Provisioning tab?

4

Read the log

Find the event for that person. Read the result and the reason, which often names the exact problem.

5

Test the connection

If many accounts fail, test the connection. An expired credential is a very common cause.

6

Check the data

Look for missing required facts, duplicate usernames and values the app will not accept.

7

Fix, retry, confirm

Make one change, retry the task, and confirm in the app that the account is right.

Common problems and their usual causes

Symptom

Nothing is created

Create Users is off, the person is not assigned, or the connection is broken.

Symptom

Duplicate accounts

Existing accounts were never matched, or usernames differ in format.

Symptom

Values will not update

Update is off, the mapping is create-only, or another system overwrites the value.

Symptom

Leavers still active

Deactivate is off, the action failed, or the account was never linked to Okta.

Symptom

Many errors at once

Expired credential, an app outage or a rate limit during a large wave.

Symptom

Wrong role

The mapping gives a default role, and nobody adjusted it in the app or in the mapping.

i
Tip

Make “check the tasks page” a daily habit for one named person. Small problems that are cleared daily never grow into a crowd of stuck accounts.

Analogy

Troubleshooting is like finding why a parcel did not arrive. First you confirm the order was placed, then check the shipping label, then read the tracking history, and only then call the courier. Jumping to the courier first usually wastes time when the label was simply wrong.

Joiner, mover and leaver as a daily routine

Every provisioning decision fits one of three moments in a person’s working life. A joiner is someone new, who needs working accounts on the first morning. A mover is someone who changes team, title or place, who needs some accounts added, some changed and some removed. A leaver is someone who departs, who needs every account switched off promptly. Teams that design for all three moments, and not only for joiners, avoid the most common gap: a company that is excellent at welcoming people and poor at closing the door behind them.

Movers deserve special attention because they are the quiet source of excess access. A person who changes teams three times without losing old access ends up with the combined rights of every team they ever joined. Rule-driven groups fix this automatically, since leaving a group removes what the group granted. Without them, someone must remember to clean up, and people rarely remember.

Questions to ask before you switch provisioning on

  • Who owns the app? A named person must be able to say who should have access and in which role.
  • What is the source of truth? Decide whether HR, a directory or Okta itself holds the correct facts.
  • What happens to data when an account is closed? Agree whether files are transferred, kept or deleted, and who does it.
  • How will we know it failed? Choose who watches tasks, and which alerts reach them.
  • How do we undo it? Know how to stop provisioning, or restore a wrongly deactivated account, before it is needed.

Answering these questions takes an hour and prevents weeks of confusion. They also create the short document that auditors will ask for later, saying who approved access to the app, why, and how it is reviewed.

21Advantages, Disadvantages and Trade-offs

Provisioning is very valuable, but it is not free. A fair view lists both sides.

Advantages

  • New staff are productive on day one.
  • Leavers lose access quickly and consistently.
  • Profile facts stay correct in every app.
  • Admin and help desk work shrinks.
  • Audits become easier, with one record of who had what.
  • Licenses are reclaimed, saving money.
  • Roles are consistent, which reduces mistakes.

Disadvantages

  • Setup takes planning, testing and clean data.
  • Not every app supports it, or supports all three actions.
  • A mistake in a mapping spreads to many apps quickly.
  • The credentials are a high-value target.
  • Paid plans or licenses may be needed in some apps.
  • Troubleshooting needs knowledge of both Okta and the app.
  • Timing is not always instant.

Trade-offs to decide on purpose

Decision AAutomatic deletion or only deactivation?

Choice: Deactivate immediately, delete later after a retention period.

Why: Deactivation is reversible and keeps data for handover and audits. Deleting at once removes the safety net.

Cost: Some licenses stay used, and a clean-up process is needed.

Decision BOkta as master of all facts, or let apps own some?

Choice: Okta is the master of identity facts. Apps own only the facts that exist nowhere else.

Why: One master per fact prevents tug-of-war updates.

Cost: Teams must change facts in Okta or HR, not in each app.

Decision CFast rollout or staged waves?

Choice: Staged waves with checks between them.

Why: Problems show up on a small group, before they reach everyone, and rate limits are respected.

Cost: The full rollout takes longer.

Analogy

An automatic door saves effort for everyone who walks through, but it needs installation, power and maintenance, and a fault affects every visitor. Provisioning is the same trade: large, steady benefits for an upfront investment and a duty to keep it healthy.

22Patterns, Anti-patterns and Best Practices

Teams that run provisioning well tend to repeat the same habits. Teams that struggle tend to repeat the same mistakes.

Good patterns

Pattern

Group-based assignment

Assign apps to groups driven by rules, never to individuals, so access follows the profile.

Pattern

One source of truth

HR feeds Okta, and Okta feeds the apps. Facts flow in one direction.

Pattern

Lowest default role

New accounts start with minimum rights. More rights are requested and approved.

Pattern

Test user before rollout

Every setup is proved on a test user for create, update and deactivate.

Pattern

Staged waves

Small groups first, checks between waves, and the full rollout last.

Pattern

Regular reconciliation

A periodic comparison of Okta against each app catches orphans and drift.

Anti-patterns to avoid

Avoid

Personal admin credential

It breaks when the person leaves, and it carries too much power.

Avoid

Deactivate switched off

Creating accounts without removing them builds a growing risk.

Avoid

Two masters for one fact

The value flips back and forth, and nobody trusts either system.

Avoid

Everyone in the admin role

A broad default role makes every compromise serious.

Avoid

Big-bang assignment

Assigning thousands at once hides problems and floods rate limits.

Avoid

Ignoring the tasks page

Errors pile up until a leaver or a new hire is affected.

A short checklist

  • Does each provisioned app have a named owner and a documented setup?
  • Are Create, Update and Deactivate all tested and switched on?
  • Is the service account limited to user management?
  • Is every field mapped in only one direction?
  • Do group rules, not people, decide assignments?
  • Is someone reading the tasks page daily?
  • Is there a regular check for orphan accounts?
Analogy

Good habits in a kitchen are small and boring: label the food, wipe the counter, check the fridge. Provisioning habits are the same. None is exciting, but together they stop the problems that turn into emergencies.

23Performance, Scale and Availability

A company of fifty people and a company of fifty thousand both need provisioning, but the second needs more care about volume and failure.

Scale: many people, many apps

The total work grows with the number of people times the number of apps. A company with ten thousand people and thirty apps may handle hundreds of thousands of accounts. Most of the time, changes arrive slowly and steadily, which is easy. The pressure comes in bursts: a merger, a yearly reorganization, a large hiring wave or a new app being rolled out to everyone.

  • Use group rules. They scale because one rule decides thousands of assignments.
  • Stage big changes. Spread large moves over hours or days, outside peak work times.
  • Keep mappings lean. Fewer mapped fields mean smaller messages and fewer failure points.
  • Know each app’s limits. Note the request rate allowed and plan large waves around it.

Availability: when something is down

Two systems must be healthy for a change to land: Okta and the app. If the app is down, Okta keeps the work waiting and retries, and the account appears when the app returns. If the app is down for long, tasks may show errors, and an administrator can retry them afterwards. The main danger is not the delay but the missed deactivation, so after an outage check that leavers were switched off.

Bursts
Reorganizations and hiring waves create the peaks
Queues
Work waits safely while an app is down
Retry
Failed tasks can be sent again after the fix
sequenceDiagram
    participant H as HR System
    participant O as Okta
    participant A as Application
    H->>O: Bulk change for many people
    O->>O: Queue jobs per app and per person
    O->>A: Send first batch
    A-->>O: Too many requests, slow down
    O->>O: Wait and keep jobs in order
    O->>A: Send next batch slowly
    A-->>O: Accepted
    O->>O: Record results and list failures as tasks
    
Figure 8. A bulk change handled safely with queueing and slow-down replies.

Reading the picture

The HR system sends one large change. Okta does not push it all at once. It queues the work and sends a first batch. The app answers that it is too busy, so Okta waits and then sends the next batch more slowly. When the app accepts, the results are recorded, and any failures become tasks. The result is slower than a single instant push, but it is safe and complete.

Analogy

A busy airport does not land every plane at once. Planes circle and land one after another at a pace the runway can handle. Okta behaves like the control tower for account changes: it keeps order and speed within what each app can handle.

24A Worked Example: Meet Priya

To make everything concrete, follow one fictional employee, Priya, through her whole time at a company called Northwind Retail.

Day 1

Priya joins as a Sales Associate

HR records her hire. Okta creates her Okta user. A group rule places her in the Sales group. The Sales group is assigned to the email tool, the CRM and the chat app. Create runs for all three, and her accounts appear with the lowest role. She signs in and works.

Month 6

Her name changes

Priya marries and updates her last name with HR. The change reaches Okta, and Update sends the new name to all three apps. Her email address changes too, and the apps follow. Her username stays the same, because it was set as create-only.

Year 2

Promotion to Sales Manager

HR changes her title and level. A group rule adds her to the Managers group. The CRM now gives her the manager role through the group assignment, and she is added to the finance reporting tool. Update changes her title everywhere, and Create makes a new account in the reporting tool.

Year 4

Transfer to Marketing

Her department changes. She leaves the Sales group, so the CRM account is deactivated, and she joins Marketing, so a design tool account is created. The mover process runs without any ticket.

Year 6

Priya leaves the company

HR records her departure. Her Okta user is deactivated. Okta deactivates her accounts in every app. A manager reassigns her files first, because deactivation does not move work. Sessions expire, and the security team confirms the log shows all deactivations as successful.

What the company never had to do

In six years, nobody had to create or close an account by hand. The help desk received no ticket on her first day, no ticket about her new name and no ticket about her transfer. At her exit, there was no hurried list of apps to check, and no forgotten account remained. The work was done by rules written once and checked regularly.

i
Tip

Walk through a story like Priya’s when you design provisioning for a new app. For each stage ask: which action happens, which switch controls it and what could go wrong? This quickly shows gaps in the setup.

Lessons from the story

Priya’s story shows three habits that make provisioning work. First, every change started from a trusted record, HR, and not from a request to the help desk. Second, access followed group membership, so movement between teams was handled by removing and adding, and not by remembering. Third, deactivation was treated as seriously as creation, with a person confirming it in the log. If any of these three habits is missing, the story ends differently: a former employee with a live account, a long-time employee with rights from four old jobs, or a new starter waiting three days for a login.

Notice also what the company decided in advance. It decided that usernames never change, so that apps could always find Priya’s account. It decided that new accounts get the lowest role, so a mistake costs little. It decided that her files must be reassigned by a manager before deactivation, because the tool cannot guess who should inherit her work. Each decision is small, and each saves a painful discovery later.

25Real-World Examples

Different organizations use the same three actions in different ways. These short pictures show common situations.

A hospital group with shift staff

Nurses, doctors and administrators join and leave often, and some access is life-critical while some is highly private. The hospital drives accounts from the staff system. Clinical apps use groups tied to ward and role, and deactivation is tested hard, because a former employee seeing patient data is a serious breach. Reconciliation runs weekly.

A software company with many tools

Developers use code hosting, chat, ticketing, cloud consoles and monitoring. Group rules based on team assign these tools. Leavers are deactivated in all of them within minutes, and cloud admin rights are given only through a short, approved request, never by default.

A university with students and staff

Thousands of students arrive each term and leave each year. Accounts are created in bulk from the enrollment system, in staged waves before term starts. Staged assignment avoids overloading learning platforms. At graduation, access is reduced in steps, not cut off at once, as policy allows alumni some services.

A retailer with seasonal workers

Hundreds of temporary workers are hired for the holidays. Their accounts are created from the hiring list with a fixed end date, and deactivation is triggered when the contract ends. Without automation, many would keep access for months.

A company after a merger

Two companies join, each with its own apps and user lists. The team imports and matches existing accounts to Okta users, resolves duplicates, and then moves each app under provisioning one at a time. Nothing is assigned broadly until matching is clean.

A small business with a few apps

A twenty-person firm has email, chat and an accounting tool. They enable provisioning for email and chat, which support it, and use a short checklist for the accounting tool, which does not. Even this small step removes most of their leaver risk.

26Frequently Asked Questions

Short answers to the questions beginners ask most.

Q1 What is the difference between single sign-on and provisioning?

Single sign-on lets a person log in to an app with their Okta identity. Provisioning makes sure their account exists in the app, has correct details, and is switched off at the right time. You usually need both.

Q2 Does provisioning move passwords?

Not by default. With single sign-on, people do not need a separate app password. Some apps support password sync, but it is optional and should be used only when truly needed.

Q3 Is deactivation the same as deletion?

No. Deactivation switches the account off and keeps it. Deletion removes it. Okta’s normal leaver action is deactivation, which is reversible and keeps data for audits.

Q4 What does SCIM have to do with it?

SCIM is a common language that apps and identity systems use to talk about users and groups. If an app speaks SCIM, Okta can connect to it with fewer custom steps.

Q5 How fast does a change reach the app?

Usually within seconds to a few minutes, but it depends on the app and on how much other work is queued. Large changes can take longer.

Q6 What if the app already has accounts?

Import the existing users and match them to Okta users before assigning anyone broadly. Matching avoids duplicates and brings those accounts under Okta’s control.

Q7 Can people edit their own details in the app?

They can if the app allows it, but provisioning may overwrite such edits when Okta is the master of that fact. Decide the master of each fact, and turn off editing in the app for those fields where possible.

Q8 Why did provisioning fail for one person?

The usual causes are a missing required fact, a username already used in the app, or a value the app refuses. The System Log and the task for that person normally state the reason.

Q9 What if the app does not support provisioning at all?

Options include a custom workflow, just-in-time creation for arrivals, or a written manual checklist with an owner. Pair any partial method with a regular review of who still has access.

Q10 Who should own provisioning in a company?

Typically the identity or IT security team owns the platform, while each app has a business owner who confirms who needs access and which roles are right. Both sides review it on a schedule.

Q11 Will turning on provisioning change existing users?

It can, if updates are on and mappings overwrite existing values. Review the mappings and test with a small group first.

Q12 How often should I review provisioning?

Check the tasks page daily, reconcile each app with Okta at least every few months for sensitive apps, and review credentials and mappings on a yearly cycle or after any incident.

27Summary and Key Takeaways

App provisioning keeps accounts in step with real people: created when they join, updated when they change and deactivated when they leave.

Okta does this by treating assignment as the trigger. When a person is assigned to an app, directly or through a group, Okta creates an account. When a mapped fact changes, Okta updates it. When the person is unassigned or their Okta user is deactivated, Okta switches the account off. The connection to the app is usually SCIM or a ready connector, with mappings that say which fact goes where. Good results depend on clean data, one master per fact, a safe low default role, careful credentials, staged rollouts and steady monitoring.

Key Takeaways

  • Provisioning has three core actions: create, update and deactivate, and each has its own switch.
  • Assignment, ideally through rule-driven groups, is what triggers the actions.
  • Keep Deactivate Users switched on, and test it, because it protects you from leavers.
  • Give each fact one master, and map it in one direction only.
  • Protect the provisioning credential with least privilege, rotation and alerts.
  • Roll out in staged waves, and read the tasks page and the System Log regularly.
  • Match and link existing accounts before assigning broadly, to avoid duplicates.