Home Blog Odoo
Odoo Custom

When to Customise Odoo and When to Change Your Process

A decision framework for Qatari businesses weighing Odoo custom development against a simpler change to how the work is done.

BNF Consulting

BNF Consulting

Business Consulting ยท Zoho & Odoo Partner Qatar

Customise Odoo in Qatar when the requirement is statutory, contractually binding or genuinely differentiating — a WPS salary information file, a bilingual tax invoice, withholding tax tracking, QFC-specific reporting — and change your process when the requirement is only a habit carried over from a legacy system or a spreadsheet. The practical test is a ladder: exhaust standard configuration first, then low-code Studio fields, then a properly built custom module that inherits rather than edits Odoo’s core code, and never patch core. Anything that fails that ladder is almost always cheaper to solve by changing the process than by owning custom code through every future version upgrade.

That sounds like a truism until you price it. Odoo ships a major version roughly once a year, and every line of custom code you own has to be reviewed, re-tested and migrated at each one. In a market the size of Qatar, where the pool of consultants who can read an Odoo module is small and the pool who can also close a set of books is smaller, the maintenance of a customisation often costs more over three years than the build did. The decision is therefore not “can we customise this?” — almost anything can be customised — but “who owns this change in 2029, and what does it cost then?”

The Four Levels of Change, and What Each One Commits You To

Most “customisation” conversations collapse because the word covers four very different things with four very different risk profiles. Sort the request into a level before anyone quotes a day rate.

Level What it actually is Typical use in Qatar Upgrade exposure
0 · Configuration Settings, user groups, chart of accounts, taxes, payment terms, pricelists, standard approval and automation options. The majority of requests, including most multi-branch and multi-currency needs. None. Settings carry forward; only a review of defaults is needed.
1 · Low-code / Studio Fields, views, simple automations and reports added through Odoo Studio or automated actions, without deploying Python. An extra reference field on a sales order, a second approval step, a management report. Low but real. Studio changes live in the database and must be checked, not assumed, at upgrade.
2 · Custom module Your own addon in your own repository that inherits models, views and templates, adds new models, QWeb reports, scheduled jobs or API endpoints. WPS file generation, withholding tax schedules, contract costing, government-portal integrations. Moderate and manageable — if it has tests, documentation and a named owner.
3 · Core modification Editing the files Odoo ships, or patching the database directly with SQL. None that justify it. Severe. Changes are overwritten by the next version and the database may refuse to migrate.

The discipline that follows from the table is simple to state and hard to hold: if a requirement can be met at level 0 or 1, it must be. A partner who jumps straight to a custom module for an approval step is either unfamiliar with the standard options or billing for code. Ask which level a proposal sits at, and why the level below it does not work.

Six Questions That Decide the Answer

Run every requirement through these before scoping. They are ordered deliberately: the first two can force a customisation regardless of cost, and the last four usually argue against one.

  • Is it statutory or contractual? If a Qatari authority, a bank or a client contract requires a specific output — a salary file in the WPS structure, an Arabic-and-English invoice, a withholding tax remittance schedule, a QFC-format report — the process cannot be negotiated away. Build what the rule requires, no more.
  • Does it create an advantage a competitor cannot buy off the shelf? Pricing logic, service-level tracking or a production workflow unique to your operation may be worth owning. “Our invoices look different” is not an advantage; it is a preference.
  • How often does it run, and how many people touch it? A manual workaround performed forty times a day justifies automation. A quarterly memo prepared by one accountant is a procedure, not a module.
  • Does standard Odoo already produce eighty per cent of it? When the gap is the last twenty per cent and the workaround is a spreadsheet export, the spreadsheet is usually cheaper than the module — provided someone owns the export.
  • Can you name who migrates it? If no individual or firm is contractually responsible for the module at the next version, you are not buying software, you are buying a future incident.
  • Is the requirement really a symptom? Duplicate customer records, wrong stock counts and slow month-end are frequently data-quality or training problems that a new field makes worse by adding another place to be wrong.

Where Changing the Process Usually Wins

In Doha implementation work, a recognisable set of requests comes up repeatedly, and in most of them the standard system plus a documented procedure is the better answer.

  • Approval chains copied from paper. A five-step hierarchy that existed to move a folder around an office rarely needs five system steps. Two, with a delegation rule, usually satisfies the control objective and removes days of delay.
  • Parallel ledgers kept “for the GM”. A second spreadsheet set that reconciles to nothing is a control weakness. Standard analytic accounts, cost centres and saved pivot views normally remove the need.
  • Invoice numbering schemes inherited from a legacy system. A new numbering sequence at go-live is a process decision with an accounting policy note, not a code change.
  • CRM stages shaped around one salesperson’s habits. Pipeline stages should reflect how deals actually progress across the team; configuring eleven stages because one person likes them produces bad forecasts.
  • Reports that a pivot view already answers. Insist on seeing the standard report or pivot before a QWeb template is quoted. Roughly, if the request is “the same numbers, grouped differently”, it is a view, not a build.

Where Customisation Earns Its Cost in Qatar

