Skip to content
Odoo Upgrade

Odoo Migration: Preserving Custom Reports and Dashboards During Upgrades

Learn how to preserve custom Odoo reports and dashboards during version upgrades. This guide covers dependency analysis, XML/Python compatibility, testing strategies, and risk mitigation for CIOs and ERP consultants.

9 min readSysGenPro Editorial
Odoo Migration: Preserving Custom Reports and Dashboards During Upgrades

Direct Answer: How to Preserve Custom Reports and Dashboards in Odoo Upgrades

Preserving custom reports and dashboards during an Odoo migration requires a rigorous, manual verification process rather than relying on automatic tooling. Odoo does not guarantee that custom XML views, Python logic, or QWeb templates will remain functional across major version upgrades due to changes in the underlying data model, API structures, and rendering engines. The primary risk is silent data corruption or broken visual layouts that go unnoticed until post-deployment. To mitigate this, organizations must perform a complete dependency analysis of all custom modules, validate XML inheritance chains against the target version's schema, and execute comprehensive regression testing in a representative staging environment. This approach ensures that business intelligence continuity is maintained while controlling the risk of operational downtime.

Assessment of Source and Target Version Compatibility

The first step in any Odoo migration is a detailed assessment of the source and target versions. Major version jumps (e.g., from Odoo 14 to Odoo 17) often introduce breaking changes in the ORM, security rules, and view definitions. You must consult the official Odoo release notes and migration guides for the specific versions involved. These documents outline deprecated fields, removed APIs, and changed model structures. For custom reports, this means identifying any fields that have been renamed, removed, or had their data types changed. If a field used in a report is deprecated, the report will either fail to render or display incorrect data. This assessment phase requires input from both technical developers and business stakeholders to prioritize which reports are critical for daily operations.

Identifying Deprecated APIs and Models

Custom reports often rely on Python methods that interact with the Odoo ORM. Between versions, method signatures may change, or certain ORM behaviors may be altered. For example, the way records are fetched or how computed fields are evaluated might differ. Developers must audit all custom Python code associated with reports to ensure it aligns with the target version's API. This includes checking for deprecated logging methods, changed exception handling, and modified security context propagation. Failure to update this code can lead to runtime errors that prevent reports from generating entirely.

Dependency Analysis and Module Mapping

Custom reports are rarely standalone; they depend on other modules, both core and third-party. A comprehensive dependency map is essential to understand the full scope of the migration. This map should include all custom modules, third-party add-ons, and core modules that the reports rely on. For each dependency, you must verify compatibility with the target Odoo version. Third-party add-ons may not have been updated for the new version, or they may have introduced breaking changes in their own custom code. If a critical dependency is unavailable or incompatible, you must decide whether to wait for an update, seek an alternative, or rewrite the dependent code. This decision impacts the timeline and cost of the migration.

ComponentRisk FactorVerification ActionOwner
Custom XML ViewsInheritance conflicts, removed fieldsValidate against target schemaERP Developer
Python LogicAPI changes, deprecated methodsCode audit and unit testingERP Developer
Third-Party Add-onsVersion incompatibilityCheck vendor release notesProject Manager
Data ModelsField type changes, removalsDatabase schema comparisonDBA

XML View and QWeb Template Validation

Odoo reports are primarily defined using XML views and QWeb templates. During an upgrade, the structure of these files may need adjustment to accommodate changes in the target version's view inheritance mechanism. XML inheritance allows custom modules to modify existing views, but if the parent view changes in the target version, the inheritance may fail or produce unexpected results. Developers must manually review all XML files associated with custom reports to ensure that the referenced fields and views still exist and are correctly structured. QWeb templates, which handle the visual layout, must also be checked for compatibility with the new rendering engine. This includes verifying CSS classes, JavaScript hooks, and dynamic data binding.

Handling View Inheritance Conflicts

View inheritance conflicts are a common source of broken reports during upgrades. If two modules attempt to modify the same view element in conflicting ways, the system may throw an error or display a malformed report. To prevent this, developers should use unique identifiers for custom view modifications and avoid modifying core views directly. Instead, they should use inheritance to extend views in a controlled manner. During the migration, these inheritance chains must be tested in isolation to ensure they do not conflict with changes in the core Odoo codebase. This requires a deep understanding of the Odoo view architecture and the specific changes introduced in the target version.

Staging Environment Setup and Data Replication

A representative staging environment is critical for validating custom reports before production deployment. This environment should mirror the production setup, including the same Odoo version, database structure, and data volume. Data replication from production to staging must be performed carefully to ensure that all relevant records are present for testing. This includes historical data, active records, and any test data that may be needed to validate edge cases. The staging environment should be used to run the upgrade process, allowing developers to identify and fix issues in a safe environment. It is important to note that the staging environment should not be used for final data loads, as this can introduce inconsistencies.

  • Ensure the staging database is a full copy of the production database.
  • Apply the Odoo version upgrade to the staging environment.
  • Install all custom and third-party modules in the staging environment.
  • Run automated tests to verify report generation and data accuracy.
  • Perform manual user acceptance testing with key business users.

