Skip to content
Illustration of customer records transferred between two spreadsheets with a validation point
CRM · Data and operations11 min readOctober 2, 2026

Migrating to a custom CRM: move your data without disrupting sales

D
Written by
Daillac
Contents
A migration to a custom CRM is successful when teams can find the right data, the right relationships, and the next actions when resuming their work. Importing all rows without technical error is not enough: a business opportunity linked to the wrong client can be more harmful than a rejected row visible in a log.
In brief
  • Define the data to import and the reference for each field.
  • Repeat the migration on a copy and have the processes validated by sales.
  • Prepare the switch-over, last-minute changes, and rollback.

Separate the CRM decision from the migration decision

The choice to build, configure, or integrate a CRM must precede the details of the handover. Our CRM cost and architecture guide addresses this decision. Once the scope is chosen, the migration becomes a standalone project, with its own responsible persons, tests, and acceptance criteria.
Do not wait until the end of development to review the data. A real, anonymized, and representative export can reveal inconsistent columns, missing identifiers, or implicit relationships. These discoveries influence the new CRM model and the time needed to organize the data.

Inventory what the teams actually use

List the accounts, contacts, opportunities, activities, documents, consents, and tasks. Add the fields that are not visible in the main table but that trigger a rule: territory, payment status, customer category, or next follow-up date. Ask the teams what they are looking for during a real call.
Assign a destination to each category: active migration, searchable archive, or justified exclusion. Keeping all old fields in the new interface can reproduce confusion. Conversely, deleting a history without reviewing its use can deprive a representative of essential information.
TableInventory what the teams actually use · shareable block
Inventory what the teams actually use
Risk of reuseBusiness control
Customer accountDuplicates and similar namesStable identifier and list of proposed merges
ContactLost relationship with the companyVerification of account-contact links
OpportunityStage or amount modifiedComparison by manager, stage, and currency
ActivityAuthor or date misinterpretedControl of time zones, owners, and order
DocumentLink became inaccessibleOpening test with the intended user role
PreferencesOld or ambiguous valuePreservation of origin and review by the manager
This grid is a starting point. Retention, privacy, and consent rules must be confirmed with the competent people in your organization; a CRM change does not, by itself, authorize expanding the use of data.

Decide how to recognize the same customer

The trade name is not always a reliable key. It can change, contain an error, or refer to multiple establishments. Define durable identifiers and a correspondence between old and new numbers. Keep this table to explain a migration and avoid repeated creations during a second pass.
Microsoft documents, for Dataverse imports, the need to define uniqueness with keys and to map data to the expected fields. The principle is useful beyond this tool: each new row must be able to be associated with an identity and explicit update rule.
For duplicates, separate automatic decisions from cases to be reviewed. Two accounts sharing a generic email address are not necessarily identical. A reconciliation report must show the conflicting values, the proposed rule, and the person authorized to confirm a merge.

Write a field dictionary

For each field, note its definition, type, source, destination, and transformation rule. An empty date may mean "unknown"; replacing it with the migration date would invent information. An amount may be before tax, after tax, or associated with a currency: the new CRM must not resolve this ambiguity randomly.
Document the allowed values and their correspondence. If the old stages are "sent," "followed up," and "won," explain how they map to the new pipeline. Check records that do not match any stage. An import that classifies everything as "new" may seem technically clean, but destroys sales tracking.
A custom CRM can reflect your specific rules. This flexibility, however, requires naming the data managers and keeping the rules readable so that the team understands what has been transformed.

Repeat before switching

Run a trial recovery on an isolated copy. Compare quantities by category, relationships, amounts, and incomplete records. Total numbers are necessary but insufficient: a hundred imported opportunities can be attached to a hundred wrong accounts.
Prepare a representative sample: new client, old record, active opportunity, inactive contact, company with multiple locations, and activity with document. Have users perform their usual actions. Can they find the last exchange, the next follow-up, and the right person to contact?
Fictitious illustration: a representative must take over an opportunity with two contacts and an attached proposal. The test covers searching for the client, opening the document, reading the history, and updating the stage. The fact that the four records exist does not prove that this process works.

Prepare the switch and late changes

