· Benjamin Grec · CRM Architecture · 8 min read
The Salesforce to SuiteCRM Migration Playbook: A Week-by-Week Guide
Migrating off Salesforce is not technically complex — but it requires a precise sequence to avoid losing data, breaking automations, or creating a two-week outage for your sales team. Here is the playbook we use.
The decision to migrate off Salesforce is often made in a spreadsheet: you run the per-seat math, you look at your utilization, and the conclusion is obvious. The harder part is the execution.
This post is the operational playbook we use for Salesforce to SuiteCRM migrations — a week-by-week sequence designed to move your data, rebuild your workflows, and get your team live without a two-week CRM blackout.
It assumes a B2B sales org with a single Salesforce org, 5–40 reps, standard objects (Accounts, Contacts, Leads, Opportunities, Activities), and some basic automation (Process Builder or Flow rules). If you have deeply customized objects, managed packages, or a complex territory model, this playbook applies with modifications.
Before You Start: What You Are Actually Moving
Most Salesforce orgs contain more data than you will want to migrate. Before you export anything, make a deliberate decision about scope:
Move everything:
- Accounts (all, with hierarchy where applicable)
- Contacts linked to active Accounts
- Open Opportunities
- Closed Won Opportunities from the past 24 months
- Activity history for the past 12 months (calls, emails, meetings)
- All active Tasks
Archive, do not migrate:
- Closed Lost Opportunities older than 24 months
- Inactive Contacts with no recent activity
- Activity history older than 12 months (export to CSV and store offline)
Do not migrate:
- Chatter posts and internal notes (extract key ones manually)
- Report and dashboard configurations (rebuild natively in SuiteCRM)
- Any managed package data specific to tools you are also replacing
Tightening this scope before export saves you hours of data cleaning and prevents SuiteCRM from being polluted with stale records on day one.
Week 1: Audit and Architecture
Day 1–2: Document your Salesforce data model
Export the following from Salesforce Setup:
- All custom fields on every object you are migrating (Setup → Object Manager → Fields)
- All Validation Rules (note which ones enforce business logic you need to preserve)
- All automation rules, Process Builder flows, and Workflows currently active
- Your current user list and permission sets
Do not try to recreate everything in SuiteCRM. This is your chance to cut technical debt. For each custom field, ask: do we actually use this? For each automation: is this still current, or was it built for a process that changed 18 months ago?
Day 3–5: Build the SuiteCRM field map
Create a spreadsheet with three columns:
- Salesforce field (API name + label)
- SuiteCRM equivalent (built-in field, or “create custom”)
- Migration notes (data type, picklist values, required or not)
SuiteCRM covers most standard objects natively. The fields that require custom creation are typically the ones that were also custom in Salesforce — you are not gaining complexity, just moving it.
Deploy SuiteCRM on your target infrastructure this week. Get it running, accessible over HTTPS, and connected to your team’s SSO or email provider. Do not import any data yet — you are building the container before filling it.
Week 2: Build the Foundation
Configure SuiteCRM before the data arrives
This is the most common mistake in DIY migrations: importing data before the system is configured, then discovering your picklist values do not match and every Opportunity stage is wrong.
Do this first, in order:
- Create all custom fields from your field map. Match data types exactly (text, integer, currency, dropdown).
- Configure picklist values for every dropdown field. Your Opportunity stages should match your actual sales process, not Salesforce defaults and not SuiteCRM defaults. Define them now.
- Set up validation rules for your minimum viable data standards — at minimum, required close date and value on Opportunity creation.
- Create users and assign roles. SuiteCRM uses a role hierarchy similar to Salesforce profiles. Map your existing permission levels.
- Configure email integration (SMTP outbound, IMAP inbound sync) and test it with a real account.
At the end of Week 2, SuiteCRM should be fully configured and ready to accept data — just empty.
Week 3: Data Export and Transformation
Export from Salesforce
Use Salesforce’s Data Export Wizard (Setup → Data → Data Export) or the Data Loader for large object volumes. Export to CSV.
Export in this order to preserve relationship integrity:
- Accounts
- Contacts (after Accounts, since they reference Account IDs)
- Leads
- Opportunities (after Accounts)
- OpportunityContactRoles (junction object)
- Events and Tasks (after Contacts and Opportunities)
Transform the CSVs
This step always takes longer than expected. Common transformations:
- ID remapping: Salesforce uses 18-character IDs. SuiteCRM will generate its own IDs on import. You will need to maintain a mapping table (Salesforce ID → SuiteCRM ID) to wire up relationships post-import.
- Picklist values: Any dropdown fields need their values mapped from Salesforce labels to SuiteCRM labels. A mismatched picklist value on import is not an error — it silently creates an invalid selection.
- Date formats: Salesforce exports dates as
YYYY-MM-DDThh:mm:ss.000Z. SuiteCRM imports expectYYYY-MM-DD. Strip the time component. - Currency: Salesforce may include currency codes inline (e.g.,
$50,000.00 USD). Strip to plain numeric. - Boolean fields:
true/falsevs.1/0— check SuiteCRM’s expected format for checkboxes.
Use a script or a tool like csvkit to automate the transformations. Do not do this manually in Excel for any dataset over a few hundred rows.
Week 4: Staged Import and Validation
Import in a staging environment first
You should have a staging instance of SuiteCRM (a separate Docker container) for this purpose. Never import directly to production.
Import in relationship order:
- Accounts → validate count matches Salesforce export
- Contacts (with Account ID mapped to SuiteCRM Account IDs)
- Leads
- Opportunities (with Account ID mapped)
- Activities (with Contact and Opportunity IDs mapped)
Validation checks after each import:
- Record count: does SuiteCRM count match your export CSV row count (minus header)?
- Relationship integrity: spot-check 20 Accounts — do their linked Contacts appear correctly?
- Picklist values: filter Opportunities by Stage — do all expected stages appear? Any “other” or blank values indicate mapping errors.
- Currency fields: do Opportunity amounts display correctly with no corrupt values?
- Dates: do close dates display as expected?
Fix transformation errors in your CSVs and re-import. It usually takes 2–3 import cycles on staging before the data is clean. This is normal.
Week 5: Automation Rebuild and Testing
Rebuild your automations
SuiteCRM has three automation layers:
- Workflow (legacy): simple if-then triggers, similar to Salesforce Workflow Rules
- AOW_WorkFlow module: more powerful multi-step automation
- Integration with n8n (if using the managed stack): handles complex cross-system automation that outgrows SuiteCRM’s native logic
For each automation rule you documented in Week 1, decide: rebuild natively in SuiteCRM, or build as an n8n workflow? As a rule of thumb, anything that only touches SuiteCRM data stays in SuiteCRM. Anything that crosses system boundaries (email send, Slack notification, external API call) goes in n8n.
Test every automated flow in staging against realistic data scenarios. Use your actual reps as testers — have them create test records, advance opportunity stages, and log activities, while you monitor which automations fire.
Week 6: Cutover and Go-Live
48 hours before cutover:
- Export a final delta from Salesforce (any records created/modified in the past week)
- Apply the delta to your SuiteCRM production instance using the same transformation and import process
- Lock Salesforce to read-only for all users (you can do this via permission sets or simply by communicating)
Cutover day:
- Import the final delta to production SuiteCRM
- Validate record counts match
- Enable SuiteCRM access for all users
- Conduct a 60-minute live walkthrough with the full team — not a training session, just a “here is where everything is” orientation
First week post-cutover:
- Have someone monitoring SuiteCRM daily for the first 5 business days — data issues surface quickly when reps start using the system
- Keep Salesforce in read-only mode for 30 days before cancelling the subscription (not deactivating — you may need to reference historical data)
- Log every issue reps report in a shared doc and address each within 24 hours
The Most Common Things That Go Wrong
Automation gaps: You will discover automations you forgot to document in Week 1 because no one knew they existed. They surface the first time a rep asks “why didn’t I get a notification when this deal stage changed?” Keep a backlog and address them within the first two weeks.
Data quality discoveries: Migration forces a data audit. You will find duplicate accounts, contacts with missing phone numbers, and opportunities with no close date. This is the right time to fix it — resist the urge to import dirty data and fix it “later.”
Rep resistance: Some reps will not like the change regardless of how smooth the migration is. Address this before go-live with clear messaging about why the change was made (cost, control, no per-seat fees as the team grows). The manager’s reinforcement in the first two weeks determines whether adoption sticks.
Missing integrations: Salesforce has a large app ecosystem. Audit every tool currently integrated with Salesforce before migration and confirm that each either has a SuiteCRM connector, an n8n workflow, or is no longer needed.
This is the playbook we execute for every Salesforce to SuiteCRM migration at Better Growth Systems. Most engagements take 6–8 weeks depending on data volume and automation complexity.
If you are considering a migration, the best first step is understanding what your Salesforce data model actually looks like and where the complexity sits. That is what we cover in the strategy call — free, no commitment, and it will tell you whether the effort is worth it for your specific situation.