Skip to content

How to Upgrade Odoo from 18 to 19

DeployMonkey Team · March 10, 2026 7 min read

Upgrading from Odoo 18 to 19 is the most straightforward major version upgrade in recent Odoo history, but it still requires careful planning. The biggest technical change is the Owl 3.x frontend framework upgrade, which affects custom JavaScript components. Database migration is handled by Odoo SA's upgrade service or OCA openupgrade. This guide walks through the entire process.

What Changed Between Odoo 18 and 19

AreaChangeMigration Impact
FrontendOwl 2.x → Owl 3.xHigh for custom JS widgets
SpreadsheetsNew engineLow — automatic migration
KnowledgeNew article systemLow — automatic migration
WebsiteNew grid layoutMedium — custom themes may need updates
Python3.11+ → 3.12+Low — update your venv
MRPNew planning boardLow — additive feature

Pre-Upgrade Checklist

  1. Full backup: Database, filestore, configuration, and custom modules
  2. Module audit: Check every custom/OCA module for an Odoo 19 branch or compatible version
  3. Owl 3.x review: If you have custom JS components, review the Owl 3.x migration guide for breaking changes
  4. Staging environment: Set up an Odoo 19 staging instance for testing. See staging setup

Step 1: Backup Your Database

pg_dump -Fc your_odoo18_db > odoo18_backup.dump
# Also backup filestore
tar -czf filestore_backup.tar.gz /path/to/odoo/filestore/your_odoo18_db

For comprehensive backup strategies, see backup best practices.

Step 2: Migrate the Database

Option A — Odoo SA Upgrade Service: Upload your dump to upgrade.odoo.com, select 19.0 as target, download the result.

Option B — OCA OpenUpgrade: Clone the 19.0 branch and run the migration scripts locally. This is free but requires more technical knowledge.

Step 3: Adapt Custom Modules

The main work for Odoo 18→19 is adapting custom JavaScript to Owl 3.x. Key changes:

  • Reactivity model: Owl 3.x uses a new reactivity system — useState replaces some state patterns
  • Component lifecycle: Some lifecycle hooks have been renamed or consolidated
  • Template syntax: Minor QWeb template changes for Owl 3.x compatibility

Python-side changes are minimal. Update your module manifests to version 19.0.x.x.x and test.

Step 4: Test Thoroughly

  • Restore the migrated database to your Odoo 19 staging instance
  • Install all custom modules and verify no errors
  • Test critical business workflows: sales orders, invoicing, inventory moves, manufacturing orders
  • Verify accounting balances match pre-upgrade totals
  • Test website pages and eCommerce flows
  • Run automated test suites for custom modules

Step 5: Go Live

  1. Schedule a maintenance window during low-usage hours
  2. Take a final production backup
  3. Run the migration on the production database
  4. Update your Odoo installation to version 19 (Docker image or source code)
  5. Start Odoo 19 and verify

Frequently Asked Questions

Is Odoo 18 to 19 a big upgrade?

It is moderate. The database migration is straightforward, but the Owl 3.x frontend change means custom JS components need review. Python-side changes are minimal.

Can I run Odoo 18 and 19 side by side during migration?

Yes. With Docker or DeployMonkey, you can run both versions on the same server with different ports. See running multiple Odoo versions.

How long should I test before going live?

Minimum one week of testing in staging with real users performing actual business operations. Two weeks is safer for complex installations.

What if the upgrade breaks something critical?

This is why backups are step one. Restore your Odoo 18 backup and revert to the previous version. No data is lost.