A CRM migration is six steps: export, map, clean, import, verify, cut over. The data is the straightforward part. What derails migrations is the reporting history nobody agreed to lose and the integrations nobody wrote down.
Most of the risk is in the two weeks before anyone touches an export file.
Before you export anything
List every integration, including the ones nobody owns. The calendar sync, the form on the website, the Zap somebody built in 2023, the spreadsheet that pulls a weekly report. Each one is pointing at the old system and will keep pointing at it silently. This list is the single most useful artefact of the whole project, and it is almost always longer than the first guess.
Agree which reports have to work on day one. Not all of them. The three or four that someone acts on. Then check what each one depends on, because a report that groups by a custom field you decided not to migrate is a report that will be broken in week one, which is when confidence is decided.
Decide what you are deliberately not taking. Contacts with no activity in three years. Companies that were never qualified. Deals that have sat in stage one since 2024. Write the rule down and have someone senior agree to it, because the alternative is that each person makes their own call during the import and nobody can explain the result afterwards.
The six steps
| Step | What it means | Where it goes wrong |
|---|---|---|
| Export | Pull everything out of the old system while you still have access | Exporting too late, after the contract lapses |
| Map | Decide which old field becomes which new field | Custom fields with no obvious home get dropped silently |
| Clean | Deduplicate, drop what the rule says to drop, fix formats | Skipped, on the basis that it can be done later |
| Import | Load it, usually companies first, then contacts, then deals | Deals arriving before the records they attach to |
| Verify | Check counts, spot check records, run the day-one reports | Checking totals only, which hides mangled fields |
| Cut over | Switch the integrations, make the new system the only one | Leaving the old one writeable "just in case" |
Order matters in the import. Companies, then contacts, then deals, then activity. Each layer attaches to the one above it, and loading them out of order produces orphaned records that look fine in a count and wrong in a list.
Verifying properly
Counts are necessary and not sufficient. The same number of records can arrive with every date shifted by a timezone, every currency read as a string, or every owner assigned to whoever ran the import.
Three checks catch most of it. Pick ten deals at random and compare them field by field against the old system. Run the day-one reports and compare the totals to last month's. And have two or three people who use the system daily spend twenty minutes in it before anyone announces the switch, because they will notice in a minute what a checklist misses.
The week you switch off the old one
Set a date and hold it. The failure mode is not a dramatic rollback, it is a slow one: the old system stays readable, a few people keep using it, and six weeks later there are two half-complete records of the same pipeline.
A short read-only overlap is sensible. Anything longer than a fortnight means the migration has not finished, it has stalled.
If you are moving because of what it costs
Worth separating two problems before you choose where to go. One is that the system is wrong for how you work. The other is that the bill grows every time you hire, which is a pricing model problem rather than a product one, and it follows you to the next per-seat CRM.
Empiraa Signal is a CRM and more. It is also the B2B prospect database, the enrichment, the email sequences, the booking link and the proposal tool, in one system with unlimited users on every plan, so the bill does not move when the team grows. Migration of contacts, companies, deals and pipeline data is included.
Related reading: sales pipeline stages, and what probability to put on each, and what a free CRM actually costs.
See how Signal compares against HubSpot, with list prices and the date they were checked.


