How to Plan ERP or CRM Data Migration
Good data migration starts weeks before go-live: list every source system, decide who owns each data type in the new system, clean and deduplicate before you move anything, and rehearse the full migration at least once so you catch problems while the old system is still running as a safety net.
Inventory Sources and Define Target Data Ownership
Start by listing every place relevant data currently lives — the accounting software, a CRM spreadsheet, a separate billing tool, even personal notes — because migration plans that only account for the "main" system routinely miss data that turns out to matter once someone goes looking for it after go-live.
For each type of data — customers, items, open orders, historical transactions — decide which system will be the single source of truth going forward. Without this decision made explicitly, migrated data and newly entered data start disagreeing within weeks, and no one is sure which version to trust.
Clean, Map, Deduplicate and Validate Records
Consider a regional retail chain, purely as an illustration, migrating a decade of customer and billing data from an older desktop system into a new ERP. During a rehearsal pass, they found roughly one in twelve customer records were duplicates under slightly different spellings of the same name — caught and merged before it ever touched the live system.
Map each old field to its new equivalent explicitly, rather than assuming a like-for-like match, and validate mandatory fields before the load — a record missing a required field in the new system will either fail to import or import with a blank that someone has to chase down later.
Plan Permissions, Secure Transfer and Reconciliation
Decide who can access the data while it's in transit, and use a controlled transfer method rather than emailing spreadsheets between people — migration is a moment when sensitive customer and financial data is often more exposed than usual, precisely because it's moving between systems and people.
After each batch loads, reconcile it — compare record counts and key totals, such as total outstanding balances, between the old and new systems. Reconciling in batches as you go catches errors early, rather than discovering a mismatch only after everything has already moved.
Rehearse the Migration and the Rollback
Run the full migration into a test environment before doing it for real, using an actual copy of your production data rather than a small sample — problems that don't show up in a sample of fifty records often appear reliably at the full volume of ten thousand.
Confirm a rollback plan exists and has been tested — if the live migration reveals a serious problem, you need a defined way to fall back to the old system without losing whatever was entered in the gap, not a plan improvised under pressure on cutover night.
Approve Cutover and Run Post-Migration Checks
Get a formal sign-off from each data owner before the final migration runs — not just from IT or the implementation team, but from the people who will actually rely on that data day to day, confirming the rehearsal results looked right to them.
In the days immediately after cutover, spot-check a sample of complex records — not just totals — and keep the old system available in read-only mode for a defined window rather than switching it off the moment the migration completes. Most missed issues surface in the first week of real use, not during the migration itself.
Migration mapping and reconciliation sheet
A working sheet with columns for source field, target field, transformation rule applied (if any), and a record-count and key-total comparison between old and new systems for each batch — giving a clear, checkable trail of what moved, how it was transformed, and whether the numbers still agree.
Frequently asked questions
Should all historical data be migrated?
Not necessarily. Separate data you need live and editable — open orders, current stock, active customers — from historical data that can stay in a read-only archive export instead, which reduces migration effort and risk without losing access to the history.
How do we confirm nothing was lost?
Reconcile record counts and key totals — such as sum of outstanding balances — between the old and new systems before decommissioning the old one, and spot-check a sample of complex records individually rather than relying on totals alone.
Have a specific situation to work through?
This article covers the general case. Tell us what you're actually dealing with and we'll respond directly.