Explore: Margin Calculator Burn Rate Calculator CFO ROI Calculator | Construction Law Firms PE & VC Fund Admin | CEO Flash Report Sample Accounts UK Services
TechnologyERP

ERP Data Migration Without Losing Your Mind [Complete Guide]

Complete ERP data migration guide: 5-phase framework, data cleaning checklist, field mapping strategy, realistic timelines, and the mistakes that derail accounting data migrations.

By Stuart Wilson, ACMA CGMA · · 15 min read
TL;DR

ERP data migration is where implementations go to die. 67% of ERP projects go over budget, and dirty data is the #1 reason. This guide gives you a 5-phase migration framework — from data audit through go-live — with field mapping strategy, cleaning checklists, validation steps, and realistic timelines. Whether you're moving from QuickBooks to NetSuite, Sage to cloud, or spreadsheets to a proper ERP, the data migration process is fundamentally the same. Get it right and the rest of the implementation falls into place. Get it wrong and you'll spend six months reconciling a system nobody trusts.

Written by Stuart Wilson, ACMA CGMA — 24 years managing system migrations for Citigroup, PE portfolio companies, and high-growth businesses.

You've been through it. Or you're about to go through it. Either way, you already know the horror stories.

The GL doesn't balance after cutover. AR aging in the new system doesn't match the old one — and nobody can explain the $340K difference. Vendor records got duplicated during import, so now you have three versions of "Office Depot" with different payment terms attached to each. Customer names imported with encoding artifacts, so half your invoice history is linked to "Acme Corp™" and the other half to "Acme Corp." Your controller is running two systems in parallel, manually reconciling every night until 10 PM, and your month-end close just went from 8 days to 22.

I've seen every one of these. More than once. And in every single case, the root cause was the same: the team treated data migration as a technical task instead of an accounting project.

Data migration isn't an IT problem. It's a financial controls problem. The person who should own it isn't your NetSuite implementation consultant — it's your CFO or controller. Someone who understands what the data means, not just how to move it between systems.

From Stuart's Experience
I've led system migrations at Citigroup (migrating trading desk reporting systems), managed ERP implementations across the Bancroft Group's multi-entity structure, and overseen data migrations for PE portfolio companies transitioning from spreadsheets and QuickBooks to NetSuite and Sage Intacct. The pattern is always the same: the companies that treat data migration as a finance-led project finish on time. The ones that hand it off to IT or the implementation partner spend months cleaning up afterward.
67%
of ERP implementations
go over budget
$150K
average cost of a
failed data migration
83%
cite data quality
as #1 challenge

1. Why Migrations Fail

I've audited failed migrations. I've been brought in to rescue them mid-stream. The failure modes are remarkably consistent. Here are the three that account for 90% of the damage:

1

Dirty Data Gets Migrated As-Is

The old system has 4,200 vendor records. 1,100 are duplicates. 600 haven't been used in three years. 200 have incorrect tax IDs. Nobody cleaned them up because "we'll fix it in the new system." You won't. You'll just have 4,200 dirty vendor records in a shinier interface — and your AP team will spend months untangling them while real invoices pile up.

This is the single most common migration failure. Teams export data from the old system, transform it just enough to fit the new system's import template, and load it. They never ask: should this data exist at all?

✅ The Fix

Audit and clean your data before you touch the new system. Deduplicate vendors and customers. Purge inactive records. Validate tax IDs and addresses. Fix account coding errors. This is Phase 1 of the framework below — and it should take 30% of your total migration time.

2

No Field Mapping Plan

QuickBooks has "Class" and "Location." NetSuite has "Department," "Class," "Location," and "Subsidiary." Sage Intacct has up to 8 custom dimensions. Your old system's "Project" field doesn't map 1:1 to anything in the new system. If you don't build a complete field-by-field mapping document before migration starts, you'll discover gaps during testing — when it's expensive to fix — or worse, after go-live, when your reports don't slice the data the way your board expects.

✅ The Fix

Build a complete field mapping spreadsheet: every field in the source system, its corresponding field in the target system, transformation rules, and default values for gaps. Review it with your controller, your implementation partner, and at least one end user who touches the data daily.

