01
Starting point
The company ran its accounting on a hosted legacy accounting platform and a separate legacy inventory system, and was moving to Odoo 19 Enterprise under a fixed-price milestone contract.
The CFO set a hard reconciliation standard: the opening entry had to tie to the accountant trial balance at the cutover date, and receivables, payables, and inventory had to arrive as sub-ledger detail rather than lump-sum entries.
02
Constraints
- A generic import could not meet that reconciliation bar.
- The cutover date was re-decided twice at client direction mid-project.
- The business needed its warehouse footprint and its customizations to survive the change intact.
03
Scope
- A full inventory of the source accounting and inventory systems: chart of accounts, accountant trial balance, open receivables, payables, inventory detail, and the warehouse footprint across all six locations.
- Chart of accounts imported and an opening-balance journal entry built from the accountant trial balance at the cutover date.
- Receivables, payables, and inventory loaded as sub-ledger detail, with monthly catch-up entries reconciled penny-accurate against the legacy reports and an equity plug itemized into monthly entries.
- Odoo 19 Enterprise configured around the reconciliation standard, with the three custom modules carried forward across the version upgrade.
- All six warehouse locations kept, with a run-down-then-archive plan for one and drop-ship deposits preserved at another.
- Go-live with the legacy systems treated as a one-time import source rather than a live sync.
04
Approach
Stack
Odoo 19 Enterprise · legacy accounting platform (source) · legacy inventory system (source) · three carried-forward custom modules
- 01
Audit
Full inventory of the source accounting and inventory systems: chart of accounts, accountant trial balance, open receivables, payables, inventory detail, and the warehouse footprint across all six locations.
- 02
Map and migrate
Chart of accounts imported and an opening-balance journal entry built from the accountant trial balance at the cutover date. Receivables, payables, and inventory were loaded as sub-ledger detail, with monthly catch-up entries reconciled against the legacy reports.
- 03
Configure and integrate
Odoo 19 Enterprise configured around the reconciliation standard, with the three custom modules carried forward across the version upgrade. All six warehouse locations were kept.
- 04
Test and cut over
Go-live with the legacy systems treated as a one-time import source rather than a live sync. The opening entry date is the cutover boundary.
05
Evidence
The opening balance was built from the accountant trial balance, open receivables, payables, and inventory landed as sub-ledger detail, and the monthly catch-up entries reconciled against the legacy reports.
All six warehouse locations were kept, and the three custom modules carried forward across the version upgrade.
Oversight
The client's CFO set the reconciliation standard. Each time the cutover date was re-decided at client direction, the recut was rebuilt from source reports.
06
Limitations
- The opening entry date is the cutover boundary, and pre-cutover transactions remain in the legacy systems.
- The legacy systems were treated as a one-time import source rather than a live sync.
- No acceptance sign-off is claimed, and the state of the books after the recorded catch-up entries is outside what this write-up covers.