Skip to content
Odoo Upgrade

Odoo Migration: Handling Custom Fields and Dynamic Forms in Upgrades

A practical guide for CIOs and ERP consultants on managing custom fields, dynamic forms, and view dependencies during Odoo version upgrades to ensure data integrity and operational continuity.

9 min readSysGenPro Editorial
Odoo Migration: Handling Custom Fields and Dynamic Forms in Upgrades

Direct Approach to Handling Custom Fields and Dynamic Forms in Odoo Upgrades

Handling custom fields and dynamic forms during an Odoo upgrade requires a structured approach focused on dependency analysis, view inheritance validation, and rigorous testing in a representative staging environment. The primary risk is the silent failure of custom logic or the breaking of form layouts due to changes in the core framework's XML view definitions or Python model structures. To mitigate this, organizations must treat custom fields not just as data containers but as critical business logic components that interact with security rules, workflows, and integrations. The recommended approach involves a full audit of all custom modules, a detailed mapping of field dependencies, and a phased upgrade strategy that prioritizes data integrity and user experience. By verifying compatibility against official vendor documentation for the specific source and target versions, teams can identify deprecated APIs and changed model behaviors before they impact production operations.

Preparation: Auditing Custom Fields and Dependencies

The preparation phase is critical for identifying potential breakage points. Before initiating any upgrade, the technical team must conduct a comprehensive audit of all custom modules. This includes identifying every custom field added to standard models, as well as any fields that have been modified or extended. Each field must be documented with its data type, default values, required status, and any associated Python methods that trigger on creation or update. Dynamic forms, which often rely on complex view inheritance and JavaScript widgets, require special attention. The team should map out the view hierarchy to understand how custom fields are injected into standard forms. This mapping helps identify conflicts that may arise if the core Odoo version changes the structure of the base views. Additionally, the audit should cover security access rules to ensure that custom fields remain visible and editable for the correct user groups. This step prevents security misconfigurations that could expose sensitive data or block legitimate user actions.

Identifying Deprecated APIs and Changed Models

A significant portion of upgrade failures stems from the use of deprecated APIs or changes in core model behavior. The technical team must review the release notes and migration guides for the target Odoo version to identify any breaking changes. For example, if a custom field relies on a specific method that has been renamed or removed in the new version, the code must be refactored. Similarly, if the core model's structure has changed, such as the addition of new required fields or the removal of existing ones, the custom module must be updated to accommodate these changes. This process requires a deep understanding of the Odoo framework and the specific customizations implemented. It is essential to verify these details against the official documentation for the exact source and target versions, as compatibility can vary significantly between minor releases.

Technical Execution: Refactoring and View Updates

Once the audit is complete, the technical execution phase begins with the refactoring of custom code. This involves updating Python models to align with the new version's API standards and adjusting XML view definitions to ensure that custom fields are correctly displayed in dynamic forms. View inheritance is a powerful feature in Odoo, but it is also a common source of errors during upgrades. If the base view that a custom module inherits from has changed, the custom view may fail to load or display incorrectly. The team must test each view inheritance to ensure that the custom fields are positioned correctly and that any conditional visibility rules still function as intended. JavaScript widgets that enhance dynamic forms must also be reviewed for compatibility with the new version's frontend framework. Any deprecated widgets must be replaced with their modern equivalents, and custom JavaScript code must be updated to work with the new event handling mechanisms.

Managing Database Schema Changes

Custom fields often result in database schema changes, such as the addition of new columns to existing tables. During an upgrade, the database schema must be updated to reflect these changes. The Odoo upgrade process typically handles standard schema migrations, but custom fields may require manual intervention if the migration scripts do not account for them. The team must ensure that the database backup is complete and verified before proceeding with the upgrade. After the upgrade, the team should run consistency checks to ensure that the database schema matches the expected state. This includes verifying that all custom fields are present and that their data types are correct. Any discrepancies must be resolved immediately to prevent data loss or corruption.

Validation: Testing in a Staging Environment

Validation is the most critical phase of the upgrade process. A representative staging environment must be set up with a copy of the production database and all custom modules. The upgrade should be performed in this environment to identify any issues before they impact production. The testing process should include unit tests for custom Python code, integration tests for form interactions, and end-to-end business process tests. Special attention should be paid to dynamic forms, as these are often the most complex and error-prone components. The team should test various user scenarios, including creating, updating, and deleting records with custom fields, to ensure that all business logic functions correctly. Security tests should also be conducted to verify that access rules are enforced correctly. Any defects found during testing must be documented and triaged, with critical issues resolved before proceeding to the next phase.

Test TypeFocus AreaKey Checks
Unit TestsPython ModelsField default values, computed fields, constraints
Integration TestsXML ViewsField visibility, widget rendering, form layout
End-to-End TestsBusiness ProcessesWorkflow completion, data integrity, user experience
Security TestsAccess RulesUser permissions, data visibility, audit logs

Deployment: Cutover and Rollback Planning

