Odoo 19.0 is packed with fantastic updates for everyone. In this post, we'll first explore the exciting new and improved features for day-to-day users of Odoo (a powerful ERP/suite of integrated business apps). Then, for our technically-minded friends, we'll dive under the hood to look at the powerful features and changes from a developer perspective.
This isn't an exhaustive list, but rather the things that we're most excited about and most want to highlight.
If it's a breaking or significant change we've tried to highlight it with a ⚡emoji.
For a full breakdown you can check out the official release notes at https://www.odoo.com/odoo-19-release-notes.
For your team: Changes that'll affect your day-to-day
A touch of brilliance with AI
Odoo might be a little late to the party, but with good reason: they've been in the kitchen and boy have they been cooking.
Odoo 19.0 features a raft of new AI features:
- AI driven fields: Allow an AI to automatically fill in new custom fields. Classic example: automatically populating a field with the Industry or some other categorisation. We're looking forward to trying to do some LLM powered sentiment analysis to help detect the mood of customers!
- Search using AI: Write a query in your natural language and AI transforms it into an Odoo filter and then runs it.
- Agents: Chat with AI agents that can learn from your documents and perform actions specific to your business. This can make your own internal documentation way more accessible! They can also be connected to Odoo's Livechat!
- Automated actions, now features AI support: Use an AI prompt in an automated action. For example automatically tagging a helpdesk ticket!
- Voice transcription: Transcribe meetings or dictate text in real-time and get a written summary.
- Email template: Insert an AI prompt in email templates and when sending individual or multiple emails at once
If you're on-premises or Odoo.sh it's a case of bringing your own OpenAI and/or Google Gemini accounts and keys. For Odoo Online it's currently inclusive and Free of Charge for now. We fully expect Odoo SA to start monetising this through their IAP eventually. However we've not had official word on thi.
We did play with the AI features in the 18.3 release (you can't run the "point releases" on Odoo.sh or on-premises) and even did a livestream where we had first impressions on this. At the time it wasn't ready. Our take is that this is very much the first major production version, and it's a great starting point to build on in future versions.
Our main concerns are the same as automated actions and Studio - we're worried about users building complex configurations that are untest-able and travel with the database. That said, we're extremely excited to have AI support internally - it allows us to remove some custom modules that integrate with OpenAI.
Communication (SMS, Mail / Chatter, Followers, etc.)
- External contacts (think: Customers) are no longer added as followers. Instead, the recipients of previous messages are suggested as recipients of future messages, making it much more like using an email client.
This one is huge and we don't think it can be understated how confusing some customers find the follower system, so this is a really big improvement in our view. - Native Twilio support is now available and has been backported to 17.0. This is actually a module we've provided to our customers since version 12.0, so it's great to see this natively.
- Activities have a raft of usability updates. Activities are often overlooked by customers, so we're hopeful that this will help expose this powerful feature. The issue we've always had is the separation between calendar and activities.
Accounting
- ⚡The Bank Reconciliation interface has been revamped and simplified. Again.
Until we really start using it ourselves, we're not going to pass much more comment, but it does feel like a meme at this point. - Bank Statement OCR: Once a statement has been processed through the OCR, you can now manually correct the Starting Balance and Ending Balance of the statement by clicking on the fields and then on the appropriate number in the PDF.
- ⚡ Fiscal Positions have been completely reworked. We expect a serious amount of confusion on this one:
- Tax mappings in fiscal positions have been removed. Instead, each tax declares in which fiscal position it is applicable (empty means all) and declares which taxes from other fiscal positions it replaces (e.g., a 0% export tax declares it replaces national sales taxes in the context of the Export fiscal position). Taxes are by default filtered on invoices based on the fiscal position, and on products based on the Domestic fiscal position (the first in the list).
- Fiscal positions are now always determined based on their sequence, with filters applied for applicability. Multiple localizations have been simplified to a single Domestic fiscal position.
- A new tax return feature has been introduced, supporting fiscal return obligations and deadlines and automated validation checks to ensure accurate filings. We believe that this will help out with the rather bare bones HMRC VAT submission processes and should help make things easier for users.
- ⚡ The + and - signs have been removed from tax tags on tax reports; inversions are now handled directly on the report lines. Tax tags only really affect you when you setup a new tax, but mis-configuring a tax tag is a seriously common foot-gun, and we're not sure that this makes things easier.
- You can now exclude specific moves from follow-ups. Excluded invoices are ignored in both the computation and the report sent.
- The ability to set a fixed exchange rate against an invoice. Again, this is something we implemented for several customers back in 16.0, so it's great to see this natively supported.
Sales
- Combo products get further refinements, making your life with them just a little bit easier.
- Sections or subsections of quotations can now be set as optional, with portal users able to select quantities for those lines directly in the portal.
- Hide prices of lines in sections to reveal only the total, or hide all the lines of a section to reveal only the total in the report and portal.
This is great, because we were previously asked to customise this for a customer. It's always great to remove something for standard! - A button has been added to print and mark a quotation as sent without sending it by email! Finally!
Stock / Inventory / Manufacturing
- ⚡ Automated / Real-time stock valuation has significantly changed.
We cannot understate this: this one is big. Not only that, it landed very late before the release of 19.0 and we've seen a lot of noise from other partners about the behavioral changes. If you're using stock valuation on Odoo 19.0 we strongly advise you are fully aware of the implications of an upgrade.
We'll do a dedicated post on the implications here in the coming weeks. - Sale order lines can now have multiple routes! This is very cool.
- ⚡ Units of Measure and Product Packagings have been merged into one simplified model. UoM categories have been removed.
Again this is a big one. It's a positive change in our minds, but if you're using UoMs in anger, you really want to be on top of this one before an upgrade. - Product routes are set automatically when possible (i.e., Buy route for purchase products and Manufacture route for products with bills of materials).
- Shopfloor has got some love in this release and we think it's a bit more usable than it was.
Planning
Planning gets a series of basic improvements. Our take is that this is still an odd app - it doesn't do enough for a lot of our B2B customers, who expect it to be a complex project planning tool - honestly, we think it needs to be renamed!
Project
- Gantt view gets Critical Path support. We're really interested to see this in action.
- More granular task priorities.
- There's a raft of template project improvements, but frankly we've kind of forgotten what we've customised in this for ourselves vs standard at this point.
Contacts
- Blocking messages for contacts have been removed. Only warning messages are supported and now appear at the top of the screen instead of as popups.
- ⚡ The mobile field has been removed!
The developer's corner: Under the hood of Odoo 19.0
Here's our (current) most interesting technical bits that we caught during the OXP. We know there's a lot more, but we're still going through the backlog of video footage from OXP, so we'll try to keep adding to this.
- Odoo's base Python version is now 3.10.
-
odoo
is now a namespace package. This is great. It means that a whole bunch of hacks and workarounds have been removed, it improves start up time and allows standard tooling to work better with odoo. We're hopeful that this means we'll see pep518 and pep660 support. Supposedly this is coming, which would be amazing. - There's been improvements to the registry and now 45% less time is spent in setting up models in registry. That's massive for installs and upgrades!
- Model constraints and indexes can now be defined through models.Index, models.UniqueIndex and models.Constraint. This is great because it means that we can start removing direct SQL queries to create complex indexes, and it aligns these critical entries with how fields are defined.
- Configuration options can now be passed through ENV vars. We need to check this one out, especially for complex configurations. But this has significant ramifications for our planned Kubernetes Odoo Operator.
- There's a new progress api for crons to split up a single cron into multiple transactions easily and quickly, preventing a single cron from backing up the cron worker.
- During the talk on database replicas (seriously, if you're not already using this from Odoo 18.0 and you have a busy install, check this out!) the speak stated (paraphrasing) "if you need multi-master you are out of the scale of odoo". Now obviously you can throw hardware at PostgreSQL, but it's reassuring to hear those words so clearly.
- PublicWidgets on website are being replaced with "interactions". These seem to be Owl-ish things for the frontend. There is a really interesting talk about how they looked at using Owl, and why they didn't.
- The AI module has a LLM request/response/routing system. If you're looking to do some serious customisations, or add support for alternative LLM's, then you'll want to go digging into this. There's a really detailed talk from one of the engineers who worked on this.
- Odoo’s ORM gains 2 new operators:
any!
andnot any!
to help simplify complex query logic and support use cases like AI-driven automation and compliance reporting. But it's not available for users of the backend/api. -
procurement.group
is gone, and replaced withstock.reference
. There's a lot to dig into here. Do not just assume it's a name change. - A new
mrp.production.group
model was introduced to organise Manufacturing Orders into parent-child structures. - There's a new tz field on
env
, indicating the user timezone - Both the
/xmlrpc
and/jsonrpc
endpoints are deprecated. The more rest-ish/json/2
endpoint (landed in 18.4) is the replacement. If you're integrating using the deprecated endpoints then you're in for a fair amount of work. Our take: always stand up a custom API endpoint to insulate yourself from changes in the Odoo models (i.e. field renaming, or even removal). - The stock valuation changes are absolutely huge. And we're advising anyone who has complex installations using inventory valuation to hold fire for a few months.
- There looks to be push on standardising field names: A number of significant fields renamed to align with convention, for example
product_uom
toproduct_uom_id
, andtax_id
, etc. - We're extremely excited to see the work on the Odoo Language Server - https://github.com/odoo/odoo-ls
- We're also even-more-extremely excited to see the talk on paper-muncher (https://github.com/odoo/paper-muncher) - the replacement to the long dead wkhtmltopdf that Odoo still uses!
Conclusion
Our take so far is that Odoo 19.0 from the outside appears to be a rather unassuming upgrade for a lot of the pre-existing modules. However, when you dig deeper there's a lot more going on. I don't think we should under-estimate the effort that upgrading to 19.0 will take.
And yet, the allure of AI integration is going to cause a rush of users wanting to get their installations of Odoo upgraded to 19.0 as fast as possible.
Whether you're excited to use these new features or build on top of them, our team is ready to help you get the most out of Odoo 19. Get in touch to discuss how we can upgrade and enhance your system