The other side of the ledger is real. Odoo’s Qatar localisation package installs a chart of accounts and basic tax configuration, but it does not know your approval matrix, your bank’s file format or how your group reports to a QFC regulator. These are the areas where custom work is normally justified.

  • WPS salary information file. Wages are paid through the Wage Protection System administered by the Ministry of Labour, which requires a salary file in a prescribed structure submitted through an approved bank or exchange house. Standard Odoo payroll does not emit that file. The work is mapping allowances, deductions, mid-month joiners and end-of-service accruals to the bank’s expected layout, then testing with the bank before the first live payroll.
  • Bilingual documents and right-to-left layout. Customer-facing invoices, delivery notes and statements in Qatar are commonly required in Arabic and English. Odoo supports translated QWeb templates, but fonts, column widths, numbering and the Arabic legal name on the customer record all have to be designed and proofread, not left at default.
  • Withholding tax and corporate income tax reporting. Qatar applies corporate income tax to the foreign-owned share of taxable profits, and withholding tax applies to specified payments abroad. Tracking the ownership share, tagging payments by type and producing a remittance schedule is a reporting design task; confirm what your Odoo version already provides before commissioning anything.
  • QFC entities alongside mainland companies. A Qatar Financial Centre entity and a Ministry of Commerce and Industry company sit under different registries with different reporting expectations. Groups holding both usually need separate reporting structures and a consolidation view that does not merge the two by accident.
  • Project and contract costing for government work. Contracts with retention, milestone billing, variations and cost-to-complete reporting rarely fit a default sales-order model. This is defensible customisation because the commercial terms drive the data model.
  • E-invoicing readiness. Qatar’s Cabinet has approved a draft e-invoicing law and its executive regulations, with technical specifications still to follow from the General Tax Authority. The sensible move now is to keep invoice data structured and exportable — clean tax fields, consistent item codes, stored XML-ready identifiers — rather than to build against a specification that has not been published.

What a Customisation Actually Costs to Own

The build is the smallest part of the number. A defensible cost model has five lines, and a proposal that shows only the first is incomplete.

Cost line What you are buying How to verify it is included
Discovery and specification A written requirement with acceptance criteria and out-of-scope items. Ask for the document as the first deliverable, before code starts.
Build and unit testing The module in a repository you can access, with migration scripts and tests. Repository access in your organisation’s name, not the partner’s.
Acceptance testing Your team running real documents through the change in a staging database. A staging environment and a signed test script per process.
Version migration Review and re-test of the module at each Odoo major version. A stated migration policy, priced per version rather than promised informally.
Documentation and handover A functional description, admin notes and the training your team needs. Documents delivered before final payment, not after.

One practical consequence: prefer a fixed-price discovery followed by change-request-based build over a single fixed price quoted before anyone has seen your data. A firm number produced without discovery is either padded or optimistic, and in this market it is frequently the second.

The Habits That Keep Custom Code Alive

Custom code does not decay because it is custom. It decays because it was written without tests, documented nowhere and deployed straight to production. Four habits prevent most of that.

  • Inherit, never edit. Extend models and views from your own module so Odoo’s files stay untouched and upgrading remains possible.
  • Keep production and staging separate. Test every change and every upgrade on a copy of real data before it reaches the ledger.
  • Write the acceptance test with the requirement. “Invoice shows Arabic and English” is testable; “improve invoicing” is not.
  • Record why, not just what. A one-page note explaining the statutory or commercial reason for each module is what saves the next consultant, or your own team, from deleting something that matters.

Getting a Second Opinion Before You Build

BNF Consulting is an Authorised Zoho Partner and an Official Odoo Partner based in West Bay, Doha, working with companies that are choosing between configuring Odoo properly, changing a process, or commissioning development. Because we run both Zoho and Odoo practices, we will also tell you when Odoo is the wrong tool for the requirement — a smaller Zoho Books or Zoho One deployment is sometimes the honest answer, and the comparison is worth having before a budget is committed.

A typical engagement starts with a short scoping review: we read your current process, map each requirement to one of the four levels above, and give you a written recommendation with the upgrade implications stated. You can see our Odoo services, the Zoho practice and the wider consulting offer, or book a scoping call on +974 7703 0026 or sales@bnf-consulting.com.

Frequently Asked Questions

How much does Odoo customisation cost in Qatar?

There is no honest list price, because the number is driven by scope rather than by hours: how many models are affected, whether statutory files such as WPS are involved, how much data must be migrated and how many versions you will need to support. Ask for a fixed-price discovery first, then a build priced by change request, and compare the three-year total including per-version migration rather than the build cost alone.

Can Odoo be customised without writing code?

Yes, for a meaningful subset of requests. Odoo Studio and automated actions let you add fields, adjust views, create simple approval steps and build basic reports without deploying Python, and standard configuration covers more than most teams expect. Anything involving complex logic, statutory file output, external integrations or high transaction volumes normally needs a proper module, because low-code changes are harder to test and version.

Will customisation break when we upgrade Odoo?

It breaks when core files were edited or the customisation was never documented, and it survives when the module inherits Odoo's models and views from a repository you control. Odoo ships a major version roughly once a year, so any custom code needs a review and re-test at each one. Budget for that migration explicitly, and make sure the contract says who performs it.

Is Odoo Studio included in the Community edition?

No. Studio is an Enterprise feature, so Community users customise through modules and configuration instead. That is not necessarily a disadvantage, since module-based changes are easier to place under version control and to migrate deliberately.

Does Odoo handle Qatar WPS payroll and Arabic invoices out of the box?

Bilingual documents are supported through translated QWeb templates, although fonts, layout and the Arabic legal name on each record still have to be configured and proofread. The WPS salary information file required by the Ministry of Labour is not produced by standard Odoo payroll, so generating a file in your bank's expected structure and validating it before the first live payroll is a normal piece of Qatar-specific work.