Preparing master data before your Odoo go-live
Customers, vendors, products and the chart of accounts: how to clean them, who owns them, and how to verify balances before go-live day.

The most common cause of delay on Odoo projects isn't customization or training. It's a customer list in Excel where the same customer appears under three different names. Master data is the foundation everything else is built on: if an error goes in on go-live day, it comes out in every invoice and every report.
This article is a practical guide to what we ask our clients to prepare, how to prepare it, and who is responsible for each file.
What master data is, and what it isn't
Master data is the set of records that every transaction refers back to: customers, vendors, products and services, the chart of accounts, employees, warehouses and locations, price lists, and taxes. The transactions themselves, such as old invoices and closed sales orders, aren't master data, and we usually don't migrate them.
Who owns each file
The most important decision at this stage isn't a technical one: every data file has a single owner on your team who signs it off before migration. Without an owner, a file stays “almost ready” forever.
| File | Usual owner | Most common problem |
|---|---|---|
| Customers | Sales manager | Duplicates, and tax IDs missing for e-invoicing |
| Vendors | Purchasing manager | Inconsistent payment terms |
| Products | Warehouse manager with sales | Conflicting units of measure (carton or piece) |
| Chart of accounts | Finance manager | Accounts named after people instead of what they hold |
| Opening balances | Finance manager with the warehouse | An old stock count that doesn't match reality |
Cleaning up, file by file
Customers and vendors
Standardize the legal name and keep the trade name in a separate field. Add the tax ID and the address in the format the Egyptian Tax Authority requires for e-invoicing: this isn't a nice-to-have, it's a condition for submitting invoices. Merge duplicates with a clear decision: which record stays, which goes, and who calls the customer if needed.
Products
One code per product, an Arabic and an English name, a base unit of measure and conversion units (one carton holds 12 pieces). Group products into categories that reflect your reports, not the layout of the warehouse. And decide for each product whether it's stocked, manufactured or purchased: that determines how it behaves in Odoo.
Chart of accounts
Odoo comes with a ready-made Egyptian chart of accounts. We usually start from it and add what your reports need, rather than migrating your old chart with everything that has piled up in it. The rule: if no report has used an account in a year, it doesn't go into the new system.
Opening balances
Three sets of figures must match on the same day: the trial balance, the detailed customer and vendor balances, and the physical stock count. The stock count in particular must be done a few days before go-live, not copied from an old system that nobody trusted in the first place.
The trial migration: why we migrate twice
We first migrate into a test environment, and your key users work in it for a week: they issue an invoice, receive a shipment, review the trial balance. Every error found here costs minutes. The same error after go-live costs days, and the team's trust. Then we run the final migration over a weekend with up-to-date balances.
Checklist before go-live day
After go-live: who keeps the data clean?
Data doesn't stay clean on its own. We set simple rules in Odoo: no duplicate tax IDs, required fields when creating a product, and permissions that decide who can create a new customer. Most important of all is training your key user to run a short monthly review of new records.
Key takeaways
- Migrate balances and open documents only, not the whole history.
- Every file has one owner who signs it off: a management decision, not a technical one.
- A physical stock count a few days before go-live is a requirement, not an option.
- A trial migration turns errors that cost days into errors that cost minutes.


