Migration checklist: Odoo 14, 15, 16, and 17 to Odoo 18
Direct answer: Upgrade one major version at a time on a copy of production, and port every custom module before anyone cuts over.
- Snapshot the database and filestore, and clone every custom repository into a Git account your company owns.
- List installed modules, Studio exports, and connectors for Shopify, BigCommerce, WooCommerce, EDI, and the 3PL.
- Pick Odoo 18 as the go-live target when you are leaving 14, 15, 16, or 17. Do not skip the migration chain. Each major version still has to be applied in order. Odoo 19 can wait until 18 is stable.
- Run the database upgrade on staging. Enterprise standard apps can use Odoo's upgrade service. Community databases usually use OpenUpgrade. Neither step rewrites private modules.
- Audit custom modules on a branch for Odoo 18. Fix views, renamed fields, and removed APIs before users touch the copy. A module that is not ported is the module you lose.
- Rehearse orders, receiving, manufacturing, invoicing, and each integration. Retail EDI often needs a fresh certification after the move.
- Cut over in a window you have already timed, then keep the same team for hypercare. The annual upgrade is included in The ERP Firm monthly fee, versus about $15,000 when it is sold alone.
What makes a legacy Odoo upgrade lose custom modules?
Direct answer: The database service migrates standard apps. It does not rewrite private modules, Studio exports, or a Shopify connector pinned to Odoo 15 or 16.
- Upgrading production because staging was never given the custom code.
- Assuming a hosting upgrade also rewrites private modules.
- Jumping from 14 to 19 in one untested weekend.
- Forgetting that Shopify, BigCommerce, WooCommerce, or warehouse connectors are pinned to an old Odoo series.
- Leaving the only rollback as a hope instead of a tested backup.
Custom module audit before you move to Odoo 18
Direct answer: Inventory every custom module, renamed field, and connector before the upgrade. Keep the port in a Git branch your company owns.
Odoo 14 and 15 databases are the ones most often stuck, because custom modules were written before later ORM and accounting changes. Odoo 16 changed stock reservation behavior that still shows up on the way to 18. Standard data can migrate. Private modules cannot until they are ported. The audit lists each module, whether it is standard, OCA, Studio, or private, and whether a maintained Odoo 18 branch exists. The ERP Firm tests that port on staging and keeps the code in your repository. Plans are $5,000, $8,500, or $14,000 a month.
What does an Odoo 18 upgrade cost?
Direct answer: Hourly firms often price the custom-module port at $175–$250/hr. Sold alone, one version upgrade is $15,000. On the flat plan it is queued work, and one upgrade a year is included.
| Upgrade path | Best for | What you still pay for | Flat-rate alternative |
| Enterprise upgrade service | Standard apps and Studio | Private modules, Shopify or warehouse connectors, testing, and hypercare | Those leftovers are queued on the monthly plan |
| OpenUpgrade or a partner project | Community, or a heavily forked Odoo 15 or 16 database | Often a five-figure project at $175–$250/hr | Rescue and Run ranks the upgrade blockers and fixes them inside $5,000–$14,000/mo |
| Internal developer | A team that already ships Odoo changes | About $165,000/yr, commonly $155,000–$185,000 loaded, if you hire that person | Use the subscription when the upgrade is a burst, not a permanent seat. Sold alone, the upgrade is $15,000. |
When should an upgrade be a rescue, not a side project?
Direct answer: Treat it as a rescue when production is already on Odoo 15 or 16, custom modules will not update, or a failed upgrade is blocking orders.
If the work involves custom modules, an upgrade, a storefront or warehouse integration, or a production outage, a focused engagement is usually faster than recruiting. See the related service.
See our industry practice
Related Odoo guides
More answers in the Upgrades cluster and nearby topics:
Commercial pages