Service 03
Retire the legacy system without losing a transaction.
A migration is judged on the records nobody notices. We count them, reconcile them, and itemise whatever will not key.
- Shape
- Build engagement
- Systems retired
- 02
- Failed records
- 0
01What we migrate
Into Salesforce as the single record
Four system types, moved so that history stays queryable rather than stranded in an export.
- 01
ERP and inventory
Orders, purchase orders, stock movements, assemblies and bills of material into archive objects that stay reportable. Inventory value becomes a number somebody can look up rather than a quarterly exercise.
- 02
Quoting
Historical quotes carried across with their line detail, so close ratios can be computed rather than estimated.
- 03
Accounting
Invoices and payments joined to the live ledger on a legacy key, with duplicates resolved by an explicit rule rather than by judgement.
- 04
Professional services systems
Projects, time and the work-in-progress that sits between them, so finished work stops going unbilled.
02The reconciliation, drawn
A total nobody can defend is not a total.
A migration is a reconciliation, not a copy. Every dollar that lands carries the method that put it there, and the amounts the engine will not vouch for are published beside the number.
- The old system, the new org and the accounting ledger, joined on the legacy order key.
- 97% keyed across all three. What did not key was itemised order by order.
- Duplicates resolved by a written rule rather than by judgement on the day.
- Any single invoice above a stated ceiling is excluded as a data error, and listed as one.
Tell us which system you are trying to switch off.
04The reconciliation
Three-way, and honest about the residue
The old system, the new one and the accounting ledger, joined on a legacy order key and reconciled line by line.
- 0116 objects
Join on the legacy key
Two retiring systems and one live system feed 16 archive objects plus live invoices. A recompute joins everything on the legacy order key and writes three financial fields.
- 02Stated rule
Resolve duplicates by rule
An invoice is a duplicate if it falls in the transition window and matches another within one dollar and seven days. Any single invoice above a stated ceiling is excluded as a data error rather than argued about.
- 0397% keyed
Reconcile against the ledger
The live era plus the completed era, reconciled against the accounting system. Pre-2026 records agreed to the dollar on 54% of orders, with totals within 17%.
- 04the residue listed
Itemise what did not key
The the residue residue was listed order by order rather than absorbed into a rounding line. A reconciliation that hides its own residue is a reconciliation nobody can defend.
The retired system. Read as it stood on its last day, including the data it had inherited from the system before it.
The new Salesforce org. Read after load, under the same permissions the finance team will use on the Monday.
The accounting ledger. The record of what was actually owed and paid. It arbitrates the other two.
- Window
- 2010 → 2026Every transaction in the window, not a sample.
- Transactions
- 4,506Joined on the legacy order key across all three systems.
- Keyed
- 97%Keyed across all three systems by the reconciliation. What did not key is the row below.
- Unkeyed
- The residueItemised order by order for their controller. Not absorbed into a rounding line.
- Per order
- 141 of 141Every order file either agrees or carries a written explanation.
Validate historical records before they reach a live workflow.
Keep historical records separate from operational records. Reconcile against the source and route exceptions to authorised reviewers. Client financial findings remain private.
Source references preserved through migration.
We will tell you what will not key before you sign anything.
Tell us which system you are trying to switch off.
Tell us what you need to migrate and when. We will discuss the fit, then scope the mapping, validation and cutover work.
- Free fit conversation
- Scope and fees agreed before kickoff
- Vancouver, British Columbia