Define the switch window and what remains allowed in the old tool. If sales continue entering data during the migration, you must capture the changes made since the initial extraction. Name the reference system for each phase to avoid maintaining two conflicting truths.
Plan the stop and rollback conditions before starting. Which failures prevent opening? Who makes the decision? Where are new entries stored if the switch must be canceled? A backup is only useful if restoration and work resumption have been verified.
Permissions must also be tested. A manager can see multiple teams; a representative only their records. OWASP describes the risks of application authorization that make these controls essential, especially when the CRM exposes APIs or exports.

Support the first weeks of use

Provide a short procedure for frequent tasks, a channel for reporting anomalies, and a responsible person capable of distinguishing incorrect data from new business rules. Quickly correcting a misunderstood value list can prevent reverting to parallel spreadsheets.
Track remaining anomalies, processing times, and the quality of new entries. Evaluate adoption based on completed processes, not just logins. A team that opens the CRM and then works elsewhere has not yet adopted the system.

Example of mapping: from spreadsheet to new CRM

Mapping is the document that links the old field to the new one, with a transformation rule and a rejection rule. Here is a fictitious example for an SME migrating its account records, contacts, and opportunities. The field names are illustrative; they do not describe any particular software.
TableExample of mapping: from spreadsheet to new CRM · shareable block
Example of mapping: from spreadsheet to new CRM
Target field and transformationException to process
No clientaccount.external_id; retain as textIdentifier missing or used by two accounts
Companyaccount.name; remove unnecessary spacesName missing; do not merge based on name alone
Contact emailcontact.email; spaces removedInvalid address; retain rejection for correction
Sales manageropportunity.owner_id via mapping tableFormer employee: assignment approved by director
Stageopportunity.stage via validated value listUnknown value; do not automatically convert to won
Amount CADopportunity.amount; interpret decimal separatorAmbiguous value or unspecified currency
Last exchangeactivity.occurred_at with known timezoneAmbiguous date; return to source record
A precise mapping for stage can be “quote sent” to “proposal,” “signed” to “won,” and “abandoned” to “lost.” These rules belong to this fictitious case and must be approved by the sales team. The same email address alone is not enough to decide that two companies are identical. Uncertain groupings go into a review queue with original identifiers.

Receiving list before switch

  • Reconcile source accounts: imported, rejected, merged, and excluded lines with reason; no unexplained discrepancies.
  • Compare open opportunities by stage and amounts in the same currency; examine each divergence.
  • Open a sample of records chosen by sales, including an account with multiple contacts and a manager who left.
  • Retrieve activities, their dates, and linked attachments; check permissions with multiple roles.
  • Replay an interrupted import; check that a resume does not duplicate already integrated records.
  • Validate a timed dress rehearsal, the freeze period, and the entries to reconcile since the last export.
  • Appoint the person who accepts each remaining discrepancy and the team that handles anomalies after launch.
As an illustration, 1,000 lines may become 920 accounts, 50 rejections, and 30 lines merged in the retained accounts. The total reconciles, but this alone does not prove that the merges are correct. Check the rule and the records concerned. Any tolerance must be explicit: an unexplained commercial amount deserves a different decision than a space in a phone number.
Returning to the old CRM also requires a plan for new entries. After the switch, reverting to an older backup may lose entries recorded in the meantime. Define before the launch how to export, reconcile, or re-enter these changes. The decision to revert must take into account this operation and its responsible party.

Frequently Asked Questions

Should all history be migrated?+
Not necessarily. Define what must remain active, what can be archived, and what must be kept according to your obligations. An accessible archive may be sufficient for some old records, but the decision must be validated by business and data managers.
Can duplicates be cleaned up after launch?+
Some cases can be handled later, but duplicates that affect relationships, amounts, or automation must be reviewed beforehand. Otherwise, the new CRM may propagate incorrect information to other systems.
How to avoid losing changes during the migration?+
Define a freeze period or a resumption of changes from the initial extraction. Test this procedure. Each phase must have a reference system and a responsible party so that users know where to enter the information.
How to prove that the migration is complete?+
Combine accounts by category, relationship verification, amount checks, and user journeys. Keep discrepancies, exclusions, and decisions. The number of imported lines alone does not prove the quality of the transfer.

Sources and method

Microsoft Learn — Import data from Excel and export data to CSV · OWASP — API Security Top 10, 2023 edition. Sources consulted on October 1, 2026; the grids and decision examples are an editorial analysis by Daillac.

Evaluate your data recovery before the switch

Share the structure of your data, the systems involved, and the priority processes. We will be able to scope the tests, controls, and migration responsibilities.
D
Written by
Daillac

Editorial team