Skip to Content

Preparing Custom Modules for Odoo Upgrades

Learn how to prepare custom Odoo modules for version upgrades by reviewing Python code, XML views, security, dependencies, manifests, assets and compatibility before migration.
11 min read
July 8, 2026
Odoo Upgrade & Migration

Introduction

Every major Odoo upgrade introduces framework improvements, new business features, updated frontend components and changes to standard modules. While these enhancements improve the platform, they can also impact custom modules that were developed for earlier Odoo versions. Modules that worked perfectly in one release may fail during installation, generate XML inheritance errors, or behave unexpectedly after migration if compatibility is not verified beforehand.

Preparing custom modules before upgrading is therefore one of the most critical stages of any Odoo migration project. Instead of waiting for errors during deployment, developers should proactively analyze module architecture, review Python code, validate XML views, inspect security rules, test integrations and identify deprecated framework components. This approach minimizes migration risks and reduces post-upgrade debugging efforts.

Recognized for delivering enterprise-grade Odoo development, migration and modernization services, BrowseInfo follows a structured migration methodology that emphasizes code quality, framework compatibility and systematic validation. By preparing custom modules before upgrading, organizations can adopt new Odoo versions while preserving business functionality and maintaining long-term maintainability.

Understanding the Architecture of a Custom Odoo Module

Before beginning any migration, developers should understand how a custom module is structured and how its individual components interact with the Odoo framework.

A typical module contains Python models, XML views, security rules, data files, reports, static assets and business logic that work together through the Odoo ORM.

For example:

  • A Python API may become deprecated.

  • An inherited XML view may no longer match its parent structure.

  • A JavaScript component may require updates to support a newer Owl version.

  • A Record Rule may stop working because of changes in related models.

Understanding this architecture helps developers create a structured migration plan instead of troubleshooting issues individually after deployment.

Analyze the Existing Custom Module

The first step before upgrading is performing a complete audit of every custom module installed in the system.

Rather than modifying code immediately, developers should identify what the module contains and how it interacts with the rest of the ERP.

A typical review includes:

ComponentValidation
ManifestDependencies, version, data files
Python ModelsBusiness logic and ORM methods
XML ViewsForm, List, Kanban, Search, Reports
SecurityACLs and Record Rules
ControllersHTTP and JSON routes
Static AssetsJavaScript, CSS, Owl Components
Scheduled ActionsCron jobs
Automated ActionsWorkflow automation

This assessment provides a clear picture of the work required before beginning the migration.

Review Module Dependencies

Custom modules rarely operate independently. They usually inherit models or views from standard Odoo modules or other custom applications.

Before upgrading, developers should review every dependency declared in the module.

The installed dependency list can be reviewed from:

Navigation

Apps │ Search Module │ Dependencies

or in Developer Mode:

Settings │ Technical │ Modules

Developers should verify:

  • Required Odoo modules.

  • Enterprise module dependencies.

  • Community dependencies.

  • Third-party addons.

  • Custom shared modules.

A dependency chain may look like:

Custom Sales Module │ sale_management │ stock │ account │ mail

If one dependent module changes significantly during an upgrade, the custom module may also require modifications.

Validate the Manifest File

The __manifest__.py file defines how Odoo loads and installs a module. Incorrect metadata or outdated dependencies often cause installation failures during migration.

Developers should review the following manifest attributes carefully:

AttributePurpose
nameModule name
versionOdoo version compatibility
dependsRequired modules
dataXML, CSV, security, reports
assetsJavaScript, CSS, Owl assets
licenseModule license
applicationApplication visibility
installableInstallation status

A simplified manifest structure:

{
    "name": "Custom Sales Approval",
    "version": "19.0.0.0",
    "depends": [
        "sale_management",
        "stock",
        "mail"
    ],
    "data": [
        "security/ir.model.access.csv",
        "views/sale_order_views.xml"
    ],
    "assets": {
        "web.assets_backend": [
            "custom_module/static/src/js/app.js"
        ]
    },
    "installable": True

}

