CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Marketing and Zoho CRM. We move data and schema; workflows are rebuilt natively in Zoho CRM.
Dynamics 365 Marketing
Source
Zoho CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Dynamics 365 Marketing and Zoho CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Dynamics 365 Marketing to Zoho CRM is a multi-layer migration: transactional CRM data (Contacts, Leads, Accounts, Opportunities) lives in Dataverse and maps directly to Zoho modules, while marketing-specific assets (email templates, Customer Journey definitions, segment memberships) are stored in msdynmkt-prefixed tables under Customer Insights and require separate export and rebuild in Zoho Marketing Automation. The primary export format from Dynamics is .BAK (SQL Server backup) or Dataverse bulk export; Zoho CRM's built-in migration tool accepts only CSV, so we handle the format conversion before any import. We sequence the migration as Accounts first, then Contacts and Leads, then Potentials, then Activities, with a separate pass for attachments and a documented handoff for marketing automation assets. Workflows, Customer Journey triggers, segment definitions, and marketing email assets do not migrate as code; we deliver a written rebuild guide for each.
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 Marketing object lands in Zoho CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Dynamics 365 Marketing
Contact
Zoho CRM
Lead or Contact (split required)
1:manyDynamics 365 CRM contacts map to Zoho CRM Lead or Contact depending on the lifecycle state. Contacts that represent active customers or sales-qualified records land as Zoho Contacts attached to an Account. Prospects and unqualified records land as Zoho Leads. We compute the split using the contact's statecode and statuscode from Dataverse and preserve the original status as a custom field original_contact_state__c on both Lead and Contact for audit. Account lookup must resolve before Contact import, so we sequence Accounts first.
Dynamics 365 Marketing
Account (Company)
Zoho CRM
Account
1:1Dynamics 365 Accounts map directly to Zoho CRM Accounts. The accountid becomes the Zoho Account lookup anchor. We preserve industry, address fields, annual revenue, number of employees, and account hierarchy where the destination Zoho edition supports parent-account lookups. Account is created before any Contact import so that Contact-to-Account lookups are satisfied at insert time.
Dynamics 365 Marketing
Opportunity
Zoho CRM
Potential
1:1Dynamics 365 Opportunities map to Zoho CRM Potential. StageName from Dynamics maps to Potential Stage, with the stage probability mapping adjusted to Zoho's percentage scale (Dataverse uses decimal; Zoho uses integer). EstimatedCloseDate, Amount, and OwnerId transfer directly. We configure the Zoho sales pipeline stage values before migration so that incoming Opportunity stages are whitelisted in the destination.
Dynamics 365 Marketing
Lead (Dynamics CRM)
Zoho CRM
Lead
1:1Dynamics 365 Leads (separate from Contacts, representing pre-qualification records) map directly to Zoho CRM Lead. Lead quality score, lead source, and any custom lead fields migrate to Zoho Lead custom fields. We map lead status from Dynamics lead status values to Zoho Lead Status values during the transform step before CSV generation.
Dynamics 365 Marketing
Product
Zoho CRM
Product
1:1Dynamics 365 Products map to Zoho CRM Products with Standard Price Book entries created during import. The product code, unit price, product category, and description migrate to Zoho Product fields. If Zoho uses a different currency model, we apply currency conversion at migration time using the customer's specified exchange rate.
Dynamics 365 Marketing
Custom Field
Zoho CRM
Custom Field
lossyCustom fields on any Dynamics 365 entity must be defined in the destination Zoho CRM schema before data values can be imported. We extract the custom field definitions from the Dataverse managed solution schema (not from UI exports), create equivalent Zoho custom fields via Setup > Customization > Fields, and map Dataverse field types (option set, two options, decimal, integer, text) to their Zoho type equivalents. Custom field creation happens in the Zoho Sandbox org before data migration begins.
Dynamics 365 Marketing
Activity: Email, Task, PhoneCall, Appointment
Zoho CRM
Activity: Emails, Tasks, Calls, Events
1:1Activities stored in the Dynamics 365 ActivityPointer entity (Email, Task, PhoneCall, Appointment) migrate to Zoho CRM's corresponding activity modules. We extract from the type-specific child tables and set ActivityDate from the original createdon timestamp. The Regarding (objectid) lookup preserves the relationship to Contact, Account, or Potential. Owner assignment migrates via email-to-User matching. Each activity type runs as a separate import batch.
Dynamics 365 Marketing
Attachment (Annotation)
Zoho CRM
Attachment
1:1Dynamics 365 attachments stored as Annotation records are exported individually with file content and metadata (objectid, objecttypecode). We download file blobs, generate a Zoho CRM attachment manifest, and reattach to parent records using the Zoho CRM Attachments API after the parent record (Contact, Account, Potential) is confirmed in the destination. The objecttypecode from Dataverse maps to the Zoho module name, and the objectid maps to the Zoho record ID.
Dynamics 365 Marketing
User / Owner
Zoho CRM
User
1:1Dynamics 365 Users referenced as record owners are matched to Zoho CRM Users by email address. The customer's admin provisions Zoho User accounts before migration. Owners without a matching Zoho User are held in a reconciliation queue; inactive Dynamics users are mapped to inactive Zoho Users if historical assignment must be preserved. We do not migrate security roles or Dataverse team memberships as they have no direct Zoho equivalent.
Dynamics 365 Marketing
Marketing Email Template (msdynmkt_email)
Zoho CRM
Zoho Marketing Automation Email Template (documented for rebuild)
lossyMarketing email templates stored in the msdynmkt_email table are marketing-journey assets, not transactional CRM records. We export the template content (subject, HTML body, sender profile) as a structured document and deliver it as a rebuild guide for Zoho Marketing Automation. Zoho Marketing Automation is a separate product from Zoho CRM; the templates are documented as configuration, not migrated as data. If the customer does not license Zoho Marketing Automation, email templates are scoped out of the migration entirely.
Dynamics 365 Marketing
Customer Journey (msdynmkt_journey)
Zoho CRM
Zoho Marketing Automation Workflow (documented for rebuild)
lossyCustomer Journey definitions from Dynamics 365 Customer Insights - Journeys (msdynmkt_journey) store trigger conditions, segment membership criteria, email sequence order, and wait-branch logic in a format not compatible with Zoho Marketing Automation workflows. We export Journey configuration as a written specification document covering entry trigger, segment criteria, email steps, delays, and exit conditions. The customer's marketing team rebuilds each Journey in Zoho Marketing Automation using the documented sequence as the reference. This is a documentation-only deliverable, not a data migration.
Dynamics 365 Marketing
Segment (Customer Insights - Data)
Zoho CRM
Zoho Marketing Automation List (documented for rebuild)
lossySegment definitions from Customer Insights - Data live in a separate service from the core CRM Dataverse and require a separate export pass. Static segments with a fixed member list can be exported as a contact list and imported as a Zoho Marketing Automation List. Criteria-based (dynamic) segments cannot be exported in equivalent form because the segment evaluation logic differs between Customer Insights and Zoho Marketing Automation. We export the segment criteria as a written specification document for the customer's marketing team to reproduce as Zoho dynamic list rules.
| Dynamics 365 Marketing | Zoho CRM | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Account (Company) | Account1:1 | Fully supported | |
| Opportunity | Potential1:1 | Fully supported | |
| Lead (Dynamics CRM) | Lead1:1 | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Activity: Email, Task, PhoneCall, Appointment | Activity: Emails, Tasks, Calls, Events1:1 | Fully supported | |
| Attachment (Annotation) | Attachment1:1 | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Marketing Email Template (msdynmkt_email) | Zoho Marketing Automation Email Template (documented for rebuild)lossy | Fully supported | |
| Customer Journey (msdynmkt_journey) | Zoho Marketing Automation Workflow (documented for rebuild)lossy | Fully supported | |
| Segment (Customer Insights - Data) | Zoho Marketing Automation List (documented for rebuild)lossy | 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 Marketing gotchas
Marketing Contact billing triggers on record import
Configuration Migration Tool does not migrate high-volume transactional data
Customer Insights segments are stored separately from Dataverse CRM records
Marketing Lists and Campaign Activities have legacy schema dependencies
Custom entities require a managed solution schema, not a UI export
Zoho CRM gotchas
API access requires Professional tier or above
Subform fields do not export cleanly via CSV
API credit consumption is non-linear
Export download links expire in 7 days
Owner (User) assignments require pre-mapped user IDs
Pair-specific challenges
Migration approach
Discovery and format assessment
We audit the source Dynamics 365 Marketing environment: Dataverse entities in use (Contacts, Leads, Accounts, Opportunities, Activities), custom entities from the managed solution schema, Customer Insights assets (Journeys, segments, email templates), and the total record count per entity. We identify the export format available from the Dynamics environment (Dataverse bulk export, Configuration Migration Tool, or SQL .BAK) and determine the conversion path to CSV. We also audit the destination Zoho CRM edition (Standard, Professional, Enterprise, Ultimate) to confirm which modules and custom field capabilities are available.
Schema design and field mapping
We design the destination Zoho CRM schema based on the Dataverse schema export. This includes mapping Dataverse entity names to Zoho modules (Account, Contact, Lead, Potential), Dataverse field types to Zoho field types (option set to picklist, two options to checkbox, decimal to currency or number), and creating any custom fields in Zoho CRM before data import begins. We create custom fields via the Zoho CRM API in a sandbox environment first. We also document the Lead-Contact split rule derived from Dynamics contact statecode for customer review.
Format conversion and sandbox import
We convert Dynamics 365 exported data (Dataverse bulk export or .BAK SQL export) into typed CSV files matching the Zoho CRM import format. This includes type coercion for date fields (Dataverse uses UTC ISO 8601; Zoho uses locale-specific formats), picklist value normalization, and null field handling. We run a full sandbox import into a Zoho CRM sandbox org using production-like data volume. The customer's admin reviews record counts, spot-checks field mappings on 25-50 records per module, and signs off before production migration begins.
Owner and user provisioning
We extract all distinct Dynamics 365 owners referenced on Contacts, Accounts, Opportunities, and Activities and match them by email against the destination Zoho CRM User table. The customer's admin provisions any missing Zoho Users and assigns them appropriate roles before migration. Owner lookups in Zoho CRM are required on standard records; migration cannot proceed with records referencing unprovisioned owners.
Production migration in dependency order
We run the production migration in record-dependency order: Accounts (base organization records first), Contacts and Leads (with the statecode split applied), Opportunities (with AccountId and OwnerId resolved), Products and Price Books, Activities (Tasks, Calls, Events, Emails in separate batches via Zoho CRM API with rate-limit handling), Attachments (after parent records confirmed), and Custom Entities (last, because they often have lookups to standard objects). Each phase emits a row-count reconciliation report before the next phase begins.
Marketing automation rebuild handoff and cutover
We deliver the written marketing automation rebuild guide covering email templates (with HTML content and subject lines documented), Customer Journey specifications (with entry triggers, segment criteria, step sequence, and wait-branch logic), and segment definitions (criteria-based and static). We freeze writes in Dynamics 365 Marketing at cutover, run a final delta pass for any records modified during the migration window, then enable Zoho CRM as the system of record. We support a one-week hypercare window for data quality issues. We do not rebuild Customer Insights Journeys as Zoho Marketing Automation workflows inside the standard migration scope; that work is a separate engagement for the customer's marketing team or a Zoho Marketing Automation implementation partner.
Platform deep dives
Dynamics 365 Marketing
Source
Strengths
Weaknesses
Zoho CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Dynamics 365 Marketing and Zoho CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Marketing and Zoho CRM.
Object compatibility
All 8 core objects map 1:1 between Dynamics 365 Marketing and Zoho CRM.
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
Dynamics 365 Marketing: Dataverse Web API enforces organization-level throttling; specific limits vary by workload and are not publicly documented at fixed thresholds.
Data volume sensitivity
Dynamics 365 Marketing 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 Marketing to Zoho CRM migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Marketing to Zoho CRM 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 Marketing
Other ways to arrive at Zoho CRM
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.