Skip to main content
Odoo 19 · Implementation step by step

Implementing Odoo 19 without redoing anything: what to decide first, in what order, what not to migrate and where it bites compared with 17 and 18

Odoo implementations that go wrong rarely do so because of the technology: they go wrong because of the order. Here is what to decide before installing, the sequence that avoids redoing work, what to leave behind and the pitfalls specific to version 19.

Odoo delivery order created from an Amazon order, with the MRW label attached

Apps installed before anyone decides where the database lives. A shop connected before the catalogue is cleaned. Years of invoices imported that nobody will ever open. These are the ordering mistakes that force the most rework, and Odoo 19 does not change them. What it does add, compared with 17 and 18, is a set of pitfalls that never make the release notes.

What gets decided before touching anything

Some decisions are cheap at the start and expensive to undo. Where it is hosted: the standard Odoo Online plan does not allow modules with custom Python code, so if you will need a connector, hosting has already made the call for you. Community or Enterprise. In Spain, which system issues the legal invoice: if the till or the shop already invoices, Odoo must not invoice the same sale again, and under VeriFactu every invoice issued leaves a chained record that cannot be undone. And one business question: which processes must work on day one.

The real order of a project

  1. Company with the correct country, currency and tax details.
  2. Chart of accounts, taxes and fiscal positions.
  3. Master data: contacts, products, variants, price lists and suppliers.
  4. Processes: sales, purchasing, warehouse, invoicing and payment, configured and tested one at a time.
  5. Integrations: shop, marketplaces, carriers and bank.
  6. A full cycle on a copy with real data: order, delivery, label, invoice, payment and return.
  7. Opening balances and stock at the cut-off date, then go-live.

The first step looks trivial and is not. Odoo picks the chart of accounts from the company's country when Accounting is installed: with the wrong country a generic chart goes in, and changing it later collides with accounts that already exist. The currency cannot be changed once a journal item exists.

Master data: where the project is won or lost

One SKU per product, no duplicates. Variants as attributes, not separate products with the colour in the name. Weight and dimensions filled in: without them there is no carrier label. Contacts deduplicated and carrying their VAT number. And one owner per block of data. It pays to get it right first time, because a product with stock moves can no longer be deleted, only archived. Template and detail in preparing master data before migrating.

What NOT to migrate

The temptation is to bring everything, and it almost never pays off. What goes into Odoo is balances, not history: open receivables and payables, the opening balance sheet at the cut-off date and stock per location at that same date. The rest stays out:

  • Invoices and orders from closed financial years: look them up in the old system or in an export you are still required to keep.
  • Old stock moves: import the quantity per location, not the route each unit took.
  • Inactive products and customers: the business sets the cut-off, not the engineer.
  • Fields nobody fills in and automations that worked around the old software's limits. Migrating them means migrating the problem.

If there is ecommerce, the shop comes after the catalogue

In an Odoo ecommerce implementation, the first thing to decide is whether the shop will be Odoo Website or stay outside. With Odoo Website there is nothing to sync, because a web order is a sales order (when that fits and when it does not). If the shop runs on Shopify or WooCommerce, or you sell on marketplaces, Odoo is the master stock and the SKU the shared key. That is why integrations come last: a connector switched on over a dirty catalogue spreads the mess to every channel.

Our published connectors (Shopify, WooCommerce, Amazon, Mirakl, Temu and the rest of the catalogue) run on Odoo 17, 18 and 19, and on Odoo 20 the day it ships.

Odoo 19 pitfalls compared with 17 and 18

For the people using it, Odoo 19 looks a lot like 18. What bites sits underneath, in third-party modules. A listing that says «compatible with 19» does not guarantee it installs: 19 moved the category of access groups into a new model, res.groups.privilege, and a module ported in a hurry fails with Invalid field 'category_id' in 'res.groups' (why it compiles and will not install).

The worst one raises no error: in 19, _sql_constraints is ignored with a warning in the log. The module installs, the tests pass and the uniqueness constraint that stopped the same order being imported twice is simply not in the database. And the expense report (hr.expense.sheet) from 17 and 18 does not exist in 19: an approval flow built around it has to be redone. Full list in maintaining one module on Odoo 19, 18 and 17.

Test every third-party module by installing it on a copy of your own database, with your data, not on an empty one. And check how many tests the build says it ran: a green build with zero tests proves nothing.

When you do not need an integrator

If you are on Odoo Online, your processes fit the standard and there is no shop, marketplace or carrier to connect, you do not need engineering: standard configuration gets you to go-live. Calling us makes sense when there are sales channels, integrations, custom modules or a migration with data to clean; that is what we do in Odoo 17, 18 and 19 implementation.

Frequently asked questions

How long does an Odoo 19 implementation take?

It depends on scope, on the state of the starting data and on how many integrations there are. We do not give a timeline without seeing the master data. What we do know is where the time goes: cleaning data and testing, not installing.

Should I start on Odoo 19 or an earlier version?

On 19. Odoo releases one major version a year, and starting on an older one today means going live with a migration already pending. If you depend on a module that does not exist for 19 yet, that is the first thing to solve, not a reason to stay behind.

Can old invoices be imported?

It can be done, but it rarely pays off: it forces you to reconcile taxes and entries for periods already filed. The usual route is to import open balances and the opening balance sheet, and keep history searchable outside Odoo.

Useful links inside FlexigoTech

Odoo 17, 18 and 19 implementationData, processes, integrations and go-livePreparing master dataSKUs, variants, stock and logistics before importingOdoo 19 go-live checklistStaging, rollback and go-live window

Implementing Odoo 19 and want to do it in the right order?

Tell us which system you use today, which channels you sell through and what has to work on day one. We will tell you what to decide before installing and what is not worth migrating. Write to comercial@flexigobe.com or book a call.

Talk to an engineer