3

Rushing Go-Live Without Parallel Testing

The implementation partner says the system is ready. Leadership wants to stop paying for two systems. Someone picks a go-live date based on a board meeting, not on readiness. The team cuts over without running both systems in parallel. Day one: the balance sheet doesn't match. Day five: payroll runs against the wrong chart of accounts. Day ten: the auditors ask for a report the new system can't generate because nobody mapped that data.

✅ The Fix

Run both systems in parallel for at least one full close cycle — ideally two. Process every transaction in both systems. Reconcile every account. If the numbers don't tie, you're not ready. Go-live dates should be based on reconciliation results, not calendar pressure.

2. The 5-Phase Migration Framework

This is the framework I use on every migration engagement. It works whether you're moving from QuickBooks to NetSuite, Sage to cloud, or a collection of spreadsheets to your first real ERP. The technology changes. The process doesn't.

Phase 1: Audit & Clean

Duration: 2–4 weeks

Before you migrate anything, you need to know exactly what you have. Export your full chart of accounts, customer master, vendor master, open AP, open AR, and a sample of historical transactions. Then audit them ruthlessly:

  • How many duplicate customer/vendor records exist?
  • How many GL accounts are inactive or redundant?
  • Are tax IDs complete and valid?
  • Do payment terms match actual practice?
  • How many open items are actually stale (90+ days with no activity)?

This phase produces a Data Quality Report — a document that tells you exactly how much cleaning is needed and where the risk is concentrated. I've seen this step alone prevent six-figure cleanup costs later.

Phase 2: Map & Transform

Duration: 2–3 weeks

Build your field mapping document. Every source field → target field, with transformation rules. This is where you redesign your chart of accounts for the new system's capabilities. Common decisions at this stage:

  • Consolidating 400+ GL accounts into a cleaner 150-account structure
  • Mapping QuickBooks "Classes" to NetSuite departments and locations
  • Defining how multi-currency balances convert at migration date
  • Setting default values for required fields that don't exist in the source
  • Building transformation scripts for data format differences (date formats, address fields, phone numbers)

Phase 3: Parallel Run

Duration: 2–4 weeks

Load your cleaned data into a sandbox or test environment. Run real transactions through both systems simultaneously for at least one full accounting period. This is non-negotiable. You're looking for:

  • Balance sheet tie-out between old and new system
  • AR and AP aging agreement
  • Revenue and expense recognition matching
  • Bank reconciliation parity
  • Report output that matches your board deck format

If anything doesn't match, stop. Trace the variance. Fix the mapping or the data. Do not proceed until the numbers tie.

Phase 4: Validate & Reconcile

Duration: 1–2 weeks

This is your sign-off phase. The controller or CFO reviews every reconciliation and formally approves the migration. Key validation checks:

  • Trial balance in new system matches source system to the penny
  • Subledger totals (AP, AR, FA) agree with GL control accounts
  • Customer and vendor record counts match (after planned deduplication)
  • Open transaction aging matches between systems
  • Key reports (P&L, balance sheet, cash flow) generate correctly

Phase 5: Go-Live & Monitor

Duration: 2–4 weeks post-cutover

Cut over on a weekend. Have your controller, a power user, and your implementation partner available for the first two weeks. Monitor daily:

  • Daily bank reconciliation for the first two weeks
  • Weekly trial balance comparison against the old system
  • Transaction volume tracking (are users actually entering data?)
  • Error log review — catch import failures and posting errors early
  • End-user feedback collection — identify training gaps before they become habits

Keep the old system in read-only mode for at least 12 months. You will need to reference it.

3. Common Migration Paths

The specific platform pair changes the tooling, but the 5-phase framework applies to all of them. Here's what I see most often:

QuickBooks → NetSuite

The most common migration for companies in the $10M–$100M revenue range. NetSuite's SuiteCloud Data Migration tool handles basic imports, but the real work is redesigning your chart of accounts to take advantage of NetSuite's multi-subsidiary, multi-currency, and dimensional reporting. Expect to consolidate accounts and restructure your reporting hierarchy. Budget 5–8 months for the full implementation; 4–8 weeks for data migration specifically. See our complete QuickBooks to NetSuite migration guide.

