Orphaned, dormant, and shared accounts
Accounts without a person
In December, Harbor Clinic's pharmacy manager works through a review of every account in the pharmacy system. Most rows carry a name the manager recognizes. One does not. The account jsmith2 can order controlled medication, last signed in during May, and matches no identity by employee number, email address, or name. Identities, accounts, and entitlements called this an uncorrelated account and said it needed investigating. Now someone has to do it.
An orphaned account is an account in an application that is not linked to any current identity. The person it belonged to may have left, it may never have belonged to anyone the identity system knows about, or the link to its real owner may have broken.
Orphans matter because every process in identity governance starts from an identity. The leaver process disables a person's accounts. A manager's review lists a person's access. An account linked to nobody is invisible to all of them. If someone still knows the password for jsmith2, they can order controlled medication, and no departure will ever disable the account and no manager will ever see it in a review.
Finding orphans
Harbor found jsmith2 because a person happened to look closely. Finding orphans reliably means reconciling each application's accounts against the authoritative identities they should belong to. As in Keeping systems in sync, reconciliation compares intended state with actual state, but here it starts from the application's side: take every account that exists and ask whose it is.
For each account, the identity system looks for a stable identifier stored on it, such as an employee number, a contractor register ID, or the identity ID, and tries to match it to a current person in the HR system or the contractor register. Where an older system holds only a login name and a display name, as the pharmacy system did, a match is a candidate until someone confirms it. The results fall into three groups. Matched accounts belong to a current person. Orphaned accounts exist in the application but match no current identity. Missing accounts are the reverse: a person the rules say should have an account, in an application that has none, which usually points to a provisioning step that failed.
Orphans have a few common causes. The first is a missed leaver: the leaver process disabled the person's other accounts but never reached this application, perhaps because a ticket was missed or a nightly file import failed. The second is an account created by hand: an administrator set it up directly in the application for a temporary worker, a test, or a supplier's engineer. Nothing links it to an identity, so nothing will ever remove it. The third is failed correlation: the account belongs to a current person, but the identifier on it is missing or wrong, so the match fails. Matching on names or email addresses makes this more likely, because both change.
That third cause is why a list of orphans is a list of questions, not a list of accounts to delete. For jsmith2, the answer came from the pharmacy's own rota and the account's creation date. In February 2026, the pharmacy hired an agency pharmacist to cover a vacancy for three months, and a pharmacy administrator created the account by hand, adding a 2 because jsmith was already taken. The agency pharmacist was never entered in the contractor register, so no identity or end date ever existed for that person. When the cover ended in May, there was no leaver event to send. An account made by hand, for a person no source knew about, could only ever be found by a reconciliation or by luck.
Accounts nobody uses
The same review turned up a different kind of problem. The account pmorales belongs to Pat Morales, a pharmacy technician who still works at Harbor, and it can receive controlled medication. It has not been used since July.
A dormant account belongs to a known person or purpose but has not been used for a long time. It is not orphaned, because someone is accountable for it. It is still a risk: access nobody uses is probably access nobody needs, and nobody would notice someone else using it.
The usual measure is the last sign-in, and a threshold turns it into an action. The threshold should follow risk. Harbor treats 45 days without use as dormant for accounts that can order or receive controlled medication, 90 days for most clinical systems, and longer for email and files. Thresholds need judgment as well: a relief nurse who covers two shifts a month can look dormant against a short threshold and still need the account.
When an account crosses its threshold, Harbor disables it rather than deleting it. Pat's manager confirms that Pat moved in July to the outpatient pharmacy at another site, which uses a different system, so pmorales is disabled. If Pat needs it again, re-enabling it takes minutes and the account's history is intact. Deletion comes later, if the account stays unused and nobody claims it.
Last sign-in can also mislead. The pharmacy's dispensing cabinets receive orders through an integration that uses the account svc-dispense. Nobody has signed in to it interactively since it was set up in June 2025, so a dormancy rule based on sign-ins flags it as unused for well over a year. In fact it calls the pharmacy system's API every few minutes with a token, and disabling it would stop the cabinets from receiving new orders. Accounts used through tokens, API keys, or long-lived sessions may rarely or never sign in. Before disabling an account as dormant, check its token and API activity as well as its sign-ins.
What to do with what you find
A reconciliation produces findings, not deletions. The orphan might be a current person whose link failed. The dormant account might be an integration that runs on tokens. The shared login might be the only way the night shift can work this week. Deleting first and asking later turns a cleanup into an outage, and it destroys history that an investigation might need.
Harbor works through each finding in the same order.
- Investigate who the account belonged to and what it does, using its creation date, its sign-in and API activity, and what the application owner knows.
- Disable it, which stops its use without losing anything.
- Notify the owner: the application owner and, where known, the person's former manager or sponsor.
- Wait a defined period, such as 30 days, for anyone to claim it.
- Delete it according to the clinic's retention rules.
The order bends when the risk is high. An account like jsmith2, which matches nobody, shows no API activity, and can order controlled medication, is disabled first and investigated afterwards, because disabling is easy to undo. What does not bend is that deletion waits until the investigation is finished. Every decision along the way is recorded with who made it, why, and when, including decisions to keep an account, so the next reconciliation does not raise the same question again.
Here are eight accounts from the pharmacy reconciliation, compared with the HR system and the contractor register.
| Account | Matched identity | Last sign-in | Last API use | Finding | Action |
|---|---|---|---|---|---|
hpatel | E09214, Hira Patel, pharmacist | Today | None | Matched | None needed. |
tbaker | E10077, Toby Baker, pharmacy technician | Yesterday | None | Matched | None needed. |
pmorales | E07402, Pat Morales, pharmacy technician | 20 July | None | Dormant, past the 45-day threshold for controlled medication | Confirm with Pat's manager, then disable. Re-enable if Pat needs it again. |
lwong | E06650, Lin Wong, pharmacist, left 31 August | 28 August | None | Orphaned: a missed leaver | Disable today, end any open sessions, and find out why the leaver process missed the pharmacy system. |
jsmith2 | None. Created by hand for an agency pharmacist never entered in the contractor register | 14 May | None | Orphaned: created by hand for a person no source knew about | Disable now, notify the pharmacy manager, and delete after 30 days. |
relief-pharm | None. Shared by night staff | Last night | None | Shared account | Make the night pharmacy lead its owner, move night staff to individual accounts, then disable it. |
svc-dispense | None. Service account for the dispensing cabinets | June 2025 | 4 minutes ago | Service account in use | Record its owner and purpose, keep it, and review it each quarter. |
svc-labfeed | None. Service account for a retired laboratory system | Never | 11 March | Service account no longer needed, with no owner | Confirm with the pharmacy systems team, revoke its token, disable it, and delete it after 30 days. |
Each finding also points to a cause worth fixing. lwong shows that the leaver process failed to reach the pharmacy system for at least one departure in August. jsmith2 shows that accounts could be created outside the identity system, so Harbor now requires every new pharmacy account to carry an employee number or a contractor register ID.
Every one of these decisions, like every review decision, leaves a record. Continue to Evidence and governance metrics to see what makes those records convincing to an auditor, and how to tell whether the whole process is working.