Migrate your Dynamics 365 Marketing data
Enterprise marketing automation built on Dynamics 365 Dataverse, tightly integrated with Microsoft 365 and Power Platform. Organizations with existing Microsoft investments choose it for unified customer data; those without often find the licensing cost and operational complexity hard to justify.
In its favor
Why people choose Dynamics 365 Marketing
The signal that keeps Dynamics 365 Marketing on the shortlist. Sourced from G2, Capterra, and customer scoping calls.
Organizations already invested in Microsoft 365, Teams, and SharePoint choose Dynamics 365 Marketing because it shares a single identity layer, reducing duplicate user management across tools.
Microsoft Copilot features embedded in Customer Insights - Journeys provide AI-assisted content tone-matching and subject line suggestions that teams using standalone marketing tools cannot access.
The per-tenant pricing model for Marketing and Customer Insights simplifies budgeting for large marketing teams where per-seat licensing would become prohibitively expensive.
Teams requiring a single customer record spanning sales, service, and marketing benefit from Dataverse as the underlying data layer, avoiding synchronization issues between separate CRM and marketing databases.
Enterprise organizations with dedicated IT and admin resources are better positioned to manage the steep initial configuration workload that smaller teams find prohibitive.
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.
Reasons to switch
Why people leave Dynamics 365 Marketing
The recurring reasons buyers give for replacing Dynamics 365 Marketing. Presented as facts, not knocks.
Platform scorecard
Strengths, weaknesses, and where Dynamics 365 Marketing fits
Grades across six dimensions, plus a SWOT-style view of where the platform shines and where it falls short.
SWOT — strengths, weaknesses, and use-case fit
Strengths
Weaknesses
Where it works
Where it struggles
Pricing tiers
Dynamics 365 Marketing pricing overview
Dynamics 365 Marketing is priced per tenant starting at $1,500/month, separate from CRM user-level licenses that start at $65/user/month for Sales Professional. Attach licenses offer discounted access to additional applications when a base license is already held. Organizations should budget for implementation costs (6-12 weeks), training, and potential Power Platform development costs that are not included in licensing fees.
Dynamics 365 Marketing (Customer Insights - Journeys)
Tier 1 of 5
$1,500/tenant/month
What's included
Need help selecting your CRM?
Book a free 30 minute consultationPricing is informational. FlitStack AI does not bill on Dynamics 365 Marketing's schedule — see our quote-based pricing →
What gets migrated
Dynamics 365 Marketing object support
Object-by-object support for Dynamics 365 Marketing migrations. Per-pair details surface during scoping.
Contacts
Fully supportedContacts map directly to the msdyn_contact table in Dataverse. Standard fields (name, email, phone, address) are well-documented and stable. We preserve the full Contact-to-Account relationship during import.
Leads
Fully supportedLeads are a native Dataverse entity with lifecycle stages. Where the destination CRM does not have a separate Lead object, we merge Leads into Contacts and preserve the Lead_Status as a custom Contact property. Custom lead fields are handled via schema mapping from the source.
Accounts (Companies)
Fully supportedAccounts are the org-level parent records. We maintain the Contact-to-Account lookup relationship and preserve industry, address, and custom account fields. Account hierarchies are preserved where they exist.
Opportunities (Deals)
Fully supportedOpportunities map to msdyn_opportunity in Dataverse. We preserve pipeline stage, estimated close date, amount, and owner assignment. The opportunity-to-contact and opportunity-to-account relationships are maintained at import.
Marketing Emails
Mapping requiredMarketing emails are stored as msdynmkt_email table entries, specific to Customer Insights - Journeys. These are not part of the standard Dataverse CRM schema. We export via the Configuration Migration Tool and map content blocks, subject lines, and sender profiles to the destination's equivalent marketing email entity.
Customer Journeys
Mapping requiredJourney definitions are stored in the msdynmkt_journey table. They reference segment memberships, email content, and trigger conditions. We extract Journey configuration via the Configuration Migration Tool and remap segment IDs and email references to the destination environment's corresponding records.
Segments (Customer Insights)
Mapping requiredSegments are part of Customer Insights - Data, stored in a separate service from the core CRM. Segment definitions (criteria-based or static) require separate export. We handle segment memberships as a distinct import pass after the core contact records are in place.
Custom Entities
Mapping requiredCustom entities created within a Dataverse solution are supported but require a pre-migration schema export. We do not infer custom entity structure from UI exports. The customer must provide the managed solution or schema file before we can accurately map custom entity relationships.
Activities (Notes, Emails, Tasks)
Fully supportedActivities are stored in the ActivityPointer entity with type-specific child tables (Email, Task, PhoneCall, Appointment). We preserve the regarding object lookup to maintain the relationship between activities and their parent Contact, Account, or Opportunity record.
Attachments
Mapping requiredAnnotations (notes with file attachments) are exported individually. We handle them in a separate pass, preserving the objectid and objecttypecode to re-associate attachments with their parent record in the destination environment.
Marketing Lists
Mapping requiredMarketing Lists are specific to the outbound marketing model. They contain member records and are associated with Campaigns. We export the list membership and recreate the list in the destination, mapping member records to the destination's contact or account IDs.
Campaigns
Mapping requiredCampaigns and Campaign Activities are part of the legacy marketing model. We preserve campaign structure and the association with Marketing List members. Campaign Activities require separate handling due to their dependency on the activity entity.
Users and Owners
Mapping requiredUser records and owner assignments on records are migrated as user lookups. If the destination has a different user schema, we map owner IDs to the corresponding destination user. Inactive users may need to be provisioned before record imports proceed.
Custom Properties
Mapping requiredCustom fields on any entity must be defined in the destination environment schema before we can import values into them. We work from the field definitions exported via the solution schema and create a field mapping specification before data import begins.
| Object | Support | Notes |
|---|---|---|
| Contacts | Fully supported | Contacts map directly to the msdyn_contact table in Dataverse. Standard fields (name, email, phone, address) are well-documented and stable. We preserve the full Contact-to-Account relationship during import. |
| Leads | Fully supported | Leads are a native Dataverse entity with lifecycle stages. Where the destination CRM does not have a separate Lead object, we merge Leads into Contacts and preserve the Lead_Status as a custom Contact property. Custom lead fields are handled via schema mapping from the source. |
| Accounts (Companies) | Fully supported | Accounts are the org-level parent records. We maintain the Contact-to-Account lookup relationship and preserve industry, address, and custom account fields. Account hierarchies are preserved where they exist. |
| Opportunities (Deals) | Fully supported | Opportunities map to msdyn_opportunity in Dataverse. We preserve pipeline stage, estimated close date, amount, and owner assignment. The opportunity-to-contact and opportunity-to-account relationships are maintained at import. |
| Marketing Emails | Mapping required | Marketing emails are stored as msdynmkt_email table entries, specific to Customer Insights - Journeys. These are not part of the standard Dataverse CRM schema. We export via the Configuration Migration Tool and map content blocks, subject lines, and sender profiles to the destination's equivalent marketing email entity. |
| Customer Journeys | Mapping required | Journey definitions are stored in the msdynmkt_journey table. They reference segment memberships, email content, and trigger conditions. We extract Journey configuration via the Configuration Migration Tool and remap segment IDs and email references to the destination environment's corresponding records. |
| Segments (Customer Insights) | Mapping required | Segments are part of Customer Insights - Data, stored in a separate service from the core CRM. Segment definitions (criteria-based or static) require separate export. We handle segment memberships as a distinct import pass after the core contact records are in place. |
| Custom Entities | Mapping required | Custom entities created within a Dataverse solution are supported but require a pre-migration schema export. We do not infer custom entity structure from UI exports. The customer must provide the managed solution or schema file before we can accurately map custom entity relationships. |
| Activities (Notes, Emails, Tasks) | Fully supported | Activities are stored in the ActivityPointer entity with type-specific child tables (Email, Task, PhoneCall, Appointment). We preserve the regarding object lookup to maintain the relationship between activities and their parent Contact, Account, or Opportunity record. |
| Attachments | Mapping required | Annotations (notes with file attachments) are exported individually. We handle them in a separate pass, preserving the objectid and objecttypecode to re-associate attachments with their parent record in the destination environment. |
| Marketing Lists | Mapping required | Marketing Lists are specific to the outbound marketing model. They contain member records and are associated with Campaigns. We export the list membership and recreate the list in the destination, mapping member records to the destination's contact or account IDs. |
| Campaigns | Mapping required | Campaigns and Campaign Activities are part of the legacy marketing model. We preserve campaign structure and the association with Marketing List members. Campaign Activities require separate handling due to their dependency on the activity entity. |
| Users and Owners | Mapping required | User records and owner assignments on records are migrated as user lookups. If the destination has a different user schema, we map owner IDs to the corresponding destination user. Inactive users may need to be provisioned before record imports proceed. |
| Custom Properties | Mapping required | Custom fields on any entity must be defined in the destination environment schema before we can import values into them. We work from the field definitions exported via the solution schema and create a field mapping specification before data import begins. |
Gotchas
What to watch for in Dynamics 365 Marketing migrations
Issues we've hit on past Dynamics 365 Marketing migrations, tagged by severity. FlitStack AI handles every one — surfacing them up front because buyer engineering teams want to know.
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
| Severity | Issue |
|---|---|
| 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 |
Leaving Dynamics 365 Marketing?
Where Dynamics 365 Marketing customers move next
12 destinations Dynamics 365 Marketing can migrate to.
How a Dynamics 365 Marketing migration works
Four steps, Dynamics 365 Marketing-specific
Connect
OAuth 2.0 via Azure Active Directory into Dynamics 365 Marketing. Scopes limited to read-only on the data we move.
Map
We translate Dynamics 365 Marketing-specific structures (custom fields, objects, value lists) to the destination's model.
Sample
Test with a 50–200 record subset to validate Dynamics 365 Marketing quirks before production.
Migrate
Full migration with Dynamics 365 Marketing rate-limit handling. Rollback available throughout.
FAQ
Dynamics 365 Marketing migration FAQ
Answers to the questions buyers ask most during Dynamics 365 Marketing migration scoping. Not seeing yours? Book a call.
Can't find your answer?
Walk through your Dynamics 365 Marketing migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationReady when you are
Migrate Dynamics 365 Marketing.
Without the rebuild.
Free scoping call with a migration engineer. Tell us about your Dynamics 365 Marketing setup and destination — written quote back within a business day.