What should we actually migrate to D365 F&O and what should we leave behind?
Migrate open balances, open transactions and master data that the business needs to operate from day one. Leave behind closed historical transactions — they can live in a read-only archive or reporting database. The biggest migration mistake is trying to bring everything across: it multiplies the effort, inflates the project risk and often results in dirty data landing in the new system. Be ruthless about the cut-off date and agree it early with finance and operations.
How many data migration mock runs do we actually need?
At minimum three: an early mock to prove the process works, a mid-project mock with near-final data to expose volume and quality issues, and a dress rehearsal that mirrors the real cutover as closely as possible. Organisations that skip mocks almost always discover problems on the go-live weekend that could have been caught six weeks earlier. The dress rehearsal should be timed — if it takes longer than your cutover window, you have a problem.
Which tools should we use for D365 F&O data migration?
The Data Management Framework (DMF) is the primary tool for bulk data loads — it handles most master data and opening balances via composite entities. For complex transformations, most programmes use a staging database and SSIS or Azure Data Factory to cleanse and reshape data before DMF load. Excel templates work for small volumes. Avoid direct database inserts — they bypass business logic and create integrity issues you will not find until reconciliation.
How do we validate that the migrated data is correct?
Reconciliation, not eyeballing. For financial data, run trial balance comparisons between the legacy system and D365 at every level of the account structure. For open transactions, reconcile aged debtors and creditors line by line. For inventory, do a physical stock count close to the migration date and reconcile quantity and value. Build your reconciliation scripts during the design phase, not on the go-live weekend, and sign off each mock run formally before proceeding to the next.