CRM migration

Migrate from Dynamics 365 Marketing to Salesforce Sales Cloud

Field-level mapping, validation, and rollback between Dynamics 365 Marketing and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.

Dynamics 365 Marketing logo

Dynamics 365 Marketing

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

92%

12 of 13

objects map 1:1 between Dynamics 365 Marketing and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Dynamics 365 Marketing to Salesforce is a multi-layered migration that involves standard CRM record transfer alongside marketing-specific schema decisions that have no direct equivalent in Salesforce. Dynamics 365 Marketing stores marketing assets (emails, journeys, segments) in msdynmkt_ prefixed Dataverse tables under Customer Insights, not in the core CRM entity schema. We extract those configurations via the Configuration Migration Tool and deliver a written marketing automation rebuild guide rather than migrating Journey logic as code, since Dynamics 365 Journeys have no direct Salesforce Sales Cloud equivalent and require Marketing Cloud Account Engagement or Marketing Cloud to replicate. We sequence the migration as: core entity records first (Accounts, Contacts, Leads, Opportunities), then Activities via Bulk API 2.0, then Custom Entities, then marketing asset documentation. The Dynamics 365 Marketing Contact billing flag has no Salesforce analog; we preserve the flag value in a custom field so it survives if the customer re-evaluates a marketing automation layer later. Workflows, Power Automate flows, and marketing automation sequences do not migrate and are inventoried for admin rebuild.

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 Marketing logo

Dynamics 365 Marketing

What's pushing teams away

  • Users without prior Microsoft stack experience report the interface as complex and overwhelming, with menu navigation described as clunky and feature locations hard to remember across sessions.
  • Performance degrades noticeably when handling large contact databases or running complex Journey logic, leading to slow load times that disrupt marketing team workflows.
  • Licensing costs are prohibitive for small to mid-market teams; the per-tenant Marketing price point starts at $1,500/month before user-level CRM seats are added.
  • Implementation timelines commonly stretch to 6-12 weeks for full deployments, and organizations underestimate the hidden costs of training, integration, and data migration that are not included in licensing quotes.
  • Power Apps and Power Automate are marketed as low-code but require technical resources to extend; business users hit barriers quickly when documentation assumes IT-level familiarity.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How Dynamics 365 Marketing objects map to Salesforce Sales Cloud

Each row shows how a Dynamics 365 Marketing object lands in Salesforce Sales 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 Marketing

Contact

maps to

Salesforce Sales Cloud

Lead or Contact (split required)

1:many
Fully supported

Dynamics 365 Marketing Contacts map to Salesforce Lead or Contact based on lifecycle status. Prospects and unqualified contacts from Dataverse msdyn_contact with no related opportunity become Salesforce Leads. Contacts that have an associated opportunity or account become Salesforce Contacts attached to the corresponding Account. We compute the split at migration time using the contact's lifecycle stage and opportunity association from the source data, and preserve the original Dynamics lifecycle status in a custom field d365_lifecycle_stage__c on both Lead and Contact for reporting continuity.

Dynamics 365 Marketing

Lead

maps to

Salesforce Sales Cloud

Lead

1:1
Fully supported

Dataverse Lead records that exist separately from Contacts map directly to Salesforce Lead. Lead status values from Dynamics map to Salesforce Lead Status picklist values. Any lead scoring data from Customer Insights - Data or custom Dataverse fields migrates to a custom field d365_lead_score__c on the Salesforce Lead record.

Dynamics 365 Marketing

Account

maps to

Salesforce Sales Cloud

Account

1:1
Fully supported

Dynamics 365 Accounts (Companies) map directly to Salesforce Account. The primary contact relationship is preserved via the primarycontactid lookup when present. Account address, industry, number of employees, annual revenue, and custom account fields migrate to corresponding Salesforce Account fields. Account hierarchies in Dynamics map to Salesforce's parent Account lookup.

Dynamics 365 Marketing

Opportunity

maps to

Salesforce Sales Cloud

Opportunity

1:1
Fully supported

Dynamics 365 Opportunities (msdyn_opportunity) map to Salesforce Opportunity. Pipeline stage from Dynamics maps to Salesforce StageName with probability percentages rounded to Salesforce-allowed integer values. Estimated close date, amount, and owner assignment migrate directly. The opportunity-to-account and opportunity-to-contact relationships are resolved at migration time using the Dataverse relationship lookups.

Dynamics 365 Marketing

ActivityPointer (Email, Task, PhoneCall, Appointment)

maps to

Salesforce Sales Cloud

EmailMessage, Task, Event

1:1
Fully supported

