Hi everyone,
We’ve been developing a SCIM integration for our organization. Since most of our customers use Okta, we’re starting by ensuring our provisioning support works well with Okta first.
At this stage, we only want to support user deprovisioning (not user creation). We’ve implemented:
-
GET /Users with filtering (for matching)
-
PUT, PATCH and DELETE (for updates/deactivation)
We can successfully deprovision users when they were originally created on our side, but we’re seeing a specific flow where deprovisioning fails:
Repro steps
-
Ensure the user does not exist in our app.
-
Create the Okta SSO + SCIM integration, but do not import users.
-
Assign a user to the app in Okta.
-
The user shows a red warning icon in Okta with the message:
“Automatic provisioning of user ‘username’ to app ‘app name’ failed: Matching user not found”
(expected, since we did not implement POST /Users).
-
Log in to our app using Okta SSO — this creates the user in our app (JIT on login).
-
Back in Okta, the assignment screen still shows the user with the red warning icon.
-
If we enable Import, we can see the user with the red icon gets a valid externalId.
- However, the red warning icon does not disappear, even after the externalId is present.
-
When we remove the user assignment in Okta, the user is not deprovisioned on our side.
Workaround
The only way we’ve found to make deprovisioning work is:
- Unassign the user, then reassign them after they’ve been created in our app.
Question
Is this expected behavior in Okta when POST /Users is not implemented, even if the user later appears in the target app (via SSO login) and an externalId is assigned through import?
If there’s a recommended approach for supporting deprovisioning-only SCIM integrations (especially with SSO/JIT user creation), we’d love guidance on the correct flow.
To us this seems like a bug so I posted here
Thanks and have a nice day!