CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Marketing and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Dynamics 365 Marketing
Source
Freshsales
Destination
Compatibility
9 of 11
objects map 1:1 between Dynamics 365 Marketing and Freshsales.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Dynamics 365 Marketing to Freshsales is a structural simplification. Dynamics 365 Marketing stores CRM data in Dataverse alongside marketing-specific tables under the msdynmkt_ prefix, with customer records split between transactional CRM contacts and marketing-billed contacts managed through Customer Insights - Journeys. Freshsales uses a unified contact-company model without a separate marketing contact tier, which eliminates the per-tenant marketing billing exposure that Dynamics 365 Marketing carries but requires rethinking how marketing list membership and segment data are represented. We export CRM records via the Dynamics 365 Web API or Configuration Migration Tool, transform the Dataverse schema to Freshsales' flat contact and company structure, and load through Freshsales' REST API with batch chunking. Marketing assets including emails, journeys, segments, and forms do not have native Freshsales equivalents and are not migrated as code; we deliver a written configuration inventory for the customer's admin to rebuild. Implementation timelines for Dynamics 365 Marketing commonly stretch to 6-12 weeks with dedicated admin resources, making the cost and complexity of exit a significant factor alongside Freshsales' per-seat pricing starting at $9 per user per month.
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 Freshsales, 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 (Dataverse CRM)
Freshsales
Contact
1:1Dynamics 365 Dataverse contacts map to Freshsales contacts with field-level transformation. Standard fields including name, email, phone, and address migrate directly. The Contact-to-Account relationship maps to Freshsales' Contact-to-Company association. We handle the Dataverse contact model separately from Customer Insights marketing contacts to avoid importing marketing-billed records into the CRM layer without proper segmentation flags.
Dynamics 365 Marketing
Account
Freshsales
Company
1:1Dynamics 365 Account records map to Freshsales Companies. The Account name becomes the Company name, industry maps to Freshsales industry dropdown, and custom account fields map to Freshsales custom fields. Account hierarchies are preserved where Freshsales supports parent-company relationships. Companies are created before contact import so the association lookup is satisfied at insert time.
Dynamics 365 Marketing
Lead
Freshsales
Lead
1:1Dynamics 365 Leads map directly to Freshsales Leads. Lead status, lead score, and lifecycle fields transform to Freshsales Lead status and rating. The lead qualification date and lead source fields migrate to corresponding Freshsales fields. Owner assignment migrates by email-based user resolution in Freshsales.
Dynamics 365 Marketing
Opportunity
Freshsales
Deal
1:1Dynamics 365 Opportunities map to Freshsales Deals. Pipeline stage names from Dynamics map to Freshsales Deal stage names via a configurable mapping table. Estimated close date, amount, and probability migrate directly. The opportunity-to-contact and opportunity-to-account relationships resolve to Freshsales Deal-to-Contact and Deal-to-Company associations. Owner assignment migrates via user email resolution.
Dynamics 365 Marketing
Marketing List
Freshsales
List
1:1Dynamics 365 Marketing Lists containing contact member records map to Freshsales Lists. We export the marketing list membership and recreate the list structure in Freshsales. Marketing list type (static or dynamic) is noted in the migration inventory but implemented as a Freshsales static list, as Freshsales Lists do not have a dynamic query equivalent at the marketing automation layer.
Dynamics 365 Marketing
Marketing Email (msdynmkt_email)
Freshsales
Email Template
1:1Dynamics 365 Marketing emails stored in the msdynmkt_email table under Customer Insights - Journeys do not have a native Freshsales equivalent as code. We export email subject, body HTML, and from-address configuration and deliver a written inventory with HTML content for the customer's admin to recreate as Freshsales email templates. Email template metadata is preserved in documentation form.
Dynamics 365 Marketing
Customer Journey (msdynmkt_journey)
Freshsales
Workflow
lossyDynamics 365 Customer Insights Journeys stored in the msdynmkt_journey table reference segment memberships, trigger conditions, and email content that do not have a direct Freshsales equivalent. Freshsales workflows operate on Deal and Contact records but lack journey orchestration across multiple triggers and conditions. We deliver a written inventory of each Journey including its trigger logic, condition branches, and associated emails for the customer's admin to evaluate against Freshsales workflow capabilities.
Dynamics 365 Marketing
Segment (Customer Insights)
Freshsales
List or Tag
lossyCustomer Insights segments stored separately from Dataverse CRM records require a separate export pass. Segment criteria-based definitions and static membership lists are exported and documented for recreation in Freshsales. Freshsales does not support criteria-based dynamic segments; the replacement pattern is Freshsales Lists combined with contact scoring rules. We deliver a written segmentation inventory mapping each Customer Insights segment to a recommended Freshsales List or contact scoring setup.
Dynamics 365 Marketing
Activity (Email, Task, PhoneCall, Appointment)
Freshsales
Activity Timeline
1:1Dynamics 365 Activities stored in ActivityPointer with type-specific child tables migrate to Freshsales activity records on the contact timeline. Emails, tasks, calls, and meetings preserve their subject, body, date, duration, and owner assignment. The regarding object lookup resolves to Freshsales Contact or Deal associations. Activity timestamp ordering is preserved by setting the activity date to the original Dynamics timestamp.
Dynamics 365 Marketing
Annotation (Attachment)
Freshsales
File
1:1Dynamics 365 Annotations including file attachments are exported individually. We handle them in a separate pass, preserving the objectid and objecttypecode to re-associate attachments with their parent Contact, Account, or Opportunity record in Freshsales. File names and content types are preserved; image attachments render in Freshsales activity timeline.
Dynamics 365 Marketing
Campaign and Campaign Activity
Freshsales
Campaign
1:1Dynamics 365 Campaigns and Campaign Activities map to Freshsales Campaigns. Campaign name, status, type, and budgeted cost migrate to Freshsales campaign fields. Campaign Activities that reference specific outreach actions are noted in the migration inventory but do not have a direct Freshsales equivalent as records; the outreach history lives in the activity timeline on individual contacts.
| Dynamics 365 Marketing | Freshsales | Compatibility | |
|---|---|---|---|
| Contact (Dataverse CRM) | Contact1:1 | Fully supported | |
| Account | Company1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Marketing List | List1:1 | Fully supported | |
| Marketing Email (msdynmkt_email) | Email Template1:1 | Fully supported | |
| Customer Journey (msdynmkt_journey) | Workflowlossy | Fully supported | |
| Segment (Customer Insights) | List or Taglossy | Fully supported | |
| Activity (Email, Task, PhoneCall, Appointment) | Activity Timeline1:1 | Fully supported | |
| Annotation (Attachment) | File1:1 | Fully supported | |
| Campaign and Campaign Activity | Campaign1: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 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
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and environment audit
We audit the source Dynamics 365 Marketing environment across CRM contacts (Dataverse), Customer Insights marketing contacts, marketing lists, campaigns, segment definitions, and any custom entities present in the Dataverse solution schema. We identify the marketing automation assets in use including emails, journeys, and forms. We pair this with a Freshsales environment review covering the current plan tier, existing contacts, companies, leads, deals, and any custom fields already configured. The discovery output is a written migration scope that distinguishes CRM record migration from marketing asset inventory, along with a Freshsales plan recommendation if the current plan constrains the migration scope.
Schema design and Freshsales environment preparation
We design the destination schema in Freshsales, including any custom fields required to accommodate Dynamics custom entity data, lookup field transformations, and picklist value mappings. If the customer's Freshsales plan is Growth ($9/user) and the migration includes custom entity data, we recommend upgrading to Enterprise ($59/user) before migration begins. We deploy custom fields via Freshsales Settings API or manual configuration before any data import. We document the Freshsales workflow capabilities available for recreating any Customer Insights Journey logic.
Sandbox validation and mapping verification
We run a full migration into a Freshsales sandbox using production-like data volume. The customer's team reconciles record counts (Contacts in, Companies in, Leads in, Deals in, Activities in), spot-checks 25-50 records against the Dynamics source, and validates that the contact-company associations and deal-contact associations resolve correctly. Any field mapping corrections, picklist value adjustments, or custom field additions happen in sandbox before production migration begins.
User reconciliation and provisioning
We extract every distinct Dynamics user referenced as an owner on Contact, Account, Lead, Opportunity, and Activity records. We match by email address against the Freshsales User table. Users without a matching Freshsales User go to a reconciliation queue. The customer's admin provisions any missing Freshsales users before production migration. Owner assignment cannot proceed without resolved User records in Freshsales.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (as parent records for contacts), then Contacts, then Leads, then Deals, then Activity history. Custom entities migrate last if they have lookups to standard objects. Marketing list membership migrates as Freshsales Lists with explicit contact membership. Each phase emits a row-count reconciliation report before the next phase begins. We use Freshsales REST API with batch chunking and handle rate-limit responses with retry logic.
Cutover, validation, and marketing asset handoff
We freeze Dynamics writes during cutover, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver the written inventory of marketing emails (HTML content for template recreation), Customer Insights Journeys (trigger and condition documentation), segments (criteria documentation for Freshsales List setup), and forms (field and logic documentation for Freshsales form rebuild). We support a one-week hypercare window for reconciliation issues. We do not rebuild marketing automation assets in Freshsales as part of the migration scope.
Platform deep dives
Dynamics 365 Marketing
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Marketing and Freshsales.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
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 Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Marketing to Freshsales 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 Freshsales
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.