A CRM data migration succeeds when staff can continue a customer conversation with the right history, ownership and next action. A successful import message proves much less. This checklist takes you from deciding what to move through a rehearsal, a controlled cutover and business checks that reveal whether the new records are usable.
1. Inventory the sources and nominate decision owners
List every source: the old CRM, shared spreadsheets, contact exports, quotation folders and any separate support system. Record who maintains each source, its approximate size and the date range it covers. Identify repeated information, such as a company address held in three places. Decide which source takes precedence for each field before combining files.
Give each data group a business owner. Sales should decide whether an opportunity is still active; a developer should not infer that from an old timestamp alone. Agree what stays behind, what moves and what needs review. Keep excluded material accessible through an agreed archive process where appropriate, rather than importing everything simply because it exists.
2. Write a field and relationship map
For every destination field, record the source, transformation, allowed values and treatment of blanks. Distinguish an unknown value from a deliberate “not applicable”. Check text lengths, date formats, currencies and multiline notes. A date such as 04/05/2026 needs an explicit interpretation; a migration should never guess from whichever locale happens to run the import.
Map relationships as carefully as fields. Contacts belong to organisations, opportunities refer to contacts and activities may refer to both. Preserve source identifiers in a dedicated reference field or mapping ledger so records can be traced and imports repeated safely. Do not use a company name as a permanent key: names change and different businesses can share similar names.
- Map retired users to an agreed owner or historical identity.
- Translate old stage names into documented destination stages.
- Specify whether original creation dates and activity authors are preserved.
- Record where attachments will live and how their links are rebuilt.
- Keep contact preferences distinct from notes and general activity history.
3. Clean duplicates without destroying useful context
Normalise spacing and obvious formatting differences before matching records. Use several signals for organisations, such as name, address and a trusted account reference. Email addresses can help match people, but a shared enquiries address does not prove two contacts are the same person. Send ambiguous matches to a review queue with enough context for a decision.
Define merge rules field by field. A newer telephone number may be preferable, while an older record may contain the only useful site instructions. Preserve the relationship between merged identifiers and the surviving record. Avoid moving every conflicting value into an unreadable notes field; retain a clear conflict report and resolve operationally important differences.
4. Rehearse with a representative extract
Include clean records and difficult ones: inactive users, long notes, unusual characters, missing parents and customers with several sites. Import into a separate test environment with outbound messages and automated assignments disabled. Load parent records before their dependants, then verify attachments and activity timelines. Repeat the process to check that it does not create another copy of everything.
Keep a run log containing input filenames, extraction time, transformation version, counts and rejected rows. Every rejection needs a reason and an owner. A rehearsal that silently drops invalid rows is not ready for cutover. Let actual users inspect the results through the screens they will use, because a technically valid record may still be impossible to find.
Worked hypothetical example: reconciling a contact import
Suppose a fictional distributor exports 1,240 contact rows. Review identifies 40 duplicate rows to merge into surviving contacts, 25 rows outside the agreed scope and 15 with unresolved organisation references. These three groups do not overlap; the surviving contact for each merged duplicate is retained outside the removed group. The planned first import is therefore 1,160 contacts: 1,240 minus 40 minus 25 minus 15. The unresolved records remain on a tracked exception list.
If the destination contains 1,160 contacts, that matches the plan but does not finish validation. The team also checks that every imported contact links to the correct company and that merged contacts retain the expected activity history. After the 15 exceptions are resolved, a later controlled import may increase the total to 1,175. These are hypothetical reconciliation figures, not an actual migration result.
5. Design the cutover and rollback together
Choose when the source stops accepting edits and how late changes will be captured. Tell staff where to record urgent enquiries during the switch. Take a recoverable source backup and preserve the final extract separately from working files. Assign one person to authorise the final import and another to confirm business acceptance.
Set stop conditions in advance: missing open opportunities, broken account relationships or inaccessible attachments may justify postponement. Define how staff return to the old system if necessary, and how any records created in the new system will be reconciled. Restoring a database alone cannot undo customer emails or other external actions, which is another reason to keep automation paused until acceptance.
6. Validate totals and real working journeys
Compare counts by record type, owner and status. Reconcile open opportunity values by currency rather than adding unrelated currencies together. Check a mixture of random records and deliberately difficult cases. Ask staff to find an account, read its history, locate an attachment and identify the next action. Record who signs off each area.
Keep a short stabilisation window for reporting missing details and correcting mappings. Avoid retiring the source immediately after the first successful login. Confirm that exports, backups and the exception list remain understandable to someone who did not perform the import. The migration is complete when the agreed operational checks pass and outstanding exceptions have an explicit disposition.
Before restoring assignment rules, review CRM lead routing automation so historical imports do not trigger fresh sales activity. For help scoping the migration within Visuosofts CRM development, contact the team with your source inventory, relationship map and unresolved exceptions.