Dynamics 365 Activities stored in the ActivityPointer entity and type-specific child tables (Email, Task, PhoneCall, Appointment) migrate to Salesforce EmailMessage, Task, and Event records. The regarding object lookup (regardingobjectid) is resolved to the target Salesforce record's WhoId or WhatId at migration time. Activity timestamps preserve the original Dynamics createdon date for timeline continuity. Large activity histories (over 200,000 records) are migrated via Salesforce Bulk API 2.0 with chunking and exponential backoff.

Dynamics 365 Marketing

Annotation (Notes with Attachments)

maps to

Salesforce Sales Cloud

Note, ContentDocument

1:1
Fully supported

Dynamics 365 Annotations (notes with file attachments) are exported individually and mapped to Salesforce Note records with associated ContentDocument records for file attachments. The objectid and objecttypecode from Dynamics are resolved to the target Salesforce record ID at migration time, and the notetext body migrates as rich text to the Salesforce Note body field.

Dynamics 365 Marketing

Marketing List

maps to

Salesforce Sales Cloud

Campaign

1:1
Fully supported

Dynamics 365 Marketing Lists (msdynmkt_marketinglist) containing member records map to Salesforce Campaign objects. List membership records migrate as Salesforce CampaignMember records linked to the Campaign, with the member type preserved (Contact or Lead) and the member's status mapped to CampaignMember Status. Marketing List name and description become Campaign Name and Description.

Dynamics 365 Marketing

Campaign and Campaign Activity

maps to

Salesforce Sales Cloud

Campaign

1:1
Fully supported

Dynamics 365 Campaigns and Campaign Activities are legacy marketing model entities. We export campaign structure, objective, and budget information as Salesforce Campaign records. Campaign Activities are mapped to Salesforce Tasks or Notes linked to the Campaign depending on the activity type, since Salesforce has no direct Campaign Activity equivalent. We sequence Campaign import after Accounts and Contacts to ensure the parent record exists before CampaignMember records are written.

Dynamics 365 Marketing

msdynmkt_email (Marketing Emails)

maps to

Salesforce Sales Cloud

Email Template (reference documentation)

1:1
Fully supported

Marketing emails stored in the msdynmkt_email Dataverse table (Customer Insights - Journeys) are exported via the Configuration Migration Tool as content reference documentation. Salesforce Sales Cloud has no direct equivalent for marketing email assets; we document the email name, subject line, body content, and Dynamic Content blocks as a reference guide for the customer's admin to rebuild in Salesforce Marketing Cloud Account Engagement, Marketing Cloud Content Builder, or Sales Cloud Email Templates depending on the marketing automation strategy chosen during scoping.

Dynamics 365 Marketing

msdynmkt_journey (Customer Journeys)

maps to

Salesforce Sales Cloud

Journey logic (reference documentation)

1:1
Fully supported

Customer Journey definitions stored in msdynmkt_journey and related tables are extracted as configuration reference documentation. Dynamics 365 Journeys reference segment memberships, email content, trigger conditions, and wait logic that have no direct Salesforce Sales Cloud equivalent. We deliver a written journey inventory that lists each Journey's name, trigger type, segment membership, email assets, and flow logic so the customer's marketing team can rebuild using Salesforce Marketing Cloud Account Engagement Engagement Studio or Marketing Cloud Journey Builder. Journey automation logic does not migrate as code.

Dynamics 365 Marketing

Customer Insights - Data Segment

maps to

Salesforce Sales Cloud

Campaign List or Pardot List (reference documentation)

1:1
Fully supported

Customer Insights segments are stored in a separate service from the core CRM Dataverse database and require a dedicated export pass. Segment definitions (criteria-based or static) and membership records are documented as a reference guide for the customer's admin to recreate in Salesforce. If the destination includes Marketing Cloud Account Engagement, segments map to Pardot Lists; for Sales Cloud-only destinations, segments map to Salesforce Campaigns with static membership. Segment membership data cannot be imported directly into Salesforce without a target list equivalent being defined first.

Dynamics 365 Marketing

Custom Entities (Dataverse managed solution)

maps to

Salesforce Sales Cloud

Custom Object

1:1
Fully supported

Custom entities created within a Dataverse solution are supported for migration but require the customer to provide the managed solution ZIP or schema file exported via the Configuration Migration Tool before we can define the destination Salesforce custom object. We do not infer custom entity structure from UI exports because they omit relationship metadata, field security profiles, and managed property settings. We create the Salesforce custom object (with __c API name matching the Dataverse entity logical name where feasible), define all custom fields, establish lookup relationships, and import the data once the schema is deployed and validated in the destination org.

