Skip to content
Odoo Migration

Odoo Migration for Multi-Company Environments: Handling Inter-Company Transactions and Currencies

A practical guide to migrating Odoo multi-company setups, focusing on inter-company transaction integrity, currency handling, and data reconciliation to ensure financial accuracy during upgrades.

7 min readSysGenPro Editorial
Odoo Migration for Multi-Company Environments: Handling Inter-Company Transactions and Currencies

Direct Approach to Odoo Multi-Company Migration

Migrating an Odoo environment with multiple companies requires a specialized focus on inter-company transaction integrity and currency consistency. The recommended approach involves a phased migration strategy that prioritizes data reconciliation, rigorous testing of inter-company journal entries, and validation of currency conversion logic before cutover. This is critical because inter-company transactions are complex financial records that must remain balanced across entities, and any discrepancy can lead to significant reporting errors. The main risks to control include data loss during transfer, broken custom modules that alter transaction logic, currency rate mismatches, and integration failures with external banking or payment systems. By treating the migration as a financial audit as much as a technical upgrade, you can ensure that the new Odoo version accurately reflects the financial reality of all entities.

Assessing Source and Target Version Compatibility

The first step is to identify the exact source and target Odoo versions. Compatibility is not guaranteed across all versions, especially for multi-company features which have evolved significantly over time. You must verify the official Odoo documentation for the specific source and target versions to understand changes in the data model for inter-company transactions. For example, the structure of journal entries and the handling of currency fields may differ. Check for deprecated APIs or modules that your custom code relies on. If you are moving from a Community edition to an Enterprise edition, or vice versa, the scope of the migration changes drastically due to different module availability and licensing. Document all third-party add-ons and their compatibility with the target version. If a critical add-on is not supported, you must plan for a replacement or custom development before proceeding.

Data Profiling and Inter-Company Transaction Analysis

Before moving any data, perform a deep profile of your existing inter-company transactions. Identify all pairs of companies that transact with each other. Analyze the volume, frequency, and currency of these transactions. Look for unmatched entries, where a transaction exists in one company but not the other, or where the amounts do not match due to currency conversion differences. This analysis helps you understand the complexity of the data and identifies potential issues that need to be resolved before migration. Use SQL queries or Odoo reporting tools to extract a list of all inter-company journal items. Verify that the debit and credit balances match across companies for each transaction. If you find discrepancies, decide whether to correct them in the source system or handle them during the migration mapping. This step is crucial for ensuring that the financial statements in the new system will be accurate.

Data ElementRisk FactorValidation Check
Inter-Company Journal EntriesMismatched amounts or missing counterpartsVerify debit/credit balance across companies
Currency RatesIncorrect historical rates or missing ratesCompare source and target rate tables
Company Specific AccountsIncorrect account mappingValidate chart of accounts consistency
Custom FieldsData loss or type mismatchCheck field definitions and data types

Handling Currency Conversion and Exchange Rates

Currency handling is a critical aspect of multi-company migrations. Odoo uses specific exchange rates to convert transactions from the company currency to the transaction currency. During migration, you must ensure that the historical exchange rates are correctly transferred to the new database. If the target version uses a different method for calculating exchange rates or storing rate history, you may need to transform the data. For example, if the source system stores rates per day and the target system stores them per month, you must map the data accordingly. Test the currency conversion logic by creating sample transactions in the staging environment and verifying that the amounts match the source system. Pay special attention to revaluation entries, which adjust the value of monetary items based on exchange rate changes. These entries must be recalculated or migrated accurately to avoid distortions in the financial statements.

Custom Module and Code Migration

Custom modules that modify inter-company transaction logic or currency handling are high-risk areas. You must review all custom code to identify dependencies on deprecated APIs or changed data models. For example, if a custom module overrides the creation of inter-company journal entries, it must be updated to work with the new Odoo version. Perform a dependency analysis to identify all modules that interact with the accounting and multi-company features. Update the code to use the new APIs and test it thoroughly in a staging environment. If you have custom reports that display inter-company balances, ensure they are updated to reflect any changes in the data structure. Do not assume that custom code will work without modification. Run automated tests to verify that the custom logic produces the same results as the source system.

Staging Environment and Testing Strategy