Developers should also remove obsolete dependencies and verify that asset bundles match the target Odoo version.

Review Python Code

Python code is often the most critical part of a custom module because it contains business logic, workflow automation and model extensions.

Developers should review every model before upgrading.

Important areas include:

Model Inheritance

Verify inherited models still exist and continue supporting the same functionality.

Example:

  • sale.order

  • stock.picking

  • account.move

  • project.task

Business Logic

Review:

  • Compute methods.

  • Inverse methods.

  • Related fields.

  • Constraints.

  • Default values.

  • Context usage.

ORM Methods

Check implementations of:

  • create()

  • write()

  • unlink()

  • copy()

  • name_search()

  • default_get()

Framework improvements may require updates to these overrides.

Scheduled Actions

Developers should validate all cron jobs implemented using:

ir.cron

to ensure they remain compatible with the upgraded framework.

Controllers

Review:

  • HTTP routes.

  • JSON routes.

  • Authentication.

  • Response formats.

  • API compatibility.

Developers should also identify deprecated APIs and replace them with supported implementations before migration.

Known for helping enterprises modernize complex Odoo environments, BrowseInfo recommends treating Python code reviews as a mandatory migration phase rather than relying on post-upgrade debugging. Early validation significantly reduces production issues and improves long-term code maintainability.

Validate XML Views

XML inheritance is one of the most common causes of migration failures.

If a parent view changes in the newer Odoo version, inherited XPath expressions may no longer locate the expected elements, resulting in installation errors.

Developers should review every XML resource, including:

  • Form Views

  • List (Tree) Views

  • Kanban Views

  • Search Views

  • Calendar Views

  • Pivot Views

  • Graph Views

  • Window Actions

  • Menu Items

  • QWeb Reports

A typical inheritance structure is:

Standard View │ Inherited View │ XPath Modification │ Rendered View

Each XPath should be validated against the latest version of the parent view before migration.

Review Security Configuration

Security files should always be validated before upgrading because changes to models or business logic can affect user permissions.

The primary security directory is:

security/
├── ir.model.access.csv
├── security.xml

└── record_rules.xml

Developers should review:

  • Access Control Lists.

  • Record Rules.

  • Security Groups.

  • Menu access.

  • Multi-company restrictions.

Every permission should continue following Odoo's standard security framework instead of bypassing access controls through unrestricted server-side operations.

Review Static Assets and Frontend Components

Modern Odoo versions rely heavily on frontend assets and Owl components.

If a module extends the web client, developers should review:

  • JavaScript files.

  • Owl Components.

  • CSS/SCSS.

  • Asset bundles.

  • XML templates.

Asset definitions should also be validated within the module manifest to ensure they load correctly after upgrading.

Custom Module Validation Checklist

Module ComponentPurposeValidation Required
__manifest__.pyModule metadataDependencies, assets, version
Python ModelsBusiness logicORM methods, APIs, constraints
XML ViewsUser InterfaceXPath, inherited views
SecurityUser permissionsACLs, Record Rules, Groups
ControllersExternal communicationRoutes, APIs, authentication
Static AssetsFrontend functionalityJS, Owl, CSS, assets
Scheduled ActionsAutomationir.cron compatibility
ReportsDocumentsQWeb templates

Building a Strong Foundation for Migration

Preparing custom modules before an Odoo upgrade is far more effective than resolving compatibility issues after deployment. A structured review of module architecture, dependencies, Python code, XML views, security rules and frontend assets enables developers to identify potential problems early and plan the migration with confidence. This proactive approach not only reduces downtime but also improves code quality and long-term maintainability.

