IT & Data

How to automate user provisioning and deprovisioning

The short answer

To automate user provisioning and deprovisioning, make your HR system the trigger, map each role to an access bundle of groups and licenses, provision through your identity provider with SCIM where apps support it and API workflows where they do not, and on termination disable sign-in and revoke sessions first, then clean up apps. Reconcile accounts against HR records monthly to catch orphaned access.

What this automation does

When HR marks someone as hired, changing roles or leaving, the right accounts, groups and licenses follow automatically, and every change is logged.

  1. HR event. A new hire, role change or termination is recorded in the HR system, such as BambooHR, Rippling or Gusto. The workflow picks it up by webhook or by polling for changes.
  2. Resolve the access bundle. Department, title, location and employment type map to a defined bundle: identity groups, licenses, app roles and shared resources.
  3. Joiner. The identity account is created before the start date, groups and licenses are assigned, SCIM-connected apps provision themselves from group membership, and API-only apps get accounts through workflow steps. The manager gets a summary.
  4. Mover. Access for the new role is added and access tied only to the old role is removed after a short overlap, so people do not accumulate permissions over the years.
  5. Leaver. Sign-in is disabled and active sessions revoked first. Then group memberships are removed, licenses reclaimed, mailbox and files handed to the manager, and app accounts deactivated.
  6. Reconcile. A monthly job lists every account in every connected app and compares it to active HR records. Orphans, contractors past their end date and unexpected admins are reported.

When it is worth building

It pays off once you have more than a couple of hires or departures a month and more than ten apps. That is when manual checklists start missing steps, and the missed steps are usually on the way out: a former employee still in the CRM, a shared drive still accessible, a paid license nobody reclaimed. If you are pursuing SOC 2 or similar, auditors will ask for evidence of timely deprovisioning, and a logged workflow makes that easy.

Start with what you already pay for. If your identity provider supports HR-driven provisioning from your HR system and your key apps support SCIM on your plan, configure that first. Build workflows for the remainder. The HR-side steps, paperwork and welcome emails, belong in employee onboarding and offboarding automation, which this connects to.

Architecture

LayerWhat we useWhy
Source of truthHR system such as BambooHR or Rippling; Gusto, ADP and Workday through their partner or customer-approved accessEmployment status should come from HR, not from IT tickets
IdentityMicrosoft Entra ID via Microsoft Graph, Google Workspace Admin SDK, or OktaOne place to disable sign-in for everything behind SSO
App provisioningSCIM from the identity provider where supportedStandard, vendor-maintained and reacts to group changes
Gap workflowsn8n with built-in Slack, GitHub and Salesforce nodes, plus HTTP Request for other APIsCovers apps without SCIM and steps like file ownership transfer
Access rulesA versioned table mapping department, title and employment type to bundlesReviewable by IT and HR, changed without editing workflows
ApprovalsManager or app-owner approval in Slack or Teams for anything outside the bundleExceptions are allowed but always recorded
AuditA log of every grant and removal with the triggering HR eventEvidence for audits and investigations

How to build it

  1. Inventory apps and access methods. For each app, record whether it is behind SSO, supports SCIM on your plan, has a usable API, or is manual-only. This decides most of the build.
  2. Define access bundles. Start broad: a company-wide baseline, then per-department bundles. Avoid per-person exceptions in the rules; route those through approvals.
  3. Clean identity data first. Match HR records to identity accounts by employee ID, not by name or email alone. Fix duplicates, stale accounts and missing managers before turning automation on.
  4. Build the leaver flow first. It carries the most risk. Disable sign-in, revoke sessions and remove privileged roles as the first steps, then the slower cleanup. Add the HR “terminate now” trigger.
  5. Build the joiner flow. Create accounts a few days before start, with licenses timed to avoid paying for unused seats, and send the manager a readiness summary.
  6. Build the mover flow. Add new access immediately and remove old access after a defined overlap, with the manager confirming anything that should be kept.
  7. Add reconciliation. Pull user lists from each connected app monthly, compare against HR, and report orphans and unexpected admins to IT.

What breaks in production

  • Rehires and name changes. A rehire matched by email reactivates an old account with old permissions. Match on employee ID and reset access to the bundle on rehire.
  • Contractors outside the HR system. They never trigger a leaver event and keep access for months. Give contractors an end date in a tracked system and treat a missing end date as an error.
  • Effective-date timing. A termination dated today in Pacific time runs at midnight Eastern, or a day late. Store and evaluate dates in the employee’s time zone.
  • Disabled but not revoked. Disabling the account does not always end existing sessions or app-specific tokens. Revoke sessions explicitly, and remove personal access tokens in tools like GitHub.
  • Data loss on deletion. Deleting an account too early deletes the mailbox and files the manager needs. Disable first, transfer ownership, and delete only after the retention window.
  • API restrictions in HR platforms. ADP, Workday and some others require partner programs or customer-specific approval for API access, which can add weeks. Confirm access before committing to a date.

Timeline and cost

A joiner, mover and leaver program across one HR system, one identity provider and 8–15 apps typically takes four to eight weeks, longer if HR API access needs vendor approval. Lumeor builds this in the range of $15,000 to $35,000, depending on the number of apps without SCIM, data cleanup needed and approval complexity. A single leaver workflow on its own costs less and is a reasonable first step. See what an n8n automation program costs for how multi-workflow projects are priced.

How to measure success

  • Time from termination to sign-in disabled, and to all app access removed
  • Share of new hires with all baseline access working on their first morning
  • Orphaned or unexpected accounts found by monthly reconciliation
  • Manual provisioning tickets per month
  • Paid licenses reclaimed per quarter

Frequently asked questions

What is SCIM and why does it matter?

SCIM is a standard protocol that lets an identity provider such as Microsoft Entra ID, Okta or Google Workspace create, update and deactivate accounts in other apps automatically. When an app supports it, use it instead of a custom workflow. Many SaaS vendors only offer SCIM and SSO on higher plan tiers, so check before you plan around it.

Does our HR system or identity provider already do this?

Possibly. Some HR platforms, such as Rippling, include app provisioning, and identity providers offer HR-driven provisioning from certain HR systems. If those cover your apps, configure them first. Custom workflows fill gaps for apps without SCIM, for steps like file transfer, and for approvals.

Where does AI fit into provisioning?

Around the edges, never as the decision maker. It can suggest an access bundle for a new job title based on similar roles for an admin to approve, summarize quarterly access reviews for managers, and flag accounts that do not match any HR record. Who gets access is decided by rules and people.

How fast should access be removed when someone leaves?

For involuntary terminations, sign-in should be disabled at or before the conversation, not at the end of the day. Build a manual "terminate now" trigger for HR alongside the scheduled one. For planned departures, run the leaver workflow at the end of the last working day in the employee's time zone.

What about apps that have no API at all?

The workflow creates a task for the app owner with exactly what to add or remove and tracks it to completion. That still beats a checklist in someone's head, and the monthly reconciliation shows whether it was done.

Next steps