A representative staging environment is essential for validating the migration. Load a subset of your production data, including a full range of inter-company transactions and multi-currency entries, into the staging environment. Perform end-to-end tests of the business processes that involve inter-company transactions. For example, create a sales order in Company A, a purchase order in Company B, and verify that the inter-company journal entries are created correctly. Test the currency conversion by creating transactions in different currencies and verifying the amounts. Run financial reports, such as the balance sheet and profit and loss statement, for each company and compare them to the source system. Identify any discrepancies and investigate the root cause. This testing phase is critical for catching issues before they impact the production environment.

Test TypeObjectiveSuccess Criteria
Inter-Company MatchingVerify that transactions are matched across companiesAll inter-company entries are balanced
Currency ConversionVerify that amounts are converted correctlyAmounts match source system within tolerance
Financial ReportingVerify that reports are accurateReports match source system
Custom Module FunctionalityVerify that custom code works correctlyNo errors or unexpected behavior

Cutover Planning and Rollback Strategy

Cutover is the moment when you switch from the old system to the new one. Plan the cutover carefully to minimize downtime and risk. Define a freeze window where no new transactions are entered in the source system. Perform a final data load to capture any transactions that occurred after the initial migration. Verify that the data is complete and accurate. Define go/no-go criteria based on the results of the testing phase. If any critical issues are found, do not proceed with the cutover. Have a rollback plan in place in case the migration fails. The rollback plan should include steps to restore the old system from a backup and resume operations. Test the rollback plan in the staging environment to ensure it works. Communicate the cutover plan to all stakeholders, including finance, operations, and IT teams.

Post-Migration Validation and Stabilization

After the cutover, perform a post-migration validation to ensure that the new system is working correctly. Reconcile the inter-company transactions and verify that the financial statements are accurate. Monitor the system for any errors or performance issues. Provide support to users who may have questions or issues. Track any defects that are reported and fix them quickly. Continue to monitor the system for a period of time to ensure that it is stable. Document any lessons learned from the migration to improve future projects. The stabilization phase is critical for ensuring that the migration is successful and that the business can continue to operate without disruption.

Key Risks and Mitigation Strategies

  • Data Loss: Mitigate by performing regular backups and testing restore procedures.
  • Broken Customizations: Mitigate by thoroughly testing custom code in a staging environment.
  • Currency Mismatches: Mitigate by validating exchange rates and conversion logic.
  • Integration Failures: Mitigate by testing integrations with external systems.
  • Reporting Discrepancies: Mitigate by reconciling financial statements before and after migration.

Conclusion

Migrating an Odoo multi-company environment is a complex task that requires careful planning and execution. By focusing on inter-company transaction integrity and currency consistency, you can ensure that the new system accurately reflects the financial reality of your business. Use a phased approach, rigorous testing, and a well-defined rollback plan to minimize risk. Verify all compatibility and support details against the official Odoo documentation for your specific source and target versions. With the right strategy, you can successfully migrate your Odoo environment and improve the efficiency and accuracy of your financial operations.

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.

01How do I ensure inter-company transactions remain balanced during an Odoo migration?

Perform a detailed reconciliation of all inter-company journal entries before and after migration. Verify that the debit and credit amounts match across companies for each transaction. Use automated scripts to check for unmatched entries and investigate any discrepancies.

02What are the common currency-related errors in Odoo multi-company setups?

Common errors include incorrect exchange rates, missing rate history, and mismatches in currency conversion logic. These can lead to discrepancies in financial statements. Validate the exchange rate tables and test the conversion logic in a staging environment.

03Should I migrate historical inter-company data or start fresh?

It is generally recommended to migrate historical data to maintain continuity in financial reporting. However, if the data is very old or no longer relevant, you may choose to start fresh. Consult with your finance team to determine the appropriate retention period.

04How does Odoo handle exchange rates during a version upgrade?

Odoo stores exchange rates in a specific table. During an upgrade, these rates are migrated to the new database. You must verify that the rates are correctly transferred and that the conversion logic works as expected. Check the official documentation for any changes in how rates are handled.

05What testing is required for multi-currency Odoo migrations?

You need to test currency conversion, revaluation entries, and financial reporting. Create sample transactions in different currencies and verify that the amounts match the source system. Run financial reports and compare them to the source system.

06Can custom modules break inter-company logic during an upgrade?

Yes, custom modules that modify inter-company transaction logic or currency handling are high-risk. You must review and update all custom code to work with the new Odoo version. Test the custom code thoroughly in a staging environment.

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