Helpdesk migration

Migrate from Dynamics 365 Customer Service to Salesforce Service Cloud

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 logo

Dynamics 365 Customer Service

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

83%

10 of 12

objects map 1:1 between Dynamics 365 Customer Service and Salesforce Service Cloud.

Complexity

BStandard

Timeline

5-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Dynamics 365 Customer Service logo

Dynamics 365 Customer Service

What's pushing teams away

  • Total cost of ownership escalates quickly: Premium sits at $195/user/month with annual increases, and most organisations also pay for Power Platform requests, Dataverse storage, and partner implementation fees on top.
  • The customer service hub UI is cluttered for new agents, the mobile app is feature-limited, and meaningful customisation requires JavaScript and Power Fx skills rather than the click-to-configure experience the marketing implies.
  • Microsoft support quality is reportedly inconsistent — resolution times vary widely by channel and region, which becomes painful when production Cases stall on a platform issue rather than an agent issue.
  • Setup and go-live timelines run long because the platform's breadth (queues, routing rules, entitlements, SLAs, knowledge taxonomy, Copilot prompts, Power Automate flows) requires deliberate configuration rather than out-of-the-box defaults.

Choosing

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How Dynamics 365 Customer Service objects map to Salesforce Service Cloud

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

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

Dynamics 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

maps to

Salesforce Service Cloud

Account

1:1
Fully supported

Dynamics 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)

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

Dynamics 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

maps to

Salesforce Service Cloud

Queue

1:1
Fully supported

Dynamics 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

maps to

Salesforce Service Cloud

Entitlement

lossy
Fully supported

Dynamics 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)

maps to

Salesforce Service Cloud

Entitlement Process + Milestone

lossy
Fully supported

Active 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

maps to

Salesforce Service Cloud

Knowledge Article (Lightning Knowledge)

1:1
Fully supported

Dynamics 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)

maps to

Salesforce Service Cloud

Task, Event, EmailMessage

1:1
Fully supported

Dynamics 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

maps to

Salesforce Service Cloud

CaseComment or EmailMessage

1:1
Fully supported

Omnichannel 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

maps to

Salesforce Service Cloud

Custom Object (__c)

1:1
Fully supported

Customers 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)

maps to

Salesforce Service Cloud

Note or ContentNote

1:1
Fully supported

Dynamics 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

maps to

Salesforce Service Cloud

Flow (rebuild required)

1:1
Fully supported

Cloud 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.

Gotchas + challenges

What specifically takes care here

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 logo

Dynamics 365 Customer Service gotchas

High

Service Protection API limits will throttle bulk migration loads

Medium

OData v4 paging caps reads at 5,000 records per page

High

Power Automate flows do not migrate as data

Medium

Licensing tier gates which capabilities migrate cleanly

Medium

Omnichannel conversation history is fragmented across channels

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • Dataverse Service Protection API limits throttle bulk reads

    Dynamics 365 enforces a rolling 5-minute Service Protection threshold of approximately 6,000 requests per user across the Web API. Bulk data exports must batch through OData $batch with up to 1,000 operations per request, and each operation still counts toward the per-user budget. We use a dedicated Azure AD application user with the Bulk Data Loader pattern, throttle reads to stay under the limit, and handle 429 responses with the Retry-After header so the export does not stall mid-run. For large tables (Cases with history, Activities) we walk @odata.nextLink continuation tokens explicitly and checkpoint pagination progress between runs.

  • SLA definitions are configuration, not data

    Dynamics 365 SLA records (with business hours, pause conditions, warning thresholds, and KPI rollup targets) do not have a direct Salesforce equivalent as data rows. Salesforce's entitlement process model is configuration-based and lives in Setup rather than in records. We migrate active SLA instances on open Cases as Entitlement records with their KPI targets in the entitlement terms, but the SLA definition logic requires manual rebuild in Salesforce Entitlement Processes and Business Hours. We deliver a written entitlement process design document that maps the source SLA KPI matrix to Salesforce milestone definitions.

  • Entitlement pause conditions require configuration adjustment

    Dynamics 365 Entitlements support pause conditions that suspend SLA timer accumulation when a Case is awaiting customer response or placed on hold. Salesforce Entitlement Processes handle pause conditions differently: they pause based on Status values and specific Case fields rather than as free-form conditions on the Entitlement row. We migrate Entitlement records with their terms and remaining balance, but pause logic is documented for admin configuration in Salesforce. Migrations that skip this step end up with SLA timers that do not pause correctly in Salesforce, causing false SLA breach notifications.

  • Omnichannel conversation transcripts require format decision

    Omnichannel session and message tables store chat, voice, SMS, and social transcripts in a tree structure linked to Cases. Channel-specific assets (voice recordings, chat attachments, social media payloads) reference external storage and do not migrate as binary data. We export transcript text and session metadata and migrate it as CaseComment records or EmailMessage threads, but the customer must decide during scoping whether transcripts append to the Case feed or appear as a structured activity log. Any channel attachments require re-upload to Salesforce Files or re-linking to the external storage location post-migration.

  • Power Automate flows do not migrate as data

    Cloud flows that trigger on Case lifecycle events live in Power Automate and cannot be exported as part of a normal Dataverse record migration. We document the active flow inventory with trigger, conditions, and actions, and recommend Salesforce Flow equivalents for rebuild. Flows that integrate with Microsoft-specific endpoints (SharePoint document libraries, Teams approvals, Power BI dataset refreshes) require alternative connector configuration in Salesforce Flow or a middleware layer post-migration.

Migration approach

Six steps for a successful Dynamics 365 Customer Service to Salesforce Service Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Dynamics 365 Customer Service logo

Dynamics 365 Customer Service

Source

Strengths

  • Dataverse-backed model gives Cases a real relational schema and a full Web API for migration and BI.
  • Unified Routing handles skill-based, capacity-aware case distribution across Omnichannel without bolt-ons.
  • Native Outlook, Teams, SharePoint, and Power BI integration for organisations already on Microsoft 365.
  • Copilot Service Agent and AI summarisation are bundled with Microsoft 365 Copilot at no incremental cost.
  • Configurable SLAs with business hours, pause conditions, and KPI rollups for tiered support contracts.

Weaknesses

  • Licensing stack adds up fast: per-user, Power Platform requests, Dataverse storage, and capacity entitlements.
  • Customisation beyond out-of-the-box configuration requires JavaScript, Power Fx, and partner expertise.
  • Customer service hub UI is dense and the mobile app trails the web experience in functionality.
  • Microsoft support resolution times are inconsistent; partner support is often necessary for production issues.
  • Implementation timeline runs months, not weeks, due to the platform's configurable surface area.
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 1 of 7 objects need a manual workaround.

B

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

    B

    1 of 7 objects need a manual workaround.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    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

    A

    Dynamics 365 Customer Service exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Dynamics 365 Customer Service to Salesforce Service Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Dynamics 365 Customer Service to Salesforce Service Cloud data migrations

Answers to the questions buyers ask most during Dynamics 365 Customer Service to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Straightforward migrations under 25,000 Cases, 50,000 Contacts, and no custom Dataverse tables typically land in five to eight weeks. Migrations with custom Dataverse tables, large entitlement histories, Omnichannel conversation transcript volumes exceeding 100,000 session records, or knowledge article counts above 5,000 move to ten to sixteen weeks because of schema pre-creation, SLA entitlement design, and bulk API pagination time.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Customer Service.
Land in Salesforce Service Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day