Don't migrate everything from GP to BC. Tier your data: live transactions in BC, 2–5 years of summaries in extension tables, deep history in a queryable archive. Prove every balance at cutover.
Migrating from Dynamics GP to Business Central is a structural translation from a segmented, on-premise Dexterity-based ERP to a cloud-native, dimension-based AL platform — not a lift-and-shift. Microsoft provides a native Cloud Migration Tool, but it only migrates summary GL transactions for historical years; detailed transaction history is pushed to extension tables outside the live BC ledger, requiring custom Power BI or Power Apps builds for access. Successful migrations demand a tiered data strategy — live transactional data into BC, historical snapshots into extension tables, and 5–25 years of legacy detail into SQL archives or Azure Data Lake — along with significant reconciliation work to address sub-ledger drift, segment-to-dimension mapping, and data integrity issues accumulated over decades in GP.
Read this first
Pair-specific gotchas that catch teams out. Each one has cost somebody a weekend.
If you are running GP 2018 R2 or earlier under the Fixed Lifecycle Policy, your support
If you are running GP 2018 R2 or earlier under the Fixed Lifecycle Policy, your support end date may have already passed. Only versions on the Modern Lifecycle Policy (v18.1+) get the 2029/2031 timeline.
The native tool limitation
The Microsoft Cloud Migration Tool does not migrate detailed historical GL transactions into the live Business Central ledger. It only migrates summary amounts for historical years. The deep transaction detail is pushed to extension tables that cannot be queried natively within the standard BC interface. You must build custom Power BI reports or use Power Apps to access your own historical data.
Deposit all posted cash receipts in GP before the final migration run
Undeposited receipts are not migrated by the native tool. If you skip this step, bank reconciliation drifts on day one. (learn.microsoft.com)
You control how far back the snapshot goes using the Oldest Snapshot Year field in the GP
You control how far back the snapshot goes using the Oldest Snapshot Year field in the GP Company Migration Configuration page. Set this deliberately — every additional year increases migration time and extension table size.
Choose your two highest-volume reporting dimensions as Global Dimensions
If your finance team filters by Department and Division on nearly every report, those should be Global Dimension 1 and 2.
Auditors will specifically ask
"Can you produce the original source document for a transaction from [random historical year]?" If the answer requires booting up a decommissioned server, you have failed the test. Make sure your archive is online and queryable before decommissioning GP.
The runbook
Work top to bottom. Tick steps as you go — your progress is saved in this browser.
01 Discovery Scope the ledger, the subledgers and the audit obligations.
Objective Agreed scope across master data, open transactions and historical balances, with finance and audit signed up.
Keep these open
-
Inventory master data and transaction volumes in Dynamics GP
Count GL accounts, customers, vendors, items, fixed assets, open AR and AP, and transaction lines by year. Transaction line volume, not header count, is what determines your load time.
Data Profiler Get real record counts instead of estimating from memory -
Decide the history strategy with finance and audit
Choose between opening balances only, open items plus balances, or full transactional history. This is the single biggest scope decision in an ERP migration: full history multiplies effort many times over, and most organisations land on balances plus open items plus a read-only archive.
Full transactional history is rarely worth the cost. Confirm what your auditor actually requires before assuming you need it.
Vendor Evaluator Score Dynamics 365 Business Central against alternatives on weighted criteria -
Consult the external auditor early
The auditor has views on cut-over timing, audit-trail retention and how you evidence that balances carried across correctly. Finding this out after go-live can mean a qualified opinion, so get it in writing now.
-
Review the chart of accounts and decide whether to redesign
A migration is the natural moment to restructure the COA, and also the riskiest one. If you redesign, you need a mapping from old to new for every historical balance, plus a plan to restate comparatives.
Redesigning the chart of accounts mid-migration doubles the reconciliation burden. Treat it as a separate, sequenced project if you can.
-
Catalogue integrations and statutory reporting
List banking feeds, payment gateways, tax filing, payroll, CRM, e-commerce, warehouse and BI. Then list every statutory and tax filing obligation with its deadline — those deadlines constrain your window absolutely.
-
Pick a period-aligned go-live date
ERP cutovers align to a period boundary — ideally the start of a fiscal year, otherwise the start of a clean month. Mid-period cutover means split-period reporting for the rest of the year.
Don't move on until
- Chart of accounts and master-data counts confirmed
- History strategy agreed: balances, open items, or full transactional detail
- External auditor consulted on the migration approach
02 Data Audit Reconcile the source before you migrate it — you cannot fix a ledger later.
Objective A source ledger that balances, with master data cleansed and every open item agreed.
Keep these open
-
Produce and sign off a source trial balance
Run the trial balance in Dynamics GP and have the controller sign it. This is your migration baseline: without a signed pre-migration position you have nothing to reconcile the target against, and any later discrepancy is unarguable.
Without a signed, dated source trial balance you cannot prove the migration preserved the ledger. Do this before anything else.
-
Reconcile subledgers to the general ledger
Confirm AR, AP, inventory and fixed-asset subledgers tie to their GL control accounts. Pre-existing breaks must be resolved in Dynamics GP: migrating an out-of-balance ledger makes the break permanently unattributable.
Data Profiler Profile the Dynamics GP export for nulls, outliers and type drift -
Clean and deduplicate master data
Deduplicate customers, vendors and items, and identify records that should not carry forward. Duplicate vendors are also a fraud-control weakness, so this has value beyond the migration.
Data Cleaner Strip empty rows, stray whitespace and dead columns -
Agree open AR and AP item by item
Every open invoice, credit note and payment on account needs an owner and an agreed amount, including partially-paid items and foreign-currency balances. Open items are what customers and vendors will dispute in week one.
-
Validate export structure, encoding and precision
Check numeric precision and rounding on the export, and confirm dates and currency codes are unambiguous. Precision loss on amounts is silent, cumulative and produces penny differences that take days to trace.
Amounts exported at reduced precision will not re-total. Verify decimal places before you accept the export.
CSV Validator Catch broken headers and ragged rows in the raw export -
Scan for regulated data and produce masked test data
ERP data holds bank details, tax IDs and payroll information. Scan it, restrict who can see it, and generate a masked copy for the sandbox and for any implementation partner.
PII & Compliance Scanner Find regulated fields before they land in a new system
Don't move on until
- Trial balance in Dynamics GP balances and is signed by the controller
- AR and AP subledgers reconcile to the GL control accounts
- Master data deduplicated and inactive records identified
03 Field Mapping Map the COA, the dimensions and the subledger structures.
Objective A signed mapping covering the chart of accounts, dimensions, tax codes and currency handling.
Keep these open
-
Map the chart of accounts account by account
Every source account maps to exactly one target account, or to a documented split with agreed proportions. The controller reviews and signs this line by line — an unreviewed COA map is how a balance sheet stops balancing.
Schema Mapper Opens pre-loaded with the Dynamics GP → Dynamics 365 Business Central field pair -
Map dimensions, cost centres and analysis codes
ERPs differ structurally here: segments, dimensions, tracking categories and classes are not interchangeable. Confirm how Dynamics 365 Business Central models analysis and whether your existing reporting hierarchy survives the translation.
-
Map tax codes, rates and jurisdictions
Map every tax code with its rate, jurisdiction and reporting treatment, then verify the mapping reproduces your last filed return. Tax errors are statutory exposure, not reporting inconvenience.
A tax-code mapping that has not been tested against a previously filed return is untested. Reproduce a real filing before sign-off.
-
Decide multi-currency and exchange-rate handling
Confirm functional and reporting currencies, and how historical rates are stored. Revaluing historical transactions at current rates rewrites reported results and will not tie to filed accounts.
Historical transactions must retain their original transaction-date rates, or your comparatives will not match filed statements.
-
Map master data and subledger structures
Map customer and vendor records with their payment terms, credit limits and tax registrations, and item records with units of measure and costing method. Costing-method differences change inventory valuation, which changes the balance sheet.
-
Set load order and freeze the spec
COA, then dimensions, then master data, then opening balances, then open items, then any historical detail. Version and sign off the spec with the controller before the pilot.
Don't move on until
- Account-by-account COA mapping reviewed by the controller
- Tax codes and jurisdictions mapped and verified against filings
- Multi-currency and rate handling agreed with finance
04 Test Migration Prove the ledger balances in the target before you trust it.
Objective A sandbox load whose trial balance matches the signed source position to the penny.
Keep these open
-
Configure the Dynamics 365 Business Central sandbox with the agreed structures
Build the COA, dimensions, tax codes, currencies, fiscal calendar and posting rules before loading anything. Every one of these affects how a posted transaction lands, so an unconfigured sandbox produces meaningless results.
-
Load master data and validate it
Load customers, vendors and items first and verify counts, payment terms, tax registrations and costing methods. Transactions cannot post correctly against wrong master data, so this gate comes before any balance work.
Migration Validation Tool Diff the pilot batch against source before scaling up -
Load opening balances and prove the trial balance ties
Load opening balances and run a trial balance in Dynamics 365 Business Central, comparing to the signed source position. It must match exactly — a rounding difference here is a mapping defect, not a rounding difference.
Any variance at all between source and target trial balance must be explained line by line. "Close enough" is never acceptable in a ledger.
-
Load open items and reconcile the subledgers
Load open AR and AP with their ageing intact, then confirm subledger totals tie to GL control accounts and that ageing buckets match. Ageing that shifts means transaction dates mapped wrongly.
-
Run a full period-end close in the sandbox
Execute the whole close: revaluation, accruals, depreciation, tax calculation, and financial statement generation. Compare every statement to Dynamics GP for the same period. The close is where structural mapping errors finally become visible.
-
Test transactions end to end and reproduce a tax filing
Post a sales order to cash and a purchase order to payment, then generate the tax return for a previously filed period and compare it to what you filed. If both reconcile, the configuration is sound.
Don't move on until
- Target trial balance matches the signed source trial balance exactly
- Subledgers reconcile to control accounts in the target
- A full period-end close has been run in the sandbox
05 Cutover Switch the ledger on a period boundary, with balances proven.
Objective Balances and open items live in Dynamics 365 Business Central, transacting resumed, and a signed post-load trial balance.
Keep these open
-
Close the final period in Dynamics GP and freeze posting
Complete the period-end close, then lock posting entirely. An ERP freeze is absolute: a single journal posted to the old system after the final export leaves the two ledgers permanently divergent.
One journal posted in the old ERP after the final export breaks the reconciliation permanently. Lock posting at the system level, not by asking people nicely.
-
Publish the cutover runbook with the abort point
A timed, owner-named sequence for load, balance verification, integration switch and go/no-go, with an explicit abort criterion. The trial-balance check is the gate — nothing proceeds until it ties.
-
Load balances and open items into production
Load the final opening balances and open AR/AP into Dynamics 365 Business Central production, following the pilot-proven sequence. Do not improvise the order under time pressure.
-
Reconcile and sign the post-load trial balance
Run the trial balance in Dynamics 365 Business Central and reconcile it to the signed source position, then have the controller sign the result. This signature is your evidence for the auditor and your go/no-go gate.
Migration Validation Tool Confirm the final delta landed before you reopen -
Repoint banking, payment and tax integrations
Switch bank feeds, payment gateways, tax filing connections, payroll and BI, then process one real low-value payment and one bank reconciliation end to end. Banking errors move real money, so verify with live traffic.
Payment integrations left connected to the old ERP can duplicate real payments. Disable them before switching, not after.
-
Go/no-go, then open for transacting with daily reconciliation
Call the decision on the signed trial balance, open Dynamics 365 Business Central for posting, and reconcile daily for the first two weeks with finance support on hand. Keep Dynamics GP read-only for statutory retention — this is an audit requirement, not a preference.
-
Archive access procedure
Written documentation showing how to access Tier 3 archived data, who has credentials, and how to produce records on demand
Dynamics GP → Dynamics 365 Business Central specifics
- Checksums on key tables
- Row counts and control totals (sum of debit/credit) for GL, AR, AP, and inventory before and after migration. NIST defines a hash value as a string used to substantiate the integrity of digital evidence — hashing extracted tables before and after transfer creates a simple integrity proof. (nist.gov)
- Data lineage documentation
- A mapping document showing which GP tables map to which BC tables/extension tables, with transformation rules
Don't move on until
- Post-load trial balance signed by the controller
- Banking, tax and payment integrations verified live
- Users transacting and the first daily reconciliation clean
06 Validation Prove the statements, the tax position and the audit trail.
Objective Financial statements reproducing the source position, a clean tax filing, and auditor acceptance.
Keep these open
-
Reconcile the full ledger and all subledgers
Reconcile trial balance, AR, AP, inventory, fixed assets and bank against the signed source position. Produce a single reconciliation pack that goes to the auditor.
Migration Validation Tool Reconcile Dynamics GP and Dynamics 365 Business Central record-for-record -
Reproduce the financial statements
Generate balance sheet, P&L and cash flow in Dynamics 365 Business Central and compare to the pre-migration statements. Every variance needs a documented explanation traced to a specific mapping decision.
-
Complete and review the first period-end close
Run the first real close in Dynamics 365 Business Central with extra review at every step. Compare its duration and outcome to your historical close, and treat anything unexpected as a live finding.
Data Profiler Prove field completeness held up through the load -
Verify the tax position and file
Generate and review the first tax filing from Dynamics 365 Business Central, reconciling it to the underlying transactions before submission. Have the tax lead review it independently.
The first statutory filing out of a new ERP should be reconciled manually to source transactions before submission.
-
Confirm controls, segregation of duties and audit trail
Verify user permissions, approval limits, segregation of duties and audit logging in Dynamics 365 Business Central. Controls do not migrate, and a control gap found by an auditor is far more expensive than one you find yourself.
PII & Compliance Scanner Produce the compliance evidence your auditor will ask for -
Obtain auditor acceptance and retain the archive
Walk the auditor through the reconciliation pack, get written acceptance, and retain Dynamics GP read-only for the full statutory retention period. Diarise the retention expiry rather than the contract renewal.
-
Sign-off log
Controller and IT sign-off on each reconciliation checkpoint, with dates
Don't move on until
- Financial statements match the pre-migration position
- First period-end close completed and reviewed in Dynamics 365 Business Central
- Auditor satisfied and archive retained for the statutory period
Risk matrix
Per-object risk for this pair. Plan extra validation around anything marked high.
| Object | Risk | Notes |
|---|---|---|
| Chart of Accounts | high | GP's segmented account structure must be fundamentally redesigned into BC's dimension-based model, requiring careful mapping to preserve reporting integrity. |
| General Ledger History | high | Only summary GL balances migrate into the live BC ledger; detailed historical transactions are relegated to extension tables requiring custom reporting builds. |
| Open Accounts Payable | medium | Open AP invoices migrate at remaining balance only, losing partial payment history and requiring pre-migration reconciliation to ensure sub-ledger alignment. |
| Open Accounts Receivable | medium | Outstanding AR invoices migrate at net remaining amounts, and undeposited cash receipts are excluded entirely, creating reconciliation risk at cutover. |
| Customer and Vendor Master Data | low | The native tool supports active/inactive filtering for customers and vendors, making master data migration relatively straightforward. |
| Bank Reconciliation Data | high | Only the most recent reconciled balance and outstanding items migrate, and undeposited receipts must be manually cleared in GP before cutover to prevent day-one drift. |
| Inventory and Item Data | medium | On-hand quantities and serial/lot data migrate, but historical costing layers and transaction history from GP's inventory module require separate archival. |
| Open Purchase Orders | low | The native migration tool supports open purchase order migration, though partially received POs should be verified for quantity and amount accuracy post-migration. |
| Historical Closed Transactions | high | Closed AP/AR transactions and paid vendor invoices spanning 10–25 years do not migrate into live BC and must be archived in SQL, Azure Data Lake, or extension tables with custom access layers. |
| Check Images and Supporting Documents | medium | Scanned checks, invoice images, and supporting documentation stored outside GP's SQL tables require a separate document repository migration and linking strategy. |
The hard parts
What makes this specific migration difficult, beyond the mechanics.
Segment-to-Dimension Structural Translation
GP's account segment structure must be mapped to Business Central's dimension-based chart of accounts, requiring a complete rethinking of how financial reporting hierarchies are constructed.
Historical GL Detail Loss
The native Cloud Migration Tool only posts summary GL amounts for historical years, pushing detailed transaction history into extension tables that are not queryable through the standard BC interface.
Sub-Ledger Contamination from Legacy Data
Decades of manual journal entries to control accounts, orphaned transactions, and voided-and-reissued checks cause GL drift from AR/AP sub-ledgers that must be reconciled before migration.
Undeposited Cash Receipt Risk
The native tool does not migrate undeposited cash receipts, so all posted receipts must be deposited in GP before the final migration run or bank reconciliation will drift immediately at go-live.
Partial Payment Invoice Translation
Outstanding receivables and payables migrate with remaining balances only — partially paid invoices come across at net rather than gross, losing the original transaction detail and payment history.
Long-Term Archive Accessibility
Ensuring 10–25 years of historical GP data remains queryable for auditors post-cutover requires building and maintaining a separate archive infrastructure such as a read-only SQL instance or Azure Data Lake.
Tools used in this playbook
All free, all run entirely in your browser — nothing is uploaded.
FAQ
When does Microsoft end support for Dynamics GP?
Microsoft ends product enhancements, regulatory/tax updates, and technical support on December 31, 2029 (revised from the earlier September 30, 2029 date). Security patches end April 30, 2031. New subscription license sales ended April 1, 2026. Perpetual license holders can keep running GP past 2031, but with zero patches and no ecosystem support.
Does the Microsoft Cloud Migration Tool move all GP historical data into Business Central?
No. The native tool posts summary GL balances for historical years into the live BC ledger. Detailed historical transactions are stored in GP Historical Snapshot extension tables, which require Power BI, Power Apps, or custom reporting to query. For the oldest detail, Microsoft supports copying the full GP database to Azure Data Lake as a queryable archive.
How do Dynamics GP account segments map to Business Central?
GP's main account segment becomes the BC Account Number. All remaining segments are converted to Dimensions. You choose which two segments become Global Dimensions (indexed on every ledger entry for fast filtering). Additional segments become Shortcut Dimensions 3–8. Choosing the wrong Global Dimensions means rebuilding your reporting layer post-go-live.
What happens to GP ISV add-ons like Mekorma and SmartConnect after migration?
No ISV add-on migrates automatically. eOne SmartList Builder is replaced by Popdock in BC, SmartConnect has a cloud version (SmartConnect.com), and Mekorma is building a BC-native Payment Hub. Each add-on requires a separate replacement assessment and re-implementation. Inventory every ISV before scoping the project — this is where timelines blow up.
How long do I need to keep financial records after migrating off GP?
The IRS requires records as long as the period of limitations remains open — generally 3 years, sometimes 6, and up to 7 years for bad-debt or worthless-securities claims. Many CPA firms recommend a blanket 7-year retention policy. The IRS requires records to be available for inspection, not stored in your active ERP — a queryable SQL archive or Azure Data Lake satisfies this.