Migrate Odoo 16 to 17
Last updated: March 2026
Migrating Odoo Community Edition from version 16 to 17 involves 134 models added or removed, 24 module merges, and 38 field renames. OCU automates this entire process — upload your database backup and download a production-ready database running Odoo 17.
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 17, the following major changes occur: 7 model renames, 158 constraint changes, and 38 field renames, alongside the 134 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.
- Messaging architecture overhaul. mail.channel becomes discuss.channel — the entire messaging and channel system is restructured with new models for members and RTC sessions.
- 24 modules merged into core. Accounting, localization, POS, and website modules consolidated. account_sequence, l10n_generic_coa, pos_cache, and 21 others fold into their parent modules.
- Project & stock field renames. project.task.planned_hours becomes allocated_hours. stock.move.quantity_done becomes quantity. 38 field renames across the codebase.
- Note module becomes project_todo. The standalone notes module is absorbed into the project app as project_todo, with data and views migrated automatically.
What changes in detail
Here is a detailed breakdown of the structural changes between Odoo 16 and 17:
Module changes
- mail.channel removed entirely. The mail.channel model is replaced by discuss.channel with a completely new data structure. Channel members move to discuss.channel.member, and RTC sessions get their own discuss.channel.rtc.session model. All existing channel data is migrated to the new tables.
- note module becomes project_todo. The standalone note module is absorbed into the project app. Note records become project tasks with a special todo type. Personal to-do lists and sticky notes are preserved as project tasks.
- 24 modules merged into parent modules. account_sequence merges into account, l10n_generic_coa into account, pos_cache and pos_restaurant into point_of_sale, website_sale_comparison and website_sale_wishlist into website_sale, and 18 others. Module registry entries are updated automatically.
- New alias_domain model introduced. Odoo 17 introduces mail.alias.domain to manage email alias domains at the company level. The alias_domain_id field is added to res.company and mail.alias, replacing the old mail.catchall.domain system parameter.
Field renames
- project.task.planned_hours becomes allocated_hours. The planned_hours field on project tasks is renamed to allocated_hours. All timesheet references, reports, and domain filters are updated to use the new name.
- stock.move.quantity_done becomes quantity. The quantity_done field on stock moves is simplified to quantity. This affects warehouse operations, picking reports, and any custom domains referencing the old field name.
- 36 additional field renames across modules. Fields renamed on models including hr.employee, account.move, stock.picking, and crm.lead. All references in domains, filters, server actions, and automated rules are updated alongside the column rename.
Database schema changes
- New alias_domain architecture. The mail.alias.domain model introduces a new table for managing email alias domains per company. The alias_domain_id Many2one field is added to res.company (critical priority — callable default) and propagated to mail.alias records.
- Company-dependent field foundation. Odoo 17 introduces the company_dependent field architecture that replaces ir.property lookups for some fields. This is the foundation for the full JSONB conversion completed in Odoo 18.
- 158 constraint changes. New CHECK and UNIQUE constraints are added across accounting, stock, and project modules. Existing data is validated against new constraints, with automatic fixes for common violations like duplicate sequences or missing required references.
Breaking changes
- mail.channel removed from API. Any custom code, automated actions, or integrations referencing mail.channel will break. The model no longer exists — all functionality moves to discuss.channel with a different field structure. Partner membership on channels is restructured through discuss.channel.member.
- Accounting module consolidation. Modules like account_sequence and l10n_generic_coa are absorbed into account. Custom modules depending on these as separate installable modules need their dependencies updated.
- POS module restructuring. pos_cache, pos_restaurant, and related POS modules merge into point_of_sale. Custom POS extensions referencing these modules by name need updated manifest files.
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 17 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 17 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.
- Download your upgraded backup, ready for Odoo 17.
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 17 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.
Frequently asked questions
- What is the biggest change from Odoo 16 to 17?
- The messaging system is completely restructured — mail.channel becomes discuss.channel with a new architecture for members and real-time communication. 24 modules are also merged into core, simplifying the module landscape.
- Will my custom modules still work after upgrading to Odoo 17?
- Custom modules that depend on renamed fields or merged modules will need adjustment. OCU handles the core database migration (schema changes, field renames, module merges), but custom module code may need updating to match the new API. Run a free test migration first to identify any issues.
- How long does an Odoo 16 to 17 migration take?
- Migration time depends on your database size. A typical database (under 1 GB) completes in 5–15 minutes. Larger databases with extensive transaction history may take longer. You can run a free test migration to see the exact time for your database.
- Does OCU handle custom modules during migration?
- OCU migrates all standard Odoo Community modules automatically. Custom and third-party modules are kept installed in the database with their data tables preserved, but their views are disabled to prevent compatibility errors. You will need updated versions of custom modules for Odoo 17 after migration.
- What about third-party OCA modules?
- OCA (Odoo Community Association) modules are treated like any third-party module — their data is preserved and tables are kept intact, but views are disabled during migration. After migrating, install the Odoo 17-compatible versions of your OCA modules.
- 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 during migration?
- All accounting data is preserved: journal entries, invoices, payments, bank statements, and chart of accounts. The account_sequence module merges into account, and sequence numbering is maintained. Tax configurations and fiscal positions carry over unchanged.
Other migration paths
- Odoo 16 to 18 — 289 models added or removed, 49 module merges.
- Odoo 16 to 19 — 418 models added or removed, 74 module merges.
- Odoo 15 to 17 — 281 models added or removed, 47 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.
- Pricing — Free test migrations, 99€ production credits.
Ready to migrate Odoo 16 to 17?
Free test migrations, unlimited runs. No credit card required.
Start your free test migration