Menu

Custom Odoo module: extending the ERP without breaking it

3 min read

Definition

A custom Odoo module is a Python extension that adds behaviour the standard ERP does not cover. Built well, it relies on inheritance rather than core modification, which lets it survive version upgrades.

Why develop a module

Odoo covers the common trunk of businesses. As soon as a process is genuinely yours, two paths open: bend your way of working to what the standard offers, or extend the standard so it speaks your language.

The first path is free and often the right one. It becomes the wrong one when it makes you lose what makes you better than your competitors. That precise moment is when a custom module is justified, and not before.

Inheritance over modification

This is the rule that separates a module that lasts from one that breaks on the first update.

Odoo is built to be extended. A well-written module declares what it adds, inherits from existing models and grafts its behaviour on top, without ever touching the original code. The day the publisher releases a new version, the core changes and your extension keeps working, because it rewrote nothing.

Conversely, a module that directly modifies core files produces an identical result in the short term and a steep bill in the medium term: every upgrade means redoing the work, and nobody knows any more what was touched.

What a module can do

  • Add fields and screens: track business data the standard ignores, and show it where the team looks for it.
  • Automate a rule: a discount calculation specific to your sector, a multi-step approval, an alert on a deadline.
  • Connect an outside system: a business platform, a production machine, a shipping service, an e-invoicing tool.
  • Produce documents: a delivery note in your format, a report a customer requires in a precise layout.
  • Adapt a flow: insert a control step, or remove one that serves no purpose in your company.

What a module should not do

A custom module becomes a problem when it stops being an extension and turns into a whole application lodged inside Odoo. The symptom is clear: the module has its own screens, its own tables, its own logic, and barely uses the ERP any more.

At that point the tool works against you. You inherit Odoo's constraints without enjoying its benefits, and you pay licences for users who never touch accounting. A separate business platform, connected to Odoo through an API, costs less and ages better.

How we work

At KERN-IT, Python has been our technical foundation for over ten years, which makes Odoo development natural ground. Our method has four points: scope the need before writing code, check that no community module already covers it, develop through inheritance, and ship with tests that will make the next upgrade possible.

We are happy to decline building a module when configuration is enough. It is the best service to offer: every line written is a line to maintain.

The real cost

A module is priced at development but paid for over time. The true cost includes writing, tests, documentation for whoever picks up the work, and rework at every major upgrade.

That is why a tight scope beats a module trying to cover everything. A module that does one thing well can be maintained. One that does fifteen ends up abandoned, and the company stays stuck on an old Odoo version because nobody dares migrate.

Pro tip

Before commissioning a module, search the Odoo marketplace and the OCA. Many common needs are already covered there by free modules maintained by the community.

Frequently asked questions

Yes, Odoo is designed to be extended in Python, and that is the normal way to cover a need the standard ignores. The rule that makes the difference is to work through inheritance, grafting behaviour on top of existing models rather than modifying the original code.

Because it modified standard code directly instead of inheriting from it: when the publisher releases a new version that code changes and the module no longer follows. A module written through inheritance crosses upgrades with measurable effort.

When it stops being an extension and becomes a whole application lodged inside Odoo, with its own screens and logic. At that point a separate business platform connected through an API costs less and ages better.

At KERN-IT

We build custom Odoo modules in Python, from Brussels.

Odoo Agency in Brussels

Got a project in mind?

Let's talk about how we can help you turn your ideas into reality.