Skip to content

Commit 653f23e

Browse files
committed
Merge remote-tracking branch 'origin/staging' into codex/resolve-pr-7477-staging
2 parents 84b8719 + 888d4a0 commit 653f23e

3 files changed

Lines changed: 18 additions & 16 deletions

File tree

apps/docs/content/docs/platform/enterprise/scim/entra.mdx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ Change the test user's display name in Entra and provision them again. Confirm t
8282

8383
Remove the test user's app assignment, then run on-demand provisioning for that user again. Confirm that Sim deactivates the existing member. Reassign the user and provision again to verify reactivation of the same account. Assignment changes can take a few minutes to become available to provisioning.
8484

85-
Sim deactivation suspends access while retaining organization membership, ownership, and the seat. See [deactivation behavior](/platform/enterprise/scim#what-it-does) before using unassignment for offboarding.
85+
Sim deactivation suspends access while retaining organization membership, ownership, and the seat. For users still managed by the provisioning job, soft deletion deactivates the Sim member and permanent deletion sends a SCIM `DELETE` that removes organization membership. Entra normally permanently deletes users 30 days after soft deletion, or sooner if an administrator purges them. After app unassignment, Entra stops managing the user and does not send a later directory deletion. See [Microsoft's deprovisioning lifecycle](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/how-provisioning-works#deprovisioning) and [Sim's deactivation behavior](/platform/enterprise/scim#what-it-does).
8686

8787
<Callout type="info">
88-
Disabled or deleted Entra users cannot be selected for on-demand provisioning. Use the scheduled provisioning cycle to verify those cases. See [Microsoft's on-demand limitations](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/provision-on-demand).
88+
Disabled or deleted Entra users cannot be selected for on-demand provisioning. [Start automatic provisioning](#start-automatic-provisioning) and complete the initial cycle before testing those changes through a scheduled cycle. See [Microsoft's on-demand limitations](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/provision-on-demand).
8989
</Callout>
9090

9191
## Provision groups and map access
@@ -104,6 +104,8 @@ After the test succeeds, return to the provisioning **Overview** and select **St
104104

105105
Keep the scope limited to assigned users and groups as you add more members. Use **Provision on demand** for a small test; use the regular cycle to verify directory account disablement and deletion.
106106

107+
During a scheduled lifecycle test, leave the job running after changing the test user. **Restart provisioning** clears the change watermark and begins a new initial cycle; changing mappings or scoping filters also resets it. Wait for the incremental cycle and inspect that user's provisioning log before making further changes.
108+
107109
## Rotate the token
108110

109111
Issue a replacement token in Sim while the current token remains active. In Entra, open the provisioning configuration's **Connectivity** page, replace **Secret token**, select **Test connection**, and save. Confirm a successful provisioning request before revoking the old token in Sim. Sim allows two active tokens so rotation can overlap.
@@ -116,6 +118,7 @@ Issue a replacement token in Sim while the current token remains active. In Entr
116118
| User is out of scope | Assign the user to this enterprise application and check the provisioning scope and scoping filters. Allow time for assignment changes to propagate. |
117119
| User creation fails | Verify the email domain in Sim, available seats, and whether the account belongs to another Sim organization. Review the mapped UPN and work email. |
118120
| Repeat provisioning reports **Skipped** | Inspect the reason. **RedundantExport** means the source and target already match. |
121+
| Directory disablement or deletion has not reached Sim | Check the user's scheduled provisioning log, the `IsSoftDeleted` mapping to `active`, enabled **Update** actions, and accidental deletion protection. Confirm **Skip out of scope deletions** is disabled. A successful connection test alone does not verify a lifecycle change. |
119122
| Group assignment is unavailable | Check your Entra license. The Free plan supports individual user assignment but requires an upgrade for group assignment and provisioning. |
120123
| Member has no workspace access | Provision the directory group and add a workspace mapping in Sim. User provisioning creates organization membership. |
121124
| Disabled member still uses a seat | Sim suspends access on deactivation. Removing organization membership is a separate offboarding action. |

apps/sim/ee/scim/TESTING.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,19 +132,20 @@ The run verified connection testing with a raw secret token, direct user
132132
assignment and creation with default mappings (including a minimal profile with
133133
no Mail or structured name attributes), structured-name and display-name
134134
updates, display-name precedence, repeated provisioning without duplicate
135-
accounts, unassignment deactivation, reactivation of the same account, an initial
136-
scheduled cycle, reconciliation, and overlapping token rotation. Entra continued
137-
to match the provisioned user after the old token was revoked; the old token
138-
returned 401 and the replacement returned 200. PostgreSQL checks confirmed stable
139-
SCIM and account IDs, retained membership on deactivation, and no implicit
140-
workspace grants.
135+
accounts, unassignment deactivation, reactivation of the same account, scheduled
136+
directory account disablement, reconciliation, and overlapping token rotation.
137+
Re-enabling the directory account and provisioning it on demand restored the same
138+
Sim account. Entra continued to match the provisioned user after the old token was
139+
revoked; the old token returned 401 and the replacement returned 200. PostgreSQL
140+
checks confirmed stable SCIM and account IDs, retained membership on deactivation,
141+
and no implicit workspace grants.
141142

142143
The tenant used Entra ID Free. Live group provisioning and group access changes
143144
remain unverified because group assignment requires Premium. Directory account
144-
disablement and deletion also require a scheduled-cycle check; app unassignment
145-
was tested separately through on-demand provisioning. Synthetic users and a
146-
seeded verified domain were used, so this does not verify real DNS ownership,
147-
end-user SSO, or Microsoft gallery certification.
145+
deletion still requires a scheduled-cycle check. App unassignment was tested
146+
separately through on-demand provisioning. Synthetic users and a seeded verified
147+
domain were used, so this does not verify real DNS ownership, end-user SSO, or
148+
Microsoft gallery certification.
148149

149150
## Provider verification checklist
150151

apps/sim/ee/scim/lib/application/users/deprovision-user.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ export interface DeprovisionScimUserResult {
3030
/**
3131
* Removes a user from the organization at the directory's instruction.
3232
*
33-
* Okta never sends this — it deactivates instead — but Microsoft Entra does, 30
34-
* days after a hard delete, and OneLogin and JumpCloud can be configured to. The
35-
* Sim account itself survives: the person may hold access in another
36-
* organization later, and their audit history must remain attributable.
33+
* The Sim account survives because the person may join another organization
34+
* later and their audit history must remain attributable.
3735
*
3836
* Removal is the same primitive the settings UI uses. It ends the membership,
3937
* revokes sessions and personal keys, reassigns what the member owned, and

0 commit comments

Comments
 (0)