Machinery manufacturing · Odoo ERP refactoring
Elumatec: an inherited ERP, refactored until every number can face an audit
Published · Updated
Elumatec builds machinery for aluminium, PVC and steel profiles, sold in 50+ countries. Its UAE division ran on an ERP built by an earlier vendor that had quietly drifted out of step with UAE VAT and with the business itself. KoderXpert audited everything, then rebuilt accounting, inventory, reporting and access until the system could be trusted again.
Designed, built and delivered by KoderXpert Technologies Pvt. Ltd.
Official Odoo Ready Partner · Ahmedabad & Gandhinagar, India
- Client
- Elumatec, UAE division
- Industry
- Machinery for aluminium, PVC & steel profiles
- Platform
- Odoo ERP, refactored
- Implementation partner
- KoderXpert Technologies
- Headline result
- Dubai VAT compliant, audit-ready ERP
01 · Overview
The 30-second version
- Elumatec is a global leader in machinery for processing aluminium, PVC and steel profiles, operating in 50+ countries; its UAE division serves construction, automotive and industrial fabrication across the GCC.
- An earlier vendor's ERP had drifted out of step with UAE VAT requirements: unsynced inventory, no native reports, loose access control, and teams double-checking everything by hand.
- KoderXpert ran an end-to-end audit first, then refactored in four moves: a Dubai VAT-compliant accounting rebuild, an inventory cleanup with real-time sync, native custom reporting, and role-based access, reaching 100% adoption.
02 · Where the inherited ERP broke down
What was going wrong before Odoo?
Five cracks that widened on audit day
Four teams ran four daily workarounds: finance corrected the books by hand, warehouse distrusted its own stock counts, leadership waited days for spreadsheets, and IT guarded a system with no real roles. Plus the crack underneath them all.
UAE VAT gaps
The chart of accounts and tax configuration did not align with UAE VAT requirements, creating real compliance exposure.
The cost → exposure on every filingUnsynchronized inventory
Stock counts in the system rarely matched the shelves, because sales and purchases were not syncing with inventory in real time.
The cost → shelves vs system, always apartNo custom reports
Financial and stock reports leadership needed did not exist natively and had to be rebuilt manually every time.
The cost → a spreadsheet, days laterPoor access controls
Permissions were not scoped by role, leaving data exposed to more people than necessary.
The cost → habit instead of policyLow system trust
Cumulatively, teams stopped trusting the ERP's numbers and started double-checking everything by hand.
The cost → the ERP, plus a shadow ERPA foundation nobody mapped
Built by an earlier vendor, the system's gaps were invisible on a good day and a real risk on an audit day.
The cost → surprises saved for auditors03 · The turnaround
Drag it and see the before & after yourself
Slide the orange handle. Left is the inherited ERP nobody fully trusted, right is the refactored system.
- ✗ Chart of accounts never built for UAE VAT
- ✗ Stock counts rarely matching the shelves
- ✗ Leadership reports rebuilt by hand, days later
- ✗ Access scoped by habit, not by role
- ✗ Every number double-checked manually
the shadow-spreadsheet era 😵
an audit-ready ERP ✨
- ✔ Dubai VAT-compliant setup, multi-currency ready
- ✔ Inventory syncing with every sale & purchase
- ✔ VAT, P&L, balance sheet & aging stock, native
- ✔ Role-based permissions across every function
- ✔ Numbers the whole company stands behind
← drag toward the workarounds · drag toward the trust →
04 · The plan
What "fixed" had to actually mean
The brief in one line: make the ERP something we can stand behind, in front of our team and in front of an auditor. Hover any goal to tick it off.
VAT compliance: rebuild tax configuration and the chart of accounts to UAE standards.
Inventory accuracy: clean existing records and resynchronize stock with sales and purchasing in real time.
Native reporting: give leadership the VAT, financial and stock reports the system never had.
Access control: introduce role-based permissions and tighten data security.
Multi-currency clarity: reflect how the business actually trades across the region.
Restore trust: one database everyone works from, with no shadow spreadsheets.
05 · What we delivered
What did KoderXpert build?
The solution in four moves
Accounting, inventory, reporting, access: refactored on one database, where every account, stock movement, report and permission shares a single record. No exports, no reconciliation.
Accounting refactor
Tax configuration rebuilt to match UAE VAT precisely, a compliant chart of accounts where every transaction lands where an auditor expects it, and accurate multi-currency reporting.
compliance closed at the sourceInventory overhaul
Existing stock data audited and corrected first, then real-time sync so inventory updates automatically against every sales and purchase transaction, with valuation that reflects the shelves.
records the warehouse believesFive native reports
VAT summary ready for filing, real-time P&L, balance sheet, aging stock that flags slow movers before they become write-offs, and warehouse audit reports, all built into the system.
leadership answers in one clickRole-based access
Permissions configured by role across every department and function, replacing habit with policy and closing unnecessary data exposure.
audit-ready accessOne database underneath
Every account, stock movement, report and permission shares a single record, eliminating the exports and manual reconciliation the old setup demanded.
no more parallel truthsAdoption by design
Because the numbers finally held, every team moved back onto the system, and the shadow spreadsheets retired.
100% adoption, 0 workarounds06 · Functional deep dive
How the fixed system actually works
The delivery summary above says what changed. This is the functional detail underneath it: how the accounts are structured, how stock stays true, what each report contains, and who can touch what.
Chart of accounts & UAE VAT architecture
The chart was rebuilt top-down instead of patched: a clean, classed account structure with the UAE tax layer configured the way the Federal Tax Authority expects to read it.
- Structured account classes: assets, liabilities, equity, income and expenses rebuilt with a consistent coding scheme, so every transaction has exactly one correct place to land.
- VAT groups done properly: 5% standard-rated, zero-rated and exempt supply taxes configured separately for sales and purchases, each mapped with tax tags that roll up to the corresponding boxes of the UAE VAT return.
- Fiscal positions: automatic tax mapping per customer and vendor type, so domestic, GCC and export transactions pick the right treatment without the user choosing.
- Multi-currency: AED as base currency with automated rate updates and revaluation, matching how the division actually trades across the region.
Inventory model & real-time sync
The stock problem was solved in two layers: first correct the data, then make it impossible for the data to drift again.
- Cleanup before configuration: physical counts reconciled against system quantities, with every correction posted as a documented inventory adjustment rather than a silent edit.
- Automated valuation: products moved to automated average-cost valuation, with stock journals wired into the new chart of accounts so the warehouse and the balance sheet finally describe the same reality.
- Transaction-driven movements: every sale, delivery, receipt and return updates stock in real time through Odoo's native flows; no side-channel spreadsheets remain.
- Reordering rules: minimum and maximum thresholds on fast-moving items, so replenishment is triggered by the system instead of by someone noticing an empty shelf.
The five reports, specified
Each report leadership asked for was built natively into the system, reading live transaction data rather than a rebuilt spreadsheet.
- VAT summary: output and input tax grouped by tax tag, aligned to the UAE return structure, filterable by period, ready for filing.
- Profit & loss: real-time P&L with period comparison, drillable from any line straight down to the journal items behind it.
- Balance sheet: live financial position from the rebuilt chart, closing the gap between what finance reported and what the system held.
- Aging stock: inventory bucketed by days-in-stock (30 / 60 / 90+), flagging slow movers before they become write-offs.
- Warehouse audit: movement and variance history per location, giving the warehouse team the same defensible trail finance gets.
Roles & the access matrix
Access moved from habit to policy: five role profiles, each seeing exactly what its job requires and nothing more.
- Finance: full accounting and reporting; no rights to alter stock quantities directly.
- Warehouse: inventory operations, transfers and counts; journals and financial reports out of view.
- Sales & purchasing: their own documents and partners, with pricing visibility scoped by role.
- Leadership: read access to every report and dashboard, without accidental edit rights on operational records.
- Administration: configuration and user management, with sensitive changes traceable to a named user.
Invoicing & the money-in flow
With the chart rebuilt, the billing cycle was reconnected to it end to end, so cash and compliance travel together.
- Order-linked invoicing: customer invoices generate from confirmed orders with the correct VAT treatment applied by fiscal position, not by memory.
- Payment reconciliation: incoming payments register against invoices and reconcile with bank statements inside Odoo, keeping receivables live rather than month-end.
- Vendor bill control: supplier bills anchor to purchase orders and receipts, so quantity and price mismatches surface before payment, not after.
- Credit notes & corrections: reversals flow through the same tax tags as the originals, so the VAT return stays consistent even when commerce is messy.
Order-to-cash & procure-to-pay, connected
The refactor's real test is a full business loop crossing every fixed area without a manual patch. Both core loops now run clean.
- Order-to-cash: quotation, confirmation, delivery (stock decremented and revalued automatically), VAT-correct invoice, payment, reconciliation, and the P&L updated the same minute.
- Procure-to-pay: purchase order, goods receipt (stock incremented at cost), vendor bill matched to receipt, payment scheduled, input VAT captured for the return.
- One record, every view: the same transaction is what the warehouse sees as a move, finance sees as journal items, and leadership sees inside a report; there is no translation layer to drift.
How a transaction reaches the return
Every invoice line carries its tax, every tax carries its tags, and every tag rolls up to one box of the UAE VAT return. That is the whole trick: the filing is a report, not a reconstruction, because the mapping happens at posting time, on every single transaction.
07 · How we built it
How was the Odoo project delivered?
Audit first, rebuild second
Nothing changed in the system until the gaps were fully mapped. Six phases from end-to-end audit to documented handover.
System audit & planning map every gap
The existing ERP reviewed end to end to identify every compliance, data and access gap before changing anything.
Accounting redesign rebuild the foundation
Chart of accounts and VAT configuration rebuilt to UAE compliance standards from the ground up.
Inventory cleanup & reimport reset the stock truth
Stock records cleaned and accurate data reimported as the new foundation.
Custom report development build the answers in
The VAT, financial and stock reports leadership needed, developed natively into the system.
Access management & security scope every role
Role-based permissions configured across every department and function.
Training & handover hand over the keys
Every team walked through the new system, with full documentation and support.
08 · Engineering notes
The technical decisions behind the refactor
For the technically curious: how the work was engineered so the fixes survive upgrades, audits and time.
Custom addons, zero core edits
Everything KoderXpert changed lives in namespaced custom modules (kx_account_uae, kx_stock_sync, kx_reports, kx_access) built on Python and the Odoo ORM.
- Inheritance, not modification: models and views are extended through Odoo's inheritance mechanisms, never edited in core, so future Odoo upgrades do not bury the fixes.
- Configuration as data: taxes, fiscal positions, account groups and access rules are shipped as XML data records, making the whole setup reproducible and reviewable.
- PostgreSQL underneath: one database as the single source of truth for accounts, stock, reports and permissions; no exports, no reconciliation jobs.
The data migration pipeline
The riskiest part of any refactor is the data. It moved through a staged pipeline, not a bulk import.
- Extract & cleanse: legacy records exported, deduplicated and normalized in a staging environment before a single record touched production.
- Ordered loading: imports run in dependency order: chart of accounts, partners, products, stock quantities, then open receivables and payables, via the ORM so every business rule still applies.
- Verified balances: opening balances posted as auditable journal entries, with record counts and trial-balance equality checked against the source before sign-off.
How the reports are built
The five reports are native Odoo artifacts, not attachments: they read live data and inherit the access rules automatically.
- QWeb templates render the printable financial statements, so what leadership prints matches what the screen shows.
- Aggregated queries: screen reports read grouped, indexed data rather than row-by-row scans, keeping them fast as transaction volume grows.
- Filters as first-class citizens: period, location and tax-tag filters are part of the report definitions, so "this quarter, this warehouse" is one click, not a new spreadsheet.
Testing, cutover & hardening
The refactor landed on a live business, so the rollout was engineered to be boring.
- Staging mirror: every change proven on a copy of the real database before reaching production.
- Role-based UAT: finance, warehouse and sales each walked scripted scenarios end to end, including a full closing cycle, before go-live.
- Access hardening: record rules and group permissions reviewed department by department, replacing shared logins and habit-based access.
- Documented handover: configuration, roles and report definitions documented so the system's logic belongs to Elumatec, not to anyone's memory.
Data integrity safeguards
Correct once is not enough; the system is engineered to stay correct.
- Constraints at the model layer: ORM and SQL constraints block impossible states (unbalanced entries, negative-cost moves, orphan journal items) at write time.
- Scheduled automations: Odoo cron jobs refresh currency rates and snapshot aging data, so the reports read prepared, consistent figures.
- Automated backups: scheduled database backups with tested restore points, so the audit trail itself is protected.
- Traceability by default: Odoo's chatter and logging record who changed what on sensitive financial and stock records.
Performance & security hardening
A trusted ERP has to be fast and closed as well as correct.
- Query performance: indexes on high-traffic fields and stored computed values keep the five reports responsive as transaction volume grows.
- Least-privilege everywhere: access follows the role matrix down to record rules; shared logins were retired with the shadow spreadsheets.
- Hardened environment: production served over HTTPS behind a reverse proxy, with staging isolated from live data access.
- Change discipline: every module version-controlled in Git; nothing reaches production that did not pass staging first.
The migration, drawn end to end
Legacy records never jump straight into production. They pass through a staging cleanse, load through the ORM in dependency order so every business rule still applies, and nothing is signed off until the trial balance matches the source to the fils.
09 · The impact
What changed after go-live?
The results, in numbers
the part clients screenshot ↓- Dubai VAT-compliant accounting, defensible in an audit
- Inventory that matches the shelves, updated in real time
- VAT summary, P&L, balance sheet, aging stock & warehouse audits, native
- Role-based access replacing habit with policy
- Multi-currency reporting matching how the region trades
- An ERP the whole division trusts and actually uses
10 · Under the hood
Technologies & core skills
"We had serious gaps in our ERP setup that were affecting operations and compliance. KoderXpert brought in the clarity and structure we needed. Their ability to align the ERP system with UAE accounting standards and build real-time reports has made our system reliable and future-ready."
11 · Quick questions, honest answers
Thinking about a similar build?
Yes. Elumatec's system was refactored, not replaced: an end-to-end audit mapped every gap first, then accounting, inventory, reporting and access were rebuilt on the same live database. The business never stopped operating, and no disruptive re-implementation or data cutover was needed.
A structured review of the chart of accounts and tax configuration, stock data accuracy and valuation methods, existing customizations, report coverage, user roles and access rights, and data quality. The output is a prioritized gap list, so the rebuild starts with the risks that compound fastest.
The chart of accounts and tax configuration are rebuilt to Federal Tax Authority requirements: 5% standard-rated, zero-rated and exempt taxes set up separately for sales and purchases, tax tags mapped to the boxes of the UAE VAT return, and fiscal positions applying the correct treatment for domestic, GCC and export transactions automatically.
Yes. Because every transaction carries the right tax tags, a VAT summary groups output and input tax exactly along the structure of the UAE return, filterable by period and generated from live data, ready to support the filing.
Usually because sales and purchase transactions were never wired to update stock in real time, or historical records were imported badly. The fix is a two-step: reconcile physical counts and post documented adjustments, then enable automated, transaction-driven stock moves and valuation so the drift cannot restart.
Yes. Elumatec runs AED as base currency with automated exchange-rate updates and revaluation, so invoices, bills and reports in foreign currencies stay accurate without manual conversion work.
Practically any report that live transaction data can answer. For Elumatec, five were built natively: an FTA-aligned VAT summary, a real-time P&L with drill-down, a balance sheet, an aging stock report with 30/60/90+ day buckets, and a warehouse audit trail of movements and variances.
Users are assigned to groups that control menus, records and fields. Elumatec runs five role profiles (finance, warehouse, sales and purchasing, leadership, administration), enforced with record rules so each team sees exactly what its job requires and sensitive changes are traceable to a named user.
It is the riskiest part, which is why it runs as a staged pipeline: extract and cleanse in a staging environment, load in dependency order through the Odoo ORM so business rules still apply, then verify record counts and trial-balance equality against the source before anything is signed off.
Yes, by design. All changes live in namespaced custom addons that extend Odoo through inheritance; the core is never edited. Configuration ships as data records, so the whole setup is reproducible, reviewable and upgrade-safe.
It depends on the depth of the gaps, which is exactly why the audit comes first: it fixes the scope before any rebuild starts. Elumatec ran six phases, from system audit and accounting redesign through inventory cleanup, report development, access management and a documented handover.
KoderXpert is an Odoo partner that audits before it rebuilds, engineers upgrade-safe custom modules with zero core edits, and delivers compliance at the source rather than patches on top. Elumatec's outcome: five compliance gaps closed and 100% system adoption. Talk to KoderXpert about an ERP health check.
Running on an ERP you do not fully trust?
Tell us where the numbers stop adding up: VAT, inventory, reports or access. KoderXpert will audit first and rebuild second, until the system can stand behind itself.
Related case studies
- Newmatic Kitchens: Multi-company Odoo ERP implementationMulti-company, multi-currency ERP across four countries
- Clair de Lune: Odoo ERP support and accounting optimisationSupport pack that stabilised a drifting ERP
- Starling Group: Odoo HR and expense implementationUAE labor law compliant leave and expense approvals
Machinery manufacturing · Odoo ERP refactoring
Elumatec: an inherited ERP, refactored until every number can face an audit
Published · Updated
Elumatec builds machinery for aluminium, PVC and steel profiles, sold in 50+ countries. Its UAE division ran on an ERP built by an earlier vendor that had quietly drifted out of step with UAE VAT and with the business itself. KoderXpert audited everything, then rebuilt accounting, inventory, reporting and access until the system could be trusted again.
Designed, built and delivered by KoderXpert Technologies Pvt. Ltd.
Official Odoo Ready Partner · Ahmedabad & Gandhinagar, India
- Client
- Elumatec, UAE division
- Industry
- Machinery for aluminium, PVC & steel profiles
- Platform
- Odoo ERP, refactored
- Implementation partner
- KoderXpert Technologies
- Headline result
- Dubai VAT compliant, audit-ready ERP
01 · Overview
The 30-second version
- Elumatec is a global leader in machinery for processing aluminium, PVC and steel profiles, operating in 50+ countries; its UAE division serves construction, automotive and industrial fabrication across the GCC.
- An earlier vendor's ERP had drifted out of step with UAE VAT requirements: unsynced inventory, no native reports, loose access control, and teams double-checking everything by hand.
- KoderXpert ran an end-to-end audit first, then refactored in four moves: a Dubai VAT-compliant accounting rebuild, an inventory cleanup with real-time sync, native custom reporting, and role-based access, reaching 100% adoption.
02 · Where the inherited ERP broke down
What was going wrong before Odoo?
Five cracks that widened on audit day
Four teams ran four daily workarounds: finance corrected the books by hand, warehouse distrusted its own stock counts, leadership waited days for spreadsheets, and IT guarded a system with no real roles. Plus the crack underneath them all.
UAE VAT gaps
The chart of accounts and tax configuration did not align with UAE VAT requirements, creating real compliance exposure.
The cost → exposure on every filingUnsynchronized inventory
Stock counts in the system rarely matched the shelves, because sales and purchases were not syncing with inventory in real time.
The cost → shelves vs system, always apartNo custom reports
Financial and stock reports leadership needed did not exist natively and had to be rebuilt manually every time.
The cost → a spreadsheet, days laterPoor access controls
Permissions were not scoped by role, leaving data exposed to more people than necessary.
The cost → habit instead of policyLow system trust
Cumulatively, teams stopped trusting the ERP's numbers and started double-checking everything by hand.
The cost → the ERP, plus a shadow ERPA foundation nobody mapped
Built by an earlier vendor, the system's gaps were invisible on a good day and a real risk on an audit day.
The cost → surprises saved for auditors03 · The turnaround
Drag it and see the before & after yourself
Slide the orange handle. Left is the inherited ERP nobody fully trusted, right is the refactored system.
- ✗ Chart of accounts never built for UAE VAT
- ✗ Stock counts rarely matching the shelves
- ✗ Leadership reports rebuilt by hand, days later
- ✗ Access scoped by habit, not by role
- ✗ Every number double-checked manually
the shadow-spreadsheet era 😵
an audit-ready ERP ✨
- ✔ Dubai VAT-compliant setup, multi-currency ready
- ✔ Inventory syncing with every sale & purchase
- ✔ VAT, P&L, balance sheet & aging stock, native
- ✔ Role-based permissions across every function
- ✔ Numbers the whole company stands behind
← drag toward the workarounds · drag toward the trust →
04 · The plan
What "fixed" had to actually mean
The brief in one line: make the ERP something we can stand behind, in front of our team and in front of an auditor. Hover any goal to tick it off.
VAT compliance: rebuild tax configuration and the chart of accounts to UAE standards.
Inventory accuracy: clean existing records and resynchronize stock with sales and purchasing in real time.
Native reporting: give leadership the VAT, financial and stock reports the system never had.
Access control: introduce role-based permissions and tighten data security.
Multi-currency clarity: reflect how the business actually trades across the region.
Restore trust: one database everyone works from, with no shadow spreadsheets.
05 · What we delivered
What did KoderXpert build?
The solution in four moves
Accounting, inventory, reporting, access: refactored on one database, where every account, stock movement, report and permission shares a single record. No exports, no reconciliation.
Accounting refactor
Tax configuration rebuilt to match UAE VAT precisely, a compliant chart of accounts where every transaction lands where an auditor expects it, and accurate multi-currency reporting.
compliance closed at the sourceInventory overhaul
Existing stock data audited and corrected first, then real-time sync so inventory updates automatically against every sales and purchase transaction, with valuation that reflects the shelves.
records the warehouse believesFive native reports
VAT summary ready for filing, real-time P&L, balance sheet, aging stock that flags slow movers before they become write-offs, and warehouse audit reports, all built into the system.
leadership answers in one clickRole-based access
Permissions configured by role across every department and function, replacing habit with policy and closing unnecessary data exposure.
audit-ready accessOne database underneath
Every account, stock movement, report and permission shares a single record, eliminating the exports and manual reconciliation the old setup demanded.
no more parallel truthsAdoption by design
Because the numbers finally held, every team moved back onto the system, and the shadow spreadsheets retired.
100% adoption, 0 workarounds06 · Functional deep dive
How the fixed system actually works
The delivery summary above says what changed. This is the functional detail underneath it: how the accounts are structured, how stock stays true, what each report contains, and who can touch what.
Chart of accounts & UAE VAT architecture
The chart was rebuilt top-down instead of patched: a clean, classed account structure with the UAE tax layer configured the way the Federal Tax Authority expects to read it.
- Structured account classes: assets, liabilities, equity, income and expenses rebuilt with a consistent coding scheme, so every transaction has exactly one correct place to land.
- VAT groups done properly: 5% standard-rated, zero-rated and exempt supply taxes configured separately for sales and purchases, each mapped with tax tags that roll up to the corresponding boxes of the UAE VAT return.
- Fiscal positions: automatic tax mapping per customer and vendor type, so domestic, GCC and export transactions pick the right treatment without the user choosing.
- Multi-currency: AED as base currency with automated rate updates and revaluation, matching how the division actually trades across the region.
Inventory model & real-time sync
The stock problem was solved in two layers: first correct the data, then make it impossible for the data to drift again.
- Cleanup before configuration: physical counts reconciled against system quantities, with every correction posted as a documented inventory adjustment rather than a silent edit.
- Automated valuation: products moved to automated average-cost valuation, with stock journals wired into the new chart of accounts so the warehouse and the balance sheet finally describe the same reality.
- Transaction-driven movements: every sale, delivery, receipt and return updates stock in real time through Odoo's native flows; no side-channel spreadsheets remain.
- Reordering rules: minimum and maximum thresholds on fast-moving items, so replenishment is triggered by the system instead of by someone noticing an empty shelf.
The five reports, specified
Each report leadership asked for was built natively into the system, reading live transaction data rather than a rebuilt spreadsheet.
- VAT summary: output and input tax grouped by tax tag, aligned to the UAE return structure, filterable by period, ready for filing.
- Profit & loss: real-time P&L with period comparison, drillable from any line straight down to the journal items behind it.
- Balance sheet: live financial position from the rebuilt chart, closing the gap between what finance reported and what the system held.
- Aging stock: inventory bucketed by days-in-stock (30 / 60 / 90+), flagging slow movers before they become write-offs.
- Warehouse audit: movement and variance history per location, giving the warehouse team the same defensible trail finance gets.
Roles & the access matrix
Access moved from habit to policy: five role profiles, each seeing exactly what its job requires and nothing more.
- Finance: full accounting and reporting; no rights to alter stock quantities directly.
- Warehouse: inventory operations, transfers and counts; journals and financial reports out of view.
- Sales & purchasing: their own documents and partners, with pricing visibility scoped by role.
- Leadership: read access to every report and dashboard, without accidental edit rights on operational records.
- Administration: configuration and user management, with sensitive changes traceable to a named user.
Invoicing & the money-in flow
With the chart rebuilt, the billing cycle was reconnected to it end to end, so cash and compliance travel together.
- Order-linked invoicing: customer invoices generate from confirmed orders with the correct VAT treatment applied by fiscal position, not by memory.
- Payment reconciliation: incoming payments register against invoices and reconcile with bank statements inside Odoo, keeping receivables live rather than month-end.
- Vendor bill control: supplier bills anchor to purchase orders and receipts, so quantity and price mismatches surface before payment, not after.
- Credit notes & corrections: reversals flow through the same tax tags as the originals, so the VAT return stays consistent even when commerce is messy.
Order-to-cash & procure-to-pay, connected
The refactor's real test is a full business loop crossing every fixed area without a manual patch. Both core loops now run clean.
- Order-to-cash: quotation, confirmation, delivery (stock decremented and revalued automatically), VAT-correct invoice, payment, reconciliation, and the P&L updated the same minute.
- Procure-to-pay: purchase order, goods receipt (stock incremented at cost), vendor bill matched to receipt, payment scheduled, input VAT captured for the return.
- One record, every view: the same transaction is what the warehouse sees as a move, finance sees as journal items, and leadership sees inside a report; there is no translation layer to drift.
How a transaction reaches the return
Every invoice line carries its tax, every tax carries its tags, and every tag rolls up to one box of the UAE VAT return. That is the whole trick: the filing is a report, not a reconstruction, because the mapping happens at posting time, on every single transaction.
07 · How we built it
How was the Odoo project delivered?
Audit first, rebuild second
Nothing changed in the system until the gaps were fully mapped. Six phases from end-to-end audit to documented handover.
System audit & planning map every gap
The existing ERP reviewed end to end to identify every compliance, data and access gap before changing anything.
Accounting redesign rebuild the foundation
Chart of accounts and VAT configuration rebuilt to UAE compliance standards from the ground up.
Inventory cleanup & reimport reset the stock truth
Stock records cleaned and accurate data reimported as the new foundation.
Custom report development build the answers in
The VAT, financial and stock reports leadership needed, developed natively into the system.
Access management & security scope every role
Role-based permissions configured across every department and function.
Training & handover hand over the keys
Every team walked through the new system, with full documentation and support.
08 · Engineering notes
The technical decisions behind the refactor
For the technically curious: how the work was engineered so the fixes survive upgrades, audits and time.
Custom addons, zero core edits
Everything KoderXpert changed lives in namespaced custom modules (kx_account_uae, kx_stock_sync, kx_reports, kx_access) built on Python and the Odoo ORM.
- Inheritance, not modification: models and views are extended through Odoo's inheritance mechanisms, never edited in core, so future Odoo upgrades do not bury the fixes.
- Configuration as data: taxes, fiscal positions, account groups and access rules are shipped as XML data records, making the whole setup reproducible and reviewable.
- PostgreSQL underneath: one database as the single source of truth for accounts, stock, reports and permissions; no exports, no reconciliation jobs.
The data migration pipeline
The riskiest part of any refactor is the data. It moved through a staged pipeline, not a bulk import.
- Extract & cleanse: legacy records exported, deduplicated and normalized in a staging environment before a single record touched production.
- Ordered loading: imports run in dependency order: chart of accounts, partners, products, stock quantities, then open receivables and payables, via the ORM so every business rule still applies.
- Verified balances: opening balances posted as auditable journal entries, with record counts and trial-balance equality checked against the source before sign-off.
How the reports are built
The five reports are native Odoo artifacts, not attachments: they read live data and inherit the access rules automatically.
- QWeb templates render the printable financial statements, so what leadership prints matches what the screen shows.
- Aggregated queries: screen reports read grouped, indexed data rather than row-by-row scans, keeping them fast as transaction volume grows.
- Filters as first-class citizens: period, location and tax-tag filters are part of the report definitions, so "this quarter, this warehouse" is one click, not a new spreadsheet.
Testing, cutover & hardening
The refactor landed on a live business, so the rollout was engineered to be boring.
- Staging mirror: every change proven on a copy of the real database before reaching production.
- Role-based UAT: finance, warehouse and sales each walked scripted scenarios end to end, including a full closing cycle, before go-live.
- Access hardening: record rules and group permissions reviewed department by department, replacing shared logins and habit-based access.
- Documented handover: configuration, roles and report definitions documented so the system's logic belongs to Elumatec, not to anyone's memory.
Data integrity safeguards
Correct once is not enough; the system is engineered to stay correct.
- Constraints at the model layer: ORM and SQL constraints block impossible states (unbalanced entries, negative-cost moves, orphan journal items) at write time.
- Scheduled automations: Odoo cron jobs refresh currency rates and snapshot aging data, so the reports read prepared, consistent figures.
- Automated backups: scheduled database backups with tested restore points, so the audit trail itself is protected.
- Traceability by default: Odoo's chatter and logging record who changed what on sensitive financial and stock records.
Performance & security hardening
A trusted ERP has to be fast and closed as well as correct.
- Query performance: indexes on high-traffic fields and stored computed values keep the five reports responsive as transaction volume grows.
- Least-privilege everywhere: access follows the role matrix down to record rules; shared logins were retired with the shadow spreadsheets.
- Hardened environment: production served over HTTPS behind a reverse proxy, with staging isolated from live data access.
- Change discipline: every module version-controlled in Git; nothing reaches production that did not pass staging first.
The migration, drawn end to end
Legacy records never jump straight into production. They pass through a staging cleanse, load through the ORM in dependency order so every business rule still applies, and nothing is signed off until the trial balance matches the source to the fils.
09 · The impact
What changed after go-live?
The results, in numbers
the part clients screenshot ↓- Dubai VAT-compliant accounting, defensible in an audit
- Inventory that matches the shelves, updated in real time
- VAT summary, P&L, balance sheet, aging stock & warehouse audits, native
- Role-based access replacing habit with policy
- Multi-currency reporting matching how the region trades
- An ERP the whole division trusts and actually uses
10 · Under the hood
Technologies & core skills
"We had serious gaps in our ERP setup that were affecting operations and compliance. KoderXpert brought in the clarity and structure we needed. Their ability to align the ERP system with UAE accounting standards and build real-time reports has made our system reliable and future-ready."
11 · Quick questions, honest answers
Thinking about a similar build?
Yes. Elumatec's system was refactored, not replaced: an end-to-end audit mapped every gap first, then accounting, inventory, reporting and access were rebuilt on the same live database. The business never stopped operating, and no disruptive re-implementation or data cutover was needed.
A structured review of the chart of accounts and tax configuration, stock data accuracy and valuation methods, existing customizations, report coverage, user roles and access rights, and data quality. The output is a prioritized gap list, so the rebuild starts with the risks that compound fastest.
The chart of accounts and tax configuration are rebuilt to Federal Tax Authority requirements: 5% standard-rated, zero-rated and exempt taxes set up separately for sales and purchases, tax tags mapped to the boxes of the UAE VAT return, and fiscal positions applying the correct treatment for domestic, GCC and export transactions automatically.
Yes. Because every transaction carries the right tax tags, a VAT summary groups output and input tax exactly along the structure of the UAE return, filterable by period and generated from live data, ready to support the filing.
Usually because sales and purchase transactions were never wired to update stock in real time, or historical records were imported badly. The fix is a two-step: reconcile physical counts and post documented adjustments, then enable automated, transaction-driven stock moves and valuation so the drift cannot restart.
Yes. Elumatec runs AED as base currency with automated exchange-rate updates and revaluation, so invoices, bills and reports in foreign currencies stay accurate without manual conversion work.
Practically any report that live transaction data can answer. For Elumatec, five were built natively: an FTA-aligned VAT summary, a real-time P&L with drill-down, a balance sheet, an aging stock report with 30/60/90+ day buckets, and a warehouse audit trail of movements and variances.
Users are assigned to groups that control menus, records and fields. Elumatec runs five role profiles (finance, warehouse, sales and purchasing, leadership, administration), enforced with record rules so each team sees exactly what its job requires and sensitive changes are traceable to a named user.
It is the riskiest part, which is why it runs as a staged pipeline: extract and cleanse in a staging environment, load in dependency order through the Odoo ORM so business rules still apply, then verify record counts and trial-balance equality against the source before anything is signed off.
Yes, by design. All changes live in namespaced custom addons that extend Odoo through inheritance; the core is never edited. Configuration ships as data records, so the whole setup is reproducible, reviewable and upgrade-safe.
It depends on the depth of the gaps, which is exactly why the audit comes first: it fixes the scope before any rebuild starts. Elumatec ran six phases, from system audit and accounting redesign through inventory cleanup, report development, access management and a documented handover.
KoderXpert is an Odoo partner that audits before it rebuilds, engineers upgrade-safe custom modules with zero core edits, and delivers compliance at the source rather than patches on top. Elumatec's outcome: five compliance gaps closed and 100% system adoption. Talk to KoderXpert about an ERP health check.
Running on an ERP you do not fully trust?
Tell us where the numbers stop adding up: VAT, inventory, reports or access. KoderXpert will audit first and rebuild second, until the system can stand behind itself.
Related case studies
- Newmatic Kitchens: Multi-company Odoo ERP implementationMulti-company, multi-currency ERP across four countries
- Clair de Lune: Odoo ERP support and accounting optimisationSupport pack that stabilised a drifting ERP
- Starling Group: Odoo HR and expense implementationUAE labor law compliant leave and expense approvals