Moving to Salesforce is a decision most businesses make with confidence. The problems start when they underestimate what it takes to bring their data along for the ride.
Your customer records, deal history, contacts, and activity logs don’t just copy across cleanly. They come from a system with a completely different structure, accumulated over years with inconsistent standards, duplicate entries, and fields that don’t have a direct equivalent in Salesforce. Getting that data into Salesforce correctly so your team actually trusts what they see requires deliberate preparation, not just a bulk export and import.
One of the most common scenarios we see is teams migrating from HubSpot to Salesforce as they outgrow HubSpot’s reporting and customisation limits. The core challenge is structural: HubSpot’s contact-centric model does not map directly to Salesforce’s account-contact-opportunity hierarchy, which means every relationship between records needs to be explicitly rebuilt during migration, not assumed.
The best practices below apply regardless of where your data is coming from. Follow them and you will go live with clean, reliable data. Skip them and you will spend the first few months of your Salesforce rollout fixing problems that could have been avoided.
1. Know What You’re Working With Before You Start
The most expensive mistake in any migration is starting without understanding the condition of your source data. Teams consistently overestimate how clean their data is because the legacy system was never enforcing the standards Salesforce will.
Before you scope the migration, run a data audit. Count your records across every source the CRM, spreadsheets, any other system that holds customer data. Check what percentage of records are missing fields that Salesforce will require. Identify your duplicate rate. Understand where your data model differs from Salesforce’s object structure.
For teams new to Salesforce, knowing what to look for in an audit is not always obvious. A Salesforce consulting engagement before the migration begins is one of the most effective ways to structure the audit correctly, interpret the findings, and turn them into a project scope that reflects the real work involved rather than the optimistic version.
2. Decide What You’re NOT Migrating
You do not need to move everything. In fact, migrating everything is usually the wrong call.
Data that is three to five years old has limited operational value in most businesses. It clutters your search results, inflates your storage costs, and makes deduplication harder. More importantly, every record you migrate is a record you have to audit, clean, map, and test.
This decision is especially important when moving from a long-running enterprise system. Teams migrating from Microsoft Dynamics to Salesforce often have ten or more years of accumulated records in Dynamics, much of which is tied to closed accounts, inactive contacts, or superseded product lines. Bringing it all across inflates the migration scope without adding value. Set a cut-off date, get it signed off by your sales and operations leads, and treat any request to expand it as a formal change.
3. Clean Your Data in the Source System, Not in Salesforce
Once dirty data is inside Salesforce, it is significantly harder to fix. Automation fires on every change, users are working in the system simultaneously, and the corrections are slower and more disruptive. The right time to clean is before the migration begins.
Cleaning covers four things: removing duplicates and deciding which record to keep; standardising formats so phone numbers, dates, and addresses match what Salesforce expects; filling in required fields that are empty in the legacy system; and normalising picklist values so they align with the values defined in your Salesforce configuration.
Teams migrating from Zoho to Salesforce frequently encounter this challenge: Zoho’s more permissive data entry rules mean records have accumulated without the field-level discipline Salesforce enforces. Phone number formats, incomplete company names, and missing account associations are common. Treating cleansing as something that will happen ‘during migration’ is how projects run four weeks over schedule.
4. Map Every Field Before Loading Anything
A field mapping document defines exactly how each field in your source system translates to a field in Salesforce the object name, the API field name, the data type, and any transformation logic that needs to be applied. It is the specification the technical team works from and the document that resolves disputes after go-live.
Build this document with both your technical team and your business stakeholders. Technical teams know the Salesforce data model. Business stakeholders know what the data actually means which date field is the real contract date, which industry classification drives territory segmentation. You need both perspectives to get the mapping right.
Field mapping complexity increases significantly when product, pricing, or quoting data is involved. Teams handling a Salesforce CPQ to Revenue Cloud migration as part of the same project need a separate mapping exercise for the pricing rules, product catalog structure, and approval workflow logic these cannot be folded into the core CRM field map without creating gaps. Get written sign-off from each data owner before any loading begins.
5. Turn Off Automation Before You Load
Every validation rule, trigger, workflow, and Flow that is active in your Salesforce org will fire on every record you load during migration. This produces errors, creates unwanted related records, and if you forget to also disable email deliverability sends automated emails to thousands of your customers based on records being created by an import batch.
Before any load: disable all active automation and document everything you turn off. Disable email deliverability in Salesforce Setup. Run the migration. Validate the data. Then re-enable automation deliberately, one layer at a time, testing each one before proceeding.
This is particularly easy to overlook when the migration includes support data. In a Zendesk to Salesforce migration, case records being loaded into Service Cloud can trigger assignment rules, escalation workflows, and SLA timers that were built for live tickets not historical imports. Every layer of automation needs to be off before the first record loads.
6. Test in Sandbox, Never Touch Production Until You’re Ready
Every migration cycle, including pilot runs and full dry runs, happens in a sandbox that mirrors your production configuration. Sandbox testing is not bureaucratic caution; it is the mechanism that lets you discover and fix problems without consequences.
Start with a pilot load: five to ten percent of your total records, selected to represent the range of data types and relationships in your full dataset. That small load will surface more issues than any planning meeting. Fix everything it reveals before running the full load.
The sandbox used for migration testing should mirror your production org as closely as possible. If your Salesforce implementation is still being configured at the time migration testing begins, coordinate with the implementation team to ensure custom objects, validation rules, and page layouts are deployed to the sandbox before any migration data is loaded into it. Testing against an incomplete configuration produces results that do not reflect production.
Plan for two to four complete end-to-end migration cycles before your production cutover. The first surfaces issues. The second confirms fixes. By the third or fourth, the process is stable and predictable.
7. Validate That the Data Actually Works, Not Just That It Loaded
A matching record count is a starting point, not a sign-off. You also need to verify that relationships are intact. Contacts linked to the right Accounts, Opportunities to the right Contacts. Spot-check field values against the source system. And have actual users walk through real workflows to confirm the system behaves correctly with the migrated data.
User Acceptance Testing should involve the people who will use Salesforce every day, not just the project team. They will find things the technical team misses because they understand how the data should look and behave in context. Treat any discrepancy they raise as a blocker. Fix it before go-live, not after.
8. Freeze the Source System Before Cutover
If users are still creating and updating records in your legacy system while the final migration is running, those changes will not be captured in Salesforce. You go live with a gap between the two systems that requires manual reconciliation.
Define a data freeze date the point at which the legacy system becomes read-only. Communicate it to the whole team at least two weeks in advance. From that date forward, any new data entry happens in Salesforce. This is a change management step as much as a technical one.
9. Set Up Data Governance Before You Go Live
The clean data state you worked hard to achieve during migration will degrade within months if you do not protect it. Users will enter records without required fields. Duplicates will accumulate. Picklist values will drift. Within a year you are looking at another cleanup project.
Before go-live, put four things in place: duplicate management rules to catch duplicate Accounts and Contacts at entry; required field validation rules for the fields that matter most for reporting; a named data owner for each primary object; and a scheduled data audit quarterly is sufficient for most teams.
For teams without a dedicated Salesforce administrator in-house, a Salesforce managed services arrangement covers ongoing governance, regular data audits, duplicate resolution, and configuration updates without the overhead of a full-time hire. Governance does not need to be complex. It needs to exist from day one.
Quick Reference: 9 Best Practices at a Glance
| # | Best Practice | What It Prevents |
| 1 | Audit your data before scoping | Budget and timeline surprises mid-project |
| 2 | Define what NOT to migrate | Bloated scope, storage waste, noisy data |
| 3 | Clean data in the source system | Dirty data loading into Salesforce |
| 4 | Map every field, get sign-off | Wrong field placement, post-launch disputes |
| 5 | Disable automation + email deliverability | Load errors, unwanted emails, data corruption |
| 6 | Test in sandbox, run multiple dry runs | Failed or unstable production cutover |
| 7 | Validate relationships and run UAT | Data integrity issues found after go-live |
| 8 | Freeze source data before cutover | Gap between legacy system and Salesforce at go-live |
| 9 | Set up data governance before go-live | Data quality degradation in the months after migration |
FAQs
How long does it take to migrate data to Salesforce?
It depends almost entirely on data quality. A small business moving clean data from a single CRM can complete the migration in one to two weeks. Mid-market businesses with messy data across multiple sources typically need four to eight weeks. The cleansing phase is usually the longest and the one most underestimated at the start.
What data should I migrate to Salesforce?
Migrate what your team will actually use: active accounts, current contacts, recent opportunities, and enough activity history for ongoing context. Draw a cut-off line — typically three to five years — and archive anything older. The goal is a clean, useful Salesforce instance, not a replica of everything that ever existed in the old system.
What is the correct order to migrate Salesforce objects?
Always load parent objects before child objects. The standard sequence is Accounts, then Contacts, then Opportunities, then Cases, then Activity records. Loading child records before their parent records exist in Salesforce breaks relationships and creates orphaned records that are difficult to fix at scale.
What happens if I forget to disable automation during migration?
Active validation rules will reject records that fail their criteria. Active triggers will fire on every inserted record, potentially creating unwanted related records or corrupting related data. Active email automation will send messages to every contact whose record is created by the import. Always disable all automation before loading, and restore it deliberately afterward.
How do I maintain data quality after the migration?
Put duplicate management rules, required field validation, and a named data owner in place before go-live. Schedule a data quality review quarterly. The migration creates a clean starting point; governance keeps it clean. Without it, the data quality problems you spent weeks fixing will return within months.
Hasan Mustafa
Engineering Manager Salesforce at Folio3
Hasan Mustafa delivers tailored Salesforce solutions to meet clients' specific requirements, overseeing the implementation of scenarios aligned with their needs. He leads a team of Salesforce Administrators and Developers, manages pre-sales activities, and spearheads an internal academy focused on educating and mentoring newcomers in understanding the Salesforce ecosystem and guiding them on their professional journey.