Odoo 16 to 17: what changed
Community only Community modules only (Odoo Enterprise 16 sources are not available to us). 828 models in Odoo 16, 885 in Odoo 17.
Breaking changes to know first
attrs="..." removed from views
Views can no longer use the "attrs" attribute: Odoo 17 refuses to load a view that has it.
What to do: Rewrite attrs="{'invisible': [...]}" as invisible="python expression" (same for readonly and required).
states="..." removed from views
Views can no longer use the "states" attribute: Odoo 17 refuses to load a view that has it.
What to do: Replace states="draft,sent" with invisible="state not in ('draft', 'sent')".
_read_group() has a new signature
In Odoo 17 _read_group() takes groupby and aggregates and returns tuples instead of dictionaries.
What to do: Use _read_group(domain, groupby=[...], aggregates=[...]) and unpack the returned tuples.
Renamed models and fields
9 more field renames detected from matching names and types (likely, not confirmed)
| Model | Odoo 16 | Odoo 17 | Confidence |
|---|---|---|---|
| res.config.settings | expense_alias_prefix | hr_expense_alias_prefix | possible |
| res.config.settings | primary_color | email_primary_color | possible |
| res.config.settings | secondary_color | email_secondary_color | possible |
| hr.expense | untaxed_amount | untaxed_amount_currency | possible |
| mail.compose.message | is_log | subtype_is_log | possible |
| product.replenish | route_ids | allowed_route_ids | possible |
| hr.expense.split.wizard | total_amount | total_amount_currency | possible |
| website | forums_count | forum_count | likely |
| hr.expense.split | total_amount | total_amount_currency | possible |
Models with the most field changes
| Model | Added | Removed | Type changes |
|---|---|---|---|
| res.config.settings | 135 | 46 | 1 |
| account.move | 136 | 16 | 2 |
| res.company | 115 | 33 | 0 |
| project.task | 5 | 45 | 1 |
| res.partner | 43 | 6 | 0 |
| stock.picking | 42 | 4 | 0 |
| pos.config | 27 | 12 | 1 |
| repair.order | 19 | 19 | 1 |
| account.chart.template | 0 | 37 | 0 |
| pos.payment.method | 31 | 0 | 0 |
| payment.provider | 12 | 16 | 1 |
| stock.picking.type | 28 | 0 | 0 |
| sale.order | 23 | 3 | 0 |
| stock.move | 17 | 9 | 0 |
| account.tax | 21 | 4 | 0 |
| product.template | 14 | 9 | 2 |
| hr.expense | 9 | 15 | 0 |
| stock.picking.batch | 23 | 1 | 0 |
| pos.order | 20 | 2 | 0 |
| hr.employee | 17 | 4 | 0 |
| res.users | 17 | 4 | 0 |
| res.partner.bank | 16 | 4 | 0 |
| mail.compose.message | 12 | 6 | 0 |
| hr.employee.base | 14 | 3 | 0 |
| hr.expense.sheet | 10 | 7 | 0 |
Models removed in Odoo 17 (43)
Grouped by the module that defined them in Odoo 16. E = Enterprise module.
account
- account.account.templateTemplates for Accounts
- account.fiscal.position.account.templateAccounts Mapping Template of Fiscal Position
- account.fiscal.position.tax.templateTax Mapping Template of Fiscal Position
- account.fiscal.position.templateTemplate for Fiscal Position
- account.group.templateTemplate for Account Groups
- account.invoice.sendAccount Invoice Send
- account.reconcile.model.line.templateReconcile Model Line Template
- account.reconcile.model.templateReconcile Model Template
- account.tax.repartition.line.templateTax Repartition Line Template
- account.tax.templateTemplates for Taxes
base
- ir.server.object.linesServer Action value mapping
hr
- hr.planplan
- hr.plan.activity.typePlan activity type
- hr.plan.wizardPlan Wizard
hr_attendance
- hr.attendance.reportAttendance Statistics
hr_holidays
- hr.leave.stress.dayStress Day
l10n_eg
- l10n_eg.eta.account.tax.mixinETA tax codes mixin
l10n_es_edi_sii
- l10n_es.sii.account.tax.mixinSII Fields
l10n_pl_jpk
- l10n_pl_tax_officeTax Office in Poland
- mail.channelDiscussion Channel
- mail.channel.memberListeners of a Channel
- mail.channel.rtc.sessionMail RTC session
mass_mailing
- mailing.contact.subscriptionMass Mailing Subscription Information
mrp
- mrp.immediate.productionImmediate Production
- mrp.immediate.production.lineImmediate Production Line
note
- note.noteNote
- note.stageNote Stage
- note.tagNote Tag
payment
- payment.iconPayment Icon
point_of_sale
- pos.session.check_product_wizardVerify if there are any products for the PoS
pos_cache
- pos.cachePoint of Sale Cache
pos_restaurant
- restaurant.printerRestaurant Printer
product
- report.product.report_producttemplatelabelProduct Label Report
repair
- repair.feeRepair Fees
- repair.lineRepair Line (parts)
- repair.order.make_invoiceCreate Mass Invoice (repair)
sms
- sms.apiSMS API
snailmail
- snailmail.confirmSnailmail Confirm
snailmail_account
- snailmail.confirm.invoiceSnailmail Confirm Invoice
stock
- report.stock.report_product_product_replenishmentStock Replenishment Report
- report.stock.report_product_template_replenishmentStock Replenishment Report
- stock.immediate.transferImmediate Transfer
- stock.immediate.transfer.lineImmediate Transfer Line
Models added in Odoo 17 (100)
Modules with the most new models:
Modules removed and added
33 modules of Odoo 16 are gone
124 new modules in Odoo 17
Views, menus and actions removed
XML ids that existed in Odoo 16 and no longer exist in Odoo 17. Customisations that inherit or reference them fail to install. See the full list.
| Module | Views | Menus | Actions |
|---|---|---|---|
| website | 31 | 0 | 1 |
| delivery | 23 | 2 | 1 |
| account | 18 | 0 | 6 |
| 13 | 5 | 4 | |
| website_forum | 15 | 0 | 5 |
| website_sale | 15 | 1 | 3 |
| base | 6 | 5 | 4 |
| note | 8 | 4 | 3 |
| mass_mailing | 13 | 0 | 0 |
| hr | 9 | 0 | 3 |
| hr_attendance | 3 | 3 | 6 |
| website_event_questions | 11 | 0 | 1 |
| stock | 7 | 1 | 3 |
| sale | 9 | 0 | 1 |
| hr_holidays | 4 | 2 | 3 |
| l10n_ch | 7 | 0 | 2 |
| website_sale_delivery | 8 | 1 | 0 |
| payment | 7 | 0 | 1 |
| hr_timesheet | 7 | 0 | 0 |
| im_livechat | 4 | 0 | 3 |
| sale_quotation_builder | 6 | 0 | 0 |
| website_sale_wishlist | 6 | 0 | 0 |
| l10n_pl_jpk | 5 | 0 | 0 |
| project | 4 | 1 | 0 |
| sale_product_configurator | 5 | 0 | 0 |
| website_sale_delivery_mondialrelay | 5 | 0 | 0 |
| event | 2 | 0 | 2 |
| mass_mailing_themes | 4 | 0 | 0 |
| mrp | 2 | 1 | 1 |
| pos_daily_sales_reports | 2 | 1 | 1 |
And 73 more modules in the full list.