Skip to Content

Upgrade Odoo from 17 to 18: Steps and Pitfalls

It's not as hard as it seems, but it requires planning

Upgrading between Odoo major versions is what scares most people. It doesn't have to be traumatic if you plan properly and test thoroughly.

Preparation

Inventory all installed modules: standard modules, OCA modules, and custom modules. Check which support Odoo 18. OCA modules: check each GitHub repo for the 18.0 branch. Custom modules: plan adaptation.

Database migration

Odoo Enterprise: Odoo provides a migration service (upgrade.odoo.com). Upload a dump of the 17 database, get back an 18-compatible dump. CE: you need OpenUpgrade (OCA project) which handles migration scripts. It works, but requires manual verification.

Custom modules

The biggest effort. OWL 2 replaces OWL 1 in the frontend. Views may have changed syntax. API decorators may have changed. Go through the Odoo 18 release notes and migration guides. Expect each custom module to take one to four hours to adapt, depending on complexity.

Testing process

Create a copy of the production database. Run the migration. Start Odoo 18 against the migrated database. Test all critical flows: create order, invoice, pay, deliver. Test reports. Verify data looks correct. Take notes on everything that needs fixing.

Fix and repeat

Fix the problems. Run the migration again on a new copy. Test again. Repeat until everything works. Only then plan the live migration with a maintenance window.

Timeline

Don't underestimate upgrade time. A simple installation with standard modules: one day. An installation with ten OCA modules and five custom modules: one to two weeks including testing. Communicate the downtime to all users in advance.

Testing in Odoo: Unit Tests, Tours, and CI
Code that isn't tested is code that doesn't work