Inventory before import
Legacy exports often mix active prospects, former customers, duplicates, stale notes, and fields no current employee understands. Classify records by operational use and retention obligations before moving anything; copying everything transfers old ambiguity into a new interface.
For each retained field, identify its source, intended meaning, destination, and accountable owner. Mark uncertain values explicitly instead of translating them into confident-looking defaults, which can distort routing and make reports appear cleaner than the underlying evidence.
Test relationships, not just row counts
A migration can preserve every contact row and still lose the connections that make those records useful. Test how people relate to organizations, opportunities, activities, and owners, including duplicate handling and records with incomplete identifiers.
Run a representative sample through import, matching, permissions, and everyday reporting before scheduling a larger move. Ask actual users to find a current opportunity and explain its history; that task catches failures a simple total comparison cannot reveal.
Leave a controlled route back
Agree on a cutover owner, a freeze window, reconciliation checks, and a rollback decision before production data changes. Keep a protected source export and record transformations so a mismatch can be traced to a specific mapping rather than guessed at later.
A custom CRM project should end with a usable data dictionary and a policy for future imports, not only a successful launch day. Clear stewardship makes subsequent changes safer and prevents the new platform from quietly accumulating the same old clutter.