Dynamics 365 Marketing

Owner (User)

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

Dynamics 365 User records and owner assignments on all entity types are migrated as User lookups in Salesforce. We match Dynamics users by email address against the Salesforce destination org's User table. Any Dynamics User without a matching Salesforce User is placed in a reconciliation queue for the customer's admin to provision before record migration continues. Owner assignments on Contacts, Leads, Accounts, and Opportunities are resolved at migration time using the pre-validated User mapping.

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 Marketing logo

Dynamics 365 Marketing gotchas

High

Marketing Contact billing triggers on record import

High

Configuration Migration Tool does not migrate high-volume transactional data

Medium

Customer Insights segments are stored separately from Dataverse CRM records

Medium

Marketing Lists and Campaign Activities have legacy schema dependencies

Low

Custom entities require a managed solution schema, not a UI export

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Marketing Contact billing triggers on record import

    Dynamics 365 Marketing bills at the tenant level for any record qualifying as a Marketing Contact upon import. There is no mechanism to silently demote a record to non-marketing status at import time. We identify which source records should land as non-marketing during the scoping call and apply a contact-point consent tag or custom field at migration time to prevent unintended billing exposure. This planning must occur before any contact export begins, not after the data is already extracted. Organizations that skip this step face a surprise billing event at the next Dynamics 365 Marketing invoice cycle.

  • Marketing automation assets have no direct Salesforce equivalent

    Dynamics 365 Marketing emails (msdynmkt_email), Customer Journeys (msdynmkt_journey), and marketing forms are stored in msdynmkt_ prefixed Dataverse tables that have no structural equivalent in Salesforce Sales Cloud. Salesforce Sales Cloud does not have a Journey builder or marketing email asset management system. We extract these configurations via the Configuration Migration Tool and deliver a written reference document listing each asset's name, content, trigger, and flow logic. The customer's admin or a marketing implementation partner rebuilds them in Salesforce Marketing Cloud or Marketing Cloud Account Engagement as a separate engagement. Journey automation does not migrate as code.

  • Customer Insights segments require a separate export pass

    Segment definitions and membership data live in the Customer Insights - Data service, a separate environment from the core CRM Dataverse database. A migration that only exports CRM records will leave segment memberships behind entirely. We execute a separate export pass for Customer Insights segment data and handle the dependency ordering so that Contact records exist in Salesforce before segment membership records are imported into a target list equivalent (Campaign, Pardot List, or equivalent). Skipping this sequencing step results in orphan segment memberships with no valid member record in Salesforce.

  • Disqualified leads have different record states across platforms

    In Dynamics 365, a disqualified Lead is essentially inactivated and locked for editing, existing in a purgatory state that does not surface in default views or reports. Salesforce has no equivalent inactivated-Lead state; an unqualified Lead remains an active record within the Lead object, and the disqualification is represented as a stage within the business process flow. We recommend mapping Dynamics disqualification status reasons to Salesforce Lead Status picklist values or to an Unqualified stage within the business process flow, with filters configured on Salesforce List Views to exclude these records from active lead queues by default.

  • Custom entities require managed solution schema, not a UI export

    Extracting custom entity definitions from the Dynamics 365 user interface does not capture relationship metadata, field security profiles, or managed property settings. We require the customer to export the managed solution ZIP or provide the schema file from the Configuration Migration Tool before we can accurately define the destination Salesforce custom object. UI-based exports are used only for data verification and sample record comparison, not for schema definition. Organizations that cannot provide a solution schema file may face a longer discovery phase to reconstruct custom entity relationships manually.

Migration approach

