Migrate Odoo 16 to 19
Last updated: March 2026
Migrating Odoo Community Edition from version 16 to 19 involves 418 models added or removed, 74 module merges, and 110 field renames. OCU automates this entire process — upload your database backup and download a production-ready database running Odoo 19.
New to Odoo upgrades? Start with our guide on how to upgrade Odoo Community Edition, which covers the options, the preparation and the steps that apply to every version.
What changes
Between Odoo 16 and 19, the following major changes occur: 33 model renames, 485 constraint changes, and 110 field renames, alongside the 418 models added or removed.
Counted from the Odoo source of each version and from the OCU migration mappings, step by step; Odoo’s internal test modules are left out because they never exist in a production database. Multi-step paths add up their steps.
- Three-step migration, one upload. OCU chains 16→17→18→19 into a single operation. Covers four major Odoo versions with one upload and one download.
- 418 model changes across 3 versions. The cumulative scope: 33 model renames, 74 module merges, 110 field renames, and 485 constraint changes. Each step is validated before proceeding to the next.
- Full architectural modernization. Goes from Odoo 16’s mail.channel to 19’s discuss.channel, from ir_property to JSONB, from procurement.group to stock.reference. Three generations of architectural improvements applied sequentially.
- HR system fully transformed. Starts with Odoo 16 HR, ends with Odoo 19’s restructured hr.version system with contract versioning and overtime tracking. All employee data preserved through every step.
What changes in detail
Here is a detailed breakdown of the structural changes between Odoo 16 and 19:
Step 1: Odoo 16 to 17
- Messaging system overhaul. mail.channel is replaced by discuss.channel with new models for members and RTC sessions. All channel data and message history are migrated to the new structure.
- 24 modules merged, 38 fields renamed. Accounting, POS, and localization modules consolidated. Key renames: project.task.planned_hours to allocated_hours and stock.move.quantity_done to quantity.
- Alias domain architecture introduced. The mail.alias.domain model is created for managing email alias domains per company, replacing the system parameter approach used in v16.
Step 2: Odoo 17 to 18
- ir_property table converted to JSONB. Company-dependent fields move from the ir_property table to native JSONB columns on each model’s table. Affects product prices, default accounts, stock locations, and dozens of other company-specific settings.
- Product configurator merged, 4 payment modules removed. sale_product_configurator folds into sale. payment_alipay, payment_payulatam, payment_payumoney, and pos_mercury are dropped.
- Inherited views cleared for reload. All inherited views have their arch_db cleared so Odoo 18 reloads them from updated XML. Website builder customizations are preserved.
Step 3: Odoo 18 to 19
- 15 model renames. procurement.group becomes stock.reference, stock.quant.package becomes stock.package, hr.contract becomes hr.version, product.packaging becomes product.uom, stock.valuation.layer becomes product.value, and 10 others. Tables, foreign keys and registry entries are updated. (Odoo also renames over a hundred of its internal test models in this release; they never exist in a production database.)
- web_editor becomes html_builder. The web editor module is renamed. Views, assets, and template inheritance references are all updated to the new module name.
- Core field renames: groups_id to group_ids. res.users.groups_id becomes group_ids, affecting every security rule domain in the system. OCU updates all text references in ir_rule, ir_filter, and server actions.
- 207 constraint changes. 98 constraints added, 80 removed and 29 changed. Your data is checked against the new constraints before they apply.
Cumulative impact
- 110 field renames across 3 versions. Fields are renamed at each step: 38 in the 16 to 17 step, 29 in 17 to 18, and 43 in 18 to 19. All domain references, filters, and server actions are updated at each step before proceeding.
- 74 modules consolidated. Across all three steps, 74 modules merge into their parent modules. This covers accounting, POS, sales, HR, website, and localization packages.
- Three architectural shifts. The database undergoes three major changes in sequence: messaging restructuring (v17), ir_property to JSONB conversion (v18), and the HR, units-of-measure and inventory restructuring (v19). Each step is fully validated before the next begins.
- Full HR transformation. The HR system evolves from Odoo 16’s structure through the v17 module consolidation, the v18 JSONB conversion of company-dependent HR fields, to v19’s hr.version model replacing hr.contract. Employee records, contract history, and leave data are preserved at every step.
Migration path
This is a 3-step migration handled automatically. You upload a version 16 backup and download a version 19 result — no intermediate steps required.
- Step 1: 16 → 17 — 134 models added or removed, 24 module merges, 158 constraint changes.
- Step 2: 17 → 18 — 155 models added or removed, 25 module merges, 120 constraint changes.
- Step 3: 18 → 19 — 129 models added or removed, 25 module merges, 207 constraint changes.
Before you migrate
- Back up your database. Create a fresh backup from Odoo’s database manager (Settings → Database Manager). The .zip format includes your filestore.
- Note your installed modules. Check Settings → Apps for any third-party or custom modules. These will need updated versions for Odoo 19 after migration.
- Run a test migration first. Test migrations are free and unlimited. Verify the result before committing a production credit.
- Plan your custom module updates. OCU handles standard Odoo modules. Custom or third-party modules need separate updates for Odoo 19 compatibility.
How it works
- Upload your .zip, .sql, or .dump backup. We auto-detect the source version.
- Migrate. We handle schema changes, module merges, field renames, and data migration across all 3 steps.
- Download your upgraded backup, ready for Odoo 19.
What OCU handles automatically
- Schema changes. Column types, table renames, new required fields — all structural database changes are applied automatically.
- Module merges. When Odoo consolidates modules between versions, OCU updates the module registry and migrates data to the new locations.
- Field renames. Fields that change names between versions are renamed in the database, including references in domains, filters, and server actions.
- Constraint validation. New CHECK and UNIQUE constraints are validated against your data, with automatic fixes for common violations.
- View updates. Inherited views are reset so Odoo 19 can reload them from the updated XML definitions.
- Filestore. Your attachments, images, and documents are preserved and included in the output.
Pricing
Test migrations are free and unlimited — run as many as you need to validate the upgrade. The output is neutralized (emails disabled, crons off) so it’s safe to explore but not for production use.
Production migrations cost one credit (99€), charged only when the migration completes successfully. If the migration fails, no credit is consumed. One credit covers the full path regardless of how many steps are involved (this 3-step migration costs the same as a single-step one).
Frequently asked questions
- Can I really migrate from Odoo 16 all the way to 19?
- Yes. OCU chains three migration steps (16→17→18→19) into a single operation. You upload a v16 backup and download a v19 result. Each intermediate step is validated before proceeding.
- How long does a 3-step migration take?
- Expect roughly 3x the time of a single-step migration. A typical database under 1 GB completes in 15–45 minutes. Larger databases may take longer. Run a free test migration to see the exact time.
- Is it safer to migrate one version at a time?
- OCU runs the same steps either way — 16→17, then 17→18, then 18→19. There is no difference in safety between running them as three separate operations or as one chained migration. The chained approach is more convenient and costs only one credit.
- What file formats are supported for upload?
- OCU accepts .zip backups (the standard format from Odoo’s database manager, which includes the filestore), as well as plain .sql and .dump (pg_dump) files. The .zip format is recommended because it preserves your attachments, images, and documents.
- What happens to my accounting data across three version jumps?
- All accounting data is preserved through every step. Journal entries, invoices, payments, and chart of accounts carry through the 16 to 17 module consolidation, the 17 to 18 JSONB conversion of company-dependent properties, and the 18 to 19 model renames. Tax configurations and fiscal positions remain intact at each stage.
- Can I test the full 3-step migration before paying?
- Yes. Test migrations are free and unlimited, regardless of how many steps are involved. The test output has emails disabled and scheduled actions turned off, so it is safe to explore. Only production migrations consume a credit.
- Do I need to install anything on my server?
- No. OCU is a fully hosted service. Upload your database backup through the browser, the migration runs on our infrastructure, and you download the result. No software installation, no server access, and no Docker setup required on your end.
Other migration paths
- Odoo 16 to 17 — 134 models added or removed, 24 module merges.
- Odoo 18 to 19 — 129 models added or removed, 25 module merges.
- Odoo 16 to 18 — 289 models added or removed, 49 module merges.
- Odoo 17 to 19 — 284 models added or removed, 50 module merges.
- Odoo 15 to 19 — 565 models added or removed, 97 module merges.
- Odoo 16 to 20 — 604 models added or removed, 109 module merges.
Further reading
- How to Upgrade Odoo Community Edition — Step-by-step guide covering all migration approaches.
- Odoo Migration Checklist — Everything to prepare before, during, and after upgrading.
- Odoo upgrade errors — Fixes for the error messages that stop real upgrades.
- What's New in Odoo 19 — Key changes affecting the 18→19 migration step.
- Going on to Odoo 20? — The same upload can go straight to 20.
- Pricing — Free test migrations, 99€ production credits.
Ready to migrate Odoo 16 to 19?
Free test migrations, unlimited runs. No credit card required.
Start your free test migration