Inventory before moving
List the edition, current version, installed applications, custom modules, integrations, database size and filestore. Record which functions are truly used instead of assuming that every installed module must be carried forward.
Decide module by module
Classify each component as native in Odoo 20, replaceable, portable, removable or blocking. A source branch is not proof of compatibility: installation, permissions and the complete user journey must pass on the target image.
Rehearse on a protected copy
Restore a recent database and filestore in an isolated environment. Repeat the technical upgrade, data corrections and module installation until the procedure is reproducible. Keep production untouched during these rehearsals.
Reconcile business data
Compare customers, open orders, invoices, payments, stock quantities, attachments and scheduled actions. Agree the expected totals and exceptions with the people responsible for each process.
Control the cutover
Define the freeze window, backup, rollback decision, acceptance tests and owners. Production is ready only after recovery has been tested and the observed results are signed off.