The short answer
Capture migration deltas by defining a baseline extraction checkpoint, every source allowed to change afterward, a stable change identity, the system of entry during the transition, and a final replay or manual-entry register. Reconcile each delta exactly once in the target before releasing the old source from operational use.
Key takeaways
- A source freeze is a rule with exceptions, not a timestamp alone.
- Track creates, updates, deletes, and external events.
- Prove each delta was applied once and in dependency order.
Define the baseline and every continuing writer
Record the source systems, extraction job and time, time zone, included record versions, file hashes where available, and the target import batch. Then inventory remaining writers: staff, residents, owners, vendors, payment processors, bank feeds, document inboxes, APIs, scheduled jobs, and provider webhooks.
For each writer, choose pause, redirect to the target, capture for replay, or permit under a manual register. A banner asking staff not to edit does not govern external payment or message events.
Capture deltas with dependency and idempotency fields
Use source event or record IDs where possible. Record operation type, source version, event time and receipt time, parent dependencies, target identity, apply status, and conflict decision.
| Delta type | Example dependency | Apply-once test |
|---|---|---|
| Create | New tenant depends on property/unit identity | Source ID maps to one target ID |
| Update | Lease amendment depends on base lease version | Expected prior version matches |
| Delete/archive | Canceled work order or removed draft | Target disposition retained, not silently omitted |
| External event | Payment return depends on original payment identity | Original and event linked once |
| Document | Attachment depends on parent record and access scope | File hash/name, parent, and count verified |
Run a final ordered reconciliation
Stop or route all remaining writers at the final cutoff, export the last delta window, and compare it with captured events. Apply parent records before children and original transactions before returns or corrections. Conflicts require a named source-of-truth decision; later timestamp alone is not enough.
After replay, re-run critical counts and balances plus a sample of changed records. Preserve rejected deltas and reasons. The source can become read-only only when the approved cutover plan says its remaining operational role has ended.
Operational checklist
Mark your progress, then save a working copy. Selections reset when you leave this page. A checked box is not an approval or evidence of completion.
☐
Baseline checkpoint and files retained
☐
All post-extract writers inventoried
☐
Pause/redirect/capture rule assigned
☐
Stable delta identities recorded
☐
Dependencies and conflict rules defined
☐
Each delta applied or rejected once
☐
Final cutoff and reconciliation accepted
0 of 7 marked
Edge cases
- A source edit changes no updated timestamp: use audit logs or bounded comparison where available.
- A payment settles after cutover but began before it: retain the original provider identity across systems.
- A record is edited in both systems: escalate the field-level conflict instead of choosing the latest whole record.
Sources and references
Follow each source to check the underlying claim. Access checks and professional review are different steps.
Continue the workflow
PMS migration acceptance criteriaPMS migration rollback planPMS migration rejected-record registerRevision history
2026-09-18
Initial Phase 3 operational article with a distinct decision artifact, failure states, source-scope notes, and AI-assisted technical review.