Operations

Off spreadsheets: what a migration actually involves

Inventory every source of truth, pick a cutoff, stage the import, and run one full billing cycle reconciled against the old books.

30 July 2026 · Operations

Inventory the sources of truth

Before you move a single row, list every place subscriber data lives: the billing spreadsheet, the router's user-manager, the mobile-money statement exports, the agent's notebook, the support WhatsApp group. Each one is a source of truth for someone, and the migration has to reconcile all of them.

Do not guess — ask the people who use each source what they trust and what they ignore. The field team's notebook often has the real MAC address that the spreadsheet approximates.

Dedupe, then cut over

Deduplicate on the immutable keys: national ID, phone number, MAC address. If two rows share a key, they are the same subscriber until a human proves otherwise. Build the staging table, then freeze new sign-ups in the old system for the import window — even if it is only four hours.

Import the staged data, run the first bill cycle entirely in the new system, and reconcile every invoice, every payment, and every suspension against the old books. If the numbers match, the old system is read-only from that day forward.

One full cycle, then decide

Run one complete billing cycle — invoices generated, payments collected, suspensions executed, reconnections verified — before you declare the migration done. The first cycle is where the edge cases live: the customer who paid twice, the voucher that was already redeemed, the router that did not pick up the new secret.

If the cycle closes clean, you have one record of truth. If it does not, the staging table is still there and the old system is still running — fix the gap and run the cycle again. The cost of a second cycle is far smaller than the cost of a production cutover that drifts.

Blog

The guides go deeper

Blog posts are the entry point — the resources hub has the full guides and playbooks.