Helpdesk migration
Field-level mapping, validation, and rollback between Dynamics 365 Customer Service and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
Dynamics 365 Customer Service
Source
Salesforce Service Cloud
Destination
Compatibility
10 of 12
objects map 1:1 between Dynamics 365 Customer Service and Salesforce Service Cloud.
Complexity
BStandard
Timeline
5-8 weeks
Overview
Moving from Dynamics 365 Customer Service to Salesforce Service Cloud is a cross-ecosystem migration with structural differences in how support contracts, SLA logic, and routing rules are modelled. Dynamics 365 stores Entitlements as standalone Dataverse rows with allocated hours or case-counts and pause conditions, while Salesforce bundles entitlement terms as a related list on Contact and Account with milestone-based SLA KPIs. We migrate Entitlement records with their terms and remaining balance, preserve SLA instance metadata from open Cases, and flag that active SLA definitions and routing decision tables require manual rebuild in Salesforce's Entitlement and Milestones framework. Knowledge Articles and Omnichannel conversation transcripts migrate as structured records; Power Automate cloud flows do not migrate as data and are inventoried for rebuild in Salesforce Flow.
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.
Source platform
Dynamics 365 Customer Service platform overview
Scorecard, SWOT, gotchas, and pricing for Dynamics 365 Customer Service.
Destination platform
Salesforce Service Cloud platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Service Cloud.
Data migration guide
The complete Salesforce Service Cloud migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Salesforce Service Cloud migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Service Cloud.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Dynamics 365 Customer Service object lands in Salesforce Service Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Dynamics 365 Customer Service
Contact
Salesforce Service Cloud
Contact
1:1Dynamics 365 CE Contact records migrate directly to Salesforce Contact. Email, phone, address, and parent Account linkage transfer as typed fields. We use the contact's emailaddress1 as the dedupe key. Any Dataverse custom fields on Contact migrate as custom fields on the Salesforce Contact object with type-equivalent mapping.
Dynamics 365 Customer Service
Account
Salesforce Service Cloud
Account
1:1Dynamics 365 Account records map to Salesforce Account. AccountNumber, Name, Website, Industry, and the address compound fields migrate directly. Parent Account hierarchy (if used) maps to Salesforce's Parent Account lookup with the same parent-child relationship preserved.
Dynamics 365 Customer Service
Case (Incident)
Salesforce Service Cloud
Case
1:1Dynamics 365 Incident records migrate to Salesforce Case. Title becomes Subject, incidentid becomes the external reference preserved in a custom field d365_incident_id__c, and customerid (Contact or Account lookup) resolves to the migrated Contact or Account Salesforce ID. Case Priority, Status (Active/Waiting/Resolved/Closed), and Origin (Email/Phone/Web) transfer with picklist remapping. Resolution notes and resolved time migrate to Case Resolution fields.
Dynamics 365 Customer Service
Queue
Salesforce Service Cloud
Queue
1:1Dynamics 365 queues migrate to Salesforce Queues. Queue members resolve by matching email to Salesforce User IDs. Queue-scoped record types (Case, Task) map to the equivalent Salesforce object. We flag that Unified Routing skill-based assignment rules and capacity thresholds are routing-logic configuration rather than data and do not migrate; they are documented for rebuild in Salesforce Omni-Channel Routing.
Dynamics 365 Customer Service
Entitlement
Salesforce Service Cloud
Entitlement
lossyDynamics 365 Entitlement records (support contracts with allocated hours or case-counts, channel restrictions, and SLA linkage) map to Salesforce Entitlement records as a related list on Contact or Account. We migrate the entitlement name, type (Hours or Cases), total hours or case count, consumed balance, start and end dates, and the applicable SLA term. Channel restrictions and pause conditions are noted in the mapping document because Salesforce Entitlement Processes handle pause conditions differently and may require configuration adjustment.
Dynamics 365 Customer Service
SLA (SLADefinition + SLAInstance)
Salesforce Service Cloud
Entitlement Process + Milestone
lossyActive SLA instances on open Cases migrate as Salesforce Entitlement records with their SLA KPI targets (First Response Time, Resolution Time) preserved in the entitlement's terms. The SLA definition itself (business hours, warning thresholds, pause conditions) does not migrate as data because Salesforce's entitlement process model is configuration-based. We deliver a written entitlement process design document so the customer's admin rebuilds SLA logic in Salesforce Setup > Entitlement Processes and Business Hours.
Dynamics 365 Customer Service
Knowledge Article
Salesforce Service Cloud
Knowledge Article (Lightning Knowledge)
1:1Dynamics 365 Knowledge Articles migrate to Salesforce Lightning Knowledge as Salesforce KnowledgeArticleVersion records. Article title, content (HTML body), language, status, and version number transfer. We flatten nested Dataverse knowledge category assignments to Salesforce Data Category Groups for article taxonomy. If the source uses multi-language articles, each language version migrates as a separate Salesforce article version. Customers choosing Salesforce Knowledge must have Knowledge enabled in their Service Cloud edition (requires Enterprise or above for Lightning Knowledge).
Dynamics 365 Customer Service
Activity (Email, Phone Call, Task, Appointment)
Salesforce Service Cloud
Task, Event, EmailMessage
1:1Dynamics 365 ActivityPointer records (Email, Phone Call, Task, Appointment) migrate to Salesforce equivalents. Polymorphic regardingobjectid resolves to the migrated Contact, Account, or Case Salesforce ID at migration time. Email activities land as Salesforce EmailMessage records linked to Tasks; phone calls migrate as Task with TaskSubtype=Call; appointments migrate as Event; standalone tasks migrate as Task with Status, Priority, and ActivityDate preserved.
Dynamics 365 Customer Service
Omnichannel Conversation Session + Message
Salesforce Service Cloud
CaseComment or EmailMessage
1:1Omnichannel chat, voice, SMS, and social session transcripts from Dynamics 365 are stored in the msdyn_ocliveworkitem and msdyn_ocsession tables. We export the session transcript text and metadata (channel type, session start/end, agent assigned) and migrate it as CaseComment records appended to the related Case, or as EmailMessage records if the transcript contains structured email threads. Channel attachments (voice recordings, chat files) require re-upload to Salesforce Files or external storage since binary channel assets do not transfer as part of a standard record migration.
Dynamics 365 Customer Service
Custom Dataverse Table
Salesforce Service Cloud
Custom Object (__c)
1:1Customers who extended the Dynamics 365 data model with custom Dataverse tables and columns migrate these to Salesforce custom objects. We pre-create the destination custom object schema with all custom fields, lookup relationships to standard objects (Contact, Account, Case), and picklist option values before any data import. Option-set values from Dataverse migrate as Salesforce picklist values with matching labels. Many-to-many intersection tables map to Salesforce junction objects with two lookup relationships.
Dynamics 365 Customer Service
Note (Annotation)
Salesforce Service Cloud
Note or ContentNote
1:1Dynamics 365 Notes stored on the Annotation table migrate to Salesforce Notes linked via ContentDocumentLink to the parent Contact, Account, Case, or custom object. The note body (rich text) transfers as-is; file attachments stored as Annotation's fileattachment migrates as Salesforce ContentVersion and ContentDocumentLink.
Dynamics 365 Customer Service
Power Automate Cloud Flows
Salesforce Service Cloud
Flow (rebuild required)
1:1Cloud flows that trigger on Case create, update, or status change live in Power Automate outside of Dataverse and cannot be exported as part of a normal record migration. We do not migrate flows as data. We deliver a written inventory of every active cloud flow with its trigger, conditions, actions, and a recommended Salesforce Flow equivalent. The customer's admin or a Salesforce partner rebuilds them post-migration. Flows referencing external Microsoft endpoints (SharePoint, Teams, Power BI) may require re-authentication or alternative connectors in Salesforce.
| Dynamics 365 Customer Service | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Account | Account1:1 | Fully supported | |
| Case (Incident) | Case1:1 | Fully supported | |
| Queue | Queue1:1 | Fully supported | |
| Entitlement | Entitlementlossy | Fully supported | |
| SLA (SLADefinition + SLAInstance) | Entitlement Process + Milestonelossy | Fully supported | |
| Knowledge Article | Knowledge Article (Lightning Knowledge)1:1 | Fully supported | |
| Activity (Email, Phone Call, Task, Appointment) | Task, Event, EmailMessage1:1 | Fully supported | |
| Omnichannel Conversation Session + Message | CaseComment or EmailMessage1:1 | Fully supported | |
| Custom Dataverse Table | Custom Object (__c)1:1 | Fully supported | |
| Note (Annotation) | Note or ContentNote1:1 | Fully supported | |
| Power Automate Cloud Flows | Flow (rebuild required)1: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.
Dynamics 365 Customer Service gotchas
Service Protection API limits will throttle bulk migration loads
OData v4 paging caps reads at 5,000 records per page
Power Automate flows do not migrate as data
Licensing tier gates which capabilities migrate cleanly
Omnichannel conversation history is fragmented across channels
Salesforce Service Cloud gotchas
Data Export 512MB file size cap breaks large org exports
API Daily Request Limits vary by license edition
No automatic data backup in base Salesforce
Picklist dependencies silently break records when unmapped
Workflow rules fire unexpectedly during data load
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the source Dynamics 365 Customer Service environment across tier (Professional, Enterprise, Premium), active Dataverse tables, custom tables and columns, SLA definitions, entitlement inventory, active Power Automate cloud flows, and Omnichannel configuration. We pair this with a Salesforce Service Cloud edition decision: Starter ($25/user) covers basic case management; Professional ($75/user) adds email-to-case and web-to-case; Enterprise ($150/user) unlocks entitlement processes, Salesforce Knowledge, and Omni-Channel routing; Unlimited ($300/user) adds 24x7 support. The discovery output is a written migration scope with a feature delta report between the source and destination tiers.
Schema design and SLA entitlement mapping
We design the destination Salesforce Service Cloud schema. This includes provisioning custom objects (with __c API names matched to Dataverse table names), custom fields on Case, Contact, and Account, Salesforce Knowledge article types (if migrating knowledge articles), Entitlement Processes and Business Hours for SLA rebuild, Omni-Channel routing configuration (Capacity Profile, Presence, and Work Item assignment rules for rebuild by admin), and Record Types for Cases. The SLA and entitlement mapping document is produced during this phase to guide admin rebuild post-migration.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-like data volume. The customer's service operations lead reconciles record counts (Contacts in, Accounts in, Cases in, Entitlements in, Activities in), spot-checks 25-50 random records against the Dynamics 365 source, and validates that entitlement balances and SLA terms transferred correctly. Any mapping corrections happen in the sandbox before production migration begins. The knowledge article taxonomy is validated against the source Dataverse knowledge category hierarchy.
Data export under Service Protection limits
We export data from Dynamics 365 using the Dataverse Web API with OData $batch requests chunked to 1,000 operations per batch. A dedicated application user avoids throttling against named user Service Protection limits. Large tables (Activities, Case history, Omnichannel sessions) are paginated via @odata.nextLink with progress checkpoints persisted between pages. Each exported table is validated against the source row count before transformation begins.
Production migration in dependency order
We run production migration in record-dependency order: Contacts and Accounts (parent records first), Entitlements (linked to Contact/Account), Cases (with AccountId, ContactId, and EntitlementId resolved from the migrated records), Knowledge Articles (after Cases so that article-to-case linkage resolves), Activity history (Tasks, Events, EmailMessages via Bulk API 2.0), Omnichannel transcripts (as CaseComment or EmailMessage appended to migrated Cases), and custom Dataverse tables (last because they often have lookups to standard objects). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and SLA rebuild handoff
We freeze Dynamics 365 writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce Service Cloud as the system of record. We deliver the SLA entitlement design document, the Power Automate flow inventory, and the Omnichannel routing configuration checklist to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues raised by the service team. We do not rebuild SLA logic in Salesforce or reconfigure Omni-Channel routing inside the migration scope; those are admin tasks or separate configuration engagements.
Platform deep dives
Dynamics 365 Customer Service
Source
Strengths
Weaknesses
Salesforce Service Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 1 of 7 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Customer Service and Salesforce Service Cloud.
Object compatibility
1 of 7 objects need a manual workaround.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Dynamics 365 Customer Service: Service Protection API limits — roughly 6,000 requests per user per rolling 5-minute window per web server; 429 responses include Retry-After header.
Data volume sensitivity
Dynamics 365 Customer Service exposes a bulk API — large-volume migrations stream efficiently.
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 Dynamics 365 Customer Service to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Customer Service to Salesforce Service 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 Dynamics 365 Customer Service
Other ways to arrive at Salesforce Service Cloud
Same-Helpdesk migrations
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.