scim: clarify admin role timing on first provisioning call - #192
Open
james-ha-bruno wants to merge 1 commit into
Open
scim: clarify admin role timing on first provisioning call#192james-ha-bruno wants to merge 1 commit into
james-ha-bruno wants to merge 1 commit into
Conversation
A customer configured SCIM admin role mapping correctly but still had a user provisioned as a licensed user. Their IdP wrote the role attribute and pushed the account creation as independent operations, so the user was created before the role value existed, then promoted by a later update while the issued license stayed in place. Two gaps caused the confusion: no page stated that the admin role must be present on the first provisioning call, and the Okta guide recommended reading a stored directory attribute, which is timing-dependent (unlike Entra ID's App Role, resolved at push time). - overview: add a "Provisioning administrators" section covering how Bruno decides admin vs. licensed user, with the first-call requirement - okta: restructure admin role mapping into Option A (group-membership expression, resolved at push time, recommended) and Option B (stored profile attribute, with the timing caveat); hoist the shared roles app-profile attribute step above the split - okta: add exact-match/case-sensitivity and Users-list notes, a verification block, and a Troubleshooting section - entra-id: add the first-call warning, a verification block, and a Common issues entry Also documents the correct remedy for an affected user: remove the license in the portal, since re-provisioning through the IdP does not remove an already-issued license. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
|
Preview deployment for your docs. Learn more about Mintlify Previews.
|
james-ha-bruno
marked this pull request as ready for review
September 9, 2026 15:08
anthonyd-bruno
approved these changes
Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A customer (Okta SCIM, admin provisioning) configured Admin Role Mapping correctly and still had a user provisioned as a licensed user rather than an admin.
Their
brunoRoleattribute was written by a group rule triggered by the same group that granted the app assignment. Okta schedules the attribute write and the assignment push independently, so the account creation went out ~11 seconds before the role value existed. The user was created as a licensed user, and the later role push promoted them to admin while the license stayed in place.Two documentation gaps caused this:
SingleAppRoleAssignment(...), which resolves at push time and is not exposed to this. The two guides were not conceptually equivalent, and Okta's was the fragile one.What changed
Overview — new "Provisioning administrators" section (between "Enabling SCIM Provisioning" and "Next Steps"). The page previously made no mention of admin provisioning, so readers only discovered the capability by opening a provider-specific guide. Covers what an admin gets, the decision table for admin vs. licensed user, exact-match semantics, and the first-call requirement.
Okta — the bulk of the change:
rolesapp-profile attribute step (and itsexternalNamespacewarning) is hoisted above the A/B split, since both options need itEntra ID — first-call warning, verification block, and a Common issues entry. The
SingleAppRoleAssignment(...)guidance is deliberately untouched; it is correct as it stands.Both provider pages now document the correct remedy for an affected user: remove the license under Users in the portal, since re-provisioning through the IdP does not remove an already-issued license.
Notes for review
v3/orv2/copies, so there is nothing for these changes to attach to there.Option A: …rather than an em dash, so the generated slug is unambiguous under either dashing behaviour. All in-page anchors were verified to resolve against the final heading slugs.main. Option B's former###headings became bold sub-steps to keep the heading hierarchy sane under the new####options.prettier --checkfails on these files, but it also fails on them atmainand on the untouchedbruno-scim-api.mdx, so the drift is pre-existing. Running--writewould have buried the content diff in whole-file reformatting — worth a separate pass if you want the directory clean.🤖 Generated with Claude Code