Odoo 18 to 19: what changed
Community + Enterprise Community + Enterprise modules. 1,774 models in Odoo 18, 1,944 in Odoo 19.
Breaking changes to know first
groups_id renamed to group_ids
Odoo 19 renamed groups_id to group_ids on users, menus, actions and views.
What to do: Replace groups_id with group_ids (on res.users use all_group_ids to include implied groups).
hr.contract merged into hr.version
Odoo 19 merged employee contracts (hr.contract) into employee versions (hr.version).
What to do: Use env['hr.version'] / employee.version_id; the contract fields now live on hr.version.
read_group() deprecated
read_group() is deprecated in Odoo 19 (and changes signature again in Odoo 20).
What to do: Use _read_group() in server code or formatted_read_group() for UI-style results.
Also
Python modules: the _sql_constraints class attribute is ignored from Odoo 19 (use models.Constraint).
Renamed models and fields
| Odoo 18 | Odoo 19 | Kind |
|---|---|---|
| hr.contract | hr.version | model |
| res.users.groups_id | res.users.group_ids | field |
| res.groups.users | res.groups.user_ids | field |
| ir.ui.menu.groups_id | ir.ui.menu.group_ids | field |
| ir.ui.view.groups_id | ir.ui.view.group_ids | field |
| ir.actions.act_window.groups_id | ir.actions.act_window.group_ids | field |
| ir.actions.server.groups_id | ir.actions.server.group_ids | field |
48 more field renames detected from matching names and types (likely, not confirmed)
| Model | Odoo 18 | Odoo 19 | Confidence |
|---|---|---|---|
| hr.employee | bank_account_id | primary_bank_account_id | possible |
| hr.employee | l10n_hk_autopay_emal | l10n_hk_autopay_email | likely |
| res.config.settings | allow_out_of_stock_order | default_allow_out_of_stock_order | possible |
| res.config.settings | available_threshold | default_available_threshold | possible |
| res.config.settings | module_delivery_fedex | module_delivery_fedex_rest | possible |
| res.config.settings | module_delivery_ups | module_delivery_ups_rest | possible |
| res.config.settings | module_delivery_usps | module_delivery_usps_rest | possible |
| res.config.settings | show_availability | default_show_availability | possible |
| res.users | groups_id | group_ids | confirmed |
| res.users | can_edit | can_edit_role | possible |
| pos.payment.method | paytm_mid | dpopay_mid | likely |
| pos.payment.method | paytm_test_mode | dpopay_test_mode | likely |
| pos.payment.method | paytm_tid | dpopay_tid | likely |
| pos.payment.method | viva_wallet_api_key | viva_com_api_key | likely |
| pos.payment.method | viva_wallet_bearer_token | viva_com_bearer_token | likely |
| pos.payment.method | viva_wallet_client_id | viva_com_client_id | likely |
| pos.payment.method | viva_wallet_client_secret | viva_com_client_secret | likely |
| pos.payment.method | viva_wallet_latest_response | viva_com_latest_response | likely |
| pos.payment.method | viva_wallet_merchant_id | viva_com_merchant_id | likely |
| pos.payment.method | viva_wallet_terminal_id | viva_com_terminal_id | likely |
| pos.payment.method | viva_wallet_test_mode | viva_com_test_mode | likely |
| pos.payment.method | viva_wallet_webhook_endpoint | viva_com_webhook_endpoint | likely |
| pos.payment.method | viva_wallet_webhook_verification_key | viva_com_webhook_verification_key | likely |
| stock.move | group_id | production_group_id | possible |
| stock.move | l10n_in_ewaybill_id | l10n_in_ewaybill_ids | likely |
| stock.picking | group_id | production_group_id | possible |
| stock.picking | l10n_in_ewaybill_id | l10n_in_ewaybill_ids | likely |
| sale.order.line | product_uom | product_uom_id | possible |
| sale.order.line | tax_id | tax_ids | likely |
| ir.actions.server | groups_id | group_ids | confirmed |
| res.groups | users | user_ids | confirmed |
| stock.warehouse.orderpoint | vendor_id | effective_vendor_id | possible |
| purchase.order.line | product_uom | product_uom_id | possible |
| product.product | image_fetch_pending | is_image_fetch_pending | possible |
| purchase.order | notes | note | likely |
| mail.message | link_preview_ids | message_link_preview_ids | possible |
| hr.appraisal | skill_ids | appraisal_skill_ids | possible |
| product.pricelist.item | product_uom | product_uom_name | possible |
| project.milestone | product_uom | product_uom_id | possible |
| ir.actions.act_window | groups_id | group_ids | confirmed |
| ir.ui.view | groups_id | group_ids | confirmed |
| sale.report | product_uom | product_uom_id | possible |
| ir.actions.report | groups_id | group_ids | likely |
| ir.ui.menu | groups_id | group_ids | confirmed |
| product.supplierinfo | product_uom | product_uom_id | possible |
| purchase.report | product_uom | product_uom_id | possible |
| sale.rental.report | product_uom | product_uom_id | possible |
| website.page.properties | groups_id | group_ids | likely |
Models with the most field changes
| Model | Added | Removed | Type changes |
|---|---|---|---|
| hr.employee | 329 | 19 | 0 |
| res.config.settings | 175 | 110 | 0 |
| res.company | 149 | 39 | 1 |
| res.users | 33 | 96 | 0 |
| account.move | 74 | 48 | 0 |
| res.partner | 64 | 35 | 0 |
| pos.order | 65 | 4 | 0 |
| pos.payment.method | 43 | 19 | 0 |
| stock.move | 34 | 17 | 0 |
| product.template | 31 | 16 | 0 |
| hr.payslip | 39 | 7 | 0 |
| stock.picking | 33 | 11 | 1 |
| pos.config | 31 | 9 | 0 |
| discuss.channel | 36 | 3 | 0 |
| sale.order.line | 31 | 8 | 0 |
| account.move.line | 33 | 4 | 0 |
| project.project | 24 | 6 | 1 |
| ir.actions.server | 28 | 1 | 1 |
| account.reconcile.model | 5 | 24 | 0 |
| pos.session | 27 | 2 | 0 |
| sale.order | 21 | 8 | 0 |
| hr.expense | 22 | 6 | 0 |
| hr.salary.rule | 23 | 5 | 0 |
| im_livechat.report.channel | 20 | 7 | 1 |
| account.journal | 21 | 5 | 0 |
Models removed in Odoo 19 (127)
Grouped by the module that defined them in Odoo 18. E = Enterprise module.
account
- account.fiscal.position.taxTax Mapping of Fiscal Position
- account.reconcile.model.partner.mappingPartner mapping for reconciliation models
account_accountant
- bank.rec.widgetEBank reconciliation widget for a single statement line
- bank.rec.widget.lineELine of the bank reconciliation widget
account_accountant_batch_payment
- account.batch.payment.rejectionEManage the payment rejection from batch payments
account_disallowed_expenses
- account.disallowed.expenses.categoryEDisallowed Expenses Category
- account.disallowed.expenses.rateEDisallowed Expenses Rate
- account.disallowed.expenses.report.handlerEDisallowed Expenses Custom Handler
account_disallowed_expenses_fleet
- account.disallowed.expenses.fleet.report.handlerEDisallowed Expenses Fleet Custom Handler
account_edi_ubl_cii
- account.edi.ciiBase helpers for CII
account_invoice_extract
- account.invoice_extract.wordsEExtracted words from invoice scan
account_peppol
- account_peppol.service.wizardPeppol Services Wizard
base
- res.partner.titlePartner Title
bus
- bus.presenceUser Presence
delivery_fedex_certified
- fedex.certified.accountEFedex Account
- fedex.certified.account.registration.wizardEFedEx Account Registration Wizard
helpdesk_timesheet
- helpdesk.ticket.create.timesheetECreate Timesheet from ticket
hr
- hr.employee.baseBasic Employee
hr_appraisal
- hr.appraisal.reportEAppraisal Statistics
hr_attendance
- hr.attendance.overtimeAttendance Overtime
hr_contract
- hr.contractContractnow hr.version
- hr.contract.historyContract history
hr_contract_reports
- hr.contract.employee.reportEContract and Employee Analysis Report
hr_expense
- hr.expense.sheetExpense Report
hr_expense_extract
- expense.sample.registerERegister Sample Payments
hr_payroll
- hr.payroll.reportEPayroll Analysis Report
- hr.payslip.employeesEGenerate payslips for all selected employees
hr_recruitment
- candidate.send.mailSend mails to candidates
- hr.candidateCandidate
hr_recruitment_skills
- hr.candidate.skillSkill level for a candidate
hr_skills
- hr.employee.skill.logSkills History
im_livechat
- im_livechat.report.operatorLivechat Support Operator Report
l10n_ae_hr_payroll
- report.l10n_ae_hr_payroll.masterEUnited Arab Emirates Master Payroll Report
l10n_be_hr_payroll
- hr.payroll.generate.warrant.payslipsEGenerate Warrant Payslips
- hr.payroll.generate.warrant.payslips.lineEGenerate Warrant Payslips Lines
l10n_be_hr_payroll_sd_worx
- l10n_be.export.sdworx.leaves.wizardEExport Leaves to SDWorx
l10n_be_reports
- l10n_be_reports.periodic.vat.xml.exportEBelgian Periodic VAT Report Export Wizard
l10n_be_reports_post_wizard
- l10n_be.vat.pay.wizardEPayment instructions for VAT
l10n_ch_hr_payroll
- ch.yearly.report.lineEInsurance Reports
- l10n.ch.is.report.lineETax at Source Monthly Report Line
l10n_ch_hr_payroll_elm_transmission
- l10n.ch.hr.payslip.montlhy.wizardEGenerate Monthly Pay
- l10n_ch.hr.payroll.employee.gender.wizardEChange Employee Gender
- l10n_ch.hr.payroll.employee.gender.wizard.lineEChange Employee Gender Line
l10n_cl_edi
- l10n_cl.account.invoice.referenceECross Reference Docs for Chilean Electronic Invoicing
l10n_dk_rsu
- l10n_dk_rsu.tax.report.calendar.wizardEL10n DK Tax Report calendar service RSU
- l10n_dk_rsu.tax.report.receipt.wizardEL10n DK Tax Report receipt service RSU
- l10n_dk_rsu.tax.report.submit.draft.wizardEL10n DK Tax Report Submit Draft service RSU
l10n_eg_hr_payroll
- report.l10n_eg_hr_payroll.masterEEygpt Master Payroll Report
l10n_es_reports
- l10n_es.libros.registro.export.handlerESpanish Libros Registro de IVA
l10n_es_reports_modelo130
- l10n_es_modelo130.mod130.tax.report.handlerESpanish Tax Report Custom Handler (Mod130)
- l10n_es_reports_modelo130.aeat.boe.mod130.export.wizardEBOE Export Wizard for (mod130)
l10n_id_efaktur
- l10n_id_efaktur.documentE-faktur Document
- l10n_id_efaktur.efaktur.rangeAvailable E-faktur range
l10n_in_enet_batch_payment
- enet.templateEENet Template
l10n_in_reports
- l10n_in_reports.balance.sheet.report.handlerEIndian Custom Handler for Generic Balance Sheet
l10n_in_reports_gstr
- l10n_in.gst.return.periodEGST Return Period
l10n_in_reports_tds_tcs
- l10n_in_withholding.tds.tcs.report.handlerEIndian Tax Report Custom Handler
l10n_in_withholding
- l10n_in.withhold.wizard.lineWithhold Wizard Lines
l10n_it_xml_export
- l10n_it_xml_export.monthly.tax.report.xml.export.wizardItalian Monthly Tax Report XML Export Wizard
l10n_ke_hr_payroll
- l10n.ke.hr.payroll.nhif.report.line.wizardENHIF Report Wizard Line
- l10n.ke.hr.payroll.nhif.report.wizardENHIF Report Wizard
- l10n_ke.master.reportEHeadover Wizard
l10n_mx_edi_stock
- l10n_mx_edi.vehicleEMX EDI Vehicle
l10n_my_edi
- l10n_my_edi.document.status.updateDocument Status Update Wizard
l10n_ng_reports
- l10n_ng.withholding.report.handlerENigerian Withholding Tax Report Custom Handler
l10n_nl_intrastat
- l10n_nl.ec.sales.report.handlerEDutch EC Sales Report Custom Handler
l10n_nl_reports
- l10n_nl.tax.report.handlerEDutch Report Custom Handler
l10n_nl_reports_sbr
- l10n_nl_reports_sbr.tax.report.wizardEL10n NL Tax Report for SBR Wizard
l10n_nl_reports_sbr_icp
- l10n_nl_reports_sbr_icp.icp.wizardEL10n NL Intra-Communautaire Prestaties for SBR Wizard
l10n_nl_reports_sbr_status_info
- l10n_nl_reports_sbr.status.serviceEStatus checking service for Digipoort submission
l10n_nl_reports_vat_pay_wizard
- l10n_nl.vat.pay.wizardEPayment instructions for VAT
l10n_pl_reports_vat_eu
- l10n_pl.vat.eu.report.handlerEPolish VAT-UE Report Custom Handler
l10n_sa_hr_payroll
- report.l10n_sa_hr_payroll.masterESaudi Arabia Master Payroll Report
l10n_us_reports
- l10n_us.report.handlerEUS Report Custom Handler
- mail.resend.messageEmail resend wizard
- mail.resend.partnerPartner with additional information for mail resend
- mail.wizard.inviteInvite wizard
membership
- membership.invoiceMembership Invoice
- membership.membership_lineMembership Line
- report.membershipMembership Analysis
mrp
- mrp.batch.produceProduce a batch of production order
mrp_account_enterprise
- report.mrp_account_enterprise.mrp_cost_structureEMRP Cost Structure Report
- report.mrp_account_enterprise.product_template_cost_structureEProduct Template Cost Structure Report
partner_autocomplete
- res.partner.autocomplete.syncPartner Autocomplete Sync
payment
- payment.provider.onboarding.wizardPayment provider onboarding wizard
pos_hr
- report.pos_hr.multi_employee_sales_reportA collection of single session reports. One for each employee
pos_preparation_display
- pos_preparation_display.displayEPreparation display
- pos_preparation_display.orderEPreparation orders
- pos_preparation_display.order.stageEStage of orders by preparation display
- pos_preparation_display.orderlineEPoint of Sale preparation order line
- pos_preparation_display.reset.wizardEReset all current order in a preparation display
- pos_preparation_display.stageEPoint of Sale preparation stage
product
- product.packagingProduct Packaging
quality_control
- quality.check.on.demandEWizard to select on-demand quality check points
sale
- sale.order.cancelSales Order Cancel
- sale.payment.provider.onboarding.wizardSale Payment provider onboarding wizard
sale_edi_ubl
- sale.edi.commonCommon functions for EDI orders
sale_management
- sale.order.optionSale Options
- sale.order.template.optionQuotation Template Option
sale_renting
- sale.rental.scheduleERental Schedule
sale_renting_sign
- rental.sign.wizardESign Documents from a SO
sale_subscription
- sale.order.alertESale Order Alert
- sale.subscription.pricingEPricing rule of subscription products
sale_timesheet
- project.create.invoiceCreate Invoice from project
sign
- sign.duplicate.template.pdfESign Duplicate Template with new PDF
sms
- sms.resendSMS Resend
- sms.resend.recipientResend Notification
snailmail
- snailmail.letter.format.errorFormat Error Sending a Snailmail Letter
- snailmail.letter.missing.required.fieldsUpdate address of partner
stock
- procurement.groupProcurement Group
- stock.change.product.qtyChange Product Quantity
- stock.lot.reportCustomer Lot Report
- stock.package_levelStock Package Level
- stock.quant.packagePackages
- stock.track.confirmationStock Track Confirmation
- stock.track.lineStock Track Line
stock_account
- stock.valuation.layerStock Valuation Layer
- stock.valuation.layer.revaluationWizard model to reavaluate a stock inventory for a product
stock_delivery
- choose.delivery.packageDelivery Package Selection Wizard
timesheet_grid
- project.task.create.timesheetECreate Timesheet from task
uom
- uom.categoryProduct UoM Categories
web_editor
- web_editor.assetsAssets Utils
- web_editor.converter.testWeb Editor Converter Test
- web_editor.converter.test.subWeb Editor Converter Subtest
website_event_meet
- event.meeting.roomEvent Meeting Room
website_jitsi
- chat.roomChat Room
- chat.room.mixinChat Room Mixin
Models added in Odoo 19 (297)
Modules with the most new models:
Modules removed and added
113 modules of Odoo 18 are gone
209 new modules in Odoo 19
Views, menus and actions removed
XML ids that existed in Odoo 18 and no longer exist in Odoo 19. Customisations that inherit or reference them fail to install. See the full list.
| Module | Views | Menus | Actions |
|---|---|---|---|
| l10n_ch_hr_payroll_elm_transmission | 71 | 20 | 20 |
| website | 63 | 0 | 0 |
| website_sale | 48 | 0 | 0 |
| account_edi_ubl_cii | 33 | 0 | 0 |
| hr_payroll | 18 | 4 | 10 |
| stock | 17 | 4 | 8 |
| documents_project | 8 | 0 | 20 |
| hr_contract | 21 | 3 | 4 |
| hr_expense | 14 | 2 | 7 |
| membership | 12 | 5 | 4 |
| l10n_ch_hr_payroll | 12 | 0 | 7 |
| l10n_cz_reports_2025 | 12 | 3 | 2 |
| stock_account | 12 | 1 | 3 |
| account | 4 | 6 | 5 |
| website_event_meet | 13 | 0 | 2 |
| hr_appraisal | 8 | 0 | 6 |
| im_livechat | 6 | 3 | 3 |
| l10n_be_hr_payroll_dmfa_sftp | 7 | 2 | 3 |
| l10n_in_reports_gstr | 10 | 1 | 1 |
| l10n_in_withholding | 10 | 0 | 2 |
| l10n_sa_edi | 12 | 0 | 0 |
| purchase_edi_ubl_bis3 | 12 | 0 | 0 |
| sign | 9 | 1 | 2 |
| delivery_fedex_certified | 11 | 0 | 0 |
| hr_contract_salary | 9 | 1 | 1 |
| hr_contract_sign | 8 | 0 | 3 |
| hr_recruitment | 7 | 1 | 3 |
| l10n_be_hr_payroll | 10 | 0 | 1 |
| l10n_id_efaktur | 9 | 0 | 2 |
| l10n_ke_hr_payroll | 6 | 2 | 3 |
And 326 more modules in the full list.