Trusted Clients
Where Odoo 12 Leaves You in 2026
Odoo 12 was released in October 2018 and its standard support ended in 2021. It gets no bug fixes or security patches, and most current third-party apps and connectors are built for recent versions only.
Odoo 20, released in September 2026, is supported until September 2029 (planned). Eight releases sit between the two, and several of them change how invoices, views, and security work.
Eight Releases Between Odoo 12 and Odoo 20
Your data passes through each of these releases on the way to Odoo 20. Here is what each one changes for custom modules, in order. We check every item against your database during the audit.
Get My Free Upgrade Audit-
October 2019
Odoo 13: Invoices Become Journal Entries
account.invoiceis merged intoaccount.move, so custom invoice code and reports need rework.- The
@api.multiand@api.onedecorators are removed, and every method now works on multiple records. sudo(user)becomeswith_user(user), andtrack_visibilitybecomestracking=True.
-
October 2020
Odoo 14: Actions and Multi-Company Code Change
- The
act_windowandreportshortcut tags are removed, so actions and reports must be full XML records. - The
force_companycontext is replaced bywith_company()for multi-company code. - Fields that extend a selection need an
ondeletemapping, and transient models need access rights.
- The
-
October 2021
Odoo 15: Assets Move Into the Module Manifest
- JavaScript and SCSS assets are declared in the manifest instead of XML templates.
- QWeb
t-rawis replaced byt-outacross views, reports, and website templates. - Mail templates move from Jinja to QWeb and a new inline placeholder syntax, so custom email templates need rewriting.
-
October 2022
Odoo 16: Analytic Accounting Is Rebuilt
- Analytic accounting moves to analytic plans and distributions, which changes how cost tracking data is stored.
- Reports, QWeb templates, and website pages move from Bootstrap 4 to Bootstrap 5.
fields_view_getis replaced byget_view, and the old flush and cache methods are replaced by granular ones.
-
November 2023
Odoo 17: attrs and states Leave the Views
- Every conditional field rule written with
attrsorstatesbecomes a Python expression. name_getis replaced by_compute_display_name, which affects how custom records show their names.- Install and uninstall hooks now receive
env, and settings screens use newapp,block, andsettingtags.
- Every conditional field rule written with
-
October 2024
Odoo 18: Tree Views Become List Views
- Tree views are renamed list views, including the
tree_view_refcontext key. user_has_groups,check_access_rights, andcheck_access_rulegive way tohas_groupandcheck_access.- Chatter and kanban markup change, with a single chatter tag and card templates for kanban views.
- Tree views are renamed list views, including the
-
September 2025
Odoo 19: New Constraints and Security Groups
- SQL constraints move from
_sql_constraintstomodels.Constraintandmodels.Indexattributes. groups_idbecomesgroup_ids, and group categories become privileges.read_groupis replaced by_read_grouporformatted_read_group, and JSON routes usetype="jsonrpc".
- SQL constraints move from
-
September 2026
Odoo 20: Record Rules Give Way to Access Domains
- Record rules are removed, and access is set with a domain on each access right, so custom security must be rebuilt.
- The Field Service app is discontinued and its features move into Planning.
- Stored mail tracking values are removed and tracking messages are built on the fly, so custom reports on tracking data need rework.
The OCA migration guides for Odoo 13 to 19, the Odoo 20 release notes, and Odoo's supported versions page.
How We Move Odoo 12 to Odoo 20
Five steps, each with a clear output, so you always know where the project stands.
Get My Free Upgrade AuditAudit
We list your apps, custom modules, third-party apps, and integrations on Odoo 12, then mark each one to upgrade, rebuild, or remove. You get a written scope and a fixed quote.
Test Upgrade
A copy of your database is upgraded through Odoo 13 to 20 while production keeps running. Every error is logged and fixed.
Port Custom Modules
Each module is rewritten for the Odoo 20 framework, including the invoice, view, and security changes from the releases in between.
Reconcile and Test
We compare trial balance, receivables and payables, stock valuation, and open documents with Odoo 12. Your key users then test their daily work on staging.
Rehearse and Go Live
A timed dry run sets the cutover window. Go-live happens off-hours, with a rollback plan and our team on hand afterwards.
Upgrade Odoo 12, or Rebuild on Odoo 20?
With eight releases to cross, it is worth asking whether every custom module should come along. Either way you get one go-live, and the audit tells you which route costs less for each module.
Upgrading usually wins when
- Most of your work runs on standard Odoo apps.
- Custom modules are few and well documented.
- Your historical data is clean and you need all of it in the new system.
- Integrations use Odoo's standard APIs.
Rebuilding selected apps usually wins when
- Custom modules rewrite core flows such as invoicing, stock, or security.
- Standard Odoo 20 now covers much of what your custom code does.
- Data quality is poor, so a clean start with master data and open balances is easier.
- The original developers are gone and the code is undocumented.
On Odoo Enterprise
Odoo's upgrade service converts the standard apps and data of your database. Modules built in-house or by third parties are not covered unless they are under a maintenance of customizations subscription, so they still need porting and testing.
On Odoo Community
The OCA's open-source OpenUpgrade project migrates one version at a time, so Odoo 12 to 20 means eight consecutive runs. Coverage differs by app and release, so we check each one before planning.
Other Paths to Odoo 20
On a newer version? Each path shows its own route, hop count, and complexity.
Odoo 19 to Odoo 20
1 hop- 19
- 20
- Complexity: Low
- Odoo 19: still supported
Odoo 18 to Odoo 20
2 hops- 18
- 19
- 20
- Complexity: Medium
- Odoo 18: still supported
Odoo 17 to Odoo 20
3 hops- 17
- 18
- 19
- 20
- Complexity: High
- Odoo 17: standard support ended
Odoo 16 to Odoo 20
4 hops- 16
- 17
- 18
- 19
- 20
- Complexity: High
- Odoo 16: standard support ended
Odoo 15 to Odoo 20
5 hops- 15
- 16
- 17
- 18
- 19
- 20
- Complexity: Very high
- Odoo 15: standard support ended
Odoo 14 to Odoo 20
6 hops- 14
- 15
- 16
- 17
- 18
- 19
- 20
- Complexity: Very high
- Odoo 14: standard support ended
Odoo 13 to Odoo 20
7 hops- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- Complexity: Very high
- Odoo 13: standard support ended
Odoo Projects We Have Delivered
How our team handled Odoo projects where a failed change would have stopped daily operations.
View All Case StudiesOdoo + WhatsApp Automation with n8n Streamlined Furniture Retail Operations in Mauritius
See how Techvoot integrated Odoo ERP and n8n to automate delivery scheduling, driver assignment, proof of delivery and customer support for a Mauritius furniture retailer.
How Odoo ERP Transformed Operations for our UAE-Based Client's Oxy-Hydrogen Equipment Company
A UAE-based oxy-hydrogen equipment company partnered with Techvoot Solutions to implement a customized Odoo ERP platform that unified manufacturing, inventory, procurement, sales, and finance operations. The solution improved operational visibility, streamlined workflows, and enabled faster business decision-making through centralized ERP management.
Manufacturing Efficiency Boosted by 35% with Odoo ERP
A manufacturing company achieved 35% improved operational efficiency with Techvoot’s Odoo ERP implementation, enabling integrated production, inventory, finance, HR, and logistics management on a single platform.
Odoo 12 to Odoo 20 Upgrade Questions
Still unsure about your database?
Can I upgrade Odoo 12 directly to Odoo 20?
Yes, in one project with one go-live. The database still passes through every release in between, Odoo 13 to 19, and each custom module has to absorb the framework changes from all eight releases. We run the whole route on a copy first, so production only moves once.
Is Odoo 12 still supported?
No. Odoo 12 was released in October 2018 and its standard support ended in 2021, so it gets no bug fixes or security updates. Odoo 20 is supported until September 2029 (planned).
How long does an Odoo 12 to Odoo 20 upgrade take?
It depends mostly on how many custom modules and integrations you have, and how much data you hold. With eight releases to cross, custom code is the biggest part of the work. The free audit gives you a written timeline before any work starts.
What breaks most often when upgrading from Odoo 12 to Odoo 20?
Custom code, not standard data. The biggest changes on this path are invoices becoming journal entries in Odoo 13, analytic plans in Odoo 16, the removal of attrs and states from views in Odoo 17, and record rules being replaced by domains on access rights in Odoo 20.
Should we upgrade Odoo 12 or reimplement on Odoo 20?
Upgrading usually wins when you run mostly standard apps with a few well-documented modules. Rebuilding selected apps usually wins when custom modules rewrite core flows, when Odoo 20 now covers what the custom code did, or when data quality is poor. The audit scores each module and recommends upgrade, rebuild, or remove.
Will we keep our historical data?
Yes. An upgrade keeps your full history, including posted invoices, stock moves, and old documents. If some apps are rebuilt instead, we migrate master data and open balances, and the old database stays available read-only for reference.
Can we upgrade Odoo 12 Community to Odoo 20?
Yes. On Community, the open-source OpenUpgrade project migrates one version at a time, so this path means eight consecutive runs. Coverage differs by app and release, so we check each one before planning, and port or rebuild where scripts are missing.