CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Marketing and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Dynamics 365 Marketing
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 11
objects map 1:1 between Dynamics 365 Marketing and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
4-8 weeks
Overview
Migrating from Dynamics 365 Marketing to Microsoft Microsoft Dynamics 365 Sales is a within-family Dataverse move that consolidates two separate licensing lines ($1,500/tenant/month for Marketing plus $65/user/month for Sales) into a single Sales tier. Both applications share the same Contact, Account, Lead, and Opportunity schema, so the core CRM records migrate cleanly. The complications are specific to the marketing layer: the Marketing Contact billing flag has no Microsoft Dynamics 365 Sales equivalent, interaction and Journey data live in the msdynmkt_ prefixed tables outside the core CRM schema, and the Configuration Migration Tool cannot transfer high-volume transactional engagement history. We extract standard CRM entities through the Dataverse API, handle the marketing contact flag in a pre-import scoping pass, and deliver a written asset inventory for every Journey definition, Customer Insights segment, and marketing form requiring admin rebuild. Workflows, automations, and Copilot-assisted Journey logic do not migrate as code.
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.
Source platform
Dynamics 365 Marketing platform overview
Scorecard, SWOT, gotchas, and pricing for Dynamics 365 Marketing.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
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 Microsoft Dynamics 365 Sales , 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
Microsoft Dynamics 365 Sales
Contact
1:1Dynamics 365 Marketing shares the msdyn_contact table in Dataverse with the CRM layer, so Contacts map directly to Microsoft Dynamics 365 Sales Contact. Standard fields (fullname, emailaddress1, telephone1, address) are identical between source and destination. We flag contacts that had Marketing Contact billing status during scoping and carry the original billing classification in a custom field mktg_contact_flag__c on the destination Contact so that the admin team has full visibility into which records triggered tenant-level marketing charges in the source environment.
Dynamics 365 Marketing
Lead
Microsoft Dynamics 365 Sales
Lead
1:1Leads are a native Dataverse entity in both the Marketing and Sales environments. Lead lifecycle stages (leadstatus, leadsource, statecode) map directly. We preserve any lead scoring values from Customer Insights - Data as a custom field ci_lead_score__c if the destination admin wants to retain those values for prioritization after migration. Owner lookup resolves by email against the destination User table.
Dynamics 365 Marketing
Account
Microsoft Dynamics 365 Sales
Account
1:1Accounts are the org-level parent records in both source and destination and map 1:1. Industry, address, and custom account fields transfer directly. Account hierarchies are preserved where the source had parent-account relationships. We resolve the primary contact lookup during the Account import pass so that the parent-account chain is intact before any Contact import that references it.
Dynamics 365 Marketing
Opportunity
Microsoft Dynamics 365 Sales
Opportunity
1:1Opportunities in Dynamics 365 Marketing and Sales share the msdyn_opportunity table in Dataverse. Pipeline stage, estimated close date, amount, probability, and owner assignment transfer directly. The opportunity-to-contact and opportunity-to-account lookups resolve at migration time using the contact and account IDs written in earlier passes. We validate that the destination Sales Process whitelists the imported stage values before the opportunity batch is committed.
Dynamics 365 Marketing
ActivityPointer (Email, Task, PhoneCall, Appointment)
Microsoft Dynamics 365 Sales
Task, Event, EmailMessage
1:1Activities in Dynamics 365 Marketing live in the ActivityPointer entity with type-specific child tables. Emails, tasks, phone calls, and appointments map to the corresponding Microsoft Dynamics 365 Sales activity objects. The regarding object lookup (regardingobjectid) re-associates each activity with its parent Contact, Account, or Opportunity in the destination. We preserve the original ActivityDate for timeline ordering. High-volume activity migration uses the Dataverse Bulk API with exponential backoff and batch chunking to avoid timeout errors on large engagement histories.
Dynamics 365 Marketing
Annotation (Notes with attachments)
Microsoft Dynamics 365 Sales
Note
1:1Note records with file attachments stored as Annotation entries are exported individually. We preserve the objectid and objecttypecode to re-associate each Note with its parent Contact, Account, Lead, or Opportunity in Microsoft Dynamics 365 Sales . File attachments migrate as Salesforce ContentDocument equivalents in Dataverse, with ContentDocumentLink maintaining the parent relationship. We run this pass after the parent records exist in the destination to avoid orphaned notes.
Dynamics 365 Marketing
User (Owner)
Microsoft Dynamics 365 Sales
User
1:1User records and owner assignments on all CRM entities resolve by email match between the source and destination User tables. Dynamics 365 Marketing and Sales share the same Azure AD-backed identity layer, so most active users resolve automatically. Any source owner without a matching destination User goes to a reconciliation queue; the admin provisions the missing user before record migration resumes. Inactive source owners are preserved as inactive User records in the destination with the original ownerid for audit integrity.
Dynamics 365 Marketing
Custom Entities
Microsoft Dynamics 365 Sales
Custom Entity
1:1Custom entities created within a Dataverse solution export as managed solution schema files from the Configuration Migration Tool or as unmanaged solution ZIPs. We pre-create the destination schema in Microsoft Dynamics 365 Sales before any custom entity data is imported, including all custom fields, lookup relationships to standard entities, and validation rules. The customer must provide the managed solution file or schema export; we do not infer custom entity structure from UI exports because those omit relationship metadata and field security profiles.
Dynamics 365 Marketing
Customer Journey (msdynmkt_journey)
Microsoft Dynamics 365 Sales
Campaign
1:1Journey definitions stored in the msdynmkt_journey table have no direct equivalent in Microsoft Dynamics 365 Sales . Customer Insights - Journeys uses trigger-based logic, segment membership conditions, and AI-assisted content selection that do not exist in the Sales Campaign model. We extract Journey configuration (trigger type, segment references, email asset IDs, delay logic, and goal metrics) and deliver it as a written asset inventory document. The customer's admin uses this to rebuild equivalent Campaigns with Quick Campaign activity sequences in Microsoft Dynamics 365 Sales . The emails referenced in Journey definitions are inventory-only and must be rebuilt as Sales-email templates.
Dynamics 365 Marketing
Marketing List
Microsoft Dynamics 365 Sales
Campaign (via static campaign membership)
1:1Marketing Lists contain member records and are associated with Campaigns in Dynamics 365 Marketing. We export the list membership and recreate each list as a static Campaign in Microsoft Dynamics 365 Sales , with CampaignMember records carrying the same contact or lead associations. Dynamic Marketing List logic (query-based membership) cannot be replicated in Sales without rebuilding the query criteria manually. We document the original query logic for the admin to evaluate which lists warrant a static rebuild versus a manual segmentation approach in Microsoft Dynamics 365 Sales .
Dynamics 365 Marketing
Segment (Customer Insights - Data)
Microsoft Dynamics 365 Sales
None (documentation only)
1:1Segment definitions and membership data live in the Customer Insights - Data service, a separate Dataverse instance from the core CRM. Migrating segment membership as static CampaignMember records is possible but the segment criteria that drive dynamic membership have no equivalent in Microsoft Dynamics 365 Sales . We export the segment criteria and deliver a written segment inventory with recommended Sales-based segmentation equivalents (using Contact fields, Account industry, or Lead source as the segmentation basis). If the customer is also licensing Dynamics 365 Customer Insights after migration, segment recreation in Customer Insights - Data is a separate engagement.
| Dynamics 365 Marketing | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Account | Account1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| ActivityPointer (Email, Task, PhoneCall, Appointment) | Task, Event, EmailMessage1:1 | Fully supported | |
| Annotation (Notes with attachments) | Note1:1 | Fully supported | |
| User (Owner) | User1:1 | Fully supported | |
| Custom Entities | Custom Entity1:1 | Mapping required | |
| Customer Journey (msdynmkt_journey) | Campaign1:1 | Fully supported | |
| Marketing List | Campaign (via static campaign membership)1:1 | Fully supported | |
| Segment (Customer Insights - Data) | None (documentation only)1: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
Microsoft Dynamics 365 Sales gotchas
Professional tier 15-table custom table limit blocks migrations
October 2024 pricing increase applies at renewal for all customers
Custom fields must be created in the UI before API writes
Power Platform request limits apply to bulk migrations
Activity records orphaned to inactive owners fail silently
Pair-specific challenges
Migration approach
Discovery and marketing asset inventory
We audit the source Dynamics 365 Marketing environment for Contact volume, marketing contact flag distribution, active Journey definitions, segment criteria, marketing form count, marketing list membership size, and engagement history volume. We pair this with a scoping pass that identifies which records had Marketing Contact billing status in the source and carries that classification forward. The discovery output is a written migration scope with record counts per entity, a Journey and segment asset inventory, and a Microsoft Dynamics 365 Sales edition recommendation (Professional at $65/user or Enterprise at $105/user) based on the pipeline complexity and any required custom objects.
Schema preparation in Microsoft Dynamics 365 Sales
We pre-create all custom fields referenced in the source managed solution schema, including the mktg_contact_flag__c field for the marketing billing classification. If custom entities are in scope, we provision the destination custom object schema with all field types, lookup relationships, and validation rules matched to the source. We configure the Sales Process with the stage values present in the source Opportunities so that the stage probability mapping is valid at import time. All schema changes deploy to a Sandbox first for validation before any data moves.
Sandbox migration and record reconciliation
We execute a full migration into a Microsoft Dynamics 365 Sales Sandbox using production-equivalent data volume. The customer's admin reconciles record counts for Contacts, Accounts, Leads, and Opportunities against the source, spot-checks field values on 25-50 randomly selected records, and validates that the marketing contact flag populated correctly on flagged records. The admin signs off on the sandbox migration before we proceed to production. Any field mapping corrections or schema adjustments happen at this stage.
Owner and User provisioning
We extract every distinct owner referenced on CRM records (Contact, Account, Lead, Opportunity, Activity) and match by email against the destination Microsoft Dynamics 365 Sales User table. Because both source and destination are within the same Microsoft 365 tenant, most users resolve automatically. Any source owner without a matching destination User goes to a reconciliation queue; the admin provisions the missing user. Migration cannot proceed past this step because OwnerId references on Opportunities and Leads are required fields in Microsoft Dynamics 365 Sales .
Production migration in dependency order
We run production migration in the correct dependency sequence: Accounts (from source Companies), Contacts (with AccountId resolved and mktg_contact_flag__c populated), Leads, Opportunities (with OwnerId, AccountId, and Sales Process stage resolved), Activities (Tasks, Events, EmailMessages via Bulk API with chunking), Notes and attachments (with ContentDocumentLink re-association), and Custom Entities last with their lookup references resolved. Each phase emits a row-count reconciliation report before the next phase begins. Marketing lists become static Campaigns with CampaignMember records for the member associations.
Cutover, validation, and Journey rebuild handoff
We freeze writes in Dynamics 365 Marketing during cutover, run a final delta migration for records modified during the migration window, then designate Microsoft Dynamics 365 Sales as the system of record. We deliver the Journey and segment asset inventory document to the customer's admin team, covering every active Journey with its trigger logic, segment criteria, email assets, and recommended Microsoft Dynamics 365 Sales Campaign equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Journeys as Sales Campaigns inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Dynamics 365 Marketing
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Dynamics 365 Marketing and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Marketing and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Dynamics 365 Marketing and Microsoft Dynamics 365 Sales .
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 Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Marketing to Microsoft Dynamics 365 Sales 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 Microsoft Dynamics 365 Sales
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.