CRM data unification
One customer story before a messy cutover
Client
National operator with two legacy regions (~180 staff customer-facing). Salesforce was the target; spreadsheets and an older CRM export were sources.
How we engaged
Data workstream alongside their implementation partner — our team owned mapping, scripts, and sign-off packs; they owned Salesforce config.
Stack & tooling
- Spreadsheet / CSV pipelines (documented transforms)
- Airtable as staging for review queues
- Reconciliation scripts (row counts, checksum samples)
- Runbook co-owned with IT for cutover weekend
Two offices had been entering leads differently for years. Before a planned CRM consolidation, we normalised definitions, deduplicated records, and ran batched migrations with reconciliation checks the finance lead could sign off.
Starting point
Pipeline reports never matched finance’s view of won deals. The same company appeared three ways in the export. Some reps used free-text fields for industry; others used picklists. Automation projects had stalled because nobody trusted the underlying records.
Challenge
Politics around whose definition of ‘active customer’ was correct. Limited window for write-freeze over a long weekend. Zero appetite for another ‘big bang’ migration without a rollback story.
Approach
Facilitated a short workshop to pick golden definitions and document exceptions (e.g. parent/child accounts). Built dedupe rules with a human review queue for fuzzy matches. Migrated in batches with before/after counts and a sample of 50 accounts reviewed by sales ops each time. Wrote rollback steps that didn’t assume everyone read Slack at 2 a.m.
Outcomes
- ✓Exec dashboards stopped fighting the CRM list views post-cutover
- ✓Sales ops reported far fewer ‘which record is real?’ tickets in the first month
- ✓Integration vendor could proceed without constantly patching bad inbound data
Constraints & non-negotiables
Limits shape what ships now vs later — these were ours on this job.
- · Could not delete historical notes—append-only migration for activity in phase one
- · Some fields legally had to stay in the old system read-only for retention
Phases
Order and emphasis change by client — this is how this one ran.
- 1
Weeks 1–3 · Audit & definitions
Field inventory, owner map, agreed golden record rules, exception log started.
- 2
Weeks 4–7 · Clean & dedupe
Iterative passes, review queues, comms to reps with clear deadlines.
- 3
Weeks 8–10 · Dry runs
Full dress rehearsal in sandbox, timing estimates, failure drills.
- 4
Weeks 11–12 · Cutover support
Hypercare window, daily reconciliation notes, handover to internal admin.
What actually worked
Batching with sign-off beats ‘migrate everything Friday and hope’. Naming one accountable data owner per region ended circular arguments faster.
Real delivery patterns; names and details blended for confidentiality. Happy to walk through a comparable scope.