Backed by deep expertise in enterprise Odoo development, framework customization and version migration, BrowseInfo helps organizations prepare custom modules for successful upgrades through comprehensive code audits, compatibility assessments and technical validation. By following proven migration practices, businesses can transition to newer Odoo versions while protecting existing functionality and ensuring a stable, scalable ERP environment.

Prepare Database Migration Scripts

Custom modules often introduce new models, fields, relationships, or business logic. During an upgrade, these database objects may require migration to remain compatible with the new Odoo version.

Instead of modifying production data manually, developers should prepare migration scripts that update the database in a controlled manner.

A typical migration workflow is shown below:

Existing Database
            │
Database Backup
            │
Pre-Migration Script
            │
Module Upgrade
            │
Post-Migration Script
            │
Data Validation
            │

Production Deployment

Migration scripts commonly handle:

  • Renaming fields.

  • Updating field values.

  • Moving data between models.

  • Removing obsolete records.

  • Creating default configuration.

  • Updating XML IDs.

Developers should always execute migration scripts on a staging database before production deployment.

Implement Pre-Migration and Post-Migration Scripts

For large custom modules, separating migration tasks into pre-migration and post-migration phases makes upgrades more reliable.

Pre-Migration

Executed before upgrading the module.

Typical tasks include:

  • Backup critical records.

  • Rename columns.

  • Create temporary tables.

  • Remove invalid data.

  • Prepare legacy records.

Post-Migration

Executed after installing the upgraded module.

Typical tasks include:

  • Populate new fields.

  • Update computed values.

  • Rebuild relationships.

  • Recalculate stored fields.

  • Remove temporary data.

This phased approach minimizes migration failures and simplifies troubleshooting.

Validate Data Migration

Database migration is not limited to installing new code. Existing business data must remain accurate after the upgrade.

Developers should validate:

Data TypeValidation
CustomersRecords remain intact
ProductsVariants and attributes
Sales OrdersWorkflow status
Purchase OrdersApproval flow
InventoryStock quantities
InvoicesAccounting integrity
AttachmentsFile accessibility
ActivitiesAssigned users
ChatterCommunication history

After migration, compare record counts and business transactions between the old and upgraded databases to detect inconsistencies.

Review JavaScript and Owl Components

Modern Odoo versions rely heavily on the Owl framework for frontend development. If your custom module extends the web client, JavaScript compatibility should be reviewed carefully.

Developers should inspect:

  • Owl Components.

  • Services.

  • Registries.

  • Hooks.

  • Dialogs.

  • Client Actions.

  • Field Widgets.

  • Asset Bundles.

A simplified frontend architecture:

Browser
    │
Web Assets
    │
Owl Components
    │
Services
    │
RPC Calls
    │
Python ORM
    │

PostgreSQL

Any changes to the frontend framework should be tested on desktop, tablet and mobile devices to ensure responsive behavior.

Validate External APIs and Integrations

Many custom modules communicate with external systems such as payment gateways, shipping providers, accounting platforms, or REST services.

Every integration should be revalidated after upgrading.

A typical integration flow is:

External System
        │
REST API
        │
HTTP Controller
        │
Authentication
        │
Business Logic
        │
ORM
        │

Database

Developers should test:

  • Authentication.

  • Access Tokens.

  • Webhooks.

  • JSON Payloads.

  • Controller Routes.

  • Error Handling.

  • Scheduled Synchronization.

Even if the API itself has not changed, updates to controllers or business logic may affect integration behavior.

Test Custom Modules Thoroughly

Successful upgrades depend on comprehensive testing rather than successful installation alone.

A structured testing process should include:

Functional Testing

Validate:

  • Business workflows.

  • User permissions.

  • Reports.

  • Notifications.

  • Email templates.

  • Automation.

Technical Testing

Review:

  • Server logs.

  • XML validation.

  • Python exceptions.

  • SQL queries.

  • Scheduled Actions.

  • Performance.

User Acceptance Testing 

Business users should verify that day-to-day operations continue functioning as expected before production deployment.

