How to decide what moves to Odoo, clean it, rehearse the load and have finance sign off the numbers when you leave QuickBooks, Sage or spreadsheets.

Reviewed by the DESSS ERP team
An Odoo data migration checklist keeps a move from QuickBooks, Sage or spreadsheets under control by settling what gets moved, who cleans it, what order it loads in and who signs off the results. Data migration is where confidence in a new ERP is won or lost. If the first invoice or stock count looks wrong, people stop trusting the system. This guide belongs alongside our broader Odoo ERP consulting services, and it focuses on the data work that companies can prepare themselves. Note that Odoo's upgrade service does not cover moving from another ERP, so plan this as a separate piece of work.
The first instinct is to move everything. Resist it. Old transactions, inactive customers and obsolete products add cost and clutter without helping anyone.
Odoo's accounting documentation lists the items companies moving from another system commonly bring across, such as opening entries, open invoices and bills, an inventory count, a trial balance and bank and credit card transactions. Use it as your starting point, then decide on the rest with your finance and operations leads.
Keep the old data accessible in a read-only form, so that people can look things up and auditors can get what they need. Check your retention requirements with your accountant.
QuickBooks setups often grow informally. Look for items used for several different purposes, customer records with job names attached and class or location tracking that may need a new structure in Odoo. Inventory valuation deserves particular attention, since a company moving into real warehouse management often finds its stock figures do not match the shelves.
Sage products vary considerably, so export options and data structures depend on your version. Segmented account numbers are common and may need mapping to a new chart of accounts. Check how long you will keep access to the old system, because a license or hosting agreement may end sooner than expected.
Spreadsheets carry unique risks: inconsistent spellings, merged cells, values typed into date columns and several conflicting copies. Decide which file is the master for each kind of data before anyone begins cleaning, and freeze changes to the rest.
Cleaning belongs with the people who know the data, helped by someone who knows the target system. Merge duplicates, standardize product codes and units, fill in missing tax details and correct addresses. Assign each dataset to a named owner.
Make decisions about the design at this stage too. Your product categories, account structure and customer naming will live in Odoo for years, so moving is a good moment to fix them.
Records depend on each other, so sequence matters. A vendor bill cannot reference a vendor who does not exist yet.
| Order | Data | Source of truth | Who checks it |
|---|---|---|---|
| 1 | Company settings, taxes and fiscal setup | Finance | Controller |
| 2 | Chart of accounts and journals | Accounting system | Controller |
| 3 | Customers and vendors | CRM or accounting system | Sales and purchasing |
| 4 | Product categories and products | Item master or spreadsheets | Operations |
| 5 | Warehouses, locations and bills of materials | Operations records | Warehouse and production |
| 6 | Open orders | Sales and purchasing | Department leads |
| 7 | Open invoices, bills and opening balances | Accounting system | Finance |
| 8 | Inventory counts at cutover | Physical count | Warehouse and finance |
Use stable external identifiers while importing, so that later loads can update records and link to them instead of creating duplicates.
A single load in production is a gamble. Run at least one full rehearsal on a test database, and preferably more for complicated data. Record how long each step takes, since that tells you how to plan the cutover.
After each rehearsal, finance should compare the results against the source system.
Then let actual users try their everyday tasks on the migrated data. They will notice things reconciliation cannot, such as a wrong default warehouse or a missing payment term.
Pick a quiet moment in your business, and often a period boundary, so that the accounting is simple. Agree when transactions stop in the old system, who performs the final load and how you will handle anything entered during the gap. Decide in advance what would cause you to postpone, and who has the authority to make that decision.
Keep a tested way back too. If the load fails, you need to be able to return to the old system without argument.
Use this as your master list.
For inventory-heavy projects, see our notes on Odoo inventory and warehouse management. Accounting setup details are on our Odoo accounting page.
It may be possible, but it is seldom a good idea. Importing years of detailed transactions adds cost and can introduce reconciliation problems. Most companies bring opening balances and open items instead, then keep the old file available for lookups. Ask your accountant which records you must retain, and in what form, before deciding how far back to go.
The people who use the data should own it, because they understand what is correct. Sales can review customers, purchasing can review vendors, and operations can review products. A consultant can provide templates, find duplicates and explain what Odoo needs. Finance should own the account mapping and the opening balances, since it must sign off on the numbers.
Plan on at least one full rehearsal, with more if data is complex or the first attempt reveals significant problems. Stop repeating them when loads run without errors, finance reconciles the results and users can complete everyday tasks. Each round should be a full run in the planned order, so you also learn how the real cutover will behave.
Decide how each kind of open transaction will move. Open invoices and bills usually transfer as balances that can still be paid and tracked. Open sales and purchase orders may be re-entered or imported, depending on how many exist. Reducing the number by closing out what you can before cutover keeps this stage much simpler.
Contact DESSS and share what you are moving from. We can review a sample export, point out likely issues and plan the rehearsal and reconciliation with your finance team.