Sage → QuickBooks Online or Cloud ERP

Companies on Sage 50 or Sage 100 that have outgrown the desktop model. The challenge here is Sage's proprietary data structures — export options are limited and often require third-party tools like Transaction Pro or direct database queries. Pay special attention to inventory data, job costing history, and custom fields that may not have equivalents in the target system.

Excel / Spreadsheets → First ERP

The hardest migration, paradoxically. When there's no structured source system, your "data" lives in 47 spreadsheets across 12 people's laptops. There's no single source of truth. Step one is always the same: build the chart of accounts and master data from scratch, then enter opening balances as of a clean cutover date. Don't try to import spreadsheet data — manually enter opening balances and go forward clean.

Legacy On-Premise → Cloud ERP

Companies on older platforms like MAS 90, Peachtree, or industry-specific legacy systems. These migrations have the longest timelines because legacy data formats are often undocumented, the original implementer is gone, and custom fields may not be extractable without database-level access. Always engage someone who has worked with the specific legacy platform before — generic ERP consultants will underestimate the extraction complexity.

4. What Data to Migrate (and What to Leave Behind)

This is where I see teams waste the most time and money. The instinct is to migrate everything. Don't. Here's how to think about it:

✓ Always Migrate
  • Chart of Accounts — redesigned for the new system, not copied verbatim
  • Open AP — unpaid vendor invoices and credit memos
  • Open AR — outstanding customer invoices and unapplied payments
  • Customer master data — active customers with correct contact info, payment terms, tax status
  • Vendor master data — active vendors with W-9/tax ID, payment terms, bank details
  • Fixed asset register — current assets with cost, accumulated depreciation, and remaining useful life
  • Current-year detailed transactions — GL detail for the current fiscal year
⚠ Migrate Selectively
  • Historical transactions (1–3 years) — summary journal entries by period, not individual transactions
  • Job costing data — open/active jobs only; closed jobs as summary records
  • Payroll history — YTD totals for current year; prior years usually stay in the payroll system
  • Inventory — current on-hand quantities and costs; historical movement stays in old system
✗ Usually Don't Migrate
  • Historical transactions beyond 3 years — keep old system in read-only mode instead
  • Inactive customers/vendors — if they haven't transacted in 2+ years, leave them behind
  • Voided or deleted transactions — they serve no purpose in the new system
  • Duplicate records — clean them out, don't migrate the mess
  • Custom reports — rebuild them in the new system using native tools
📊 Example: Typical Migration Scope

A $15M manufacturing company moving from QuickBooks to NetSuite: migrated 180 GL accounts (consolidated from 340), 1,200 active customers (from 3,400 total), 450 active vendors (from 1,800), all open AP/AR, current-year transactions, and summary balances for prior 2 years. Total records migrated: ~45,000. Records left behind: ~120,000. The migration completed in 6 weeks. Attempting to migrate all 165,000 records would have taken 14+ weeks and introduced thousands of data quality issues.

5. Data Cleaning Checklist

Print this out. Tape it to the wall. Don't start loading data into the new system until every high-priority item is complete:

Item Action Priority
Duplicate vendors Merge duplicates, standardize naming convention (e.g., "Office Depot" not "OFFICE DEPOT INC.") 🔴 High
Duplicate customers Merge duplicates, assign canonical name, consolidate transaction history 🔴 High
Inactive GL accounts Mark inactive or consolidate into parent accounts; do not migrate zero-balance accounts with no activity in 2+ years 🔴 High
Tax IDs (W-9s) Validate all vendor tax IDs; flag missing or malformed EINs/SSNs before 1099 season 🔴 High
Stale open invoices Review AP/AR items older than 90 days; write off uncollectible AR, resolve disputed AP 🟡 Medium
Payment terms Standardize across vendors (Net 30, Net 45, etc.); correct mismatches between terms and actual payment patterns 🟡 Medium
Address data Validate and standardize customer/vendor addresses; fix state abbreviations, ZIP codes, country formats 🟡 Medium
Account coding errors Run a trial balance and investigate anomalies; reclassify misposted entries before migration 🟡 Medium
Intercompany balances Reconcile and eliminate; start the new system with clean IC positions 🔴 High
Bank reconciliation Complete reconciliation through cutover date; no outstanding items should carry over unresolved 🔴 High

