Helpdesk migration
Field-level mapping, validation, and rollback between Dynamics 365 Customer Service and Zendesk. We move data and schema; workflows are rebuilt natively in Zendesk.
Dynamics 365 Customer Service
Source
Zendesk
Destination
Compatibility
9 of 11
objects map 1:1 between Dynamics 365 Customer Service and Zendesk.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Migrating from Dynamics 365 Customer Service to Zendesk is an architectural shift from a relational Dataverse-backed CRM model to a flat ticket-centric helpdesk. Dynamics stores Cases as incident rows with polymorphic Activities linked via regardingobjectid, while Zendesk collapses every interaction into ticket comments. We resolve this by first exporting parent Account and Contact records into Zendesk Organizations and Users, then importing Cases as Tickets with all Activities flattened into the ticket comment stream and each comment carrying the original Dynamics Activity type and timestamp as metadata. Entitlements and SLA definitions require explicit reconstruction in Zendesk because the destination lacks a direct contractual entitlement model. Power Automate cloud flows, Omnichannel routing rules, and Power Fx customizations do not migrate as data; we document the active inventory for the customer's admin to rebuild inside Zendesk. Service Protection API rate limits on the Dynamics side govern export batch sizing, and Zendesk's API write limits govern ingest pacing.
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 Dynamics 365 Customer Service object lands in Zendesk, 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
Case (Incident)
Zendesk
Ticket
1:1Dynamics 365 Case records map to Zendesk Tickets. We map case.title to Ticket subject, case.description to the first public comment, case.statecode/statuscode to Ticket status (Open, Pending, Solved, Closed), case.prioritycode to Ticket priority (Low, Normal, High, Urgent), case.customerid to Zendesk User or Organization, and case.ownerid to Ticket assignee. Custom incident columns migrate as Zendesk custom ticket fields. The primary risk is flattening the relational activity tree: all Dynamics Activities attached to a Case become Zendesk ticket comments in chronological order with the original Activity type embedded as comment metadata.
Dynamics 365 Customer Service
Contact
Zendesk
User
1:1Dynamics CE Contact records map to Zendesk Users. We map contact.fullname to User name, contact.emailaddress1 to User email (used as the dedupe key), contact.telephone1 to User phone, and contact.address1_composite to User address fields. Contact is migrated after Organization because Zendesk Users reference an Organization as a required field on the end-user side. If the source Contact lacks an email, we generate a placeholder and flag the record for admin verification.
Dynamics 365 Customer Service
Account
Zendesk
Organization
1:1Dynamics Account records map to Zendesk Organizations. We map account.name to Organization name, account.website to Organization domain (used for dedupe and auto-association), and account.address1_composite to Organization address. Account is migrated before Contact because Zendesk Users require an Organization lookup. If the source Account has child Contacts, all child Contact records are held until the parent Account insert completes and the Organization ID is available.
Dynamics 365 Customer Service
Knowledge Articles
Zendesk
Help Center Articles
1:1Dynamics Knowledge Articles migrate to Zendesk Help Center Articles within the designated Section and Category. We map article.title to article title, article.articlebody (HTML) to article body, article.msdyn_locale to article language, article.status to publish status (Draft, Published, Archived), and article.msdyn_primaryauthor to article author. HTML content is pre-validated because Zendesk Help Center renders a different HTML subset than Dynamics. The article URL structure changes after migration; we produce a redirect map for the customer's web team.
Dynamics 365 Customer Service
Queue
Zendesk
View
1:1Dynamics Queues holding Cases and Activities map to Zendesk Views. Queue name becomes View name, and Queue members map to View restrictions by agent group. We preserve the queue type (Public/Private) as a View sharing setting. However, Dynamics Unified Routing decision tables and skill-based assignment logic have no Zendesk equivalent and are documented separately as a routing-rebuild requirement.
Dynamics 365 Customer Service
Entitlement
Zendesk
SLA Policy
1:1Dynamics Entitlements representing support contracts with allocated hours, case count limits, channel restrictions, and SLA linkage map partially to Zendesk SLA Policies. We migrate entitlement.name as the SLA policy name, entitlement.totalterm as the entitlement terms summary, and entitlement.budgettype (hours vs case count) as Zendesk SLA target metrics. Channel restrictions and per-entitlement pause conditions do not map because Zendesk SLA policies lack pause-condition logic; these are flagged for manual rebuild.
Dynamics 365 Customer Service
SLA Definition
Zendesk
Business Hours + SLA Policy
1:1Dynamics SLA KPI targets (first response time, resolution time), business hours, and warning thresholds map to Zendesk Business Hours configurations and SLA Policy targets. Pause conditions in the source SLA definition have no Zendesk equivalent and are noted as a gap. Active SLA instances on open Cases migrate as Zendesk SLA Policy assignments on those Tickets.
Dynamics 365 Customer Service
Activity: Email, Phone Call, Task, Appointment
Zendesk
Ticket Comment
1:manyDynamics polymorphic Activities (Email, Phone Call, Task, Appointment) attached to a Case via regardingobjectid merge into the target Zendesk Ticket as sequential comments. We preserve the original Activity type as a comment metadata tag (e.g., [Dynamics Email], [Dynamics Phone Call]) and the Activity party's email address, call duration, and disposition where present. Activity ordering is maintained by setting the comment timestamp to the original Dynamics Activity createdon value.
Dynamics 365 Customer Service
Attachment (Annotation and File columns)
Zendesk
Ticket Attachment
1:1Dynamics Notes (annotation table) and File column attachments attached to Cases or Contacts migrate as Zendesk Ticket or User attachments. We retrieve the file blob via the Dataverse file download endpoint, chunk large files by Zendesk's 20 MB per-request limit, and attach them to the target Ticket or User record. Attachments stored in SharePoint require re-upload to Zendesk's native file storage or a configured Zendesk connected Dropbox/Google Drive integration.
Dynamics 365 Customer Service
Omnichannel Conversation (Session + Message)
Zendesk
Ticket Comment
1:1Dynamics Omnichannel chat, voice, SMS, and social session transcripts map to Zendesk Ticket comments as text. We export the session.starttime, session.channel, session.queue, and message body with sender role (agent/customer/system). Voice call recordings and social media attachments do not migrate because Zendesk stores media differently; we produce a separate inventory of channel assets that require re-link or re-upload to Zendesk's media storage.
Dynamics 365 Customer Service
Custom Dataverse Tables
Zendesk
Custom Ticket Fields or Organizations
lossyCustom tables and columns added by the customer to Dataverse require a pre-migration schema inventory. We classify each custom table: lookup tables pointing to Contact or Account map to Zendesk Organization fields or User fields; transactional custom tables map to Zendesk custom ticket fields with equivalent type (string, integer, datetime, option-set, boolean). Option-set values are enumerated as Zendesk custom field dropdown options. Tables with no clear Zendesk equivalent are flagged as candidates for Zendesk Explore reporting or a custom database outside the ticket model.
| Dynamics 365 Customer Service | Zendesk | Compatibility | |
|---|---|---|---|
| Case (Incident) | Ticket1:1 | Fully supported | |
| Contact | User1:1 | Fully supported | |
| Account | Organization1:1 | Fully supported | |
| Knowledge Articles | Help Center Articles1:1 | Fully supported | |
| Queue | View1:1 | Fully supported | |
| Entitlement | SLA Policy1:1 | Fully supported | |
| SLA Definition | Business Hours + SLA Policy1:1 | Fully supported | |
| Activity: Email, Phone Call, Task, Appointment | Ticket Comment1:many | Fully supported | |
| Attachment (Annotation and File columns) | Ticket Attachment1:1 | Fully supported | |
| Omnichannel Conversation (Session + Message) | Ticket Comment1:1 | Fully supported | |
| Custom Dataverse Tables | Custom Ticket Fields or Organizationslossy | 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
Zendesk gotchas
Data export requires API scripting on non-Enterprise plans
Automations cap at 500 active rules and 1,000 tickets per hour
Help Center has no native export feature
Custom Objects and full data export are Enterprise-only
Pair-specific challenges
Migration approach
Discovery and schema inventory
We audit the source Dynamics 365 Customer Service environment: Case volume and age, Contact and Account counts, Knowledge Article volume and language count, Queue definitions and member assignments, Entitlement records and active SLA instances, Activity record counts by type, and Omnichannel session transcript volume. We inventory all custom Dataverse tables, option-set values, and custom columns on the incident table. We also document active Power Automate cloud flows that trigger on Case lifecycle events and Omnichannel routing rules. This audit produces the migration scope document, a Zendesk plan recommendation (Support Team vs Support Professional vs Support Enterprise), and the feature delta report between the source tier and destination plan.
Zendesk schema design and custom field provisioning
We configure the Zendesk target environment: ticket fields mapped to every source Dynamics Case column (including custom fields), custom field types matched to source column types (string, integer, datetime, option-set), Help Center structure with Sections matching the Dynamics Knowledge Article categories, SLA Policies with targets derived from the Dynamics SLA definitions, Business Hours matching the Dynamics service calendar, and Views derived from the Dynamics Queue definitions. All configuration is validated in a Zendesk sandbox before production.
Sandbox migration and reconciliation
We run a full migration into the configured Zendesk sandbox using representative data volume. The customer's service operations lead reconciles record counts: Organizations in, Users in, Tickets in, Articles in, and SLA policy assignments in. We spot-check 25-50 random tickets against the source Dynamics Case records for field-level accuracy and comment ordering. Any mapping corrections are made before production migration begins. This step also surfaces HTML rendering issues in Knowledge Article content for remediation before go-live.
Production migration in dependency order
We execute production migration in strict dependency sequence: Organizations (from Dynamics Accounts), Users (from Dynamics Contacts with Organization ID resolved), Help Center Sections and Categories, Help Center Articles (with HTML validation pass applied), SLA Policies and Business Hours, Tickets (from Dynamics Cases with User and Organization IDs resolved, SLA policy assigned, and all Dynamics Activities appended as sequential comments), Attachments (filed against the resolved Ticket or User), and Custom Dataverse Table records mapped to Zendesk custom fields or Organizations. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover and delta migration
We freeze Dynamics write access during cutover, run a final delta migration of any Cases, Activities, or Knowledge Articles modified during the migration window, then enable Zendesk as the system of record. Zendesk is configured as the primary ticket URL for agents and customers at this point. Any SharePoint-hosted or external file attachments that could not be migrated are listed in a supplemental upload guide for the customer's admin team.
Validation, handoff, and automation inventory delivery
We perform a post-migration validation: record counts match between source and destination, SLA policy assignments are confirmed on open tickets, Knowledge Article publish status mirrors the source, and a random sample of 50 tickets is spot-checked against Dynamics for field accuracy and comment completeness. We deliver the Power Automate cloud flow inventory document and the Omnichannel routing rules gap analysis to the customer's admin team. We do not rebuild Power Automate flows as Zendesk triggers inside the migration scope; that is a separate engagement or an internal admin rebuild task.
Platform deep dives
Dynamics 365 Customer Service
Source
Strengths
Weaknesses
Zendesk
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. All 7 core objects map 1:1 between Dynamics 365 Customer Service and Zendesk.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Customer Service and Zendesk.
Object compatibility
All 7 core objects map 1:1 between Dynamics 365 Customer Service and Zendesk.
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 Zendesk migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Customer Service to Zendesk 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 Zendesk
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.