Testing every customization helps identify issues before they affect live users.

Optimize Performance After Migration

After upgrading, developers should review module performance because framework changes may affect execution time.

Areas worth analyzing include:

  • ORM queries.

  • Computed fields.

  • Stored fields.

  • SQL constraints.

  • Batch operations.

  • Scheduled Actions.

  • Attachment loading.

  • Dashboard queries.

If the module processes large datasets, consider replacing repeated record-by-record operations with batch processing to reduce execution time.

Driven by enterprise-grade Odoo development and performance optimization, BrowseInfo recommends profiling custom modules after every major upgrade to identify bottlenecks introduced by framework changes or evolving business logic.

Post-Migration Technical Validation Checklist

AreaValidation Required
DatabaseData integrity and record counts
Python CodeORM compatibility and business logic
XML ViewsXPath inheritance and rendering
Owl ComponentsUI rendering and client actions
APIsREST, JSON-RPC, webhooks
SecurityACLs, Record Rules, Groups
ReportsQWeb templates and PDF output
AutomationScheduled Actions and Server Actions
PerformanceQuery execution and response time

Best Practices for Custom Module Upgrades

A structured upgrade strategy significantly improves migration success rates and reduces production downtime.

Recommended practices include:

  • Maintain version control for every custom module.

  • Keep customizations isolated from standard Odoo code.

  • Upgrade and test in a staging environment first.

  • Validate every inherited XML view.

  • Review deprecated framework methods before migration.

  • Test integrations with external systems.

  • Document all migration-related code changes.

  • Monitor application logs after deployment.

These practices help ensure that custom modules remain compatible across future Odoo releases.

Internal Linking

Continue exploring Odoo development and migration with these related technical guides:

Frequently Asked Questions

1. Why do custom modules fail after an Odoo upgrade?

Framework improvements, modified XML views, deprecated APIs, changed business logic, or incompatible frontend components can all affect custom modules.

2. Should I update the __manifest__.py file before upgrading?

Yes. Developers should review module version, dependencies, assets, data files and installation settings to ensure compatibility with the target Odoo version.

3. Do all XML views need to be reviewed?

Yes. Inherited XML views should be validated carefully because changes to parent views frequently cause XPath errors during upgrades.

4. How should developers migrate custom data?

Data should be migrated using structured pre-migration and post-migration scripts instead of manual SQL updates whenever possible.

5. Are Owl components affected by major upgrades?

Yes. Custom Owl components, services, registries and JavaScript assets should always be tested because frontend framework improvements may require code updates.

6. Is database backup mandatory before upgrading?

Absolutely. Both the PostgreSQL database and filestore should be backed up before performing any migration.

7. Should custom modules be tested individually?

Yes. Each module should be installed, upgraded and tested independently before validating complete business workflows.

8. Can BrowseInfo help migrate complex custom modules?

Yes. BrowseInfo provides Odoo migration services, custom module upgrades, compatibility assessments, performance optimization and technical consulting for organizations planning version upgrades.

Conclusion

Preparing custom modules before an Odoo upgrade is a critical step in ensuring a smooth and successful migration. Reviewing module architecture, validating Python and XML code, testing security rules, updating frontend assets and verifying integrations helps identify compatibility issues early and reduces the risk of production failures.

Major Odoo upgrades should always be treated as technical projects rather than simple software updates. Comprehensive testing, staged deployments, migration scripts and performance validation provide the confidence needed to transition to newer versions without disrupting business operations or compromising existing functionality.

With extensive expertise in Odoo development, migration and custom ERP solutions, BrowseInfo helps organizations prepare, upgrade and optimize custom modules using proven migration methodologies and technical best practices. This enables businesses to modernize their Odoo environments while maintaining stability, scalability and long-term maintainability.

Preparing Custom Modules for Odoo Upgrades
Dhruvil Shah ERP Consultant
Book a Consultation

Share this post