The deployment phase requires a well-defined cutover plan that minimizes downtime and ensures a smooth transition to the new version. The cutover window should be scheduled during a period of low business activity to reduce the impact on operations. Before the cutover, a final backup of the production database must be taken and verified. The upgrade should be performed according to a documented runbook that outlines each step, the responsible party, and the expected outcome. Go/no-go criteria must be established, with clear indicators for when to proceed with the upgrade and when to abort. If the upgrade fails or critical issues are discovered, a rollback plan must be in place to restore the system to its previous state. The rollback plan should include a tested procedure for restoring the database backup and reverting any code changes. Communication with stakeholders is essential during this phase, with regular updates provided on the progress of the upgrade and any issues encountered.

Stabilization: Post-Upgrade Monitoring and Support

After the upgrade is complete, the system enters the stabilization phase. This period is critical for identifying any issues that may not have been caught during testing. The technical team should monitor the system closely, watching for error logs, performance metrics, and user feedback. Any issues reported by users should be triaged and resolved promptly. The team should also conduct a post-upgrade review to document any lessons learned and identify areas for improvement in future upgrades. This review should include an assessment of the upgrade process, the effectiveness of the testing strategy, and the success of the cutover plan. By continuously monitoring and supporting the system, the organization can ensure that the upgrade delivers the expected benefits and that the system remains stable and reliable.

Risk Management: Mitigating Common Upgrade Failures

Common upgrade failures include data loss, broken customizations, and integration failures. To mitigate these risks, the organization must implement a robust risk management strategy. This includes maintaining verified backups, conducting restore tests, and using representative staging environments. Data loss can be prevented by ensuring that all data is backed up before the upgrade and that the backup is verified. Broken customizations can be mitigated by thoroughly testing all custom modules in the staging environment and refactoring any code that is incompatible with the new version. Integration failures can be prevented by testing all integrations in the staging environment and ensuring that the data contracts and API endpoints are compatible with the new version. By proactively managing these risks, the organization can reduce the likelihood of upgrade failures and ensure a smooth transition to the new version.

Decision Criteria for Upgrade vs. Replacement

In some cases, an upgrade may not be the best option. If the customizations are too complex or if the current version is no longer supported, a replacement may be more cost-effective in the long run. The decision to upgrade or replace should be based on a thorough analysis of the costs and benefits of each option. Factors to consider include the cost of upgrading, the cost of replacing, the impact on business operations, and the long-term maintainability of the system. If the customizations are extensive and the upgrade would require significant refactoring, a replacement may be a better option. However, if the customizations are manageable and the upgrade would provide significant benefits, an upgrade may be the best choice. The decision should be made by a cross-functional team that includes IT, finance, and operations leaders.

Conclusion: Ensuring Long-Term ERP Maintainability

Handling custom fields and dynamic forms in Odoo upgrades is a complex but manageable process. By following a structured approach that includes preparation, technical execution, validation, deployment, and stabilization, organizations can mitigate the risks associated with upgrades and ensure a smooth transition to the new version. The key to success is thorough testing, rigorous validation, and proactive risk management. By verifying compatibility against official vendor documentation and maintaining a representative staging environment, teams can identify and resolve issues before they impact production operations. This approach not only ensures the success of the current upgrade but also improves the long-term maintainability of the ERP system, reducing technical debt and enhancing operational efficiency.

Written by
SysGenPro Editorial

SysGenPro Editorial

Platform & solutions team

Practical guidance on ERP, AI automation, cloud deployment and enterprise transformation from the SysGenPro team.

Share this article

Frequently asked questions

Common questions on this topic. Talk to our team for anything specific to your business.

01What happens to custom fields during an Odoo upgrade?

Custom fields are generally preserved, but their definitions and associated logic may need to be updated to align with the new version's API and model structures. View inheritance and security rules must also be validated to ensure correct display and access.

02How do I test dynamic forms before upgrading Odoo?

Test dynamic forms in a representative staging environment by simulating various user scenarios, including creating, updating, and deleting records. Verify that custom fields are displayed correctly and that any JavaScript widgets function as intended.

03Can I upgrade Odoo without losing custom data?

Yes, provided that you take a verified backup of the database before the upgrade and ensure that the upgrade process correctly handles schema migrations for custom fields. Restore tests should be performed to confirm backup integrity.

04What are the main risks of upgrading Odoo versions?

Main risks include broken customizations, data loss, integration failures, and security misconfigurations. These risks can be mitigated through thorough testing, rigorous validation, and proactive risk management.

05How long does an Odoo version upgrade take?

The duration depends on the complexity of the customizations and the size of the database. A simple upgrade may take a few hours, while a complex upgrade with extensive customizations may take several days or weeks.

06Do I need to rewrite custom modules for Odoo upgrades?

Not necessarily, but custom modules may need to be refactored to align with the new version's API standards and model structures. Deprecated APIs and changed model behaviors must be addressed to ensure compatibility.

Continue learning
View all articles
Explore the platform

Where to go next

Browse the knowledge hub

See how SysGenPro fits your business

Discuss your workflows, modules and deployment options with our team.

Back to resources