Import the accounting history for the QuickBooks migration, with closing entries.
What happened: Imported the history, set up the bank and credit-card journals, and reconstructed the prior year-end trial balance.
Upgrades stall on custom code. The standard modules move forward cleanly; it's the module a partner wrote three versions ago, that nobody has looked at since, that turns a weekend into a quarter.
The first useful thing is an honest inventory: which of your customizations still work on the target version, which need changes, and which have been made redundant because Odoo now does it natively. That last category is usually larger than people expect.
CodeCobra reads your modules against the target version and tells you which is which. Then it does the work — porting what needs porting, deleting what Odoo now covers, testing each piece in a disposable instance of the new version before anything is committed.
Migrations from another system follow the same shape, with reconciliation at the end: the totals in the old system against the totals in the new one, line by line where they differ.
Real production requests, condensed and with anything identifying removed.
Import the accounting history for the QuickBooks migration, with closing entries.
What happened: Imported the history, set up the bank and credit-card journals, and reconstructed the prior year-end trial balance.
Investigate whether these v13 custom modules can be migrated to v19.
What happened: Assessed every module for feasibility, then migrated the ones worth keeping — theme, portal orders, extended product behaviour.
We fixed a lot of import errors on the existing staging database. Now I want to test all the imports from a fresh start.
What happened: Stood up a clean database and proved the import resumes on a date cursor rather than restarting — no duplicate records.
Import the three phone fields we made in Studio from the old v15 database.
What happened: Mapped the Studio fields and imported all three phone types.
16.0, 17.0, 18.0 and 19.0, in Community and Enterprise. It can read a module written for one and tell you what it needs to run on another.
That's the recommended first step. Ask for an assessment of your custom modules against the target version — it's a read-only investigation, it costs little, and it's the input to deciding whether to go at all.
Ask for the reconciliation explicitly: totals in the old system against totals in the new, and a list of every record that differs. Don't accept a migration you can't check.