CRM services · Migration

CRM migration services with every record accounted for

A migration is finished when the reconciliation report says so, not when the import job ends. We map every field in writing, clean and deduplicate before loading, prove the result in trial runs, and plan a cutover you can reverse.

  1. Source CRMLegacy CRM, read-only at cutoverContacts: 48,210 (example)
  2. MapApply the mapping specFields, picklists, owners, record types
  3. Clean & dedupeMatch on email + company domainContacts: 47,962 after 248 merges (example)
  4. Trial loadSandbox of the target CRMRepeated until reconciliation passes
  5. ReconcileCounts, relationships, sampled fields0 orphaned deals · 0 unmapped owners (example)
    • Mismatch over threshold
      RollbackStay on the source CRMFix the mapping, rerun the trial
  6. Target CRMLive after sign-offHypercare for the first weeks
Fig. 01A CRM migration pipeline. Counts are an example of what reconciliation reports, not results from a project.
  • One-off load
  • Failure path
  • Validation gate

What a CRM migration is

A CRM migration moves your customer records, their relationships and their history from one system to another, and rebuilds the configuration around them: pipelines, automations, reports and permissions. A CRM data migration is the data part of that work. Done properly, it is a controlled transition with a written mapping spec, trial loads, a reconciliation report and a cutover plan that includes rollback.

What moves and what gets rebuilt

The inventory covers more than contacts and deals. Relationships and history are where migrations usually lose data.

What a CRM migration covers
ItemHow it is handledWhat to watch
Accounts and contactsMigrated with source IDs stored in an external ID fieldDuplicates across both, contacts without an account
Deals / opportunitiesMigrated with stage mapped to the new pipelineStages that don’t exist in the new pipeline, closed-lost reasons
ActivitiesEmails, calls, meetings, tasks and notes migrated as linked activitiesVolume and API limits, original timestamps and authors
Attachments and filesDownloaded and re-uploaded, linked to their recordsStorage limits on the target platform, file size caps
Owners and usersMapped from source users to target users, inactive users to a holding ownerPeople who have left, shared inboxes
Custom objectsRecreated in the target data model, then migratedObjects with no equivalent; relationship cardinality
Pipelines and stagesRebuilt in the target CRM from the agreed processAn opportunity to fix stages, not copy old mistakes
Automations and reportsRebuilt, not converted. Each rule is re-specifiedRules nobody remembers; reports nobody runs
IntegrationsRepointed to the new CRM at cutoverWebhooks and API keys still pointing at the old system

The migration pipeline

Seven steps. Trial loads repeat until reconciliation passes; only then is cutover scheduled.

  1. Inventory

    Export the source schema, record counts per object, field fill rates and storage used. Interview the CRM owner about what each field means.

    DeliverableSource inventory with counts and fill rates

  2. Mapping spec

    A row for every source field: target field, transformation, validation rule and owner. Fields not migrated are listed with the reason.

    DeliverableSigned field-mapping specification

  3. Cleanup

    Deduplicate, normalize phone numbers and countries, fix broken relationships, archive records you agree not to move.

    DeliverableCleanup log with merge decisions

  4. Trial load

    Load into a sandbox of the target CRM in dependency order: users, accounts, contacts, deals, activities, files.

    DeliverableTrial load run log

  5. Reconciliation

    Compare counts, relationships and sampled field values against the source. Repeat trial loads until the report is clean.

    DeliverableReconciliation report per trial

  6. Cutover

    Freeze edits in the source, load the final delta, switch forms and integrations, run a last reconciliation.

    DeliverableCutover checklist with timings and sign-off

  7. Hypercare

    Daily checks in the first week, fast fixes for anything users find, then the source system is archived.

    DeliverableHypercare issue log and archive location

A mapping spec, row by row

Excerpt from a mapping specification. Every row is a decision someone signed off.

Example rows from a CRM field-mapping specification
Source fieldTarget fieldTransformRule
Company.NameAccount.nametrimRequired. Records without a name go to review.
Company.IDAccount.legacy_idcopyExternal ID, unique. Used to link children.
Person.PhoneContact.phoneto E.164Country from Account.country when missing.
Deal.StageDeal.stagelookup table“Verbal yes” -> Negotiation. Unknown stages block the load.
Deal.OwnerDeal.owner_iduser mapInactive users -> holding owner, flagged for reassignment.
Deal.Amount + CurrencyDeal.amountkeep currencyNo conversion. Currency code required.
Note.BodyActivity.noteHTML -> textOriginal created date and author preserved in fields.

Duplicates and matching rules

Deduplication is a set of written rules, not a button. Each rule is agreed before it runs.

  • Matching keys

    Contacts match on normalized email; where email is missing, on name plus company domain plus phone. Accounts match on domain, then on normalized name plus country.

    MechanismKeys are tested on a sample first and the false-match rate reviewed with you.

  • Survivorship

    When two records merge, a rule decides which value wins per field: most recently updated, most complete, or from a preferred source.

    MechanismSurvivorship table per object, part of the mapping spec.

  • Merge review

    Uncertain matches are not merged automatically. They go to a review list your team can approve or reject.

    MechanismReview list with match score and the fields that matched.

  • Audit trail

    Every merge records the IDs of the records combined, so a wrong merge can be traced and undone.

    MechanismMerge log kept with the reconciliation report.

