The Challenge
The client is a Financial Services group made up of a holding company and several operating entities, each with its own bank accounts, VAT obligations and statutory accounts. Some entities serve clients directly, while others hold investments or provide shared staff, premises and technology to the rest of the group and recharge the cost.
Each entity kept its books in its own copy of an entry-level accounting package. At every month-end, group finance exported trial balances into a consolidation workbook, mapped accounts to the group chart by hand and eliminated inter-company balances with manual adjustments. When the two sides of a recharge did not agree, the difference was traced invoice by invoice, and group results reached the board long after the decisions they should have informed.
Control was the other concern. Closed months could be reopened, so a late adjustment could quietly change a figure the board had already seen, and nothing recorded who had changed what. These are the challenges we see most often in Financial Services:
- Consolidation by spreadsheet: trial balances exported, mapped and eliminated by hand at every close.
- Inter-company mismatches: recharges recorded differently, or not at all, on the two sides.
- Reopened periods: nothing stopped a change to a month that had already been reported.
- No audit trail: edits to posted entries left no record of the user or the previous value.
- Late reporting: group results arrived too late to act on.
Our Approach
We started with a free consultation, then ran workshops with the group finance controller and the accountants of each entity, and reviewed what the auditors ask for at every year-end. Mapping the monthly close end to end, from posting in each entity to the board pack, showed that most of the delay came from mismatched inter-company entries, account mapping by hand and adjustments made after a month had been reported.
The fit-gap review confirmed that standard Odoo Enterprise Accounting answers each of these: several companies in one database, inter-company transactions, account mapping and multi-ledgers for consolidation, lock dates and an audit trail. The design relied on configuration rather than custom code, and the key decision was a harmonized group chart of accounts, agreed with finance before anything was built.
We agreed a phased plan, with a sign-off at the end of each phase:
- Foundation: the companies, the harmonized chart of accounts, journals, UAE VAT and user access for each entity.
- Daily accounting: invoicing, vendor bills, bank reconciliation and inter-company recharges, tested on real transactions from each entity.
- Close and consolidation: lock dates, the audit trail, account mapping, the consolidation ledger and the board reports.
Opening balances and open items for every entity were test-loaded on a copy of the database and reconciled with the old packages before the final import. Accountants were trained by role on their own entity's data, and group finance ran a full month-end in parallel with the old workbook, retiring it only when both gave the same group results.
The Solution
Every Entity in One Database, with Recharges That Agree
Each legal entity is a company in a single Odoo Enterprise database, with its own journals, bank accounts, VAT settings and fiscal year. Users only see the companies they are allowed to work in, so an entity accountant stays in that entity's books while group finance moves between them from the company selector.
Inter-company transactions are switched on between the group companies. When the shared services company confirms a recharge invoice to another entity, Odoo creates the matching vendor bill in the receiving company, and a credit note creates the matching refund. Inter-company balances sit on dedicated accounts, so both sides are easy to compare and eliminate.
Consolidation without the Workbook
Each entity's accounts are mapped to the group structure on the account itself, so Odoo combines like with like when several companies are selected. Elimination entries go into consolidation adjustments journals that only the group's consolidation ledger includes, so each entity's own reports stay statutory. Horizontal groups show each company's contribution beside the consolidated balance sheet and profit and loss, and figures from any entity that keeps its books in another currency are translated at historical rates for equity, weighted average rates for profit and loss and closing rates for the rest of the balance sheet.
Closed Periods That Stay Closed, with a Full Audit Trail
Once a month is reviewed, sales and purchase lock dates stop invoices and bills being posted into it, so late items are dated into the next open period. The tax return lock date protects each filed VAT period, and a lock date covering all entries closes the month for every user when the group signs off. Closed years carry a hard lock date, which cannot be reversed. When a correction is genuinely needed, an accounting administrator grants a time-limited exception with a reason, and the exception is logged on the company record.
The audit trail runs in restrictive mode, so posted entries can be canceled but never deleted, and each change to a field that affects accounting is recorded with the user, the time, the previous value and the new one. The main journals also secure posted entries with a hash, verified by the data inalterability check report, and the auditors' year-end requests are answered from reports already in Odoo.
Group Reporting in Time to Act
A spreadsheet dashboard on live Odoo data shows group results, cash by entity and open inter-company balances, and the board pack comes from the consolidated reports instead of being assembled by hand. Analytic accounts for each business line show which services earn their keep across the entities. Our OdooStar team supports the system as the group grows.