Enable Dark Mode!
how-to-migrate-custom-modules-from-odoo-18-to-odoo-19.jpg
By: Renu M

How to Migrate Custom Modules from Odoo 18 to Odoo 19

Technical Odoo 19 Odoo Enterprises Odoo Community

Your Odoo 18 system has been running smoothly, but Odoo 19's new AI capabilities, mobile enhancements, and security improvements are too compelling to ignore. However, upgrading isn't simply clicking 'update.' It requires careful navigation of architectural changes that could break your custom modules. In this guide, we'll walk through everything you need to know for a successful migration from Odoo 18 to 19, based on hands-on experience with the technical changes.

Why Upgrade to Odoo 19?

Upgrading to Odoo 19 provides several advantages:

  • Improved system performance and faster report generation
  • Refined and more responsive user interface
  • Enhanced mobile usability
  • Stronger access control architecture
  • Better data integrity and backend consistency
  • New AI-assisted capabilities across applications

Even with these benefits, upgrading requires careful testing because breaking changes may affect custom modules and integrations.

Preparing for the Migration

Before starting your migration, follow these essential steps:

1. Backup Everything

Create a full backup of:

  • Database
  • Filestore
  • Custom modules
  • Configuration files

2. Use a Staging Environment

Duplicate your Odoo 18 instance and test the upgrade there first.

3. Review Custom Modules

Check for:

  • Deprecated methods
  • Field renamings
  • Updated views
  • Import path changes

4. Update Dependencies

Ensure your system meets requirements:

  • Python 3.10+
  • Updated libraries
  • Compatible PostgreSQL version

5. Review Documentation & Community Notes

Check migration scripts, community discussions, and official documentation before proceeding.

General Technical Changes in Odoo 19

Odoo 19 introduces several backend and framework-level updates.

Core Framework Changes

  • HTTP route type updated
    • type='json' > type='jsonrpc'
  • Registry import changed
    • from odoo import registry > from odoo.modules.registry import Registry
  • XLSX import simplified
    • from odoo.tools.misc import xlsxwriter > import xlsxwriter
  • Resource helper updated
    • get_module_resource() > get_resource_from_path()
  • Context access standardized
    • self._context > self.env.context
  • UID access updated
    • self._uid > self.env.uid

Model & Field Updates

  • Model removed: res.partner.title
  • Field removed: mobile from res.partner
  • groups_id > group_ids
  • Users > user_ids
  • tax_id > tax_ids
  • product_uom > product_uom_id
  • factor > relative_factor
  • category_id (UoM link) > relative_uom_id

Security & Group Refactor

  • New model introduced: res.groups.privilege
  • category_id replaced by privilege_id in res.groups
  • Group categories reorganized for clearer privilege structure
  • Groups removed from res.users model file and handled separately
  • Group relations now use user_ids

Menu & Server Action Changes

  • Updated group_ids handling in ir.ui.menu
  • Menu configuration now uses:
    • action_id
    • action_model

    instead of only action

  • Avoid using sudo and group_ids together in ir.actions.server

ORM & Search Changes

  • _apply_ir_rules removed
  • Replace:
  • query = self._where_calc(domain)

    self._apply_ir_rules(query)

    with:

    query = self._search(domain, bypass_access=True)

  • Deprecated:
    • odoo.osv.Expressions > use odoo.fields.Domain

View & UI Changes

  • <kanban-box> replaced with <card>
  • Search view simplified:
  • <group expand="0" string="Group By" > -> <group>

  • FormView controller requires mode prop in debug mode

Authentication Change

authenticate(request.session.db, creds) > authenticate(request.env, creds)

Unit of Measure (UoM) Changes

Odoo 19 simplifies the UoM structure.

  • uom.category table removed
  • uom_type field removed
  • factor_inv > relative_factor
  • Units linked directly using relative_uom_id

Res Groups Changes

Security roles are now privilege-based.

  • category_id > privilege_id
  • Introduced: res.groups.privilege
  • Categories linked through privileges instead of directly

Sale Order Line Changes

  • product_uom > product_uom_id
  • tax_id > tax_ids

Update these fields in:

  • Python models
  • XML views
  • Reports
  • Domain filters

Accounting Changes

  • Field deprecated removed
  • Search view group simplified:

<group expand="0" string="Group By"> -> <group>

Post-Migration Checklist

  1. Tests can be run using both custom scripts and Odoo's built-in tests to ensure functionality.
  2. Upgrade the database: To update modules, use the -u all command with -dev.
  3. Logs should be monitored for any alerts regarding deprecated features.
  4. User training: Emphasize UI modifications, like the new Kanban cards.
  5. Performance Tuning: To achieve the best speed, Odoo 19's optimizations could call for server adjustments.

Migrating from Odoo 18 to 19 helps future-proof your ERP with improved architecture, stronger security, and better usability. By reviewing framework updates, adapting renamed fields, and testing custom modules carefully, you can achieve a stable and efficient upgrade with minimal downtime. Proper planning, staged testing, and systematic validation are the keys to a successful Odoo migration.

To read more about How to Install a Custom Module in Odoo 19, refer to our blog How to Install a Custom Module in Odoo 19.


If you need any assistance in odoo, we are online, please chat with us.



0
Comments



Leave a comment



whatsapp_icon
location

Calicut

Cybrosys Technologies Pvt. Ltd.
Neospace, KINFRA Techno Park
Kakkanchery, Calicut
Kerala, India - 673635

location

Kochi

Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.

location

Bangalore

Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message