ID
Scenario
Input
Expected Output
Pass Criteria
T01
Happy path: new hire, standard role
BambooHR webhook: status=New Hire, role=Marketing Coordinator, department=Marketing
Provisioning manifest generated; accounts queued for Okta, Google Workspace, Microsoft 365, Slack; no elevated-permissions flag
Manifest JSON contains all five systems; elevated_permissions flag is false; no error thrown
T02
Happy path: lateral transfer
BambooHR webhook: status=Transfer, role=Senior Engineer, department=Engineering (from Support)
Manifest generated with delta permissions; old group memberships removed; new groups assigned; no full deprovision triggered
Manifest includes remove_groups and add_groups arrays; Okta profile attributes updated; no termination actions triggered
T03
Happy path: termination trigger
BambooHR webhook: status=Terminated, employee_id=EMP-0042
Deprovisioning manifest generated; all five systems flagged for deactivation; Offboarding Audit Agent triggered
Manifest type is deprovision; all systems listed; Offboarding Audit Agent trigger event emitted within 5 seconds
T04
Elevated permissions required: admin role
BambooHR webhook: status=New Hire, role=IT Systems Administrator
Manifest generated with elevated_permissions=true; workflow pauses at human review gate; no accounts created yet
Accounts are NOT created; review task queued in orchestration layer; IT admin notification sent via Slack
T05
BambooHR webhook payload missing department field
BambooHR webhook: status=New Hire, role=Analyst, department=(empty)
Agent logs a validation error; workflow halts; alert sent to IT admin via Slack; no manifest produced
Error is logged with field name and employee ID; no partial manifest written; Slack alert delivered within 60 seconds
T06
BambooHR webhook payload missing employee_id
BambooHR webhook: status=New Hire, employee_id=(null)
Agent rejects event; dead-letter queue entry created; no downstream action taken
Event is written to dead-letter queue with rejection reason; no Okta, Google, M365, or Slack calls made
T07
Okta API returns 429 rate-limit error during account creation
Valid new-hire manifest; Okta sandbox configured to return 429 on first call
Agent retries after exponential backoff (2s, 4s, 8s); succeeds on second attempt; manifest marked complete
Retry logic fires; success logged on retry; total latency under 30 seconds; no duplicate Okta user created
T08
Google Workspace API returns 403 Forbidden during group assignment
Valid new-hire manifest; Google Workspace sandbox returns 403 on groups.insert call
Agent logs the error with the specific group ID; Jira ticket raised for manual resolution; other systems continue
Error logged with group_id and error_code; Jira ticket created with correct priority; Okta and M365 steps still complete
ID
Scenario
Input
Expected Output
Pass Criteria
T09
Happy path: full deactivation sequence
Deprovisioning manifest for EMP-0042; all five systems available
Okta account suspended and deactivated; Google Workspace account suspended and ownership transferred to manager; Microsoft 365 licence removed and Teams membership revoked; Slack account deactivated; Jira audit ticket created with timestamps
All five deactivation confirmations received; Jira ticket contains timestamp for each step; total time under 10 minutes
T10
File and email ownership transfer to manager
Deprovisioning manifest; manager_email=jreeves@[YourCompany.com]; Google Drive owned by EMP-0042
Google Drive files transferred to manager; Gmail forwarding set to manager; mailbox archived per retention policy
Drive transfer API call returns success; Gmail forwarding confirmed; mailbox archive status confirmed in Google Admin
T11
Jira audit ticket structure and completeness
Completed deprovisioning sequence with all five systems confirmed
Jira ticket created in audit project; contains employee ID, termination date, and a timestamped row for each system deactivated
Jira ticket exists; all five systems have a timestamp entry; ticket status is Closed; no fields are null
T12
Okta deactivation fails to confirm within 2 minutes
Deprovisioning manifest; Okta sandbox configured to return no confirmation response within 120 seconds
Agent raises a critical alert via Slack to IT admin; Jira ticket flagged as Incomplete; remaining systems proceed
Slack alert sent within 125 seconds of Okta call; Jira ticket status is Incomplete with Okta row marked as unconfirmed; Google, M365, and Slack deactivations still attempted
T13
Microsoft 365 licence removal fails: licence already unassigned
Deprovisioning manifest; Microsoft 365 dev tenant shows licence as already unassigned for EMP-0042
Agent detects idempotent state; logs that licence was already removed; continues without error
No error thrown; audit log notes pre-existing state; Jira ticket records M365 as confirmed with a note
T14
Slack deactivation API call returns user not found
Deprovisioning manifest; Slack test workspace has no account for EMP-0042
Agent logs that Slack account was not found; treats as already deactivated; no error raised; audit record notes the state
Jira audit ticket records Slack as not found, treated as deactivated; no unhandled exception; workflow completes