Helpdesk migration

Migrate from Dynamics 365 Customer Service to Zoho Desk

Field-level mapping, validation, and rollback between Dynamics 365 Customer Service and Zoho Desk. We move data and schema; workflows are rebuilt natively in Zoho Desk.

Dynamics 365 Customer Service logo

Dynamics 365 Customer Service

Source

Zoho Desk

Destination

Zoho Desk logo

Compatibility

79%

11 of 14

objects map 1:1 between Dynamics 365 Customer Service and Zoho Desk.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Dynamics 365 Customer Service to Zoho Desk is a structural migration from a Dataverse-backed enterprise platform to a SaaS helpdesk oriented toward SMBs. Dynamics 365 stores Cases as incident rows in Dataverse with full relational linkage to Accounts, Contacts, Entitlements, SLAs, and Knowledge Articles through OData v4; Zoho Desk organises around Tickets with a flatter department-based schema, a built-in Knowledge Base, and Zia AI for auto-triage. The migration requires us to resolve the dependency chain (Accounts and Contacts first, then Cases with resolved customer links), flatten SLA definitions into Zoho Desk's rule-based SLA engine, and flag Entitlement records that have no Zoho Desk equivalent. Power Automate cloud flows, Omnichannel conversation transcripts, and Customer Voice surveys do not migrate as data; we document them for the customer's admin to rebuild or re-link post-migration. Zoho Desk's department-scoped custom fields require pre-creation before import, and Teams must be provisioned separately from the migration process.

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

Zoho Desk logo

Zoho Desk

What's pulling them in

  • Deep Zoho ecosystem integration lets support data tie directly to CRM contacts, invoice records in Zoho Books, and custom apps built in Zoho Creator, providing a unified customer view without third-party middleware.
  • Pricing undercuts comparable platforms significantly: Enterprise at roughly $40 per agent per month versus Zendesk at comparable tiers, making it attractive for cost-sensitive teams scaling past 10 agents.
  • Blueprints and multi-level escalations allow teams to codify support workflows and enforce SLA routing automatically, reducing manual triage for mid-size support operations.
  • Multi-channel ticket ingestion unifies email, social media, live chat, and phone into a single queue view, giving agents one inbox without context-switching across channels.
  • The free tier up to 3 agents lets small teams validate the platform before committing, reducing financial risk for startups and micro-businesses evaluating help desk software.

Object mapping

How Dynamics 365 Customer Service objects map to Zoho Desk

Each row shows how a Dynamics 365 Customer Service object lands in Zoho Desk, 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)

maps to

Zoho Desk

Ticket

1:1
Fully supported

Dynamics 365 Cases (incident table in Dataverse) map directly to Zoho Desk Tickets. The incident.title becomes Ticket Subject, incident.description becomes Ticket Description, incident.statecode maps to Zoho Desk Status (Open, Pending, On Hold, Closed), incident.prioritycode maps to Priority, and incident.customerid (the polymorphic customer reference) resolves to either the Zoho Desk Contact or Account record we created in the preceding phase. We preserve incident.createdon and incident.modifiedon as the ticket creation and modification timestamps. Incident resolution details (incident.resolution) migrate as an internal note on the ticket.

Dynamics 365 Customer Service

Contact

maps to

Zoho Desk

Contact

1:1
Fully supported

Dynamics 365 CE Contact records map to Zoho Desk Contacts with full name, email address, phone, and address fields preserved. We use the contact.emailaddress1 field as the dedupe key. Parent Account linkage (contact.parentcustomerid) is resolved after the Account import phase so that Contact records are linked to the correct Zoho Desk Account on insert. Custom Dataverse contact columns migrate as Zoho Desk Contact custom fields scoped to the department receiving the ticket data.

Dynamics 365 Customer Service

Account

maps to

Zoho Desk

Account

1:1
Fully supported

Dynamics 365 Account records map to Zoho Desk Accounts. account.name becomes Account Name, account.website becomes Website, and account.telephone1 becomes Phone. The Account-Contact hierarchy migrates as a flat Account in Zoho Desk with no hierarchical sub-account support; we flag this during scoping if the source uses multi-level Account hierarchies and advise whether to flatten or create multiple Accounts.

Dynamics 365 Customer Service

Knowledge Articles

maps to

Zoho Desk

Solutions

1:1
Fully supported

Dynamics 365 Knowledge Articles (knowledgearticle table) map to Zoho Desk Solutions. We migrate article title, content (article.content as HTML), language, status (draft, published, archived), and article number as an internal reference field. Article version history flattens to the current published version unless the destination Zoho Desk department has the version-history feature enabled. Article categories map to Zoho Desk Solution categories; we run a pre-migration category inventory to avoid orphaning articles without a matching category.

