CRM migration
Field-level mapping, validation, and rollback between Salesforce Marketing Cloud Account Engagement and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
Salesforce Marketing Cloud Account Engagement
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
7 of 10
objects map 1:1 between Salesforce Marketing Cloud Account Engagement and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Salesforce Marketing Cloud Account Engagement to Microsoft Microsoft Dynamics 365 Sales is a structural shift from a B2B marketing automation platform tightly coupled to Salesforce CRM, into a sales CRM that sits at the center of the Microsoft 365 ecosystem. The central challenge is that MCAE's Prospect object has no direct equivalent in Microsoft Dynamics 365 Sales — Prospects must be distributed across Leads, Contacts, and Accounts, and the decision about which records become which is a scoping call that determines whether your lead routing survives the move. We map Prospects by scoring tier: Prospects with high behavioural scores and no associated Account map to Lead; Prospects linked to a Salesforce Account that maps to a Dynamics Account become Contacts; and Prospects without an email match are held for manual resolution. Custom Fields migrate as typed fields against the appropriate Dynamics entity. Email Templates carry their HTML content but require merge field syntax to be rewritten from Pardot double-brace (%%first_name%%) to Dynamics-compatible tokens. Scoring Categories, Tags, and List memberships migrate as data but not as active automation logic — the scoring weights and list membership rules are documented for your Dynamics admin to rebuild using Sales Copilot or Power Automate. Engagement Programs and Automation Rules do not migrate because they reference internal Pardot IDs that do not exist in Dynamics 365; we deliver a written program inventory with recommended Dynamics equivalents. The Dynamics 365 Dataverse API governs all record inserts, with batch chunking, exponential backoff, and owner lookup resolution against the Microsoft 365 User table.
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
Salesforce Marketing Cloud Account Engagement platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Marketing Cloud Account Engagement.
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 Salesforce Marketing Cloud Account Engagement 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.
Salesforce Marketing Cloud Account Engagement
Prospect
Microsoft Dynamics 365 Sales
Lead or Contact (split required)
1:manyMCAE Prospects have no direct Dynamics 365 equivalent. We split Prospects by scoring tier at migration time: Prospects with a behavioural score above a customer-defined threshold and a linked Salesforce Account that maps to a Dynamics Account become Contacts attached to that Account. Prospects with scores below the threshold or no Account linkage become Leads. The split threshold is defined during scoping based on the customer's scoring category matrix. The original Pardot prospect score migrates as a custom field prospect_score__c on both Lead and Contact for audit and rebuild reference. Email address is the sole unique identifier in Pardot; we apply a three-pass matching strategy (exact email, normalised email, manual resolution queue) to detect duplicates before insert.
Salesforce Marketing Cloud Account Engagement
Custom Field
Microsoft Dynamics 365 Sales
Custom Field (on Lead, Contact, or Account)
1:1Pardot Custom Fields are first-class API objects with full CRUD support in the v5 API. We export field definitions (label, data type, associated Tags) and their values per Prospect. Each Custom Field maps to a typed field on the appropriate Dynamics entity (Lead or Contact) based on whether the Prospect splits to Lead or Contact. Picklist and multi-select fields require a value-set audit against Dynamics AllowedValues. Custom Fields that reference Pardot-only objects (Engagement Programs, Scoring Categories) are flagged as data fields rather than functional fields and migrated as text or picklist values.
Salesforce Marketing Cloud Account Engagement
Account (Salesforce-linked)
Microsoft Dynamics 365 Sales
Account
1:1MCAE has no native Account object — Prospects are linked to Salesforce Accounts via the Pardot-Salesforce Connector. We resolve the Salesforce Account ID stored on each Prospect and map it to a Dynamics Account. If the Salesforce Account name does not already exist as a Dynamics Account, we create it during the migration. Account Website, Industry, and Address fields migrate directly. Account records are inserted before Contact and Lead records so that AccountId lookups are satisfied at the time of record import.
Salesforce Marketing Cloud Account Engagement
Campaign
Microsoft Dynamics 365 Sales
Campaign
1:1MCAE Campaigns track marketing initiative performance and link to Salesforce Campaigns. We export Campaign metadata (Name, Type, Status, StartDate, EndDate, BudgetedCost) and Prospect-level activity data (opens, clicks, form submissions) as Campaign Member activity records in Dynamics 365. The Campaign Member Status field maps from MCAE Campaign member engagement status. Campaign hierarchies (parent-child campaign structures in Pardot) map to Dynamics Campaign hierarchy via ParentCampaignId lookup.
Salesforce Marketing Cloud Account Engagement
User / Owner
Microsoft Dynamics 365 Sales
User (Microsoft 365)
1:1Pardot Users (Assigned Users / Owners) correspond to the Salesforce Users who own Prospect records. We map Pardot user_id to Dynamics User by email address lookup against the Microsoft 365 Azure Active Directory tenant. Owners without a matching Dynamics User go to a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Pardot users are mapped to inactive Dynamics users so that OwnerId references are satisfied without reactivating licences.
Salesforce Marketing Cloud Account Engagement
Tag
Microsoft Dynamics 365 Sales
Multi-Select Picklist or Topic
lossyTags segment Prospects and attach to Custom Fields. We export tag definitions and their assignments per Prospect. Tags migrate as a multi-select picklist on Lead or Contact, or as Dynamics Topics with TopicAssignment records, depending on the customer's use case. The tag strategy is chosen during scoping. Tags used for marketing segmentation map to Dynamics marketing lists and Campaign Member records.
Salesforce Marketing Cloud Account Engagement
Scoring Category
Microsoft Dynamics 365 Sales
Custom Field + Scoring Specification
lossyScoring Categories define named weight buckets (behavioural score vs. demographic grade). We export category definitions, weight rules, and the per-Prospect category scores. The scores migrate as typed fields on Lead or Contact. The weight logic is not functional at the destination — it is documented as a written specification for the customer's Dynamics admin to rebuild using Sales Copilot lead scoring or a Power Automate flow with a scoring calculation layer.
Salesforce Marketing Cloud Account Engagement
List / Segment
Microsoft Dynamics 365 Sales
Marketing List or SharePoint List
1:1Static Lists and Dynamic Lists segment Prospects for targeted campaigns. We export list memberships as Prospect records with the list name stored on each record. Dynamic Lists with rule-based criteria do not migrate as active lists — the criteria are documented and the customer rebuilds them as Dynamics Marketing Lists or Power Automate-based segments. Static list memberships migrate as a custom field list_name__c or as Campaign Member records linked to a corresponding Dynamics Campaign.
Salesforce Marketing Cloud Account Engagement
Email Template
Microsoft Dynamics 365 Sales
Dynamics Email Template
1:1Email Templates contain HTML content, dynamic content blocks, and merge fields. We export template HTML and metadata. The double-brace Pardot merge field syntax (%%first_name%%, %%email%%) is rewritten to Dynamics-compatible token syntax ({(lead.firstname)}, {(lead.emailaddress})). Templates with complex branching conditional logic are flagged for manual rebuild in Dynamics Email Templates or Power Automate approval flows rather than automated import, because Dynamics Email Templates handle conditional content differently from Pardot dynamic content blocks.
Salesforce Marketing Cloud Account Engagement
Engagement Activity (opens, clicks, form submissions)
Microsoft Dynamics 365 Sales
Campaign Activity or Note
1:1MCAE tracks Prospect engagement activity (email opens, link clicks, form submissions) against Campaigns. We export engagement history per Prospect-Campaign pair and create Campaign Activity records in Dynamics or Notes linked to the corresponding Contact or Lead. Engagement timestamps are preserved. Note that MCAE's Visitor Activity tracking (anonymous browsing behaviour) does not have a native Dynamics equivalent and is documented as a gap in the written migration report.
| Salesforce Marketing Cloud Account Engagement | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Prospect | Lead or Contact (split required)1:many | Fully supported | |
| Custom Field | Custom Field (on Lead, Contact, or Account)1:1 | Fully supported | |
| Account (Salesforce-linked) | Account1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| User / Owner | User (Microsoft 365)1:1 | Fully supported | |
| Tag | Multi-Select Picklist or Topiclossy | Fully supported | |
| Scoring Category | Custom Field + Scoring Specificationlossy | Fully supported | |
| List / Segment | Marketing List or SharePoint List1:1 | Fully supported | |
| Email Template | Dynamics Email Template1:1 | Fully supported | |
| Engagement Activity (opens, clicks, form submissions) | Campaign Activity or Note1: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.
Salesforce Marketing Cloud Account Engagement gotchas
Engagement Programs and Automation Rules cannot be exported
Prospect contact volume limits enforced per tier
Email address is the sole unique identifier for Prospect matching
Multi-Business Unit accounts require separate migration scoping
Email Template merge fields use Pardot syntax incompatible with most destinations
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 object audit
We audit the source MCAE account across Business Units, Prospect volume, Custom Field definitions (label, type, associated Tags), Scoring Category rules, List memberships, Email Template count and complexity, and active Engagement Program count. We pair this with a Microsoft Dynamics 365 Sales environment audit: edition (Professional at $65/user, Enterprise at $105/user, Premium at $150/user), existing entity schema, User count, and active Power Automate flows. The discovery output is a written migration scope document that defines the Lead-Contact split threshold, the Custom Field mapping to Dynamics entities, and a list of Engagement Programs requiring rebuild specification.
Lead-Contact split rule design and Dynamics schema preparation
We design the destination schema in Microsoft Dynamics 365 Sales . This includes provisioning any missing custom fields on Lead and Contact (with Salesforce field types matched to Dynamics column types), configuring Lead Status values, defining Account naming conventions, and setting up Dynamics Marketing Lists to replace MCAE static lists. The Lead-Contact split threshold is codified as a SQL transform rule that runs during the Prospect export. Dynamics schema is deployed into a Sandbox environment first for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into a Dynamics 365 Sandbox using production-like data volume. The customer's Dynamics admin and RevOps lead reconcile record counts (Leads in, Contacts in, Accounts in, Campaign Members in), spot-check 25-50 records against the MCAE source, and validate that merge field syntax renders correctly in a test email template. Any mapping corrections — field type mismatches, picklist value gaps, Owner lookup failures — are logged and fixed in the sandbox before production migration begins.
Owner reconciliation and Microsoft 365 User provisioning
We extract every distinct Pardot User referenced on Prospect records and match by email against the Dynamics 365 destination's Azure Active Directory User table. Unmatched owners go to a reconciliation queue. The customer's IT team provisions any missing Microsoft 365 users and assigns Dynamics 365 Security Roles before record import resumes. OwnerId references must be satisfied before inserting Leads and Contacts because Dynamics enforces lookups at insert time.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Salesforce Accounts linked to Prospects), Users (validated, provisioned), Leads and Contacts (with the scoring-tier split applied and email dedupe resolved), Custom Field values on each record, Campaigns (with Campaign Member activity history), Scoring Category data (as custom fields), Tags (as multi-select picklist values), Lists (as Marketing Lists), and Email Templates (with merge field syntax rewritten). Each phase emits a row-count reconciliation report before the next phase begins. The Dynamics Dataverse API governs all inserts with batch chunking and exponential backoff.
Cutover, delta migration, and Engagement Program handoff
We freeze MCAE Prospect writes during cutover, run a final delta migration of any records modified during the migration window, then enable Microsoft Dynamics 365 Sales as the CRM of record. We deliver the Engagement Program inventory document (all active programs documented with triggers, stages, actions, and recommended Dynamics equivalent) to the customer's admin team. We support a one-week hypercare window for reconciliation issues. Rebuilding Engagement Programs, Automation Rules, and dynamic scoring logic is outside standard migration scope — it is a separate engagement or an internal admin rebuild task.
Platform deep dives
Salesforce Marketing Cloud Account Engagement
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Salesforce Marketing Cloud Account Engagement and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Salesforce Marketing Cloud Account Engagement and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between Salesforce Marketing Cloud Account Engagement 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
Salesforce Marketing Cloud Account Engagement: Daily API quota varies by Account Engagement edition (tier); resets at start of day in the account's time zone. Maximum 5 concurrent requests per Business Unit. Exceeding the daily limit returns error code 122..
Data volume sensitivity
Salesforce Marketing Cloud Account Engagement 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 Salesforce Marketing Cloud Account Engagement to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your Salesforce Marketing Cloud Account Engagement 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 Salesforce Marketing Cloud Account Engagement
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.