Moving to Odoo rarely means starting from scratch. It means shifting a living accounting history (customers, invoices, entries, VAT) from an old system into a new one. Here is how to run a migration in Luxembourg, whether you are upgrading a version or leaving Sage, EBP or Dolibarr, without breaking your PCN 2020 chart or your audit trail.
In short. Migrating to Odoo covers two very different projects you must separate before any quote: a version upgrade (moving an Odoo 17 or 18 to 19), handled by Odoo's upgrade platform, and a move from another tool (Sage, EBP, Dolibarr, a spreadsheet), which is a data-import project. In both cases, the real risk in Luxembourg is not technical: it is losing compliance, the standardised chart of accounts (PCN 2020), the VAT history and the ability to produce a clean FAIA. A successful migration is prepared on the data, not on the button.
Many businesses reach Odoo not from nothing, but by leaving a tool that has become too tight. That is where the bad surprises hide: a botched history, VAT that no longer reconciles, an audit file the authority rejects. This article separates the cases, sets out the method, and points to exactly where a Luxembourg project goes off the rails.
Migrating to Odoo: what are we actually talking about?
The word "migration" hides two realities that are often confused, though they carry neither the same cost nor the same risk. Before any quote, ask: are you changing version, or changing software?
A version upgrade moves an existing Odoo database from one major release to a newer one, for example from Odoo 17 to Odoo 19. Your data already lives in Odoo; the job is to transpose it into the new structure while adapting the modules and any custom developments. Odoo handles this through its dedicated upgrade platform, which produces a converted database to test before the switch.
A move from another tool is a different undertaking entirely. Here your data sits in Sage, EBP, Dolibarr, a point-of-sale system or a plain spreadsheet, and it must be extracted, cleaned, then imported into Odoo's model. This is not an automatic conversion: it is a mapping exercise between two ways of organising information.
Confusing the two leads straight to under-budgeting. A well-prepared upgrade is fairly well mapped out; a multi-source move with cleaning is a real project. Knowing which case you are in is already half the scoping done.
Why does a Luxembourg business change tools?
The triggers come back through the same doors. Accounting software that does not talk to the till or the CRM, forcing constant re-entry. An Odoo version too old, now out of official support (Odoo maintains the latest 3 major releases, so 17, 18 and 19 as of mid-2026). A French tool built for French tax that maps poorly to the PCN 2020 and eCDF. Or simply growth: what worked for three people no longer keeps up at fifteen.
The common thread: the current tool costs more in workarounds than it returns in comfort. The migration is then not a technical whim but a management decision. The point is to carry it out without breaking what works, starting with your accounting.
Torn between staying on your current version and migrating? The right reflex is not to migrate on principle, but when support ends or a concrete need justifies it. Advena runs a free assessment of your situation before any commitment. Book a 30-minute call.
The real risk in Luxembourg: losing compliance on the way
A technically successful migration can be an accounting failure. That is the nuance purely technical providers underestimate. Moving data, any integrator can do; guaranteeing that after the switch your accounting stays compliant with the Luxembourg framework is another skill.
Three compliance points are at stake in every move:
- The chart of accounts. Your accounts must land on the right structure of the PCN 2020, the standardised chart in force since January 2020. A wrong mapping sends hundreds of entries onto incorrect accounts, to be re-sorted at closing.
- The VAT history. The Luxembourg rates (17%, 14%, 8%, 3%) and above all the fiscal positions (intra-community, reverse charge) must be carried over correctly, or your next eCDF returns fall wide of the mark.
- The audit trail and the FAIA. The Registration Duties Authority (AED) can request a FAIA, the computerised audit file. It must restitute a coherent history, including the period before the migration. If the move breaks the continuity of entries, the file becomes unusable.
This is exactly where dual expertise counts. We detail these settings in setting up Luxembourg accounting in Odoo: a migration is only a special case of that configuration, applied to data that already exists.
Moving from Sage, EBP or Dolibarr: the method
Leaving a tool for Odoo follows a four-step logic, and the order matters. You do not rush the import: you prepare the data first.
- Extract and map. Export the old tool's data (customers, suppliers, products, entries, open invoices) and set it against Odoo's model. Each source field finds its target, or you decide not to carry it over.
- Clean. This is the step wrongly skipped. Duplicate customers, unused accounts, inconsistent labels: migrating dirty data means importing the mess into a brand-new tool. Better to clean at the source.
- Import in batches and check. Load the data into a test environment, category by category, and verify the totals: trial balance, customer receivables, VAT balances. A one-euro gap is hunted down before the switch, not after.
- Switch and reconcile. Stop the old system at a clean cut-off date (often a period end), carry over the opening balances, and confirm that the starting balance sheet in Odoo matches the old tool's last state.
One structural decision always returns: carry over the entire history, or only opening balances and open items? Taking everything is reassuring but costly, and it imports old clutter. Often, starting from the balances at the cut-off date, while keeping the old system read-only for reference, is the best compromise. It is a call to make project by project.
Upgrading a version: from Odoo 17 or 18 to Odoo 19
If you are already on Odoo, the subject is not the move but the upgrade. Odoo 19, released in October 2025, is the current stable version (the next, Odoo 20, is expected around October 2026). Staying on a release that drops out of support means losing security fixes and functional improvements.
Odoo provides an upgrade service that converts a copy of your database to the target version. The sensitive point is not the standard conversion, it is everything you added: third-party modules, custom developments, tailored reports. The more your Odoo has been customised, the more the upgrade demands testing. This is one of the best reasons to stay close to standard: a lightly modified Odoo upgrades almost painlessly, a heavily specific one drags at every version.
The golden rule: you never upgrade the production database directly. You convert a copy, test it thoroughly (business flows, returns, accounting statements), and switch only once that test database is validated. Planning a double-check period avoids the bad surprise at the first closing after the upgrade.
How much does a migration to Odoo cost?
The cost depends on the case. A version upgrade on an Odoo close to standard is fairly contained; a multi-source move with cleaning and history rebuilding is a project in its own right. The variables that weigh: the volume and cleanliness of the data, the number of modules involved, the level of customisation, and how much history you keep.
The classic trap: data migration is often the underestimated line of an Odoo quote. A "clean" import from a well-structured file has nothing to do with an ERP migration that needs cleaning and deduplication. Have it quoted separately, explicitly. We break down all the cost items, data migration included, in our pricing analysis for a Luxembourg SME.
| Type of migration | What is at stake | Main cost driver |
|---|---|---|
| Version upgrade (17/18 to 19) | Database conversion, module adaptation | Level of customisation |
| Move from Sage / EBP / Dolibarr | Extraction, cleaning, mapping, import | Volume and cleanliness of data |
| Move from a spreadsheet or till | Structuring and importing data | Quality of the source file |
| Full history carry-over | Continuity of the audit trail and FAIA | Depth of history kept |
Choosing who runs the migration
A migration lays your accounting bare: the worst moment to discover your provider masters the tool but not the local tax framework. The right question is not "can you import data?" but "how do you guarantee the PCN 2020, VAT and FAIA stay correct after the switch?". The quality of the answer tells you at once. We develop these criteria in choosing an Odoo partner in Luxembourg.
The advantage of a player that brings Odoo and Luxembourg accounting under one roof is concrete here: the accounting carry-over is handled inside the project, not handed off to your firm, which would discover the gaps at closing. This is precisely the combination few integrators offer in Luxembourg.
Frequently asked questions
Does migrating to Odoo mean starting from scratch?
No. Your existing data (customers, suppliers, products, entries, open invoices) is carried over. The challenge is to transpose it cleanly into Odoo's model, not to re-enter everything.
Can you migrate directly from Odoo 16 to Odoo 19?
Odoo's upgrade platform handles the conversion to the target version. The delicate part remains third-party modules and custom developments, which must be adapted and tested. You always convert a copy, never the production database directly.
How do I avoid losing my VAT history when migrating?
By carrying over the entries, the Luxembourg rates and the fiscal positions (intra-community, reverse charge), then checking the VAT balances before the switch. That check is what guarantees correct eCDF returns after migration.
Will my old data stay available for an audit (FAIA)?
Yes, if you plan for it. Either you carry the history into Odoo while preserving continuity, or you keep the old system read-only. Either way, you must remain able to produce a coherent FAIA for prior years.
How long does a migration take?
From a few days for a version upgrade on a standard Odoo, to several weeks for a multi-source move with cleaning and history rebuilding. The timeline depends mostly on the quality of the starting data.
In practice: where to start
Before talking tools, ask three questions. Where are you starting from (old Odoo, another tool, spreadsheet)? How much history do you really want to keep in the new tool? And who, in the project, guarantees Luxembourg accounting compliance after the switch? The answers draw the scope, the budget and the risk. A migration is not judged on switch day, but at the first closing that follows: that is when you see whether the accounting held.
Why Advena?
- Finance and digital under one roof: the accounting carry-over (PCN 2020, VAT, FAIA) is handled in the project, not pushed onto your firm.
- Compliance tested before the switch: returns and FAIA export validated on your real data, not after the fact.
- Clear fixed prices, no hourly billing: data migration is quoted separately, explicitly.
- Direct access to the founders: the partners run your migration, not a junior.
Read next: Setting up Luxembourg accounting in Odoo · Choosing an Odoo partner in Luxembourg.
Considering a move to Odoo and want to secure your accounting?
Book a free assessment