HubSpot Migration
A migration that is sequenced, idempotent, and recoverable, so a failure in phase nine resumes at phase nine instead of restarting overnight.
Migrations rarely fail on row count. They fail on ordering and idempotency. We load object types in dependency order and resolve duplicates before writing associations, so history consolidates instead of fragmenting.
How we run it
- Dependency-ordered loads — companies, then contacts, then deals and tickets, then activities, then associations as an explicit final pass. No orphan defects.
- Deduplication as a planned phase — duplicates resolved against a survivorship rule and merged before associations, so activity history unifies on the surviving record.
- Idempotency — every phase re-runs to the same end state using external IDs and upsert-by-key logic.
- Checkpoints — progress recorded after each phase so any failure resumes rather than restarts.
After the landing
A migration lands the data; a Data Foundation Audit confirms it is trustworthy once there. The two are bookends of the same engagement.
Related reading
Read the anonymized 13-phase migration postmortem covering 11.8k records and 679 merges.