Dynamics 365 data migration: how to plan it, which tools to use and how to avoid a bad go-live
A Dynamics 365 data migration moves customers, products, open transactions and the history you still need from an old system into Dynamics 365. It works in five stages: decide what moves, clean it at the source, map it to Dynamics 365 tables, rehearse the load at least twice, then cut over and reconcile. When a migration goes wrong, the cause is usually skipped cleanup or skipped test runs, not the tool.
Updated

What does a Dynamics 365 data migration strategy need to decide?
A migration strategy is a short written document, agreed before anyone writes a load script. It answers four questions. Which records move, and from which date? Which system is the source of truth for each one while both systems run? Who in the business owns the quality of each data set? And what counts as a successful load, in numbers someone can check?
Start with the first question. Moving every record you have ever created is the slowest and riskiest option. A common pattern is to move all active master data (customers, contacts, vendors, products), open transactions (open quotes, orders, cases, invoices) and opening balances, then keep closed history in a read-only archive or a reporting database. People can still look up an old order, and Dynamics 365 starts clean.
Write down what will not move as well. A list of retired fields, dead picklist values and duplicate records that will be merged saves arguments during testing, when someone notices a field is missing. Decide too which account runs the loads: a dedicated migration user with a temporary role, removed after cutover, as described in our Dynamics 365 security and compliance guide.
Which Dynamics 365 apps are you migrating into?
Dynamics 365 is two platforms, and the tools differ. Sales, Customer Service, Field Service and Customer Insights store data in Dataverse. Finance, Supply Chain Management and the other finance and operations apps load data through data entities and data packages in the Data management workspace.
Many projects move into both at once, for example a CRM system into Sales and an old ERP into Finance. Treat them as two migrations with one shared customer and product list, and agree which side creates a new customer after go-live. If you are moving to Business Central instead, our Business Central data migration checklist covers that product.
Microsoft tools for Dynamics 365 data migration
Dynamics 365 data migration steps, in order
- 1
Profile the source
Count records per table, find duplicates, blank required fields and values that will not fit the new option sets. The profile becomes the cleanup to-do list.
- 2
Clean at the source
Merge duplicates and fix bad data in the old system, where users know the records, rather than inside load scripts nobody reviews.
- 3
Map fields and keys
Map every source field to a Dynamics 365 column, and store the old system's ID on each new record so loads can be rerun without creating duplicates.
- 4
Set the load order
Load parents before children: users and business units, then accounts, contacts, products and price lists, then opportunities, quotes, orders and cases, then notes and attachments.
- 5
Rehearse the load
Run a full mock migration into a sandbox, time it, fix what failed and run it again. The last rehearsal tells you how long the cutover window must be.
- 6
Cut over and reconcile
Freeze the old system, run the final load, compare counts and balances with the business owners, and only then open Dynamics 365 to users.
Dynamics 365 data migration best practices
- โUse alternate keys or an external ID column so a rerun updates records instead of duplicating them.
- โCreate every user and team before loading owned records, or map old owners to a holding user and reassign later.
- โTurn off plug-ins, flows and duplicate detection rules that fire on create during bulk loads, and turn them back on afterwards.
- โPlan for Dataverse service protection limits by loading in parallel batches with retry logic instead of one long single-threaded run.
- โLoad open transactions with their real dates and statuses, so reports and ageing are right on day one.
- โKeep a reconciliation sheet per table: source count, loaded count, rejected count and the reason for each rejection.
- โAsk the business owner of each data set, not the project team, to sign off the final numbers.
Why do Dynamics 365 migrations run late?
The same three problems cause most delays. Data cleanup starts too late, so the first rehearsal turns up a long list of errors a few weeks before go-live. The load order is wrong, so child records fail because a parent was not there yet. And nobody owns the sign-off, so the cutover weekend ends with a debate about whether the numbers are close enough.
Microsoft's Success by Design implementation guide treats data migration as a workstream with its own plan and owner for the same reason. If a migration is already behind, our project rescue work usually starts with the reconciliation sheet, because it shows exactly which tables are not ready.
Questions about Dynamics 365 data migration
How long does a Dynamics 365 data migration take?
It depends on the number of source systems, tables, the state of the data and how many rehearsals are needed. The cutover itself is often a weekend, but the profiling, cleanup, mapping and rehearsals around it run for weeks. A rehearsal load tells you the real duration better than any estimate made upfront.
Should we migrate all our history into Dynamics 365?
Usually not. Most teams move active master data, open transactions and opening balances, and keep closed history in an archive or reporting database they can still search. Moving everything increases load time, storage use and the number of errors to fix, for records few people open.
Can we migrate from Salesforce to Dynamics 365?
Yes. Accounts, contacts, leads, opportunities, cases, activities and attachments all have a place in Dataverse. The work is in mapping custom objects and picklists, keeping record owners and dates, and moving files. See our [Dynamics 365 Salesforce integration guide](/integrations/dynamics-365-salesforce-integration/) if both systems will run side by side for a while.
What is the difference between data migration and integration?
A migration is a one-time move followed by switching the old system off. An integration keeps two live systems in sync for as long as both are used. Some projects need both: a migration for history and an integration while teams move over in waves.
Who should own the data during a migration?
The business. A finance lead owns balances, a sales lead owns accounts and contacts, a service lead owns cases. The project team builds and runs the loads, but the owners decide what is clean enough and sign off the reconciliation.
Talk to us about your project.
Tell us what you run today and what has to change. A senior consultant replies with a written next step.