Migrating an existing Odoo project is a strategic upgrade, not just a simple update. This step-by-step guide from webilook walks you through planning, execution, testing, and post-migration support so your Odoo project moves from 18 to 19 smoothly.
Odoo 19 introduces major changes: Owl 3.x (JavaScript), Python 3.12+, model renames, and HR restructuring. Custom modules and front-end components often require code updates.
In this guide, we will explore:
- Pre-migration checklist (backups, audit, Owl review)
- The 5-step migration process
- How to adapt custom modules
- Testing strategy and go-live checklist
- Key Odoo 18→19 changes
- Migration tools and FAQs
If your business is upgrading Odoo, this article will help you understand the critical steps and where to get expert support.
Pre-Migration Checklist
1. Full Backup (Critical)
- Database backup
pg_dump -Fc your_odoo18_db > odoo18_backup.dump - Filestore backup
tar -czf filestore_backup.tar.gz /path/to/odoo/filestore/your_odoo18_db
2. Module Audit
- List all custom modules and third-party add-ons.
- Check if each has an Odoo 19-compatible branch (OCA or vendor).
- Document critical business workflows to test later.
3. Owl 3.x Review
- If you have custom JavaScript components, review the Owl 3.x migration guide.
- Key breaking changes:
useStatereplacingstate, renamed lifecycle hooks.
4. Set Up Staging Environment
- Create a separate Odoo 19 instance for testing (local server or cloud).
- Never migrate production directly.
Migration Process (5 Steps)
The migration is split into five clear steps: database migration, adapting modules, testing, going live, and post-migration support.
Step 1: Database Migration
Option A — Odoo SA Upgrade Service (Recommended for Enterprise)
- Upload your dump to
upgrade.odoo.com. - Select 19.0 as target version.
- Download the migrated database.
- Note: Your database must be registered to use Odoo's official upgrade service.
Option B — OCA OpenUpgrade (Free, for Community)
- Clone the 19.0 branch of OpenUpgrade.
- Run migration scripts locally.
- Requires more technical knowledge.
Step 2: Adapt Custom Modules
| Category | What to Change |
|---|---|
| JavaScript | Update to Owl 3.x: useState(this), new lifecycle hooks |
| Manifest | Update version to 19.0.x.x.x in __manifest__.py |
| Model Names | Handle model renames (e.g., hr.contract → hr.version) |
| Dependencies | Update depends to match Odoo 19 module names |
Python-side changes are minimal compared to JavaScript. Most Python code remains compatible, but test ORM calls and imports.
Step 3: Testing (Minimum 1–2 Weeks)
Test these critical areas:
- ✅ Install all custom modules (no errors)
- ✅ Sales orders, invoicing, inventory moves
- ✅ Accounting balances match pre-upgrade totals
- ✅ Website pages and eCommerce flows
- ✅ Automated test suites for custom modules
- ✅ Real users performing actual business operations
Step 4: Go Live
- Schedule maintenance window during low-usage hours.
- Take final production backup.
- Run migration on production database.
- Update Odoo installation to v19 (Docker or source).
- Start Odoo 19 and verify.
Step 5: Post-Migration Support
- Monitor system closely for first 2–4 weeks.
- Troubleshoot issues with customizations.
- Provide staff training on new features (AI tools, UI changes).
Key Odoo 18 → 19 Changes
| Change Type | Impact |
|---|---|
| Owl 3.x | Major JavaScript rewriting required |
| Python | Python 3.12+ required (minimal code changes) |
| Models | ~130 model renames, 3,500+ schema changes |
| HR Module | Major restructuring (contracts → versions) |
| New Apps | AI agents, Equity, ESG, Planning board |
Migration Tools
| Tool | Best For | Cost |
|---|---|---|
| Odoo SA Upgrade Service | Enterprise databases | Paid |
| OCA OpenUpgrade | Community editions | Free |
| DeployMonkey | Automated upgrades | Paid |