Skip to content
Free lab

SCIM Lifecycle Lab

Most breaches do not start with a zero-day — they start with access that outlived the person. Work a reconciliation queue between HR and the directory and give each account its lifecycle action: provision a joiner least-privilege, re-scope a mover (grant the new role and remove the old — not just add), fully deprovision a leaver down to live tokens and owned data, and catch the gaps reviews exist to find — an orphaned account, over-retained access and segregation-of-duties conflicts, an overdue deprovision, a contractor past its end date, a service account that needs governing not off-boarding. You are scored on correct actions against false positives — because deprovisioning a valid or on-leave user is its own failure. Reconcile the queue clean.

The real job. More noise, a tighter clock.

0sPro

Lifecycle reconciliation

Reconcile each account against HR as of the snapshot 2026-10-14: reconciled, or the specific lifecycle action.

#1

Priya Anand

Associate Analyst

employeeFinance
HR statusnew-hire
accountnot-created
ownermgr: D. Osei
startDate2026-10-14 (today)
endDatenone on file
lastLoginnever
tokensrevoked / none
MFAnot enrolled
access— none assigned —

signal: New hire starts today. HR record created; no directory account or access provisioned yet.

Action

#2

Marcus Reed

Sales Engineer

employeeSales
HR statusterminated
accountactive
ownermgr: L. Tran
startDate2024-04-27 (900d ago)
endDate2026-10-14 (today)
lastLogin2026-10-13 (1d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Salesforce-Admin, VPN: Standard, M365: E5 licence

signal: Last working day is today; HR has flagged termination. Account still fully active.

Action

#3

Sofia Herrera

moved: IT Support → Security Operations

employeeSecurity
HR statustransferred
accountactive
ownermgr: R. Blake
startDate2025-02-21 (600d ago)
endDatenone on file
lastLogin2026-10-14 (today)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Helpdesk-Admin, ServiceNow: ITIL-Fulfiller, VPN: Standard

signal: Transfer to Security Operations effective this week. Access is still the old IT Support set.

Action

#4

Jordan Mills

Marketing Coordinator

employeeMarketing
HR statusactive
accountactive
ownermgr: A. Kone
startDate2025-08-10 (430d ago)
endDatenone on file
lastLogin2026-10-12 (2d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Marketing-Standard, M365: E3 licence

signal: Steady-state employee. Access matches the current role; no pending HR event.

Action

#5

Ben Okafor

Operations Lead

employeeOperations
HR statusterminated
accountactive
ownermgr: S. Daly
startDate2023-07-02 (1200d ago)
endDate2026-08-15 (60d ago)
lastLogin2026-10-11 (3d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Ops-Console, VPN: Standard, AWS: PowerUser

signal: Terminated 60 days ago per HR, yet the account is still active — and shows a login 3 days ago.

Action

#6

Dana Fischer

Contract Developer (Vendor: Northwind)

contractorEngineering
HR statusactive
accountactive
ownersponsor: M. Lowe
startDate2026-03-18 (210d ago)
endDate2026-09-14 (30d ago)
lastLogin2026-10-13 (1d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: Contractors, GitHub: write, VPN: Standard, Jira: Developer

signal: Contract end date was 30 days ago. Contractor is not in the employee HR feed, so no leaver fired.

Action

#7

Lena Vogt

moved 9mo ago: Payroll → Recruiting

employeePeople
HR statusactive
accountactive
ownermgr: P. Shah
startDate2024-07-16 (820d ago)
endDatenone on file
lastLogin2026-10-13 (1d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Workday: Recruiting, Workday: Payroll-Admin, VPN: Standard

signal: Transferred to Recruiting 9 months ago and settled, but still holds Payroll-Admin from the old role.

Action

#8

batch-run-07

(no HR record)

employee(unknown)
HR statusnone
accountactive
ownerNONE — no mapped owner
startDate2025-04-22 (540d ago)
endDatenone on file
lastLogin2026-10-08 (6d ago)
tokenssessions / API tokens LIVE
MFAnot enrolled
accessAD: All-Staff, Okta: Finance-Reporting, VPN: Standard

signal: Active account that maps to no identity in the HR source of truth and has no owner or manager.

Action

#9

svc-dw-etl

Data-warehouse ETL service account

serviceData
HR statusnone
accountactive
ownerNONE — no mapped owner
startDate2024-11-13 (700d ago)
endDatenone on file
lastLogin2026-10-14 (today)
tokenssessions / API tokens LIVE
MFAnot enrolled
accessAD: Service-Accounts, Snowflake: SYSADMIN, AWS: S3-FullAccess, Okta: API

signal: Non-human service account. Credentials are shared in a team runbook; no assigned human owner.

Action

#10

Omar Haddad

Senior Accountant

employeeFinance
HR statuson-leave
accountactive
ownermgr: J. Reyes
startDate2022-09-05 (1500d ago)
endDatenone on file
lastLogin2026-08-27 (48d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Finance-GL, M365: E3 licence, VPN: Standard

signal: On approved parental leave; expected to return. No login for ~7 weeks.

Action

#11

Grace Lim

moved: Support → Product (re-scoped)

employeeProduct
HR statustransferred
accountactive
ownermgr: T. Novak
startDate2024-03-08 (950d ago)
endDatenone on file
lastLogin2026-10-14 (today)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Product-Standard, Jira: ProductManager, VPN: Standard

signal: Transferred to Product last quarter. The move was processed and old Support access was removed.

Action

#12

Tariq Boone

Finance Manager (fixed-term ending)

employeeFinance
HR statusterminated
accountactive
ownermgr: C. Weiss
startDate2025-10-14 (365d ago)
endDate2026-10-16 (in 2d)
lastLogin2026-10-14 (today)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, Okta: Finance-GL, NetSuite: Approver, M365: E5 licence, owns: AP-shared-mailbox

signal: Last day is in 2 days. Owns an approver role and the shared AP mailbox that others depend on.

Action

#13

Isabel Cortez

promoted: AP Clerk → AP Supervisor

employeeFinance
HR statusactive
accountactive
ownermgr: F. Adler
startDate2023-10-10 (1100d ago)
endDatenone on file
lastLogin2026-10-13 (1d ago)
tokenssessions / API tokens LIVE
MFAenrolled
accessAD: All-Staff, NetSuite: AP-Approver, NetSuite: AP-Invoice-Entry, M365: E3 licence

signal: Promoted within AP. Kept invoice-entry from the clerk role and gained invoice-approval as supervisor.

Action

#14

Noah Pike

Rehire — Support Engineer

employeeSupport
HR statusnew-hire
accountdisabled
ownermgr: V. Rossi
startDate2026-10-13 (1d ago)
endDatenone on file
lastLogin2025-09-09 (400d ago)
tokensrevoked / none
MFAnot enrolled
access— none assigned —

signal: Rehire: a former employee returning. Their old account still exists but is disabled, with no access.

Action

Correct actions vs. false positives

Reconcile each account, then grade. So far 0/14 called, 0/11 lifecycle actions right, 0 false positive(s).

How it is scored

Correct-action rate = accounts given the exact right lifecycle call (reconciled rows included).

A false positive (actioning a healthy or on-leave account) takes an extra hygiene bite — deprovisioning a valid user is its own incident.

Harder tiers add subtler rows and deliberate traps: an on-leave account, a mover already re-scoped, a fully-deprovisioned leaver, a contractor with a valid sponsor.

Live arena

4 active
adversary kill-chain1/4
idm-admin-nkem18%
iga-eng-ruiz5%
iga-reviewer-you (you)0%
access-review-lead-omar0%

adversary staging…

TL;DR

What this lab is

  • A free, browser-based identity-lifecycle lab: work a reconciliation queue of ~20 accounts between the HR system of record and the IdP, and give each one the correct SCIM-style Joiner / Mover / Leaver action.
  • Actions you assign: provision least-privilege on a joiner, re-scope a mover (grant the new role AND remove the old — the common failure is adding access without removing it = privilege accumulation), and fully deprovision a leaver (disable, revoke sessions/tokens, reclaim licences, reassign data ownership).
  • Governance findings seeded across the queue: orphaned accounts with no owner, over-retained access and segregation-of-duties conflicts, missing/overdue deprovisioning, live tokens on a disabled account, contractor end-date gaps, and shared/service accounts that human JML does not cover.
  • You are graded on correct-action rate weighed against false positives — deprovisioning an on-leave employee or re-flagging a clean leaver takes an extra hygiene penalty, because breaking a valid user is its own incident.
  • All date reasoning is made against a fixed snapshot, and after grading every account shows why the right action is right — genuine IGA / SCIM lifecycle practice.

Frequently asked questions

What is the SCIM Lifecycle Lab?

A free, in-browser exercise where you work a reconciliation queue of identity-lifecycle snapshots — each row shows an account's HR status, directory state, owner, start/end dates, last login, assigned entitlements, token status and MFA — and you assign the correct action: reconciled (no change), or a Joiner/Mover/Leaver action, or a governance finding such as an orphaned account, over-retained access, an overdue deprovision, a contractor end-date gap, or a service account that needs governing rather than human lifecycle. It models what a SCIM provisioning connector and an IGA access review put in front of you.

How is it graded?

Each account has one correct action. Your score is the share of accounts you call with the exact right action, reconciled rows included. False positives — actioning a healthy account, such as deprovisioning someone on approved leave or re-flagging a leaver that was already fully deprovisioned — carry an extra hygiene penalty, because an identity team that breaks valid users is as harmful as one that misses standing access. A perfect run calls every account exactly right.

What lifecycle concepts does it teach?

The Joiner/Mover/Leaver model and where it breaks. Joiner: provision only the least-privilege birthright set. Mover: re-scope by adding the new role AND removing the old in the same change (bidirectional — a mover can also lose access); the classic failure is adding without removing, which accumulates privilege and creates segregation-of-duties conflicts. Leaver: a full deprovision is more than disabling the login — it includes revoking sessions, OAuth tokens and API keys, reclaiming licences, and reassigning data ownership. Plus the gaps lifecycle reviews exist to find: orphaned accounts, over-retention, missing deprovisioning, non-employee end-date gaps, and non-human/shared accounts outside JML.

Does it connect to my directory or HR system?

No. Nothing is uploaded and no SCIM, directory or HR API is called. The accounts are authored, realistic reconciliation snapshots bundled with the page, and every date decision is made against a single fixed snapshot date so the queue is deterministic and never goes stale. It runs entirely in your browser — no account, no install, nothing sent anywhere.

Who is it for?

IAM and identity-governance engineers, IT and security teams who run provisioning and access reviews, auditors checking JML controls and segregation of duties, and anyone prepping for a security or identity interview who wants to feel why an orphaned account, a terminated user with a live API token, or an auditor who can still approve payments is a finding — and why an on-leave employee who keeps their access is not.

🎉 New here? Use code WELCOME10 for 10% off any plan at checkout
SCIM Lifecycle Lab — Free Joiner / Mover / Leaver Trainer · PlayCISO