Skip to main content
CRM Implementation · 8 min read

Most migrations go wrong in the same way. The team spends weeks choosing a platform, then exports everything from the old system, uploads it in an afternoon, and discovers on day two that the new CRM looks exactly as cluttered as the old one, only now with a fresh logo. The import is not the hard part. Deciding what deserves to be imported is.

Start by Deciding What You Are Not Bringing

Before touching a spreadsheet, write down what the new CRM is for. If reps will use it to run live deals, then closed-lost opportunities from six years ago and contacts who left their companies long ago are baggage. You can keep them in an archive file without loading them into the system people look at every day.

In practice, a useful rule is to sort every record type into three buckets: migrate and keep active, migrate as read-only history, and leave in an archive export. Activity logs are a common candidate for the middle bucket. Nobody needs ten thousand logged calls cluttering a contact timeline, but a summary note saying “last meaningful conversation” is valuable.

Take an Honest Inventory

Export each object (contacts, accounts or companies, deals, notes, tasks) to a spreadsheet and look at it with fresh eyes. You are looking for patterns, not individual errors:

  • Fields that are empty in most rows. These are candidates to drop rather than recreate.
  • Fields where people typed free text that should have been a dropdown, such as country, industry or lead source.
  • Records with no owner, or with owners who have left the company.
  • Contacts with no email and no phone, which are often just placeholders.
  • The same company spelled four ways.

Write the findings down. That list becomes the cleanup scope and gives your sponsor something concrete to approve.

Deduplicate Before You Import, Not After

Duplicates are far cheaper to fix in a spreadsheet than inside a live CRM where records already have activity, owners and automation attached. Decide on your matching keys first. For contacts the usual key is email address; for companies it is often the website domain, since company names vary so much. Normalize both before comparing: lowercase the email, strip “www.” and trailing slashes from domains, and trim stray spaces.

When two records match, keep the one with the most recent activity or an assigned owner, and copy non-empty fields over from the other. Decide this once and apply it consistently.

Map Old Fields to New Fields on Paper First

A field mapping sheet is the most underrated document in any implementation. It has one row per source field and columns for the destination object, destination field, data type, and any transformation needed. Where the old system had a free-text “Status” and the new one has a fixed picklist, you need to translate every distinct old value to a new one, and decide what happens to values that fit nowhere.

Dates, phone numbers and currencies deserve special attention. Check how the new system expects them to be formatted, and be explicit about time zones for any date-time fields. Also confirm how the platform handles relationships: it will usually need to know which company each contact belongs to via an identifier, so you may need to import accounts first, then contacts, then deals.

A Cleanup Checklist You Can Work Through

TaskWhy it mattersDone when
Archive full raw exportSafety net if something is wrong laterFile stored somewhere read-only
Remove or archive stale recordsKeeps the new CRM relevantAgreed cutoff applied
Normalize emails and domainsEnables reliable matchingConsistent casing and format
Merge duplicatesPrevents split historiesSurvivor rule applied to every match set
Standardize picklist valuesMakes reporting possibleEvery value maps to a new option
Assign ownersRecords without owners go unworkedNo blank owner column
Test import on a small sampleFinds mapping errors cheaplySample reviewed by a real user

A Hypothetical Example

Imagine a small services firm with eight thousand exported contacts. A third have no email, a few former employees still own hundreds of accounts, and the “Industry” field has dozens of spellings. They archive records with no email and no recent activity, hand the orphaned accounts to the sales lead for redistribution, and collapse industries to ten values. A fifty-record test import shows phone numbers losing their country code because the column was formatted as a number. They fix it, retest, and only then run the full load.

Run the Import in Stages

Always do a small test load first, into a sandbox if you have one, otherwise with a clearly labeled tag you can filter and delete. Open a few records as a rep would and check the company link, owner and notes. Then rehearse at larger scale before the real run.

Keep the original record identifiers from the old system in a dedicated field. It looks like clutter until the day someone asks “where did this contact come from?” or you need to reconcile a count against the source.

Verify Afterward

Compare counts by object against what you intended to load, then ask two or three users to find a customer they know well. Their answers will catch gaps no count can.

Frequently Asked Questions

How much cleaning is enough before migrating? Enough that the records people will use daily are findable, unique and owned. You do not need perfection. Fix what blocks matching, ownership and reporting, and leave low-value cosmetic issues for later.

Should we import everything and clean later? Rarely. Cleaning after import means working around live automation, ownership rules and user activity. It is also easy to never get round to it once the project is declared finished.

What if we do not have a sandbox? Tag your test records with an obvious label, such as a lead source called “TEST IMPORT”, so you can filter and bulk delete them. Check your platform’s current documentation for bulk delete behavior before relying on it.

Who should approve the field mapping? Someone who uses the data daily, usually a sales or support lead, together with whoever will build reports. Admins can map fields technically, but only users know what the fields really mean.

Do we need to keep the old system after migrating? Plan to keep read access for a defined period, not forever. Agree on an end date, and make sure you have a full export stored before the subscription lapses.

Next Step

Export one object this week, contacts or accounts, and spend an hour filtering it for blank owners, missing emails and duplicate domains. Write the counts down. That single page will tell you how big your cleanup really is.


By CRMNestly Editorial · Updated November 4, 2026

  • CRM data migration
  • data cleanup
  • CRM import
  • deduplication