Migration to Odoo 19 is not over after the database migration. The migration process needs to be validated after migration to ensure that the business processes, information, customization, and integrations work as expected in the new environment. Validation after migration allows detection of potential problems before implementing the system into production.
Why Post-Migration Testing Matters:
- Even in the case of successful completion of migration, there may be issues associated with the following:
Without proper testing, these issues will manifest only once people start using the new system.
- These post-migration risks include:
- missing or inconsistent records.
- broken automated actions.
- incorrect accounting balances.
- incompatible custom modules.
- report rendering problems.
Phase 1: Environment Verification
Before functional testing begins, verify that the migrated environment is stable.
The Odoo 19 instance is running correctly
- All required modules are installed
- Custom modules load without errors
- Database migration scripts completed successfully
- Third-party integrations are configured
- Server logs contain no critical startup errors
Command to verify installed modules:
./odoo-bin -d your_database --stop-after-init
Review the output for any module failures or deprecation warnings.
Phase 2: Data Integrity Testing
Validate that all critical business data has been migrated correctly.
Records to Audit
| 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, valuations |
| Accounting | Journal entries, outstanding invoices, bank statements |
| HR | Employee records, contracts, leave balances |
| Projects | Active projects, tasks, timesheets |
Testing Approach
- Compare record counts between old and new databases
- Verify totals for accounting reports
- Spot-check critical records manually
- Validate computed fields and balances
- Confirm archived records are preserved
Phase 3: Functional Testing
Test all critical business workflows from start to finish.
Sales Cycle
- Create a new quotation > confirm as sales order > deliver > invoice > register payment.
- Verify pricelist and tax rules are applied correctly
- Test discount and promotional pricing logic
Purchase Cycle
- Create a Request for Quotation > confirm purchase order > receive goods > vendor bill > payment.
- Check landed costs if used
- Validate three-way matching (PO, receipt, bill)
Inventory & Warehouse
- Perform an inventory adjustment and verify journal entries
- Test routes: FIFO, FEFO, average cost
- Run a replenishment and confirm reorder rules trigger correctly
- Validate multi-warehouse and multi-location setups
Accounting & Finance
- Open and post a journal entry manually
- Reconcile a bank statement
- Generate a Trial Balance, Profit & Loss, and Balance Sheet
- Check the fiscal year configuration and tax mapping
Human Resources
- Run a payroll for at least one employee
- Validate leave allocations and balances
- Check attendance integrations if applicable
CRM
- Move a lead through all pipeline stages
- Test email gateway (inbound and outbound)
- Verify scheduled activities and automated actions
Phase 4: Automated Actions & Scheduled Tasks
Automations should be tested individually after migration.
Steps:
- Navigate to Settings > Technical > Automation > Automated Actions.
- Review all active rules — confirm they reference valid models and fields in Odoo 19
- Manually trigger critical crons (e.g., invoice aging, stock forecasting) and check results.
- Confirm email templates are rendering correctly with no broken placeholders.
Phase 5: Custom Module Testing
All custom and third-party modules must be tested separately.
- Clean Installation: Verify the module installs in the migrated environment without dependency errors or traceback logs.
- Feature Walkthrough: Conduct a full end-to-end audit of all added or modified functionalities to ensure business logic remains intact.
- UI/UX & Data Audit: Manually inspect all custom views, wizards, and reports. Validate that computed fields trigger and display correctly.
- Method Integrity: Ensure overridden core methods maintain their intended behavior and do not conflict with the updated base code.
- Constraint Testing: Stress-test Python and SQL constraints against edge cases to prevent data corruption or bypasses.
Technical Priority Areas
- ORM API Compatibility: Update code to accommodate Odoo 19 ORM changes, specifically addressing deprecated methods and adopting new field types.
- Frontend Framework: Review and refactor any JavaScript components to align with OWL 3 standards and lifecycle changes.
- Security & Governance: Re-validate access control lists (ACLs) and record rules to ensure security definitions function correctly in the new version.
Phase 6: User Access & Security Testing
Validate user roles and permissions after migration.
Phase 7: Reports & Print Templates
Reports commonly break after migrations due to QWeb changes.
Test Reports
- Sales Order PDF
- Validate totals, formatting, company branding, missing fields, page layouts, and translations.
Phase 8: Integrations & External APIs
All integrations must be validated independently.
- Payment Acquirers: Run a test transaction in sandbox mode
- Shipping Providers: Generate a test label or rate quote
- eCommerce / Website: Place a test order end-to-end
- Accounting Integrations: Sync a transaction and verify mapping
- Custom REST/RPC APIs: Call each endpoint and verify response structure
Phase 9: Performance Testing
Migration can introduce performance regressions.
- Load the most-used list views (Sales Orders, Invoices, Stock Moves) and measure load time.
- Run the most common searches with filters and group-bys
- Execute a large batch operation (e.g., mass invoice validation) and note the duration
- Monitor database query times using Odoo's built-in profiler or --log-level=debug
If a view or operation is significantly slower than before, investigate indexes, computed field dependencies, or inefficient domain filters.
Phase 10: User Acceptance Testing (UAT)
Business users should validate daily operational workflows before go-live.
UAT Process:
- Identify power users from each department (Sales, Finance, Warehouse, HR)
- Provide them with a UAT script covering their key daily tasks
- Have them perform tasks in the staging environment
- Collect feedback — bugs, UI changes, missing features
- Resolve all critical and major issues before going live
- Obtain sign-off from department leads
Go-Live Checklist
Before production deployment, confirm:
- Critical issues resolved
- Data validation completed
- Functional workflows tested
- Custom modules approved
- Scheduled actions verified
- Reports validated
- Integrations tested
- User access confirmed
- Performance acceptable
- UAT completed
- Final backup created
- Rollback plan documented
To read more about How to Use Upgrade (Migration) Scripts in Odoo 19, refer to our blog How to Use Upgrade (Migration) Scripts in Odoo 19.