Six steps for a successful Dynamics 365 Marketing to Salesforce Sales Cloud data migration

  1. Discovery and marketing automation strategy

    We audit the source Dynamics 365 Marketing environment across the marketing module type (outbound vs. real-time Customer Insights - Journeys), Dataverse entity count, marketing asset volume (email count, journey count, segment count), custom entity definitions via solution schema, activity record volume, and owner assignment distribution. We pair this with a Salesforce edition and marketing automation recommendation: Sales Cloud Professional ($80/user) for core CRM migration, Marketing Cloud Account Engagement for marketing automation replacement, or Marketing Cloud for enterprise multi-channel automation. The discovery output is a written migration scope with object inventory, marketing asset disposition plan, and Salesforce edition recommendation.

  2. Marketing contact billing flag planning

    Before any data extraction begins, we work with the customer to identify which Dynamics 365 Contacts should be classified as non-marketing versus marketing contacts in the destination. We design a custom field strategy (d365_marketing_contact_flag__c on the target Salesforce Lead or Contact) to preserve the original billing classification. We also identify any Dynamics contacts that should not be imported into Salesforce at all if they are suppressive or opted-out, to prevent re-activation in the destination. This step must complete before contact export starts because the flag cannot be applied retroactively in Dynamics 365 Marketing.

  3. Schema design and sandbox migration

    We design the destination Salesforce schema: custom objects and fields (with __c API names matched to Dataverse entity logical names where feasible), Lead and Contact field types, Account hierarchy configuration, Opportunity stage mapping with probability percentages, Campaign structure for Marketing List equivalents, and the Lead-Contact split rule. Schema is deployed via Salesforce metadata API into a Sandbox org for validation. We run a full sandbox migration with production-like data volume and the customer reconciles record counts and spot-checks 25-50 records before production migration is authorized.

  4. Customer Insights and marketing asset extraction

    We execute a separate export pass for Customer Insights - Data segments and membership records, and extract msdynmkt_email and msdynmkt_journey configurations via the Configuration Migration Tool. We produce a written marketing asset inventory that documents each email's subject and body, each Journey's trigger, segments, steps, and wait logic, and each segment's criteria definition and membership count. This document is the handoff artifact for the customer's marketing team to use when rebuilding assets in Salesforce Marketing Cloud or Account Engagement.

  5. Production migration in dependency order

    We run production migration in strict dependency order: Salesforce User provisioning validation, Accounts (from Dynamics Companies), Contacts and Leads with the lifecycle split applied, Opportunities with AccountId and OwnerId resolved, Activity history via Bulk API 2.0 for large volumes, Annotations with ContentDocument linkage, Campaigns and CampaignMembers for Marketing List equivalents, then Custom Entities last because they often have lookups to standard objects. Customer Insights segment membership is imported after Contacts to satisfy the parent record constraint. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Dynamics 365 Marketing writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the marketing asset inventory and automation rebuild guide as a written document, not migrated code. We do not rebuild Dynamics Power Automate flows, marketing workflows, or Customer Journeys as Salesforce Flow or Marketing Cloud Account Engagement Engagement Studio inside the migration scope; those are separate engagements or internal admin tasks. We offer a one-week hypercare window for reconciliation issues raised by the customer's team post-cutover.

Platform deep dives

Context on both ends of the pair

Dynamics 365 Marketing logo

Dynamics 365 Marketing

Source

Strengths

  • Native integration with Microsoft 365, Teams, and SharePoint eliminates separate identity and document management overhead.
  • Dataverse provides a unified data layer across CRM, Customer Service, and Marketing, enabling single-customer-record views without ETL synchronization.
  • Customer Insights - Journeys includes AI-assisted content generation and predictive lead scoring as part of the Marketing tier.
  • Per-tenant pricing covers unlimited marketing contacts beyond the base tenant fee, which benefits large database marketers.
  • Configuration Migration Tool supports movement of marketing assets between environments for Dev-Test-Prod promotion.

Weaknesses

  • Per-tenant marketing pricing at $1,500/month plus user-level CRM seats creates significant cost for organizations not already committed to the Microsoft stack.
  • Steep learning curve and complex UI navigation mean implementation projects routinely require 6-12 weeks with dedicated admin resources.
  • Performance issues arise with large datasets and complex Journey logic, particularly when the marketing environment shares Dataverse capacity with other applications.
  • The split between outbound marketing (Customer Insights - Journeys) and transactional CRM data introduces schema complexity that simpler standalone marketing tools do not have.
  • Configuration Migration Tool cannot handle high-volume transactional data; large record migrations require Power Automate flows or custom plugins instead.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 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 Marketing and Salesforce Sales Cloud.

  • Object compatibility

    B

    1 of 8 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

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

  • API constraints

    B

    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

    A

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

Estimator

Estimate your Dynamics 365 Marketing to Salesforce Sales 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 Marketing to Salesforce Sales Cloud data migrations

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

Can't find your answer?

Walk through your Dynamics 365 Marketing to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and six weeks for straightforward CRM record sets under 30,000 Contacts and 6,000 Opportunities with no custom Dataverse entities and a clear marketing automation replacement plan. Migrations that include Customer Insights segment extraction, large activity histories (over 500,000 records), multiple custom entities requiring schema design, or parallel Marketing Cloud Account Engagement scoping move to ten to eighteen weeks. The marketing asset extraction and documentation phase typically runs two to four weeks in parallel with the CRM record migration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Marketing.
Land in Salesforce Sales 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