Interactive ticket trace
One service-desk ticket, followed stage by stage through the autonomous request lifecycle on the service-desk architecture page — from the moment it lands in ServiceNow to the moment it closes, including the single human decision in the middle.
What this is: a worked example. It takes the request-lifecycle
diagram from the architecture page and runs one concrete ticket down it, showing what
each actor does, which messages cross the bus, why the risk tier lands where it does,
and what gets written to the append-only log at every step. Step through it with the
controls below, or just scroll — every stage is on this page.
What this isn't: a live system. INC0104729 is a
fabricated ticket. This box runs no ServiceNow tenant, no orchestrator, and no
directory — the trace is illustrative, not a recording.
The ticket
A platform engineer, Dana Morgan (CORP\dmorgan), changed
their own password through the self-service portal at 14:01. A tablet they own still
had the old password cached and retried it on a loop; by 14:02 the account was locked
out. Dana opens a ticket. Their account is a member of Server Operators,
a protected group — which, as we'll see at stage 4, is what pushes an
otherwise routine unlock across the approval line.
Walk it through
Eight stages. Each one names the actor, shows the artifact it produced, and appends to the log at the bottom of this card. Use Previous / Next, click a stage on the rail, or press the left/right arrow keys.
Intake & classification
The Incident lands in the orchestrator's queue, exactly as it would for a human
tier-1 tech. The orchestrator reads the short description and the caller record,
classifies the ticket (Incident · identity domain · P3), resolves
the affected principal to CORP\dmorgan, and opens a
trace_id that every message about this ticket will carry. No system
has been touched yet — this stage only reads.
Enrichment
The identity agent gathers state. Reading directory attributes and event logs is read-only, so it runs unattended at Tier 0 with nothing to approve. It pulls the account, the lockout policy, and the last few authentication events, and correlates them.
account: CORP\dmorgan
lockoutTime: 2026-08-27T14:02:07Z (locked)
badPwdCount: 7
lockoutThreshold: 5 in 15 min (policy)
lockoutDuration: 30 min (policy)
pwdLastSet: 2026-08-27T14:01:12Z (self-service change, ~1 min before lockout)
lastGoodAuth: 14:01:20 device LT-4471 (registered to dmorgan)
badPwdSource: 14:01:33-14:02:07 device TB-2290 (registered to dmorgan)
groupMembership: Server Operators, Platform-Eng, All-Staff
mfaState: enrolled, healthy
The pattern reads as a cached credential, not an attack: the bad passwords all came from one device the user owns, seconds after a successful password change, with no geo-anomaly and MFA intact.
Draft a plan
The identity agent turns that state into a concrete plan with a paired rollback
and hands it back to the orchestrator as a proposal message on the
bus. Domain agents propose; they never decide. The envelope fields
(trace_id, causation_id, sig, and the rest)
are defined on the agent-to-agent protocol page;
the type-specific body is below.
"type": "proposal",
"ticket_id": "INC0104729",
"from": "agent.identity",
"to": "orchestrator",
"payload": {
"plan_id": "PLAN-3",
"steps": [
"unlock CORP\\dmorgan on the nearest writable domain controller",
"set 'user must change password at next logon'",
"verify: account unlocked AND test bind succeeds AND badPwdCount == 0"
],
"rollback": "re-lock the account, page identity on-call, attach this trace",
"blast_radius": { "principals": 1, "systems": 1 },
"reversible": true,
"notes": "principal is in a protected group (Server Operators)"
}
Risk-tier decision
The orchestrator scores the plan. Blast radius is tiny and the rollback is clean, which by itself would land at Tier 1 (auto-execute, logged). But the plan mutates a directory object, and the principal sits in a protected group — and policy sets a floor of Tier 2 for any mutating action on a protected-group member, regardless of blast radius. So it lands at Tier 2: one human approval, and a mandatory dry-run.
| Factor | Value | Pull |
|---|---|---|
| Blast radius | 1 principal, 1 system | ↓ toward auto |
| Reversible | yes — re-lock | ↓ toward auto |
| Read-only | no — writes lockoutTime, pwdLastSet | ↑ needs review |
| Protected-group member | yes — Server Operators | ↑ policy floor Tier 2 |
| Result | Tier 2 — one approval + dry-run | |
Tier 0 Tier 1 Tier 2 ← this plan Tier 3
Human approval / arbitration
The plan, the generated dry-run diff, and the enrichment context go to the gate as
a single approval.request. A human approves, rejects, or edits the
plan. Here the identity on-call analyst checks that the device on the last good
sign-in belongs to the user, sees that the change is limited to two attributes,
and approves.
If a second plan existed for this same incident — say a competing proposal to disable the account pending investigation — this stage would become arbitration: both plans go to the gate side by side as a Tier 3 request and the human picks one. Same gate, different question.
Execute
The orchestrator releases the approved plan to the identity agent as an
execute message. The agent applies exactly the approved
steps — no more — against the nearest writable domain controller, and
returns a result.
"type": "result",
"ticket_id": "INC0104729",
"causation_id": "<the execute message>",
"from": "agent.identity",
"payload": {
"plan_id": "PLAN-3",
"target": "CORP-DC-03",
"applied": ["unlock", "force-change-at-next-logon"],
"status": "ok",
"at": "2026-08-27T14:07:41Z"
}
Verify target state
Applying the change is not the finish line — the plan's own verify step runs before the ticket can close. The identity agent re-reads the account and performs a test bind. All three checks pass.
- account not locked —
lockoutTime = 0 - test bind for
dmorganfrom the registered device certificate — succeeds badPwdCount = 0— the retry loop has stopped
If any check failed, the orchestrator would run rollback R-3 (re-lock, page identity on-call) and loop back to the approval gate with the failure attached — the dashed path on the request-lifecycle diagram on the service-desk architecture page. A failed mutation is never retried without a human.
Close the ticket
The orchestrator writes the outcome back to ServiceNow and closes the Incident. The whole chain — plan, dry-run, approval, action, verification — is attached to the ticket and already in the append-only log. Elapsed wall-clock time from intake to close: 4 minutes 38 seconds, one human decision.
The append-only log, as of the current stage:
- #000114:04:33 · intake · INC0104729 received; classified Incident / identity / P3; trace trc_a17f2c90 opened
- #000214:04:41 · enrich · agent.identity read AD for CORP\dmorgan (Tier 0): locked 14:02:07, badPwdCount 7, last good auth 14:01:20 from LT-4471, bad-pwd source TB-2290, member of Server Operators
- #000314:04:55 · plan · orchestrator accepted proposal PLAN-3 (unlock + change-at-next-logon + verify); rollback R-3 recorded
- #000414:04:56 · tier · PLAN-3 scored Tier 2 (mutating action on a protected-group member; policy floor); routed to approval; dry-run diff generated
- #000514:05:02 · gate · approval.request sent to identity on-call with plan, dry-run diff, and enrichment context
- #000614:06:12 · gate · approval.grant by oncall.analyst.rivera — “device LT-4471 matches last good auth; scope is two attributes”
- #000714:07:41 · execute · agent.identity applied PLAN-3 to CORP-DC-03: unlock + force-change set; result ok
- #000814:07:55 · verify · account unlocked, test bind succeeded, badPwdCount 0 — all checks pass
- #000914:09:11 · close · INC0104729 resolved (Automated with approval); full chain attached; elapsed 4m38s
How this maps to the other pages
- Service-desk architecture — the request-lifecycle diagram this trace follows stage for stage, plus the risk-tier matrix and the deny-list that sits above every tier.
- Agent-to-agent coordination protocol
— the message envelope and the message types used above
(
proposal,approval.request,approval.grant,execute,result). - Screen-by-screen mockup — a static wireframe walkthrough of a simpler lockout (Tier 1, no approval) and a firewall-change arbitration. This page is the moving version, on a ticket that does reach the gate.
- Operations model & SOP
— who staffs the gate and carries the pager that
approval.requestat stage 5 lands on, and the review cadence behind the tier policy. - SOC & incident-response architecture — the security-side sibling, where the same tiered-gate shape applies to detection and reversible containment.