Reconciliation

What the reconciliation report checks after each trial load and after cutover.

  • Counts

    Records per object

    Source count, minus agreed exclusions, minus merges, must equal the target count. Any gap is listed by record ID.

  • Links

    Relationship integrity

    Every contact has its account, every deal its account and owner, every activity its parent. Orphans are counted and listed.

  • Values

    Sampled field comparison

    A random sample per object is compared field by field against the source, after transformations. Mismatches are classified as mapping errors or source data issues.

  • Files

    Attachment checks

    File counts and sizes per object, and spot checks that files open and sit on the right record.

  • People

    Owner mapping

    No record left with an unmapped or inactive owner, except those assigned to the agreed holding user.

Cutover and rollback

The last day is planned to the hour. Rollback criteria are agreed before it starts.

  1. Freeze

    Edits in the source CRM stop at an agreed time. Users are told in advance; forms queue or point to a holding page.

    CheckSource set to read-only, freeze time logged

  2. Final delta load

    Records created or changed since the last trial load are extracted and loaded using the same mapping.

    CheckDelta counts match source changes

  3. Switch integrations

    Web forms, email sync, ERP or billing connections and webhooks are repointed to the new CRM.

    CheckEach integration tested with a live record

  4. Verify

    Final reconciliation on core objects, plus a short smoke test by named users from each team.

    CheckReconciliation within agreed thresholds

  5. Go or roll back

    If a rollback criterion is met, integrations are pointed back and the team continues in the source system while the issue is fixed.

    CheckSigned go decision, or rollback executed

Common migration paths

Each path has its own constraints. These are the ones we plan for.

CRM migration paths and what to plan for
PathWhat to plan for
Spreadsheets -> CRMInconsistent columns across files, duplicates between sheets, no stable IDs. Most of the effort is cleanup and deciding the data model.
Legacy or custom system -> CRMDirect database access or file exports instead of an API, undocumented fields, codes that need lookup tables.
Salesforce <-> HubSpotDifferent object models (opportunities vs deals, account-contact relationships), association rules, API rate limits on both sides.
Microsoft Dynamics 365 -> another CRMCustom entities, option set values, activity parties on emails and meetings, data in related Dataverse tables.
Zoho CRM or Pipedrive -> another CRMCustom modules or fields, API call limits per day, file and note exports.

How long a migration takes

We give a dated plan after the inventory. These are the factors that set it.

  • Number of objects and custom objects

    Each object needs mapping, ordering and reconciliation. Custom objects also need modelling in the target.

  • Volume of activities and files

    Years of emails and attachments can dominate the load time, limited by API quotas and storage.

  • Data quality

    Duplicates, missing relationships and free-text codes add cleanup rounds before trial loads pass.

  • Trial runs needed

    Most migrations need two or three trial loads before reconciliation is clean.

  • Integrations to repoint

    Every connected system must be tested against the new CRM before cutover.

Questions about CRM migration

What is a CRM migration?

A CRM migration moves customer data, and the configuration that gives it meaning, from one system to another: from spreadsheets or a legacy database into a CRM, or from one CRM platform to another. Records and their relationships are moved; pipelines, automations, reports and permissions are rebuilt on the new platform, because they rarely transfer one to one.

How long does a CRM migration take?

It depends on the number of objects, the volume of records and activity history, data quality, custom objects, and the API limits of both systems. A straightforward move of contacts, accounts and deals can take a few weeks including trial loads. Migrations with years of activity, attachments and custom objects take longer. The cutover itself is usually planned for a weekend or a low-traffic window.

How do you migrate data from one CRM to another?

In stages: inventory the source, write a field-by-field mapping specification, clean and deduplicate, run trial loads into a sandbox, reconcile counts and samples against the source, then freeze, load the final delta and switch over. Records are loaded parents first (accounts, then contacts, then deals and activities) so relationships resolve, using source IDs stored on the new records.

Will we lose email history and attachments?

Not if they are in scope. Logged emails, calls, notes, tasks and file attachments can be migrated as activities and files linked to the right records, within the target platform’s storage limits. Some history is better archived than migrated; we list what moves, what is archived and where the archive lives.

Can we keep working during the migration?

Yes, until cutover. Trial loads run against a sandbox while the team keeps using the old system. At cutover there is a short freeze window, typically measured in hours, during which the final changes are loaded and integrations are switched.

What if something goes wrong at cutover?

The cutover plan has rollback criteria agreed in advance, for example a reconciliation mismatch above a set threshold on a core object. If a criterion is hit, integrations are pointed back at the old system and the team continues there. The old system stays read-only and available until you sign off the new one.

Next step

Get an inventory before you get a quote

Tell us where the data is and where it needs to go. The assessment starts with counts and a sample, so the plan is based on your data, not on assumptions.

Request a migration assessment

Useful to have ready

  1. Source and target systems, with editions if you know them
  2. Rough record counts: accounts, contacts, deals, activities
  3. Custom objects or fields you rely on
  4. The date the old system’s contract or support ends

Not everything is needed. A rough answer is enough to start.