6. Timeline Expectations

These are timelines for the data migration component specifically — not the full ERP implementation, which runs longer. Set expectations with your board accordingly:

Complexity Description Data Migration Timeline
Simple Single entity, one currency, clean books, <500 active customers/vendors 4–6 weeks
Moderate Multi-department, moderate transaction volume, some data quality issues, basic job costing 8–12 weeks
Complex Multi-entity, multi-currency, legacy system with poor documentation, heavy customization, 1,000+ active records 3–6 months
ℹ Timeline Reality Check

In my experience, the single biggest timeline risk isn't technical — it's data cleaning. Teams consistently underestimate how long it takes to deduplicate 2,000 vendor records or reconcile three years of intercompany balances. Budget 30–40% of your total data migration timeline for Phase 1 (Audit & Clean). If you skip it, you'll spend that time — and more — fixing problems after go-live.

7. Cost Breakdown

Data migration costs are often buried inside "implementation fees." Here's what the line items actually look like when you break them out:

Cost Category Simple Moderate Complex
Internal team time 80–120 hours 200–400 hours 500–1,000+ hours
Consultant / migration specialist $8K–$15K $20K–$50K $50K–$120K
Software licensing overlap 1–2 months 2–4 months 4–6 months
Data cleanup tools / third-party ETL $0–$2K $2K–$8K $5K–$20K
Training (migration-specific) $2K–$5K $5K–$12K $10K–$25K
Total data migration cost $12K–$25K $35K–$80K $80K–$200K+

The internal team time is the cost most companies underestimate. Your controller will spend 20–40% of their time on migration activities for weeks. Your AP and AR clerks will be pulled into data validation. If you don't backfill or reduce other workload, something else suffers — usually the monthly close.

8. When to Bring in a Fractional CFO

✓ A Fractional CFO Adds Migration Value When:
  • You don't have a CFO or senior controller — Someone needs to own the chart of accounts redesign, validate field mappings, and sign off on reconciliation. Your bookkeeper can't do this. Your implementation partner won't do it. This is a finance leadership decision.
  • You're migrating during a growth inflection — If you're raising capital, preparing for acquisition, or scaling past $10M revenue, the migration needs to serve your future reporting needs, not just replicate the old structure in a new system.
  • Your implementation partner is driving decisions they shouldn't be — Implementation partners are excellent at configuring software. They're not equipped to decide whether your chart of accounts should support location-level P&Ls or how your board wants to see departmental overhead allocation. That's a CFO decision.
  • A previous migration attempt failed — If you've already tried once and the data doesn't tie, bring in someone who has done this before. The cost of a fractional CFO engagement ($3K–$8K/month) is a fraction of the cost of a second failed migration.
  • Multi-entity consolidation is involved — Intercompany elimination, transfer pricing, and consolidated reporting require finance expertise that most implementation teams don't have at the depth required.

In my experience, companies that bring in a fractional CFO or experienced controller to lead the migration finish 30–40% faster and spend significantly less on post-migration cleanup. The upfront cost is small relative to the risk.

🏦 Ex-Citigroup · Ex-ABN AMRO
📊 500+ Management Packs Delivered
Reports by the 5th — Every Month
🛡️ Zero Material Audit Findings in 24 Years

The CFO-Grade Sample Pack — Free, No Strings

The exact management accounts, KPI dashboards, and 13-week cash flow templates that our clients receive every month. Not a mockup — the real thing. See what your finance function should look like.

The #1 thing most $5M–$50M companies get wrong about their finances

It's not what you think — and it's not about your bookkeeper. Stuart Wilson (ACMA CGMA, ex-Citigroup, 24 years) has seen the same pattern in 87% of the companies he's worked with. A 15-minute call is enough to tell you if you have it too.

Find Out in a Free Discovery Call
Confidential · No pitch · No obligation
Book a Free Discovery Call