Salesforce Data Migration: What to Check Before and After
Migrations fail at the count. This checklist comes from a move of 238,945 records where the count at the end matched the count at the start.
The Migration Behind It
A professional services firm moved twenty-seven years of client history into a new system. Dozens of people had entered those records over three decades, with no shared convention.
The load ran in stages, each reconciled against a full export. The 45,842 contacts moved with their history attached. All 238,945 records arrived, each traceable to its original.
Before the Load
- 01
Take a full export and lock it
Export every object in full before anything is touched. That copy is the record of the business as it stood, and every later count is checked against it.
- 02
Count every object
Write down the record count for each object in the source. A migration with no starting count has nothing to reconcile against at the end.
- 03
Map every field to a home
Map each source field to a destination field. Fields with no home get written down and decided on with the people who use them before the load.
- 04
Keep the original record IDs
Carry each record's source ID into a dedicated field. Links between records then survive the move, and comparing old against new becomes a lookup.
- 05
Decide how activity history moves
Emails, calls, meetings, and notes need their real dates and real owners. Decide in writing how each one moves, and which timestamps the platform cannot backdate.
- 06
Plan the load order
Load parent records before the records that point to them: accounts before contacts, contacts before deals. A wrong order leaves records detached from their companies.
- 07
Refresh the export before go-live
An export that is two weeks old loses everything created since. Take a fresh one before the final load and compare it against the first.
After the Load
- 01
Reconcile counts at every stage
Compare the count after each stage of the load with the export. When the counts disagree, stop the load until they agree.
- 02
Diff by original ID
Match every destination record to its source ID. Anything in the source with no match is a missing record, found before the team finds it.
- 03
Check ownership
Records loaded under an admin login show the wrong owner. Reassign them to the people who own them, and confirm each rep sees their own book.
- 04
Check activity dates
Confirm that history carries its original dates. If every activity reads as the migration date, pipeline history looks as if the business started that week.
- 05
Open real records by name
Pick records the team knows well and check them line by line against the original. Counts prove volume; a record a partner recognizes proves the content.
- 06
Test saving a new record
Create a new record on every main object as a normal user. Leftover import fields marked required can stop the team saving work on day one.
- 07
Document what was decided
Write down the mapping, the fields left behind, and the limits of the new system. The team should be able to answer its own questions without us.
Moving from HubSpot? The HubSpot to Salesforce migration page covers how that move runs.
Common Questions
What should a Salesforce data migration checklist include?
A locked export, a count per object, a field map, preserved source IDs, a load order, and a plan for activity history. After the load, it needs a reconciled count, an ID diff, ownership and date checks, and a test save.
How do you confirm no records were lost?
Count every object before the move and after each stage, then match each new record to its source ID. Zero unmatched records against a locked export is the proof.
What is the most common migration mistake?
Building the load from an old export. Everything created after it goes missing, and the gap shows up after go-live as records the team cannot find.
Can activity history keep its original dates?
Most of it can, when the dates are mapped in the plan. Some system timestamps cannot be backdated, and the team should get that in writing before go-live.
- 238,945Records reconciled
- 27 yearsOf history migrated
- 0Records lost
Client names are withheld. Industry, size, timeline, and metrics are drawn from engagement records.
30 minutes on what your migration moves, in what order, and how it gets counted.