How to Perform Effective Post-Migration Testing in Odoo 19
By Braincuber Team
Published on May 14, 2026
Migration to Odoo 19 is not over after the database migration completes. The migration process needs to be validated thoroughly to ensure that business processes, information, customizations, and integrations all work as expected in the new environment. Validation after migration allows detection of potential problems before implementing the system into production. This step by step guide is a complete tutorial for performing effective post-migration testing in Odoo 19. Whether you are moving from Odoo 17, Odoo 18, or a third-party ERP, this beginner guide covers every testing phase from environment verification through user acceptance testing to the final go-live decision. Following these procedures systematically will help your team catch issues early, reduce downtime, and ensure a smooth transition to Odoo 19.
What You'll Learn:
- How to verify the Odoo 19 environment for startup errors and module compatibility
- How to audit migrated data integrity across all critical business records
- How to test end-to-end functional workflows for sales, purchase, inventory, accounting, HR, and CRM
- How to validate automated actions, scheduled tasks, and email templates
- How to test custom and third-party modules for compatibility and integrity
- How to verify user access, security roles, and permissions after migration
- How to validate reports, integrations, performance, and run user acceptance testing
- How to use the go-live checklist to confirm readiness before production deployment
Why Post-Migration Testing Matters
Even when the migration itself completes without errors, there can be underlying issues with migrated data, business workflows, custom modules, scheduled actions, reports, and external integrations. Without proper testing, these issues will only surface after users begin working in the new system, causing disruption, data loss, and productivity loss.
Missing or Inconsistent Records
Data mapping errors during migration can cause records to be dropped, duplicated, or have incorrect field values. Systematic data integrity testing catches these discrepancies.
Broken Automated Actions
Server actions, automated actions, and scheduled cron jobs may reference models or fields that changed in Odoo 19, causing them to fail silently or produce incorrect results.
Incorrect Accounting Balances
Tax mappings, fiscal year configurations, and journal entry sequences often need manual validation. Errors here can lead to incorrect financial reporting and compliance issues.
Access Control Issues
User roles, access rights, and record rules may not migrate correctly, leaving some users unable to perform their jobs or granting unintended access to sensitive data.
Incompatible Custom Modules
Custom modules built for older Odoo versions may rely on deprecated APIs, changed model structures, or removed features. Each module must be independently tested in Odoo 19.
Report Rendering Problems
QWeb report templates may behave differently in Odoo 19. Custom reports, PDF layouts, and XLSX exports should all be validated against actual production data.
Phase 1: Environment Verification
Before any functional testing begins, verify that the migrated environment itself is stable and running correctly. This foundation check ensures that the Odoo 19 instance boots without critical errors, required modules are installed, custom modules load successfully, database migration scripts completed, third-party integrations are configured, and server logs contain no critical startup errors.
Run the following command to verify installed modules and check for startup issues:
./odoo-bin -d your_database --stop-after-init
Review the command output for any module failures, missing dependencies, or deprecation warnings. The --stop-after-init flag ensures Odoo loads all modules, runs any pending migration scripts, and then exits cleanly without starting the server. Any errors in this phase must be resolved before proceeding to deeper testing.
Phase 2: Data Integrity Testing
Data integrity testing validates that all critical business data has been migrated correctly from the source system to Odoo 19. This includes record counts, field values, computed fields, and archived records. The table below outlines the key modules and what to check in each area.
| Module | What to Check |
|---|---|
| Contacts | Customer and vendor records, addresses, tags, and payment terms |
| Sales | Open quotations, confirmed orders, and invoiced amounts |
| Purchase | Open RFQs, purchase orders, and received quantities |
| Inventory | Stock quantities per location, lot/serial numbers, and inventory valuations |
| Accounting | Journal entries, outstanding invoices, and bank statements |
| HR | Employee records, contracts, and leave balances |
| Projects | Active projects, tasks, and timesheets |
For each area, compare record counts between old and new databases, verify totals for accounting reports, spot-check critical records manually, validate computed fields and balances, and confirm that archived records are preserved. Discrepancies found during this phase should be documented and resolved before functional testing begins.
Phase 3: Functional Testing
Functional testing exercises every critical business workflow from start to finish in the Odoo 19 environment. Each cycle should mirror how users will interact with the system in production.
Sales Cycle Testing
Create a new quotation, confirm it as a sales order, process the delivery, generate the invoice, and register the payment. Verify that pricelist and tax rules are applied correctly. Test discount and promotional pricing logic to ensure they calculate as expected. Validate that the sales order status transitions correctly through each stage.
Purchase Cycle Testing
Create a Request for Quotation, confirm it as a purchase order, receive the goods, process the vendor bill, and register payment. Check landed costs if used in your operations. Validate three-way matching between the purchase order, receipt, and vendor bill to ensure quantities and amounts align properly.
Inventory and Warehouse Testing
Perform an inventory adjustment and verify the resulting journal entries are correct. Test inventory cost methods including FIFO, FEFO, and average cost. Run a replenishment and confirm that reorder rules trigger correctly. Validate multi-warehouse and multi-location setups, including inter-warehouse transfers and putaway rules.
Accounting and Finance Testing
Open and post a journal entry manually to verify the accounting engine is working. Reconcile a bank statement against outstanding transactions. Generate a Trial Balance, Profit and Loss statement, and Balance Sheet, then compare totals against the pre-migration reports. Check the fiscal year configuration and tax mapping to ensure all tax rules are applied correctly.
Human Resources Testing
Run a payroll calculation for at least one employee to verify salary rules, contributions, and deductions work correctly. Validate leave allocations and balances match the source system. Check attendance integrations if applicable to your setup.
CRM Testing
Move a lead through all pipeline stages from new lead to won opportunity. Test the email gateway for both inbound and outbound communication. Verify scheduled activities and automated actions trigger correctly based on pipeline stage changes.
Phase 4: Automated Actions and Scheduled Tasks
Automations that ran correctly in the previous Odoo version may behave differently after migration due to model changes, field renames, or API updates. Each automated action and scheduled task must be tested individually.
Navigate to Automated Actions
Go to Settings > Technical > Automation > Automated Actions. Review the complete list of active rules. Each rule must reference valid models and fields that exist in Odoo 19.
Trigger Scheduled Actions Manually
Navigate to Settings > Technical > Automation > Scheduled Actions. Manually trigger critical cron jobs such as invoice aging, stock forecasting, and automated email reminders. Check the execution results and logs for any errors or warnings.
Validate Email Templates
Open each email template linked to automated actions and scheduled tasks. Confirm that all placeholders render correctly with actual data and no broken field references exist. Send a test email to verify formatting and delivery.
Phase 5: Custom Module Testing
All custom and third-party modules must be tested separately in the Odoo 19 environment. Even modules that install without errors may have functional regressions due to underlying framework changes.
Clean Installation
Verify each module installs in the migrated Odoo 19 environment without dependency errors or traceback logs. Address any missing dependencies before proceeding.
Feature Walkthrough
Conduct a full end-to-end audit of all added or modified functionalities to ensure business logic remains intact and produces correct outcomes.
UI/UX and Data Audit
Manually inspect all custom views, wizards, and reports. Validate that computed fields trigger and display correctly with the migrated data.
Method Integrity
Ensure overridden core methods maintain their intended behavior and do not conflict with Odoo 19 updated base code. Pay special attention to methods affected by ORM API changes.
ORM API Compatibility Priority
Update custom module code to accommodate Odoo 19 ORM changes, specifically addressing deprecated methods and adopting new field types. Review and refactor JavaScript components to align with OWL 3 standards and lifecycle changes. Re-validate access control lists and record rules to ensure security definitions function correctly in the new version.
Phase 6: User Access and Security Testing
User roles and permissions must be validated after migration to ensure that every user type has the correct level of access. Test with internal users, managers, administrators, portal users, and multi-company access configurations. For each user profile, verify menu visibility, record rules, access rights, restricted records, and portal document access. A mismatch in access rights can either block productivity or expose sensitive data to unauthorized users.
Phase 7: Reports and Print Templates
Reports commonly break after migration due to QWeb template changes between Odoo versions. Every report that your business relies on must be regenerated and visually inspected in the Odoo 19 environment.
| Report Type | Validation Checklist |
|---|---|
| Sales Order PDF | Validate totals, company branding, missing fields, and page layout |
| Invoice PDF | Verify tax breakdown, payment terms, and translated content |
| Purchase Order PDF | Check line items, quantities, unit prices, and company logo alignment |
| Delivery Slip | Confirm product descriptions, packaging fields, and barcode rendering |
| Payslips | Verify salary rule descriptions, net pay calculation, and deduction details |
| Custom QWeb / XLSX Reports | Test formatting, data completeness, font rendering, and export functionality |
Phase 8: Integrations and External APIs
All integrations that connect Odoo 19 to external systems must be validated independently. Test payment acquirers by running a test transaction in sandbox mode. Generate a test shipping label or rate quote from your shipping provider. Place a test order through your eCommerce or website channel end-to-end. Sync a transaction with your accounting integration and verify the mapping is correct. For custom REST or RPC APIs, call each endpoint and verify the response structure matches expected formats.
Phase 9: Performance Testing
Migration can introduce performance regressions due to changes in database structure, indexing, or computed field dependencies. Load the most-used list views such as Sales Orders, Invoices, and Stock Moves, then measure load time. Run the most common searches with filters and group-bys that your users rely on daily. Execute a large batch operation such as mass invoice validation and note the duration. Monitor database query times using Odoo built-in profiler or by running with the --log-level=debug flag. If a view or operation is significantly slower than before, investigate indexes, computed field dependencies, or inefficient domain filters that may need optimization.
Phase 10: User Acceptance Testing (UAT)
Business users from each department must validate their daily operational workflows before the system goes live. UAT is the final gate before production deployment and requires active participation from real users.
Identify Power Users
Select power users from each department including Sales, Finance, Warehouse, and HR. These users know their workflows intimately and can spot issues that technical testers might miss.
Provide UAT Scripts
Give each user a UAT script covering their key daily tasks. Include specific scenarios such as creating a sales order with discounts, processing a return, or running month-end reports.
Collect and Resolve Feedback
Collect feedback on bugs, UI changes, and missing features. Resolve all critical and major issues before going live. Obtain sign-off from department leads as formal approval.
Go-Live Checklist
Before deploying to production, confirm that every item in the checklist below has been completed and verified. This checklist serves as your final readiness gate.
| Checklist Item | Status |
|---|---|
| Critical issues resolved | All P0 and P1 bugs from testing phases are fixed |
| Data validation completed | Record counts, totals, and spot-checks confirmed across all modules |
| Functional workflows tested | Sales, purchase, inventory, accounting, HR, and CRM cycles validated |
| Custom modules approved | All custom and third-party modules tested and signed off |
| Scheduled actions verified | Automated actions, cron jobs, and email templates validated |
| Reports validated | All PDF, QWeb, and XLSX reports generate correctly |
| Integrations tested | Payment, shipping, eCommerce, accounting, and API integrations confirmed |
| User access confirmed | All user roles and permissions tested across departments |
| Performance acceptable | List views, searches, and batch operations meet performance baselines |
| UAT completed | Power users signed off on all department workflows |
| Final backup created | Full database and filestore backup stored securely |
| Rollback plan documented | Step-by-step rollback procedure available and reviewed by the team |
Frequently Asked Questions
Why is post-migration testing necessary in Odoo 19?
Post-migration testing ensures that data, workflows, reports, customizations, and integrations continue functioning correctly after upgrading to Odoo 19. Even a technically successful migration can introduce subtle issues that only surface during active use.
What should be tested first after an Odoo migration?
Start with environment verification to confirm the Odoo 19 instance starts cleanly with no module errors. Then validate master data including customers, vendors, and products. Next, verify accounting integrity by comparing financial reports, and finally test complete business cycles for sales, purchasing, and inventory.
How do I validate accounting accuracy after migration to Odoo 19?
Compare the Trial Balance, General Ledger, and Accounts Receivable and Payable aging reports between the old and new databases. Verify exact matching of amounts and confirm there are no missing entries, duplicate transactions, or unresolved reconciliations. Small discrepancies can signal larger problems.
What common issues occur after an Odoo 19 migration?
Common issues include custom modules that no longer work due to API changes, missing or wrongly mapped fields, broken automated workflows, permission and access control problems, and report rendering errors caused by QWeb template differences between versions.
Should testing be performed on a staging environment before go-live?
Yes. All post-migration testing should be performed on a staging environment that mirrors the production setup as closely as possible. This includes the same modules, customizations, integrations, and a copy of the migrated data. Never test directly on the production database.
Need Help with Odoo 19 Migration Testing?
Our Odoo experts can help you plan and execute comprehensive post-migration testing, validate data integrity, test custom modules, verify integrations, and ensure a smooth go-live for your Odoo 19 migration project.
