CRM migration
Field-level mapping, validation, and rollback between CRM Service and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
CRM Service
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
10 of 10
objects map 1:1 between CRM Service and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from CRM Service (Salesforce) to Microsoft Dynamics 365 Sales is a cross-platform structural migration requiring explicit mapping between two fundamentally different object models. Salesforce stores Contacts under Accounts; Dynamics 365 Sales uses the same Account-Contact hierarchy but with different field naming conventions, option set values, and address structures. Custom fields carry the __c suffix in Salesforce and require explicit mapping to Dynamics 365 custom fields before import. We sequence the migration parent-before-child to maintain referential integrity—Accounts first, then Contacts with their AccountId lookups resolved, then Opportunities with stage values mapped to Dynamics 365 sales processes. Workflow Rules, Process Builder flows, and Approval Processes do not migrate between platforms; we deliver a written inventory of every active automation with Power Automate equivalents so the customer's admin rebuilds them post-migration. Reports and dashboards similarly do not transfer; we export report metadata for manual reconstruction in Dynamics 365 with Power BI.
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
CRM Service platform overview
Scorecard, SWOT, gotchas, and pricing for CRM Service.
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 CRM Service 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.
CRM Service
Account
Microsoft Dynamics 365 Sales
Account
1:1Salesforce Account maps directly to Dynamics 365 Sales Account. We preserve the Account Name, Account Number, Industry, Annual Revenue, Website, Phone, and Address fields. Salesforce supports multiple address types (Billing, Shipping) per Account; Dynamics 365 Account supports a composite address structure where we map Billing Address to the primary Account address and note any additional Shipping address for manual entry or Dynamics 365 address parsing. Parent Account hierarchy maps to the Parent Account lookup field in Dynamics.
CRM Service
Contact
Microsoft Dynamics 365 Sales
Contact
1:1Salesforce Contact maps to Dynamics 365 Contact with the Account lookup resolved to the target Dynamics Account. We map FirstName, LastName, Email, Phone, Title, Department, and the Contact's Mailing Address. The Salesforce __c custom fields on Contact migrate to custom fields in Dynamics 365 with explicit naming mapping. Contact-Account linkage is preserved by resolving the Salesforce AccountId to the newly created Dynamics Account record at migration time.
CRM Service
Opportunity
Microsoft Dynamics 365 Sales
Opportunity
1:1Salesforce Opportunity maps to Dynamics 365 Opportunity. We map Name, Amount, CloseDate, StageName, Probability, and Description. The Salesforce stage mapping is the most critical transform: each Salesforce Opportunity Stage maps to a Dynamics 365 Sales Process stage name. We query the Salesforce stage values during discovery and configure the corresponding Dynamics Sales Process before migration. OwnerId maps to the Dynamics User by email match.
CRM Service
Lead
Microsoft Dynamics 365 Sales
Lead
1:1Salesforce Lead maps to Dynamics 365 Lead. We map FirstName, LastName, Company, Email, Phone, LeadSource, Status, and Rating. Salesforce's Lead Status picklist values map to Dynamics 365 Lead Status option set values. Custom fields on the Salesforce Lead object (including any __c fields) map to custom Lead fields in Dynamics 365. The customer's Salesforce admin determines whether historical Leads should be fully migrated or archived based on status and age.
CRM Service
Campaign
Microsoft Dynamics 365 Sales
Campaign
1:1Salesforce Campaign maps to Dynamics 365 Campaign. Campaign Name, Type, Status, StartDate, EndDate, BudgetedCost, and ActualCostValue migrate. Campaign Members (Contacts associated with the Campaign) migrate as Campaign Responses or Campaign Access in Dynamics 365. We preserve the Campaign member status (Sent, Responded, Opened) in custom fields since Dynamics 365 Campaign Response does not directly replicate Salesforce's CampaignMember object model.
CRM Service
Case
Microsoft Dynamics 365 Sales
Case
1:1Salesforce Case (from Service Cloud) maps to Dynamics 365 Case if the destination includes the Customer Service app. We map Case Number, Subject, Description, Status, Priority, Origin, and Account/Contact lookups. Open Cases migrate with full Case history preserved as Activities. Very old closed Cases are often excluded from migration scope per customer decision to reduce migration volume.
CRM Service
Custom Object (__c)
Microsoft Dynamics 365 Sales
Custom Entity
1:1Salesforce custom objects carry the __c suffix and may have independent schemas and lookup relationships to standard objects. We export the full custom object schema including all custom fields, lookup relationships, and validation rules during discovery, then pre-create the corresponding custom entities in Dynamics 365 Dataverse before migration. Lookup relationships to Account, Contact, or Opportunity resolve to the Dynamics 365 target records at migration time. The __c suffix does not apply in Dynamics 365; we map API names directly without transformation.
CRM Service
Task and Event
Microsoft Dynamics 365 Sales
Activity (Task and Appointment)
1:1Salesforce Task maps to Dynamics 365 Activity Task; Salesforce Event maps to Dynamics 365 Appointment. We preserve Subject, Status, Priority, ActivityDate (Task) or StartDateTime/EndDateTime (Event), Location, and Description. The WhatId (related to Opportunity or Account) and WhoId (related to Contact or Lead) are resolved to the target Dynamics 365 records at migration time. Large Activity migrations (over 100,000 records) require batch processing with Dynamics 365 Dataverse API rate-limit handling.
CRM Service
EmailMessage
Microsoft Dynamics 365 Sales
Email (Activity)
1:1Salesforce EmailMessage records (email history tracked via Salesforce Inbox or Email Log) map to Dynamics 365 email activities. The email From, To, Subject, Body, and MessageDate migrate. Salesforce BCC addresses used for email tracking map to the Dynamics 365 Server-Side Sync configuration for ongoing email capture post-migration. Email attachments migrate as notes or file attachments linked to the activity record.
CRM Service
Note and Attachment
Microsoft Dynamics 365 Sales
Note and Attachment
1:1Salesforce Notes migrate to Dynamics 365 Notes (the timeline-style note or the classic Note entity) linked to the parent Account, Contact, Opportunity, or Lead. Salesforce Attachments migrate as file attachments in Dynamics 365. Large file attachments (over 15 MB per file in Dynamics 365) require SharePoint integration or Dynamics 365's document management capability enabled during migration scoping.
| CRM Service | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Account | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Case | Case1:1 | Fully supported | |
| Custom Object (__c) | Custom Entity1:1 | Fully supported | |
| Task and Event | Activity (Task and Appointment)1:1 | Fully supported | |
| EmailMessage | Email (Activity)1:1 | Fully supported | |
| Note and Attachment | Note and Attachment1: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.
CRM Service gotchas
API rate limits vary by edition without public documentation
Data Export frequency limited by edition tier
Custom object __c suffix causes field name mismatches in exports
Automations and flows do not migrate between platforms
Multi-select picklist values may exceed destination field limits
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 data profiling
We audit the source Salesforce org across edition tier, custom objects and fields (including all __c fields), active Workflow Rules and Process Builder flows, pipeline stage definitions, and record volumes per object. We profile data quality by sampling Accounts and Contacts for duplicates, missing required fields, and inconsistent address formats. We pair this with Dynamics 365 Sales edition assessment and confirm whether the destination tenant is fresh or partially populated. The discovery output is a written migration scope document including the custom field map, Power Automate rebuild inventory, and data quality remediation checklist.
Schema design and Dynamics 365 configuration
We design the destination schema in Dynamics 365 Sales. This includes provisioning custom fields (matching Salesforce __c fields to Dynamics 365 Dataverse column definitions), configuring Sales Processes and stage values to mirror Salesforce Opportunity stages, setting up option sets for picklist values, and configuring the Activity timeline to match the migrated engagement types. Schema is deployed into a Dynamics 365 Sandbox environment first for validation. We also configure the Microsoft 365 integration connections (Outlook, Teams) during this phase so that email tracking and calendar sync are ready for go-live.
Sandbox migration and reconciliation
We run a full migration into the Dynamics 365 Sandbox using a representative data sample (typically 10-20% of production volume). The customer's sales operations lead reconciles record counts, spot-checks 25-50 records against the Salesforce source, and validates that pipeline stages, custom fields, and address data map correctly. Mapping corrections are applied before any production migration begins. This step also validates that the Dynamics 365 Sales Process stage sequence aligns with the customer's actual sales motion.
Owner and user provisioning
We extract every distinct Salesforce Owner referenced on Account, Contact, Opportunity, Lead, and Activity records and match by email against the Dynamics 365 destination User table. Any Salesforce Owner without a matching Dynamics 365 User goes to a reconciliation queue. The customer's Dynamics 365 admin provisions any missing Users (as active if they are current employees or inactive if archived). Owner resolution must be complete before record import because OwnerId lookups are required on standard objects. We also confirm that the correct Dynamics 365 security roles are assigned to migrated users.
Production migration in dependency order
We run production migration in record-dependency order: Accounts first (the parent object), then Contacts with AccountId resolved, then Leads, then Opportunities with AccountId, OwnerId, and Sales Process resolved. Products and Price List items follow Opportunities. Activity history (Tasks, Events, EmailMessage) migrates via Dynamics 365 Dataverse API with batch chunking and rate-limit backoff. Custom objects migrate last because they frequently contain lookups to the standard objects imported earlier. Each phase emits a row-count reconciliation report before the next phase begins. We freeze Salesforce writes during the cutover window.
Cutover, validation, and Power Automate rebuild handoff
We freeze Salesforce writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dynamics 365 Sales as the system of record. We validate the Activity timeline by spot-checking 20 records across Tasks, Events, and Email records to confirm parent-lookup resolution. We deliver the Power Automate rebuild inventory document to the customer's admin team with the trigger, conditions, and action sequence for each Salesforce automation requiring reconstruction. We support a one-week hypercare window for reconciliation issues. We do not rebuild Salesforce workflows as Power Automate flows inside the migration scope; that is a separate engagement.
Platform deep dives
CRM Service
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 CRM Service and Microsoft Dynamics 365 Sales .
Object compatibility
3 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
CRM Service: Varies by edition and license type; not publicly documented with specific numbers.
Data volume sensitivity
CRM Service 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 CRM Service to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your CRM Service 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 CRM Service
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.