Skip to Content
Upgrade step

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.

100models added
43models removed
1,397fields added
534fields removed
9renames
40field type changes
362views removed
33modules removed

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)
ModelOdoo 16Odoo 17Confidence
res.config.settings expense_alias_prefixhr_expense_alias_prefix possible
res.config.settings primary_coloremail_primary_color possible
res.config.settings secondary_coloremail_secondary_color possible
hr.expense untaxed_amountuntaxed_amount_currency possible
mail.compose.message is_logsubtype_is_log possible
product.replenish route_idsallowed_route_ids possible
hr.expense.split.wizard total_amounttotal_amount_currency possible
website forums_countforum_count likely
hr.expense.split total_amounttotal_amount_currency possible

Models removed in Odoo 17 (43)

Grouped by the module that defined them in Odoo 16. E = Enterprise module.

account

base

hr

hr_attendance

hr_holidays

l10n_eg

l10n_es_edi_sii

l10n_pl_jpk

mail

mass_mailing

mrp

note

payment

point_of_sale

pos_cache

pos_restaurant

product

repair

sms

snailmail

snailmail_account

Models added in Odoo 17 (100)

Modules with the most new models:

mail 15 l10n_fr_pdp 6 product 6 account_peppol_response 3 l10n_my_edi 3 l10n_vn_edi_viettel 3 point_of_sale 3 stock 3 base 2 hr_homeworking 2 hr_skills 2 l10n_es_edi_verifactu 2 l10n_hu_edi 2 l10n_in_ewaybill_stock 2 l10n_in_withholding 2 mass_mailing 2

See all 100 new models, grouped by module

Modules removed and added

33 modules of Odoo 16 are gone

account_payment_invoice_online_payment_patchaccount_sequenceassociationl10n_ae_posl10n_de_skr03l10n_de_skr04l10n_generic_coal10n_hr_eurol10n_in_tcs_tdsl10n_in_upil10n_it_edi_pal10n_latam_account_sequencel10n_lu_peppol_idl10n_multilangl10n_pl_jpkl10n_pl_sale_stockloyalty_deliverynotepos_cachepos_daily_sales_reportspos_epson_printer_restaurantpurchase_price_diffsale_quotation_builderspreadsheet_dashboard_sale_expenseweb_kanban_gaugewebsite_event_crm_questionswebsite_event_questionswebsite_payment_paypalwebsite_sale_deliverywebsite_sale_delivery_mondialrelaywebsite_sale_digitalwebsite_sale_loyalty_deliverywebsite_sale_stock_product_configurator

124 new modules in Odoo 17

account_audit_trailaccount_debit_note_sequenceaccount_payment_termaccount_peppol_responseaccount_peppol_selfbillingaccount_qr_code_emvhr_homeworkinghr_livechathr_recruitment_smsl10n_anz_ubl_pintl10n_ar_posl10n_ar_withholdingl10n_bdl10n_bfl10n_bhl10n_bjl10n_br_pixl10n_br_salesl10n_br_website_salel10n_cdl10n_cfl10n_cgl10n_cil10n_cml10n_cyl10n_de_audit_traill10n_dk_audit_traill10n_dk_bookkeepingl10n_dk_fikl10n_dk_oioubll10n_ec_website_salel10n_es_edi_facturael10n_es_edi_facturae_adm_centersl10n_es_edi_facturae_invoice_periodl10n_es_edi_verifactul10n_es_edi_verifactu_posl10n_es_modelo130l10n_es_posl10n_es_pos_tbail10n_fr_hr_holidaysl10n_fr_hr_work_entry_holidaysl10n_fr_pdpl10n_fr_pdp_posl10n_gal10n_gnl10n_gql10n_gwl10n_hr_kunal10n_hu_edil10n_in_ewaybill_stockl10n_in_withholdingl10n_iql10n_it_edi_nddl10n_it_edi_ndd_account_dnl10n_it_edi_salel10n_jol10n_jo_edil10n_jo_edi_extendedl10n_jp_ubl_pintl10n_kml10n_kwl10n_kzl10n_lb_accountl10n_mll10n_mrl10n_mtl10n_mu_accountl10n_my_edil10n_my_edi_extendedl10n_my_ubl_pintl10n_nel10n_ngl10n_pe_posl10n_pe_website_salel10n_qal10n_ro_cpv_codel10n_ro_edil10n_ro_edi_stockl10n_ro_edi_stock_batchl10n_ro_efactural10n_ro_efactura_synchronizel10n_rs_edil10n_rwl10n_sg_ubl_pintl10n_snl10n_tdl10n_tgl10n_tnl10n_tr_nilveral10n_tr_nilvera_edispatchl10n_tr_nilvera_einvoicel10n_tz_accountl10n_ugl10n_uy_website_salel10n_vn_edi_viettell10n_zm_accountpayment_razorpay_oauthpayment_xenditpos_mercado_pagopos_online_paymentpos_online_payment_self_orderpos_paytmpos_razorpaypos_restaurant_loyaltypos_self_orderpos_self_order_adyenpos_self_order_epson_printerpos_self_order_salepos_self_order_stripepos_viva_walletproject_accountproject_todopurchase_requisition_salesale_async_emailssale_pdf_quote_buildersale_servicesms_twiliospreadsheet_dashboard_website_salestock_deliverystock_landed_costs_companyweb_hierarchywebsite_cf_turnstilewebsite_sale_mondialrelaywebsite_sale_mrp

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.

And 73 more modules in the full list.

Coverage. Odoo 16 to 17 and 17 to 18 compare Community modules only (the Enterprise 16 and 17 sources are not available to us). Odoo 18 to 19 and 19 to 20 include Community and Enterprise modules. Everything here comes from a static read of the Odoo source code: a field counts as removed only when no parent model, mixin or delegated model still provides it. Fields created dynamically at run time can be missed, and entries we could not confirm are marked as low confidence.