Upgrading Odoo from version 17 to 18 requires migrating your database schema, adapting custom modules, and thoroughly testing before switching production. This guide covers the complete process using both Odoo SA's paid upgrade service and the OCA openupgrade community tool. Always start by backing up your database — migration is a one-way operation.
Before You Start
- Backup everything: Database dump, filestore, custom modules, and configuration files. See our backup guide.
- Audit custom modules: List every custom and OCA module installed. Check if Odoo 18 versions exist.
- Review release notes: Understand breaking changes between Odoo 17 and 18.
- Set up a staging environment: Never upgrade directly on production. See staging setup guide.
Key Changes from Odoo 17 to 18
| Area | Change | Impact |
|---|---|---|
| Owl Framework | Minor Owl 2.x updates | Low — most Owl components compatible |
| Accounting | New tax engine internals | Medium — custom tax logic may need updates |
| Website | New snippet system | Medium — custom snippets need migration |
| Fields API | Deprecated fields cleanup | Low — check for removed deprecated fields |
| Security | Stricter access rule enforcement | Low — review custom access rules |
Method 1: Odoo SA Upgrade Service
Odoo SA offers a paid database migration service at upgrade.odoo.com. Upload your database dump and Odoo SA returns a migrated database for the target version.
- Create a database dump:
pg_dump -Fc your_database > odoo17_backup.dump - Upload to upgrade.odoo.com and select target version 18.0
- Download the migrated database
- Restore to your Odoo 18 instance and test
This service handles core module migrations but does not migrate custom modules — you must adapt those manually.
Method 2: OCA OpenUpgrade
The OCA openupgrade project is a free, community-maintained migration framework. It provides migration scripts for standard modules and a framework for migrating custom modules.
git clone --branch 18.0 https://github.com/OCA/OpenUpgrade.git
cd OpenUpgrade
# Follow the OpenUpgrade documentation for database migration
Migrating Custom Modules
- Update the manifest: Change version from
17.0.x.x.xto18.0.x.x.x - Check Python imports: Verify no removed APIs are used
- Test Owl components: If your module has custom JS views or widgets, test them on Odoo 18
- Run the test suite: Execute
odoo-bin -d test_db -u your_module --test-enable
Testing Checklist
- All custom modules install without errors
- User login and permissions work correctly
- Accounting balances match pre-upgrade figures
- Inventory counts are preserved
- All automated actions and cron jobs run correctly
- Website pages render properly
- Email templates send correctly
- Reports generate without errors
Deploy the Upgrade with DeployMonkey
If you use DeployMonkey, the upgrade process is simpler: deploy a new Odoo 18 instance alongside your Odoo 17 instance on the same server (DeployMonkey supports multiple versions). Restore your migrated database to the new instance, test thoroughly, then switch your domain to point to the Odoo 18 instance.
Frequently Asked Questions
How long does the Odoo 17 to 18 upgrade take?
For a standard installation with no custom modules, the database migration takes minutes. With custom modules, budget 1-4 weeks for module adaptation and testing depending on complexity.
Will I lose data during the upgrade?
No. Both Odoo SA's upgrade service and OCA openupgrade preserve your data. The migration transforms the database schema while maintaining all records.
Can I skip versions and go from 17 to 19?
Odoo SA's upgrade service supports direct jumps between versions. OCA openupgrade typically requires sequential upgrades (17→18→19). See our 18 to 19 upgrade guide for the next step.
Do I need to re-train my users?
The UI differences between Odoo 17 and 18 are minimal since both use the Owl framework. Most users adapt quickly without formal training.