Made to fit,
built to upgrade
We build Odoo modules shaped to how your business works, connect Odoo to your other systems, and write every change to add to the standard rather than replace it, so each new version is an upgrade, not a rebuild.
Thanks, we’ll be in touch soon.
{{ heroStatus }}
You’re in good company
A few of the companies we’ve worked with.
When a change replaces what it should add to
Many Odoo databases, your company’s Odoo with all its records and settings, have grown over the years with modules, packages of code that add to Odoo’s apps, written by several developers or installed from the Odoo Apps store.
Some add to Odoo’s standard apps the way Odoo’s developer documentation describes. Others replace standard steps, copy Odoo’s own code, or change it directly.
Each of those can need rewriting for every new version. In many databases that work is why upgrades get put off, while the version in use moves toward the end of its support.
What we build
The parts of Odoo we build and look after, each written to add to the standard, kept in source control and tried on a copy of your database before it reaches the one your teams use.
Modules shaped to how you work
New models, fields, forms and views in modules of your own, extending Odoo’s apps by inheritance as its developer documentation describes. Written in Python on Odoo’s ORM, its layer for reading and writing records, with tests, and kept in source control.
Studio and automation where they fit
Odoo Studio, automation rules and scheduled actions for changes that fit them, where your plan includes them, with a module instead wherever a change needs code, tests or review.
Quotations, invoices and delivery slips
Documents laid out the way your business needs, built on Odoo’s report templates, written in QWeb, its template language, so each one carries the details your customers and teams look for.
Integrations through the JSON-2 API
Each integration with its own API key, running as its own Odoo user with only the access it needs. Every call runs on its own, so a step that has to happen together, such as reserving stock and taking a payment, becomes one method on Odoo’s side, called once.
Older integrations moved to JSON-2
Integrations that still use XML-RPC or JSON-RPC, the endpoints Odoo has deprecated, moved one at a time to the JSON-2 API, starting with the ones the business relies on.
Upgrades to each new version
Modules ported to the target version and tried on an upgraded test database first, as Odoo’s upgrade documentation sets out, and each module from the Odoo Apps store checked for a version of its own.
Where Odoo runs
Odoo Online, Odoo.sh or your own servers, and moves between them, with what each option allows checked before anything moves. On your own servers, hosting and care follow our Cloud, DevOps & Security work.
Moves onto Odoo
Customers, products, open orders and balances from spreadsheets and older systems, matched to their places in Odoo and checked on a copy first, then brought in with Odoo’s own import tools.
AI where it helps
Odoo’s own MCP server, documented for Odoo 20, lets assistants that use the Model Context Protocol work with your database, each request under a user’s own identity and permissions. We set it up for the jobs you agree, and build agents of your own where they fit.
- Connecting any of your systems:Systems & API Integration
- Automation across your tools:Workflow Automation
- Care once it’s live:Support & Maintenance
- Developers in your own team:Hire developers for Odoo
Add to the standard, never replace it
In Odoo, a change lives in a module of its own, which extends Odoo’s standard apps rather than editing them: it adds fields to their records, changes their forms through inheritance, and adds to what their buttons do.
When a module changes what a button does, it can call Odoo’s own method and then add its step, so the standard steps still run. Or it can replace the method, so they stop running, and the fixes each new version makes to them stop reaching you.
Copying Odoo’s own code into a module, or editing Odoo’s code directly, usually leaves the same work to redo at every upgrade.
So each change is written to add to the standard, kept in its own module, and tried on a copy of the database before each new version.
Add to Confirm, or replace it
Adds to Confirm: Odoo’s own steps run first, then ours. Each new version’s fixes to them still reach you.
Replaces Confirm: only our step runs. Odoo’s own steps, and each new version’s fixes to them, no longer run.
A change that adds to the standard keeps Odoo’s own steps, and their fixes, running.
{{ exStatus }}
A new version every year
Odoo’s own table shows a new major version each year, the latest, Odoo 20, released in September 2026. Each major version gets three years of standard support, with bug fixes and security updates: Odoo plans it until September 2027 for 18.0, September 2028 for 19.0 and September 2029 for 20.0.
After that, extended support costs an additional fee and is available only on Odoo.sh, for a limited number of versions, and on your own servers, for any version. It brings bug fixes where they’re technically feasible, while security updates come only during standard support. On your own servers, a database past standard support keeps running. The versions Odoo Online moves to every two to three months aren’t eligible for extended support.
A database can be upgraded to any major version still in standard support, or to one that left it less than six months ago.
Odoo’s older XML-RPC and JSON-RPC endpoints are deprecated, with the JSON-2 API as their replacement. Their database service was removed in Odoo 20, and Odoo’s documentation schedules the rest for removal in Odoo 22 (fall 2028) and Online 21.1 (winter 2027).
So modules and integrations are kept ready a version ahead, and each upgrade is tried on a copy of your database first.
Start with a test upgrade
The review covers your version and hosting, and where each stands on Odoo’s support table; your modules, Odoo’s own, the Odoo Apps store’s and your own: what each changes, whether it adds to the standard or replaces it, and whether it has a version for the target release; your Studio changes, automation rules and scheduled actions; each integration: what it reads and writes, which endpoint it uses, XML-RPC, JSON-RPC or the JSON-2 API, its API key and the access of the user it runs as; your users’ access groups and which records each can reach, for people and for integrations; your reports and documents; and which features need which plan or edition, as Odoo sets them out.
The first step is a test upgrade: a copy of your database moved to the target version, its modules ported, and the steps the business relies on run through it, as Odoo’s upgrade documentation sets out.
You get a written review and a proposal for the first step.
Questions worth asking
Our version is near the end of its support. What are our options?
Odoo gives each major version three years of standard support, with bug fixes and security updates. After that, extended support is available for an additional fee, on Odoo.sh for a limited number of versions and on your own servers for any version, with bug fixes where they’re technically feasible but no security updates. A database can be upgraded to any major version still in standard support, or to one that left it less than six months ago, so we plan the move with that window in view.
Why is our upgrade harder than a standard one?
Odoo’s upgrade service upgrades the database itself, but a database with custom modules can’t be upgraded until each of them has a version for the target release, and Odoo’s documentation points to the service agreement for who is responsible for that work. Modules that replace Odoo’s own steps, or copy its code, usually take longer to port than ones that add to it.
Our integrations use XML-RPC. Will they stop working?
Odoo has deprecated XML-RPC and JSON-RPC, with the JSON-2 API as the replacement. Their database service was removed in Odoo 20 and Online 19.1, and Odoo’s documentation schedules the rest for removal in Odoo 22 (fall 2028) and Online 21.1 (winter 2027). We check what each integration calls, then move them one at a time, starting with the ones the business relies on.
Odoo Online, Odoo.sh or our own servers?
It depends on what the business needs. Each option works differently, from how upgrades are scheduled to which support is available, as Odoo’s documentation sets out, so we weigh them against your modules, integrations and plan before recommending one.
Should this be done in Studio or as a module?
It depends on the change. Odoo Studio suits changes it can make on its own, such as a field or a simple automation rule, where your plan includes it. A module suits changes that need code, version control or tests. Many databases use both.
Community or Enterprise?
Odoo comes as Odoo Community and Odoo Enterprise, and the two differ in the apps and features they include, as Odoo sets out. Which suits you depends on the apps your teams use and where Odoo runs, so we check both before anything changes.
Can you fix or replace modules we installed from the Apps store?
Yes. Each one is checked for a version for the target release and for its license. Then it’s kept, replaced by a module of your own, or replaced by a standard feature where a newer version of Odoo covers the need.
Can you connect Odoo to our store, bank or other systems?
Yes, through the JSON-2 API, each integration with its own API key and its own user. Each call runs on its own, so steps that belong together run as one call. We start with the records each side needs and who owns them, then build and try one connection with real records before the next.
Can AI assistants work with our Odoo data?
Yes. Odoo’s documentation for Odoo 20 describes an MCP server for assistants that use the Model Context Protocol: each request signs in with an API key or OAuth and works under that user’s identity and permissions. You choose which server actions an assistant can use, and can revoke a client’s access. We set it up for the jobs you agree, with each person’s access kept to what the job needs.
Can you move us onto Odoo from our current system?
Yes. We start by matching your records to where they belong in Odoo, from customers and products to open orders and balances, and try the import on a copy of the database. Only once it checks out do the records go into the database your teams use, through Odoo’s own import tools.
Can you build our quotations, invoices and other documents?
Yes. Each is laid out on Odoo’s report templates, written in QWeb, Odoo’s template language, with the details your customers and teams need, and kept in a module so it carries over to the next version.
Do we need a different Odoo plan for this?
Sometimes. Odoo’s documentation, for example, makes access to data through its external API part of its Custom plans only. Before you buy anything, we list what the work relies on and which plan or edition each part needs.
Can you take over our existing database?
Yes. The review shows what each module, automation and integration does, who owns it and how changes reach production. From there we keep what works, rewrite what replaces the standard, and look after the rest.
How do you keep our data secure?
Each job gets an access group with only the rights it needs, limited to the records that job needs to see. Each integration and AI client works as a user of its own, with its own API key, and people sign in with two-factor authentication where it’s needed. Code we add is reviewed before release.
What does it cost?
It depends on the work: the modules, integrations and documents involved, whether a version upgrade is part of it, and whether each part is new, moved or rewritten. Before any work starts, you get a written proposal with the scope, the price or rate, and how you pay.
Can we hire Odoo developers for our own team?
Yes. Developers who know Odoo can join your team, introduced within 48 hours of your request and working in your time zone. Tell us about your database and the work ahead, and you decide who joins once you’ve met them.
Odoo is a trademark of Odoo S.A. Webair is independent of Odoo S.A., and isn’t sponsored by, endorsed by or affiliated with it.
Let’s build it better
Tell us which version you’re on, how Odoo is hosted, and which modules and integrations it relies on. One short call is enough to plan a first step.
Thanks, we’ll be in touch soon.
{{ ctaStatus }}