6
CANONICAL MIGRATION
Exceptions remainLegacy crosswalk & identity continuity
Keep every source identifier while mapping customers, accounts, premises, meters, payments and configuration into canonical WaterPesa identities.
Source IDs are never overwritten or reused as WaterPesa primary keys. A collision or orphan must be resolved or explicitly exceptioned before cutover.
60%
1
2
SOURCE → CANONICAL
Identity crosswalk
| Source key | Kind | Canonical ID | Status | Evidence |
|---|---|---|---|---|
meide-demo:customer:CUS-00188sha256:customer188 | customer | CUS-WP-188 | mapped | 1 |
meide-demo:account:ACC-00188sha256:account188 | account | ACC-WP-188 | mapped | 1 |
meide-demo:meter:MTR-784240sha256:meter784240 | meter | MTR-WP-784240 | mapped | 1 |
meide-demo:ciu:CIU-44081sha256:ciu44081 | ciu | — | unmapped | 1 |
meide-demo:payment:PAY-9923sha256:pay9923 | payment | — | orphanLegacy reference does not resolve to active account | 1 |
legacy-billing:meter:MTR-LEG-7checksum pending | meter | MTR-WP-784240 | duplicateSame physical meter appears in two source systems | 1 |
Migration invariants
1Preserve source identityAlways retain source system + source ID + checksum.
2Separate customer from meterCustomers move and meters change without destroying service history.
3Exception visiblyUnknown records enter a queue; they are never silently dropped.
4Reconcile totalsPopulation counts and financial totals must reconcile before cutover.
Collision queue
collision
meter:MTR-WP-784240
MTR-784240 · MTR-LEG-7