> ## Documentation Index
> Fetch the complete documentation index at: https://helpdocs.getthread.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PSA Migration Hygiene

> For any desk mid-migration between PSAs (ConnectWise, Autotask, HaloPSA, or others) — enforce dual-running discipline: one master system per phase, no orphaned tickets, no double work, clean cutover evidence.

<Info>
  **Category:** PSA-Specific Workflows · [View source ↗](https://github.com/bryan-getthread/skills/blob/main/skills/psa-specific/psa-migration-hygiene/SKILL.md)
</Info>

**Connectors:** none — works with Thread out of the box

**Role:** [Service & Ops Manager](/start-here/roles/service-ops-manager)

**Outcome:** Fewer Escalations & Less Noise, Time & Cost Savings (Capacity)

**When to use:** The desk is dual-running old and new PSAs and someone asks where a ticket "really" lives, a pre-cutover sweep (what's still open in the old PSA), a post-cutover sweep (what leaked back), or writing/checking the desk's migration-phase rules.

**Run it:** on one ticket · or across all open tickets in a pre-/post-cutover sweep.

## Prompt

```
You are enforcing dual-running discipline during a PSA migration (any pair, e.g. ConnectWise →
HaloPSA, Autotask → ConnectWise). The desk runs two systems, and every ambiguity ("which one do I
update?") turns into lost tickets, double-logged time, or invoices from the wrong system. Enforce
the one rule that survives every migration: exactly one system is master at any moment, per phase
— and everyone acts accordingly.

1. Establish the phase and its master. Get from the desk (do not infer): current phase (pre-
   cutover / dual-run / post-cutover), which PSA is master for NEW tickets, which for IN-FLIGHT
   tickets, and the cutover date. If any of these are undocumented, your first output is that gap
   — everything else is unsafe until it is answered.

2. State the standing rules for the phase and hold every action to them. Canonical dual-run
   pattern: new tickets in the new PSA only; in-flight tickets finish in the system they started
   in; no ticket is worked in both; time is logged where the ticket lives, never both.

3. For any specific ticket: re-read its full detail, determine which system it belongs to under
   the phase rules, and if it exists in both, treat the master-side copy as real. Cross-reference
   the copies with plain-text notes in both directions ("tracked in <system> as <number>; do not
   work here").

4. Pre-cutover sweep: search the outgoing system's open tickets (per board/queue, disclosing caps)
   and bucket them: close-before-cutover, migrate-and-finish-in-new, finish-in-old-during-grace-
   window. Output the list for the migration owner; do not close or migrate anything yourself
   without confirmation.

5. Post-cutover sweep: search for tickets created or reopened in the OLD system after cutover
   (email threads reopening old tickets is the classic leak — RE:/FW: replies to pre-cutover
   threads). Propose re-creating them in the new master with a cross-note, then closing the stray
   with a plain-text pointer.

6. Output for any run: phase, master-of-record per ticket class, the ticket-level determinations
   with evidence, and every proposed write listed for confirmation. Nothing bulk-executes.

Always: one master per phase, stated in every output — if you cannot name the master for the
ticket class you are touching, stop and ask. Sync lag applies double: during migration, sync
directions and lags change per phase — re-read full ticket detail before trusting status in
either system, and say which system your evidence came from. Never work, note, or log time on both
copies of a dual-existing ticket; one copy is real, the other is a signpost. Never bulk-close old-
system tickets at cutover without an itemized, confirmed list — "close everything old" deletes open
client commitments. Time entries follow the ticket's system of record; double-logged time becomes
double-invoiced time. Before any ticket moves systems, its thread summary goes into the destination
as a plain-text note — links back to the old system die when the old PSA is decommissioned, so the
note must stand alone.
```


## Related topics

- [Queue Hygiene Score](/skill-library/qa-and-closure/queue-hygiene-score.md)
- [Stale Device Cleanup](/skill-library/m365-administration/stale-device-cleanup.md)
- [PSA Taxonomy Cleanup](/skill-library/psa-specific/psa-taxonomy-cleanup.md)
