TL;DR: Automated provisioning and deprovisioning via SCIM helps keep application access aligned with Google Workspace or Entra changes, while WorkOS’ tutorial shows how events, webhooks, and directory sync keep user state current and auditable. Manual account handling is still where delays and access gaps start.
NHIMG editorial — based on content published by WorkOS: How to sync users from Google Workspace to a Ruby on Rails app using WorkOS
Questions worth separating out
Q: How should security teams implement automated user provisioning in enterprise apps?
A: Security teams should connect the application to the authoritative directory, map create update and delete events into account state, and verify that changes propagate without manual intervention.
Q: Why do manual provisioning processes create IAM risk?
A: Manual provisioning creates risk because access changes lag behind identity changes.
Q: How do organisations know whether directory sync is actually working?
A: They should compare the source directory and the application after provisioning, updates, and deprovisioning events, then verify that no orphaned accounts or mismatched group memberships remain.
Practitioner guidance
- Map provisioning to lifecycle ownership Assign explicit ownership for joiner, mover, and leaver propagation into the application so directory changes are not dependent on ad hoc admin work.
- Prefer replayable event processing Use an ordered events API and cursor persistence where reconciliation, auditability, and recovery matter more than immediate push delivery.
- Secure the provisioning trust channel Store API keys, client IDs, and webhook secrets as managed secrets, then verify HMAC signatures before any inbound payload can change account state.
What's in the full article
WorkOS's full tutorial covers the operational detail this post intentionally leaves for the source:
- Ruby code examples for installing the SDK and wiring Directory Sync into an application
- Step-by-step dashboard setup for Google Workspace directory connections and admin onboarding
- Full event payload examples for user, group, and lifecycle changes
- Webhook verification and local testing guidance for teams implementing the sync path
👉 Read WorkOS's tutorial on syncing Google Workspace users into a Ruby app →
SCIM provisioning for enterprise apps: what IAM teams need to know?
Explore further
Automated provisioning is lifecycle governance, not a convenience feature: The article is really about how application access should follow authoritative identity state, not local admin decisions. SCIM and directory events reduce the time between a directory change and an application change, which is where many access gaps begin. That makes provisioning part of joiner, mover, and leaver control, not a separate integration task. Practitioners should treat it as lifecycle enforcement.
A few things that frame the scale:
- Organisations maintain an average of 6 distinct secrets manager instances, creating fragmentation that undermines centralised control, according to The State of Secrets in AppSec.
- The average estimated time to remediate a leaked secret is 27 days, despite 75% of organisations expressing strong confidence in their secrets management capabilities.
A question worth separating out:
Q: Who is accountable when an application keeps access after a user leaves the directory?
A: The accountable party is the team responsible for identity lifecycle integration, because the failure is a governance failure, not just a technical one. If offboarding does not reach the app, the organisation has not enforced leaver control. That gap should be tracked through access review, incident response, and application ownership processes.
👉 Read our full editorial: SCIM user provisioning closes the gap in enterprise app access