Phase 0
Decide & Plan
Lock scope, owner, success criteria, and cutover window before any work starts.
-
Risk if skipped: Scope ambiguity surfaces mid-cutover as missing objects, forcing emergency re-imports against governor limits.
-
Risk if skipped: An unbounded historical scope inflates storage, breaks the cutover window, and bumps into File Storage and Data Storage limits.
-
Risk if skipped: Hitting storage caps mid-load aborts bulk loads and forces a paid storage add-on at short notice.
-
Risk if skipped: EU residency violations after go-live require a Hyperforce region migration that is far more expensive than placing the org correctly up front.
-
Risk if skipped: Without falsifiable criteria, the sponsor declares the project done while critical data gaps persist.
-
Risk if skipped: Cumulative load volume from sandbox tests plus reloads can hit ceilings hours before cutover finishes.
Phase 1
Pre-Migration Prep
Clean the source, stand up the destination, and prep people before the first export.
1a. Source-system audit and cleansing
-
Risk if skipped: Without a baseline, you cannot prove anything was lost.
-
Risk if skipped: Duplicates landing in Salesforce trigger Duplicate Rule blocks mid-load and break downstream email-based upserts.
-
Risk if skipped: Duplicate parent Accounts split pipeline reporting and break sales-team rollups after cutover.
-
Risk if skipped: Picklist Validation Rules on Country reject non-ISO values, blocking row-level inserts.
-
Risk if skipped: Missing required fields fail per row and pollute error logs with thousands of rejections.
1b. Destination Salesforce setup
-
Risk if skipped: Testing volume in a Developer sandbox understates throughput and lets governor-limit and storage issues surface in production.
-
Risk if skipped: Toggling Multi-Currency or fiscal year after data lands corrupts historical Opportunity amounts and forecast rollups.
-
Risk if skipped: Loads fail at row level when OwnerId references a user that was not created or is deactivated.
-
Risk if skipped: Historical CreatedDate values are silently replaced and cannot be re-applied after the fact.
-
Risk if skipped: Missed custom fields cause silent data loss with no per-row error.
-
Risk if skipped: Restricted picklist ENUM rejections cancel entire batches with cryptic STRING_TOO_LONG-style errors.
-
Risk if skipped: Without an External ID, retries duplicate every record, and parent/child relationships cannot be wired up by source ID.
-
Risk if skipped: Opportunities load with stages not allowed by their assigned Sales Process, leaving records in invalid states.
-
Risk if skipped: Active rules can reject 100% of rows or fire side-effect emails to thousands of customers.
-
Risk if skipped: Choosing Master-Detail late forces re-creating fields and re-loading children because Master-Detail cannot be changed to Lookup after data lands.
-
Risk if skipped: An active integration during sandbox or production load broadcasts thousands of false notifications.
-
Risk if skipped: Blocking Duplicate Rules reject legitimate records during multi-batch loads of the same parent.
1c. People prep
-
Risk if skipped: Without a triage roster, user-reported defects sit unowned and erode trust in the new platform.
Phase 2
Source Export
Pull every byte you will need, with the exact timestamp captured for delta reconciliation.
-
Risk if skipped: Missing the source primary key forces fuzzy matching downstream and reintroduces duplicates.
-
Risk if skipped: Missing CloseDate or Amount blocks Opportunity load because both are required on insert.
-
Risk if skipped: Archived activities in the destination cannot be patched after the fact; capture all needed fields on the first load.
-
Risk if skipped: Line breaks and special characters lost in export cannot be reconstructed.
-
Risk if skipped: Without timestamps, the delta cannot be computed and last-minute source edits are lost.
Phase 3
Transform & Map
Reshape source CSVs into Salesforce-shaped files, with every picklist, stage, and relationship resolved.
3a. Mapping spreadsheet
-
Risk if skipped: Undocumented mappings cause silent drops and unreproducible loads.
-
Risk if skipped: Using a mutable column as upsert key creates duplicates on every re-run.
-
Risk if skipped: Unmapped picklist values trigger ENUM rejection on restricted picklists.
-
Risk if skipped: Unmapped owners default to the migration user and break territory and assignment-rule logic.
3b. Data transformation
-
Risk if skipped: Mismatched timezones shift CloseDate by a day and trip up fiscal-period reporting.
-
Risk if skipped: Silent truncation removes legal company suffixes and breaks downstream matching.
-
Risk if skipped: BOM headers turn the first column name into garbage and break field mapping on the first row.
-
Risk if skipped: Unescaped newlines split one logical row into two, misaligning every subsequent column.
3c. Relationship and audit-trail decisions
-
Risk if skipped: Losing the original CreatedDate breaks aging reports, time-to-close metrics, and historical Activity ordering.
-
Risk if skipped: Re-uploading without staging the binaries first exhausts File Storage and stalls the load.
-
Risk if skipped: Loading children before parents leaves dangling foreign keys and forces a full re-run.
3d. Sales Cloud-specific transforms
-
Risk if skipped: Cross-pipeline stage values cause silent assignment to the default Record Type and break funnel reporting.
-
Risk if skipped: Re-stamping CloseDate spikes the current period's reported revenue and corrupts forecast accuracy.
-
Risk if skipped: Carrying over stale numeric scores collides with the destination's scoring model and confuses sales reps.
-
Risk if skipped: Loading converted leads as open Leads pollutes the Lead queue and double-counts pipeline.
Phase 4
Sandbox Test Migration
Catch every defect in a sandbox before it costs real records in production.
-
Risk if skipped: Testing against stale metadata hides field-level-security and Validation Rule defects.
-
Risk if skipped: Sampling fewer than 10 misses encoding and transformation bugs that affect 1% of rows.
-
Risk if skipped: Unicode astral characters silently truncate at the database layer and corrupt names.
-
Risk if skipped: Lookup-by-external-ID failures point children at the wrong parent and corrupt the whole hierarchy.
-
Risk if skipped: A Trigger firing on insert can exceed the 150 DML statement governor limit and abort a batch partway.
-
Risk if skipped: Skipping volume rehearsal hides bulk throttling and 24-hour load budget consumption that only appears at full scale.
-
Risk if skipped: Proceeding to production without sign-off transfers all sandbox defects into the live org.
Phase 5
Production Cutover
The tightly-sequenced execution window. Idempotent loads, dependency order, and visible row counts.
-
Risk if skipped: Writes after the freeze produce a silent delta that never reaches the destination.
-
Risk if skipped: Active automation fires emails, posts to Slack, and creates downstream records during the load, multiplying side effects by the row count.
-
Risk if skipped: Loading Contacts before their parent Accounts orphans the children and forces a delete-and-reload.
-
Risk if skipped: Without job IDs, error rows cannot be retrieved from the Bulk Data Load Jobs page after the retention window expires.
-
Risk if skipped: Continuing past a variance compounds errors and makes root-cause analysis impossible.
Phase 6
Validate
Prove the migration was correct before opening the org to users.
6a. Reconciliation
-
Risk if skipped: Even a single-record gap can mask a Validation Rule that quietly dropped a class of rows.
-
Risk if skipped: Pipeline drift erodes sales-leader trust on day one of go-live.
6b. Relationship validation
-
Risk if skipped: External ID lookup misses leave Contacts on the wrong Account, breaking territory routing.
-
Risk if skipped: Broken file links surface as user-reported defects in week one and are expensive to retro-fix at scale.
6c. Audit and compliance
-
Risk if skipped: Residency violations discovered later require a Hyperforce region migration and DPA renegotiation.
6d. User-acceptance check
-
Risk if skipped: Skipping UAT defers defect discovery to end users on day one when the support load is already peaked.
6e. Sign-off
-
Risk if skipped: Skipping formal sign-off leaves scope-of-completion ambiguous and reopens the project months later.
Phase 7
Post-Migration Cleanup
Hand the org to its operators, decommission the source, and capture lessons learned.
-
Risk if skipped: Leaving the source writable encourages reps to keep working in the old system, fracturing the source of truth.
-
Risk if skipped: Activating untested Flows on top of migrated data can mass-update or mass-email customers.
-
Risk if skipped: Over-permissive Sharing Rules expose pipeline data to the wrong territory; under-permissive rules block reps from their own records.
-
Risk if skipped: Without retained exports, a forensic question six months in cannot be answered.
Watch list
Risks to track throughout
These risks live across multiple phases — keep an eye on them from kickoff through cutover.
-
Cumulative load volume and storage consumption across test, fix, and reload cycles
Salesforce shares the org's 24-hour load budget and 15,000 daily batch ceiling across sandboxes and production. Sandbox rehearsals, mid-cutover fix-and-reload loops, and parallel integration traffic can compound to exhaust the budget hours before the final load completes. Track cumulative consumption from Phase 4 onward and front-load reruns into off-peak windows.
-
Automation side effects on insert
Validation Rules, Apex Triggers, Workflow Rules, Process Builder flows, and Flows all fire on every bulk insert by default. A single active Trigger can hit the 100 SOQL / 150 DML governor limits and abort a batch. A single active Flow can email thousands of customers. Bypass-condition patterns must be in place before any production load and verified during Phase 4.
-
Picklist ENUM and Record Type / Sales Process mismatches
Restricted picklists reject any value not in the destination's defined set, and Opportunity StageName must be valid for the assigned Record Type's Sales Process. Mismatches surface as per-row rejections that look like generic field errors and are easy to miss in batch logs. Resolve every source value in Phase 3a and re-confirm in Phase 4.
-
Audit-trail loss from missing 'Set Audit Fields' permission
Without the 'Set Audit Fields upon Record Creation' permission on the migration user, CreatedDate is silently re-stamped to the load timestamp and CreatedById is set to the migration user. The original values cannot be patched after insert. Confirm the permission is granted in Phase 1b and verify on a sample in Phase 4 before any production load.
Pair this with the long-form guide
The complete Salesforce Sales Cloud migration guide
Same research, written as prose: data model, import mechanisms, mapping strategy, pitfalls, and partner landscape.