Skip to Content

ERP engineering for systems a business already runs on

Everything below is something we've shipped into a production Odoo system, and each practice links to the case studies that show it.

Odoo Migration & Upgrades

Version upgrades across Odoo 16, 17, 18 and 19 — the custom modules, the data and the reports, not just the core. And Enterprise to Community migration: we replace the Enterprise-only features a business actually uses with Community and OCA modules or custom development, so the licence stops being a line item and the work carries on. Either way the migration is rehearsed on a copy of the live database first, the data is verified against the old system, and the cut-over happens only once that comparison is clean.

Version upgrades Enterprise → Community Custom module porting

Self-service portals

A no-login attendance kiosk where employees identify with their Iqama and employee ID, check in or out and request corrections — and a portal to request, return or report a fault on company assets.

Kiosk check-in Geolocation Employee self-service
Stack

What we ship with

The tools behind the case studies on this site.

Odoo 16 Odoo 17 & 18 Odoo 19 Python PostgreSQL OWL QWeb reports XlsxWriter ZKTeco · PyZK WhatsApp Graph API Twilio Groq · OpenAI-compatible APIs ZATCA UBL 2.1 Central Bank of the UAE rates PDF.js Gridstack Passlib Azure DevOps
Questions

The things people ask us first

Which Odoo versions do you work on?

16, 17, 18 and 19. Our deepest production experience is 17 and 18: MAFA and its sister companies run on Odoo 17 and the aviation and charter platform runs on Odoo 18, both live client platforms we maintain. We have extensive Odoo 16 experience as well, and we work on 19. The conventions differ between versions, and we keep them apart.

Can you migrate us from Odoo Enterprise to Community?

Yes. We go through the Enterprise-only features your business actually uses and replace each one — with a Community or OCA module where one does the job, and with custom development where none does. The point is that the business keeps working without the Enterprise licence, so the work is scoped from what you use rather than from the feature list.

Can you upgrade our Odoo version without losing custom modules?

That is the part of an upgrade we spend the most time on. Custom modules, their data and their reports are ported to the new version alongside the core upgrade. We rehearse the whole migration on a copy of the live database, check the migrated data against the old system, and only then cut over — the same way we approach anything running in production.

Can you take over a system that is already live?

That's most of what we do. MAFA's four company databases have been maintained continuously since April 2025 — fixes, new modules and compliance changes shipped into a system the business runs on every day.

Can one codebase serve several companies?

Yes, in two different shapes. MAFA — the root company — and its three sister companies, TechTrade24 KSA, TechTrade24 Germany and Eesint, each run the same Odoo 17 codebase in their own separate database. The aviation group takes the other shape: one Odoo 18 instance running three companies, where a new operating company gets its own document numbering without any setup.

Do you put AI into the ERP?

Where a person can check the output. On the customer-onboarding pipeline a vision model fills a form and an admin approves it — the model never writes to the database directly. The CRM assistant runs only when a user asks, against any OpenAI-compatible provider.

Where do integration credentials live?

In configuration, never in code. Recovery secrets for security features go a step further and live in the server config file, so database access alone can't reset them.

Where is the team?

We're a remote team across Pakistan and Saudi Arabia, working on systems for companies in Saudi Arabia, Germany, Pakistan, the UAE and Bahrain.

Not sure which of these you need?

Describe the symptom. We'll tell you which of these it is — and whether we've fixed a version of it before.