CRM migration
Field-level mapping, validation, and rollback between Data Team DDS and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Data Team DDS
Source
Salesforce Sales Cloud
Destination
Compatibility
11 of 12
objects map 1:1 between Data Team DDS and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
5–7 days
Overview
Teams migrate to Salesforce Sales Cloud when their current CRM lacks the customization depth, reporting scale, or ecosystem integrations that enterprise-grade sales operations demand. Salesforce enforces a fundamentally different schema model than most source CRMs — a split between Leads and Contacts, record-type-keyed opportunity stages, and field-level security that gates visibility at the column level. The migration carries standard CRM objects (contacts, companies, deals, activities, custom objects) from Data Team DDS into Salesforce's record-type and page-layout model. The hardest problems are mapping source lifecycle or status fields to Salesforce's separate Lead and Contact objects, preserving association labels through Salesforce's sharing rules, and getting RecordTypeId assignment correct per deal type before field mapping can proceed cleanly. Automations, workflows, sequences, and email templates do not migrate — they must be rebuilt in Salesforce Flow or the appropriate automation tool, and FlitStack exports definitions as a rebuild reference. We sequence the migration so foreign keys resolve correctly (Accounts before Contacts, Contacts before Opportunities), run a representative sample with field-level diff before the full run, and capture any in-flight changes during cutover through a 24–48 hour delta-pickup window. We use Salesforce Bulk API for large record volumes and standard REST API for smaller datasets or complex field transformations.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Data Team DDS object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Data Team DDS
Contact
Salesforce Sales Cloud
Contact
1:1Direct 1:1 map for contacts that route to the Contact object. Salesforce requires AccountId for most contact operations — contacts without a primary company in the source land on a default 'Unassigned' Account or are flagged for your admin to resolve before migration runs.
Data Team DDS
Contact (lifecycle-stage in [lead, mql, sql, customer, evangelist])
Salesforce Sales Cloud
Lead / Contact (split by final lifecycle value)
1:manyContacts ending at 'Customer' or 'Evangelist' route to Salesforce Contact. All other lifecycle values route to Salesforce Lead. The split happens based on the final lifecycle value at migration time — stage-transition history is preserved as Lifecycle_Stage_History__c custom field for audit continuity.
Data Team DDS
Company
Salesforce Sales Cloud
Account
1:1Direct map. HubSpot company hierarchies (parent/child) preserved using Salesforce's Parent Account field. Multi-company contacts collapse to one primary AccountId with Account Contact Relations for the rest — your admin chooses the primary-company selection rule before migration. If a contact is linked to more than one company, each additional company appears as an Account Contact Relationship, preserving the original association label and any related custom fields.
Data Team DDS
Deal
Salesforce Sales Cloud
Opportunity
1:1Direct map. Each deal's pipeline maps to a Salesforce Sales Process tied to a record type. The deal's stage, amount, close date, and owner all migrate as Opportunity fields. Deal name becomes Opportunity Name, and deal amount maps directly to the Amount field.
Data Team DDS
Pipeline
Salesforce Sales Cloud
Sales Process + Record Type
1:1HubSpot pipeline becomes a Salesforce Sales Process keyed by RecordTypeId. Each pipeline requires its own record type in Salesforce so that stage pick-list values and page layouts are scoped correctly per deal type. Your admin pre-creates record types before migration — we deliver the setup plan.
Data Team DDS
Pipeline Stage
Salesforce Sales Cloud
Opportunity Stage
1:1Stage names map value-by-value per record type. Stage probability, forecast category, and stage-entered timestamps are re-applied based on Salesforce's stage model. We preserve the original stage-enter date as a custom datetime field so reporting continuity is maintained after go-live. During migration, each stage transition also records the Salesforce StageName that corresponds to the source stage name, ensuring that historical pipeline reporting reflects the same milestones.
Data Team DDS
Lifecycle Stage
Salesforce Sales Cloud
Custom field (Lifecycle_Stage__c) on Lead and Contact
1:1Salesforce has no native lifecycle-stage equivalent. We migrate the field as a custom pick-list (Lifecycle_Stage__c) on both Lead and Contact. Stage-changed timestamps are preserved as Lifecycle_Stage_Updated__c custom datetime fields. Salesforce admins configure the pick-list values to match source values during schema setup.
Data Team DDS
Activity (call, email, meeting, note)
Salesforce Sales Cloud
Task / Event / Note
1:1HubSpot calls and emails map to Salesforce Tasks with Type='Call' or Type='Email'. Meetings map to Events with original start/end times preserved. Notes map to Salesforce Notes (not legacy Note object). Original timestamps, owners, and parent-record links are preserved; activity-to-record associations are re-established in Salesforce.
Data Team DDS
Custom Object
Salesforce Sales Cloud
Custom Object
1:1Custom objects map 1:1 to Salesforce custom objects. Custom object associations that use a HubSpot N:N model need Salesforce junction objects when the relationship is many-to-many — we surface this in the migration plan and your admin defines the junction object structure before migration.
Data Team DDS
Attachment / File
Salesforce Sales Cloud
Salesforce Files (ContentDocument / ContentVersion)
1:1File attachments on records are re-uploaded to Salesforce Files. Salesforce's default file size limit is 25 MB per file — files exceeding this are flagged before migration so your team can decide whether to split, compress, or store externally. Inline images in notes are downloaded and rehosted in Salesforce.
Data Team DDS
Workflow / Automation
Salesforce Sales Cloud
Salesforce Flow
1:1Workflows and automations are platform-native constructs that do not have a direct migration path to Salesforce. FlitStack exports workflow definitions as a rebuild reference document for your Salesforce admin. Automations must be rebuilt in Salesforce Flow — the exported definitions serve as the functional spec for the rebuild.
Data Team DDS
Report / Dashboard
Salesforce Sales Cloud
Report / Dashboard
1:1Reports and dashboards are configuration artifacts that do not migrate. The underlying data that reports reference does migrate, so report bodies can be rebuilt on migrated data after go-live. FlitStack exports report and dashboard names and configurations as a reference list for your Salesforce admin.
| Data Team DDS | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Contact (lifecycle-stage in [lead, mql, sql, customer, evangelist]) | Lead / Contact (split by final lifecycle value)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline | Sales Process + Record Type1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stage1:1 | Fully supported | |
| Lifecycle Stage | Custom field (Lifecycle_Stage__c) on Lead and Contact1:1 | Fully supported | |
| Activity (call, email, meeting, note) | Task / Event / Note1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Attachment / File | Salesforce Files (ContentDocument / ContentVersion)1:1 | Fully supported | |
| Workflow / Automation | Salesforce Flow1:1 | Fully supported | |
| Report / Dashboard | Report / Dashboard1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Data Team DDS gotchas
No publicly documented public API found in research
Custom field schema varies per practice account
Insurance payer mappings are state and plan-specific
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Stand up Salesforce schema first
Before any data moves, your Salesforce admin (or our team) creates the record types, page layouts, and custom fields needed for the migration. We deliver a schema setup plan based on your Data Team DDS pipeline count, custom property count, and lifecycle-stage configuration so the Salesforce side is ready before validation runs. If record types are missing, field mapping cannot scope per pipeline and data will land in the wrong stage pick-list.
Resolve owners and users by email
Salesforce users are matched against Data Team DDS owner IDs by email. Unmatched owners are flagged before migration — your team either invites them to Salesforce first or assigns their records to a fallback owner. No record lands in Salesforce without a valid OwnerId. This step also surfaces any archived or deactivated users in the source that may need special handling.
Migrate accounts before contacts before opportunities
Salesforce enforces a dependency chain: Accounts must exist before Contacts (via AccountId), and Contacts must exist before Opportunities (via Opportunity Contact Roles). We sequence the migration so foreign keys resolve correctly — Companies → Accounts first, then Contacts and Leads split by lifecycle stage, then Deals → Opportunities with stage and RecordTypeId mapping per pipeline. Custom objects and their junction relationships are sequenced based on the dependency graph your admin defines during planning.
Run a sample migration with field-level diff
Run a sample migration with field-level diff: A representative slice migrates first — typically 100–500 records spanning contacts, companies, deals, and a few activities. We generate a field-level diff between source and destination so you can verify lifecycle-stage routing, pipeline-to-record-type mapping, owner resolution, and file re-upload before the full run commits. Any mapping corrections happen at this stage, not during the production migration. The diff report highlights any missing field mappings and flags data quality issues, such as duplicate emails or invalid country codes, before the production run.
Cut over with delta-pickup for in-flight records
The full migration runs against Salesforce using Bulk API for large volumes. A delta-pickup window (typically 24–48 hours) captures any records created or modified in Data Team DDS during the cutover so Salesforce reflects the final state at go-live. Our audit log captures every operation, and one-click rollback is available if reconciliation fails. Your team continues working in Data Team DDS throughout — FlitStack uses scoped read access only.
Platform deep dives
Data Team DDS
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Data Team DDS and Salesforce Sales Cloud.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Data Team DDS: Not publicly documented.
Data volume sensitivity
Data Team DDS doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Data Team DDS to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Data Team DDS to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Data Team DDS
Other ways to arrive at Salesforce Sales Cloud
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.