Dynamics 365 Customer Service

Queue

maps to

Zoho Desk

Team

1:many
Fully supported

Dynamics 365 Queues that hold Cases and Activities map to Zoho Desk Teams. Queue membership (queueitem) is translated into Team membership during import. Note that Zoho Desk's migration documentation explicitly states Teams cannot be transferred as records; we create the Team structure in Zoho Desk using the department and group data from Dynamics 365, then add agents to the relevant Teams as a post-import step. Queue routing rules (how Cases enter a queue) do not have a direct Zoho Desk equivalent and are documented for admin review.

Dynamics 365 Customer Service

Entitlement

maps to

Zoho Desk

Contract (custom field mapping)

1:1
Fully supported

Dynamics 365 Entitlements (entitlement table) represent support contracts with allocated hours, case-count limits, channel restrictions, and SLA linkage. Zoho Desk has no native Entitlement object; we map entitlement terms (name, start/end dates, remaining case count) to Zoho Desk Contracts module if the customer is on Enterprise tier, or to Ticket custom fields on the relevant Account and Contact records. We flag any SLA linkage on the Entitlement so the customer's admin can bind the correct SLA policy after migration.

Dynamics 365 Customer Service

SLA (definition and instance)

maps to

Zoho Desk

SLA Policy

lossy
Fully supported