Testing Strategies for Report Accuracy

Testing custom reports requires a multi-layered approach that includes unit tests, integration tests, and user acceptance testing. Unit tests should verify that individual Python methods and XML views function correctly in isolation. Integration tests should ensure that reports interact correctly with other modules and data sources. User acceptance testing (UAT) is crucial for validating that reports meet business requirements and display data accurately. UAT should involve key stakeholders who rely on these reports for decision-making. They should compare the output of the reports in the staging environment with the expected results from the production environment. Any discrepancies must be documented and resolved before proceeding to production.

Automated Regression Testing

Automated regression testing is essential for ensuring that custom reports continue to function correctly after the upgrade. This involves creating a suite of tests that cover all critical reports and dashboards. These tests should verify that reports generate without errors, that data is displayed correctly, and that layouts are preserved. Automated tests can be run repeatedly to ensure that changes made during the migration do not introduce new issues. This approach reduces the risk of human error and provides a consistent baseline for validation. It is important to keep the test suite up to date with any changes made to the custom code or data models.

Data Reconciliation and Validation

Data reconciliation is a critical step in ensuring that custom reports display accurate information after the upgrade. This involves comparing the data in the reports with the source data in the database. Developers should create scripts that extract data from the reports and compare it with the corresponding records in the database. Any discrepancies must be investigated and resolved. This process helps identify issues with data mapping, field transformations, or calculation logic. It is important to perform this reconciliation for all critical reports, especially those used for financial reporting or operational decision-making. Accurate data is essential for maintaining trust in the ERP system.

Cutover Planning and Rollback Strategy

Cutover planning involves defining the steps required to move from the old Odoo version to the new one in the production environment. This includes scheduling the downtime, communicating with stakeholders, and preparing the rollback plan. The rollback plan should outline the steps required to revert to the previous version if the upgrade fails. This includes restoring the database from a backup, reinstalling the old Odoo version, and verifying that the system is functional. It is important to test the rollback plan in the staging environment to ensure that it works as expected. A well-defined rollback plan reduces the risk of prolonged downtime and data loss.

PhaseKey ActivitiesSuccess CriteriaResponsible Role
PreparationDependency analysis, staging setupAll dependencies verifiedProject Manager
ExecutionUpgrade, module installationSystem boots without errorsERP Developer
ValidationTesting, data reconciliationAll reports pass UATQA Lead
DeploymentCutover, go-liveSystem operationalIT Director

Post-Upgrade Stabilization and Monitoring

After the upgrade is complete, the system must be monitored closely to identify any issues that may not have been caught during testing. This includes monitoring system logs for errors, tracking user feedback, and verifying that reports are generating correctly. Any issues that arise must be addressed promptly to minimize the impact on business operations. It is important to establish a support process for handling post-upgrade issues, including a dedicated team for troubleshooting and a clear escalation path. This ensures that any problems are resolved quickly and efficiently, maintaining the stability of the ERP system.

Long-Term Maintainability and Documentation

To ensure long-term maintainability, all changes made during the migration must be documented. This includes updates to custom code, XML views, and data mappings. Documentation should be stored in a central repository that is accessible to all team members. This ensures that future upgrades can be planned and executed more efficiently. It is also important to establish a process for managing custom code, including code reviews, version control, and regular testing. This helps maintain the quality and stability of the custom modules, reducing the risk of issues in future upgrades.

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.

01Can Odoo automatically migrate custom reports?

No, Odoo does not automatically migrate custom reports. Custom XML views, Python code, and QWeb templates must be manually reviewed and updated to ensure compatibility with the target version.

02What are the most common reasons custom dashboards break during upgrades?

Common reasons include deprecated fields, changed API methods, XML inheritance conflicts, and third-party add-on incompatibility. These issues can cause reports to fail to render or display incorrect data.

03How do I test report accuracy in a staging environment?

Test report accuracy by comparing the output of reports in the staging environment with the expected results from the production environment. Use automated tests and user acceptance testing to verify data accuracy and layout integrity.

04Do I need to rewrite Python code for Odoo upgrades?

It depends on the changes in the target version. If the API or ORM behavior has changed, you may need to update or rewrite Python code to ensure compatibility. Always audit custom code for deprecated methods and changed signatures.

05What is the role of XML inheritance in report preservation?

XML inheritance allows custom modules to modify existing views without directly editing core files. During upgrades, inheritance chains must be validated to ensure they do not conflict with changes in the core Odoo codebase.

06How long does it take to validate custom reports after an upgrade?

The time required depends on the complexity of the custom reports and the number of modules involved. It can range from a few days to several weeks. Automated testing can help reduce the time required for validation.

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