← All work
ZohoCASE STUDY

Two-CRM Migration

An e-commerce group acquired a second brand and needed both CRMs merged into one Zoho instance without losing a single contact, deal or note — and without a single hour of downtime.

E-commerceZero-downtime cutover
ClientE-commerce Group
IndustryRetail & E-commerce
PlatformZoho CRM
Timeline8 weeks
RoleCRM Migration Lead
Zoho CRMDelugePythonPostgreSQLZoho Flow
1.4M
Records migrated
0
Hours downtime
99.8%
Data accuracy
−40%
Duplicate records
01

Client overview

A mid-market e-commerce group operating a DTC brand and a wholesale channel, which acquired a second, similarly-sized brand. Both companies ran independent Zoho instances with overlapping customers, active deals and years of support history — none of it reconciled.

02

The challenge

Two brands, two CRMs, 1.4 million contact and deal records — many partially duplicated across both systems. The business couldn't afford downtime during its peak sales season. Previous migration attempts had failed because of custom field conflicts and Deluge scripts that only one person on the team understood.

03

Objectives

04

The solution

01

Field mapping & deduplication

Exported every object from both CRMs and ran a Python deduplication pass using email, phone and company name as match keys. Built a canonical field map resolving 47 conflicting custom field names into 31 clean properties.

02

Staging environment dry-run

Stood up a Zoho sandbox and ran three full migration dry-runs over two weeks. Each pass caught edge cases — unicode characters breaking Deluge scripts, timezone offsets on deal close dates, association limits on the target plan.

03

Delta-sync bridge

Built a PostgreSQL delta table that tracked every record change in the source CRMs during the migration window. On cutover night, applied the delta in under 90 seconds — zero records lost, zero duplicates created.

04

Post-migration validation

Wrote 200+ automated checks that ran immediately post-cutover: record counts, association integrity, workflow trigger counts, user permission sets. Green across the board before handing back to the team.

05

Technical architecture

Legacy CRM ALegacy CRM BPython ETL & dedup pipelinePostgreSQL delta trackingZoho CRM (target)Zoho Flow automationsAutomated validation suite
06

Key features delivered

07

Results

08

Challenges

01

47 conflicting custom fields

Both CRMs had years of one-off custom fields with overlapping meanings. Resolving this required sitting with both sales teams to agree on 31 canonical properties before any data moved — a mapping exercise, not just a technical one.

02

Unicode and timezone edge cases

The first dry-run silently corrupted a handful of records with non-ASCII characters in Deluge scripts, and deal close dates shifted a day on records near midnight UTC. Both were caught because dry-runs were treated as seriously as the real cutover.

03

Zero-downtime constraint during peak season

The business could not tolerate a maintenance window. The delta-sync bridge — tracking every source-system change during the migration and replaying it at cutover — made a "big bang" migration behave like an incremental one.

09

Lessons learned

Final outcome

Two years of a deferred, feared migration were completed in eight weeks with no lost data and no downtime. The combined company now runs on one CRM with one schema, and future acquisitions have a documented playbook to follow instead of starting from scratch.

Next case study
Attio

Relational RevOps Build

Need something like this built?

Need help implementing Zoho, AI automation or custom integrations? Tell me where the friction is — I'll map the system and hand it back clean.