Switching SaaS tools is rarely a technical problem — it's a data and people problem. The new tool is usually ready in days. The migration of records, relationships, attachments, history, and team habits takes weeks, and it's where most projects fail. A botched migration loses customer history, breaks integrations, and trains the team to distrust the new system.
This guide walks through a 5-step migration process that works whether you're moving from one CRM to another, switching project management tools, or replacing an entire help desk. The same principles apply: plan before you move, export everything, validate before you cut over, and over-communicate with the humans whose work depends on the tool.
Before the process, understand the failure modes. Most migrations don't fail because the data is too hard to move — they fail because of one of these:
The planning phase sets the scope, timeline, and success criteria. Skipping it is the most common cause of blown timelines and budget overruns. Spend a week here; it saves three weeks later.
Before you can move data, you need to know what data exists. Document:
Not everything should migrate. Decide explicitly:
| Decision | Typical choice | Why |
|---|---|---|
| Active records | Migrate | Team needs them daily. |
| Closed/won deals > 2 years old | Archive in old system (read-only) | Rarely accessed; clutters new system. |
| Inactive contacts (no activity 18+ months) | Archive or skip | GDPR cleanup opportunity. |
| Attachments on archived records | Archive with parent record | Don't carry dead weight. |
| Full activity history | Last 12–24 months only | Older history rarely referenced. |
| Duplicate records | Dedupe before migration | Don't import problems. |
This is the single most important artifact of the migration. For every field in the old system, document where it goes in the new system — or mark it as "not migrated." A simple spreadsheet works:
Every row should have an owner. Every transformation should have a rule. This document is what you test against in Step 3.
Migrations take longer than vendors suggest. A realistic timeline for a mid-size migration (10k–100k records, 25–100 users):
| Phase | Duration | Key activities |
|---|---|---|
| Planning & inventory | 1–2 weeks | Scope, field mapping, timeline |
| Cleanup & dedup | 1–2 weeks | Clean source data before export |
| Test migration | 1–2 weeks | Move a subset, validate, fix mappings |
| Integration rebuild | 2–3 weeks (parallel) | Reconnect Slack, billing, marketing, etc. |
| Training & dry run | 1 week | Train champions, run parallel |
| Production cutover | 1 weekend | Final export, import, validation |
| Hypercare & old system read-only | 2–4 weeks | Fix issues, keep old system accessible |
Budget 6–10 weeks for a mid-size migration. Enterprise migrations run 3–6 months. Anything shorter is either trivial or unrealistic.
With the plan in place, export the data from the old system and transform it to match the new system's import format. The order of operations matters: clean first, export second, transform third.
Migrating messy data into a clean new system just gives you a clean-looking messy system. Dedupe contacts, standardize phone number and address formats, fill required fields, archive inactive records, and fix picklist inconsistencies (e.g., "USA", "U.S.", "United States" all mapping to one value). Cleaning after migration is 5x harder because you're working in an unfamiliar system.
Three options, in order of preference:
These are the data types most likely to be lost in migration:
Never run a full migration on cutover weekend without a test run. Pick a representative subset — 5–10% of records, including edge cases (records with the most custom fields, longest history, most attachments) — and migrate them to a sandbox or test instance of the new system.
For each field in your mapping doc, verify the data arrived correctly. Common issues:
| Metric | What to check |
|---|---|
| Record counts | Source count = target count per object (or document why they differ) |
| Relationship integrity | Every child record has a valid parent |
| Attachment counts | Number and total size of files match |
| Required field coverage | No required field is empty in the target |
| Picklist value distribution | Distribution matches (no values silently dropped) |
| Sample record audit | Pick 20 random records, compare field-by-field |
Fix every issue before the full migration. The test run exists to surface problems — if you find none, you weren't looking hard enough.
With a validated test migration, the production cutover is mostly execution. Schedule it for a low-traffic window — Friday night or weekend — and communicate the freeze window to the team in advance.
Do not cancel the old subscription immediately. Keep it accessible in read-only mode for at least 30 days — longer for regulated industries. Users will need to look up old records, verify that data migrated correctly, and occasionally find something nobody thought to migrate. Budget for one extra month of the old subscription; it's cheap insurance.
The technical migration is half the project. The other half is getting the team to actually use the new system. Migration projects that ignore adoption fail even when the data is perfect.
Tell the team about the migration before it happens, not after. Explain why you're switching (the old tool's limitations, the new tool's benefits), what will change for them, what won't, and what the timeline is. Acknowledge that there will be friction — pretending the new tool is flawless sets you up for backlash the first time someone can't find a feature.
Pick 2–5 power users from different teams to be champions. Train them first, deeply. They become the first line of support when colleagues have questions, and they provide honest feedback on what's confusing before go-live. Give them recognition — champions do real work.
For critical tools, run the old and new systems in parallel for 1–2 weeks. Users enter data in both, and you compare the results. This catches integration issues and gives users time to learn the new system without pressure. Not always feasible, but worth it for CRM and help desk migrations.
A 3-hour training session before go-live will be forgotten by week two. Instead:
| Pitfall | Symptom | Prevention |
|---|---|---|
| Lost relationships | Contacts orphaned from companies, deals from contacts | Migrate parents before children; map IDs explicitly |
| Attachment loss | Files missing on migrated records | Use API export, verify counts and sizes |
| Picklist collapse | Values silently dropped or merged | Document every value mapping; validate distribution |
| Date corruption | Dates off by months or years | Standardize to ISO 8601 before import; test with known dates |
| Integration outage | Sync to billing or marketing breaks at cutover | Rebuild and test integrations in parallel before cutover |
| Duplicate import | Same record imported twice | Dedupe source data; use external ID to prevent re-import |
| Permission gaps | Users can't see records they should | Rebuild role hierarchy before import; test with real users |
| Automation silence | Notifications and assignments stop firing | Recreate and test automations before go-live |
| Historical data loss | Years of comments and emails gone | Decide retention window explicitly; migrate as notes if needed |
| Premature cancellation | Old system deleted before issues found | Keep read-only for 30+ days; export final backup |
Migration is the perfect time to audit the new vendor's security posture. Use our 20-question checklist.
Get the SaaS security checklistThe migration isn't done at cutover — it's done when the team trusts the new system. The first 30 days determine whether adoption sticks.
DIY migration is realistic for small datasets (<10k records), simple schemas, and tools with robust CSV import. For anything larger or more complex, professional help pays for itself:
The cost of professional help is almost always less than the cost of a botched migration — lost productivity, data recovery, and re-doing work that broke.
A successful migration isn't measured by whether data arrived in the new system — it's measured by whether the team trusts the new system six weeks later. Plan for both, and you'll avoid the all-too-common outcome of a technically perfect migration that nobody uses.