Dynamics 365 SLA definitions (slaid table) with KPI targets (first response, resolution) and business hours migrate to Zoho Desk SLA Policies under Setup > SLA Policies. We map the SLA name, applicable entity (Case), warning and failure thresholds, and business hours calendar. Paused SLA time (from incident's timezoneruleversionsnumber) does not transfer automatically; we calculate elapsed time and resume SLA timers in Zoho Desk on the correct date. If the source organisation is on Professional tier with no SLA capability, we document the absence so the customer understands that SLA features will be new post-migration.

Dynamics 365 Customer Service

Activity: Email

maps to

Zoho Desk

Ticket Comment (email thread)

1:1
Fully supported

Dynamics 365 Email activities (email) linked to Cases migrate as ticket comments in Zoho Desk. The email.from (activityparty) becomes the ticket requester or a comment author; email.to becomes a CC list on the ticket comment. Email body (email.description) preserves HTML formatting; attachments migrate as file comments. Zoho Desk cannot import CC users as native fields; we migrate email CC addresses into a custom multi-line text field on the ticket for reference.

Dynamics 365 Customer Service

Activity: Phone Call

maps to

Zoho Desk

Ticket Comment (phone)

1:1
Fully supported

Dynamics 365 Phone Call activities (phonecall) linked to Cases migrate as ticket comments with a phone call indicator. Call duration (phonecall.actualdurationminutes) and outcome (phonecall.directioncode) are captured in the comment body. Call recording URLs stored in custom fields migrate as a link in the comment. We flag call recording attachments separately because they often live in external storage (SharePoint or the original telephony provider) and require re-link or re-upload.

Dynamics 365 Customer Service

Activity: Task

maps to

Zoho Desk

Related Tasks

1:1
Fully supported

Dynamics 365 Task activities linked to Cases migrate as Zoho Desk Tasks attached to the corresponding ticket. Task subject, description, due date, and status map directly. Task ownership resolves by matching the task's owning user to the Zoho Desk agent created during the User provisioning phase.

Dynamics 365 Customer Service

Activity: Appointment

maps to

Zoho Desk

Related Tasks

1:1
Fully supported

Dynamics 365 Appointment activities (appointment) migrate as Zoho Desk Tasks with the meeting details in the task description. Start time, end time, and location are preserved. Attendees are noted in the description field; Zoho Desk has no native Event/calendar object for customer service tickets, so attendee tracking is informational rather than calendar-synced.

Dynamics 365 Customer Service

Custom Dataverse Tables

maps to

Zoho Desk

Custom Fields (per module)

lossy
Fully supported

Customers extending the data model with custom Dataverse tables and columns require pre-migration schema design in Zoho Desk. We inventory every source custom column (logical name, type, option-set values for picklists), map each to a Zoho Desk custom field of equivalent type (string, integer, decimal, date, picklist, checkbox) scoped to the relevant department, and flag any Dataverse lookup relationships that cannot be represented as a simple reference in Zoho Desk (Zoho Desk supports lookup fields within the same module or across Modules). Custom table-level relationships (one-to-many, many-to-many) are simplified to one-to-many with a foreign key field.

Dynamics 365 Customer Service

Conversations (Omnichannel)

maps to

Zoho Desk

Ticket Comment

1:1
Mapping required

Dynamics 365 Omnichannel conversation sessions and messages (msdyn_ocliveworkitem, msdyn_ocsession, msdyn_ocmessage) linked to Cases migrate as ticket comments with a channel indicator (chat, voice, SMS, social). We export session start time, message timestamps, and full message transcript text. Channel-specific assets (voice recordings, social media attachments) are flagged separately because they often reference external storage or the original channel provider and require re-link after migration.

Dynamics 365 Customer Service

Customer Voice Survey Response

maps to

Zoho Desk

Ticket Comment (reference)

1:1
Fully supported

Dynamics 365 Customer Voice survey responses tied to Cases via Activity records are exported with the response payload and linked survey metadata. Survey definitions themselves live in Customer Voice and are not portable to Zoho Desk; we document the survey list, the response data, and recommend Zoho Desk's native satisfaction ratings and reporting as the replacement mechanism.

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

Zoho Desk logo

Zoho Desk gotchas

High

Agent email identity determines comment ownership after migration

High

Blueprints and SLA policies do not export via API

Medium

File upload capped at 10GB per migration batch

Medium

Tier-gated export and migration capabilities

Low

Inbound migration is two-phase with a hard Phase 2 cutoff

Pair-specific challenges

  • Custom fields must be pre-created in Zoho Desk before import

    Zoho Desk's custom fields are scoped to individual departments and must exist in the destination portal before any import maps to them. Dynamics 365 Dataverse custom columns have no equivalent self-service import step; we must create the destination custom fields manually in Zoho Desk Setup under Layouts and Fields for each relevant department before migration begins. Skipping this step causes the migration to either reject records with unmapped custom field values or drop those values silently, which is discovered only during post-migration reconciliation.

  • Created-at timestamps do not migrate by default

    Zoho Desk's standard import behaviour does not preserve the original record creation timestamp as a system field. Dynamics 365 Cases carry incident.createdon as the authoritative case creation date, which is critical for SLA compliance and historical reporting. We work around this by embedding the original createdon value in the ticket comment body with author attribution as the closest equivalent, and we set the ticket creation date to the migration run date to avoid Zoho Desk rejecting future-dated timestamps. The customer should decide during scoping whether created-at preservation is a hard requirement that warrants a custom import script.

  • Power Automate cloud flows and Omnichannel routing rules do not migrate

    Dynamics 365 cloud flows that trigger on Case create, update, or status change live in Power Automate, not in Dataverse, and cannot be exported as data. Unified Routing decision tables and skill-based assignment logic are similarly platform-bound. We document every active cloud flow with its trigger, conditions, and actions, and deliver a written routing rule inventory. Zoho Desk's Blueprint and workflow rules are the rebuild target; the customer's admin recreates these post-migration. Omnichannel conversation routing has no Zoho Desk equivalent and is documented as a gap.

  • Dataverse OData paging caps at 5,000 records per page

    Dynamics 365 Web API responses are capped at 5,000 records per page even when the client requests more. For large source tables (Cases, Activities, Knowledge Articles), we walk @odata.nextLink continuation tokens explicitly, persist pagination checkpoints between runs, and validate total row counts against the source after pagination completes. If the source org has over 100,000 Cases or Activity records, we schedule bulk exports outside business hours to avoid hitting the Service Protection API limit of roughly 6,000 requests per user per 5-minute rolling window.

  • CC users on email activities do not migrate natively

    Zoho Desk does not migrate CC users on imported email activities. Dynamics 365 email activities frequently carry multiple CC addresses (email.cc) representing internal loops and external stakeholders on a Case. We migrate CC addresses into a custom multi-line text field on the ticket as a reference-only field. The customer's admin reviews whether these addresses need to be added as ticket collaborators or Account contacts post-migration. This is a Zoho Desk platform limitation that applies to all inbound migrations.

Migration approach

Six steps for a successful Dynamics 365 Customer Service to Zoho Desk data migration

  1. Discovery and source audit

    We audit the source Dynamics 365 organisation across tier (Professional/Enterprise/Premium), record volumes per entity (Cases, Contacts, Accounts, Knowledge Articles, Activities), active SLA definitions and KPI thresholds, Entitlement records with remaining balances, custom Dataverse tables and columns with type and option-set inventories, active Power Automate cloud flows triggering on Case lifecycle, and Omnichannel conversation volume. We pair this with a Zoho Desk edition assessment (department count, required SLA policies, Zia AI tier) and produce a written migration scope with a record-count estimate per entity.

  2. Zoho Desk schema pre-creation

    We create the destination Zoho Desk structure before any data import begins. This includes provisioning departments (mapped from Dynamics 365 business units), creating Teams for each Dynamics 365 Queue, creating custom fields in Zoho Desk Setup scoped to the relevant departments to match every source custom Dataverse column, and designing SLA Policies that approximate the source SLA definitions with the same business hours calendar and warning/failure thresholds. Entitlement term data is mapped to Zoho Desk Contracts (Enterprise) or Account-level custom fields (lower tiers) based on the customer's chosen Zoho Desk plan.

  3. Agent provisioning and owner reconciliation

    We extract every distinct Dynamics 365 User referenced as an Owner on Case, Activity, or Knowledge Article records and match by email against the Zoho Desk agent list. Agents must be pre-created in Zoho Desk with the same email addresses before migration; Zoho Desk sends invitation emails that agents accept. Any Dynamics 365 User without a matching Zoho Desk agent goes to a reconciliation queue. Teams are created in Zoho Desk during this phase, and agents are assigned to their Teams. This step blocks the record import because Case and Activity ownership references require a valid Zoho Desk agent ID.

  4. Sandbox migration and reconciliation

    We run a full migration into the Zoho Desk portal using a subset of source data (typically the last 90 days of Cases, full Contact and Account list, and a sample of Activity history). The customer's support operations lead spot-checks 30-50 random tickets against the Dynamics 365 source records: subject accuracy, status mapping correctness, customer linkage, SLA timer calculation, and custom field population. Custom field mapping corrections, SLA rule adjustments, and department assignments are finalized here before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency sequence: Accounts (from Dynamics 365 Accounts), Contacts (with parent AccountId resolved), Knowledge Articles (Solutions with category mapping), Entitlements (Contracts or custom fields), SLAs (Policies configured but not yet active), Cases (with AccountId and ContactId resolved, owner assigned, SLA bound), Activity history (Email comments, Phone call comments, Tasks, Appointments via batch API), and Omnichannel transcripts (as ticket comments with channel metadata). Each phase emits a row-count reconciliation report before the next phase begins. We throttle writes to respect the Dataverse Service Protection limit and handle 429 responses with exponential backoff.

  6. Cutover, validation, and handoff

    We freeze Dynamics 365 write access during cutover, run a final delta migration of records modified during the migration window, then enable Zoho Desk as the system of record. We deliver the Power Automate and routing rule inventory document, the SLA gap analysis, the Omnichannel asset re-link checklist, and the Customer Voice survey response export. We support a five-business-day hypercare window for reconciliation issues. Post-migration admin rebuild of workflows, automations, and SLA bindings is outside standard scope; we provide the written specification and the customer or a Zoho partner rebuilds these.

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.
Zoho Desk logo

Zoho Desk

Destination

Strengths

  • Generous free tier for teams of up to 3 agents with no time limit, reducing financial risk for small support operations.
  • Per-agent flat pricing across tiers is significantly lower than Zendesk, Freshdesk, or Intercom at equivalent feature levels.
  • Tight integration with Zoho CRM, Zoho Books, and Zoho Creator provides a unified data ecosystem without third-party middleware.
  • Multi-channel ticket aggregation consolidates email, social, chat, and phone into a single queue view.
  • Assisted migration service handles the two-phase transfer process with Zoho's own migration team for inbound moves.

Weaknesses

  • The UI is frequently described as dated, clunky, and inconsistent across modules compared to modern SaaS competitors.
  • Advanced automation features including Blueprints, multi-brand, and live chat are tier-gated, limiting the free and Express plans to basic ticketing.
  • Non-Zoho integrations require custom Deluge scripting or external middleware, reducing flexibility for heterogeneous tech stacks.
  • Steep learning curve and complex customization options mean slower onboarding for new agents and ongoing training investment.
  • Export and migration capabilities are gated by plan tier, with data backup only available on higher plans.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 4 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Customer Service and Zoho Desk.

  • Object compatibility

    C

    4 of 7 objects need a mapping; the rest are 1:1.

  • 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 Zoho Desk 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 Zoho Desk data migrations

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

Can't find your answer?

Walk through your Dynamics 365 Customer Service to Zoho Desk migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 10,000 Cases, 5,000 Contacts, and no custom Dataverse tables typically complete in three to five weeks. Migrations with multiple SLA definitions, Entitlement records, Knowledge Article version histories, large activity timelines (over 200,000 records), or custom Dataverse tables requiring department-scoped custom field pre-creation move to eight to fourteen weeks because of SLA rule translation, Entitlement reconciliation, and schema pre-creation scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Customer Service.
Land in Zoho Desk, 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