CRM migration

Migrate from CRM Service to Microsoft Dynamics 365 Sales

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 logo

CRM Service

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

100%

10 of 10

objects map 1:1 between CRM Service and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

CRM Service logo

CRM Service

What's pushing teams away

  • Requires dedicated Salesforce administrator or ongoing consultant engagement for configuration changes that other CRMs handle through self-service
  • Per-user pricing compounds significantly as teams grow, with essential features like workflow automation and advanced reporting gated behind Enterprise and above
  • Complex data model with multiple object types and custom fields creates migration complexity and data cleaning requirements before switching platforms
  • Implementation costs add approximately 35% to base subscription price when accounting for professional services, training, and change management
  • Limited features in lower tiers force organizations into expensive upgrades when growth requires capabilities like advanced pipeline management or AI-powered insights

Choosing

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

What's pulling them in

  • Deep Microsoft 365, Teams, and Outlook integration makes Microsoft Dynamics 365 Sales a natural fit for Microsoft-first organizations already invested in that ecosystem
  • Sales Enterprise and Premium tiers offer unlimited custom tables and advanced AI-driven forecasting and predictive analytics not available in lower tiers
  • Professional tier pricing at $65 per user per month offers a lower entry cost than Salesforce for SMB teams with straightforward CRM needs
  • Flexible customization options allow businesses to build bespoke apps, tailor forms and views, and integrate with other Dynamics 365 modules
  • Microsoft Copilot AI tools are embedded directly into the sales workflow on Enterprise and Premium, automating routine tasks and providing deal intelligence

Object mapping

How CRM Service objects map to Microsoft Dynamics 365 Sales

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

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Lead

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Campaign

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Case

1:1
Fully supported

Salesforce 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)

maps to

Microsoft Dynamics 365 Sales

Custom Entity

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Activity (Task and Appointment)

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Email (Activity)

1:1
Fully supported

Salesforce 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

maps to

Microsoft Dynamics 365 Sales

Note and Attachment

1:1
Fully supported

Salesforce 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.

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.

CRM Service logo

CRM Service gotchas

High

API rate limits vary by edition without public documentation

Medium

Data Export frequency limited by edition tier

Medium

Custom object __c suffix causes field name mismatches in exports

High

Automations and flows do not migrate between platforms

Low

Multi-select picklist values may exceed destination field limits

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales gotchas

High

Professional tier 15-table custom table limit blocks migrations

High

October 2024 pricing increase applies at renewal for all customers

Medium

Custom fields must be created in the UI before API writes

Medium

Power Platform request limits apply to bulk migrations

Medium

Activity records orphaned to inactive owners fail silently

Pair-specific challenges

  • Salesforce __c custom field suffixes have no Dynamics 365 equivalent

    Salesforce appends __c to all custom field API names and __r to custom relationship names. Dynamics 365 (built on Dataverse) uses different naming conventions with no automatic suffix mapping. We export the complete Salesforce field list including __c suffixes during discovery, then create explicit mapping rules for each custom field to the target Dynamics 365 custom field API name. Custom objects (__c objects) similarly require pre-creation of corresponding Dataverse tables before data import. Skipping this step results in silent field loss where custom fields appear absent in the destination.

  • Workflow Rules and Process Builder flows do not migrate to Power Automate

    Salesforce Workflow Rules, Process Builder flows, Approval Processes, and Flow definitions are configuration artifacts that cannot be exported and imported into Microsoft Dynamics 365. The automation logic must be rebuilt in Power Automate or as Dynamics 365 business rules. We document every active Salesforce automation during discovery with its trigger, conditions, actions, and time-based components, and we deliver a written Power Automate rebuild inventory. This documentation effort alone typically requires 1-2 hours per complex workflow. Customers commonly underestimate this scope; we flag it explicitly during scoping.

  • Salesforce API rate limits differ by edition and license type without public documentation

    Salesforce enforces API limits that vary by edition, license type, and API type (REST vs Bulk vs Streaming). There is no single publicly documented rate limit. We discover limits during migration scoping by monitoring 429 responses and adjusting chunk sizes accordingly. Dynamics 365 Dataverse API has its own per-user and per-application throttle limits (currently 60,000 requests per ten minutes per user for most workloads) that must be respected during import. We manage both platforms' rate limits concurrently during migration.

  • Multi-select picklist values may exceed Dynamics 365 option set limits

    Salesforce allows unlimited values in multi-select picklists, but Dynamics 365 option sets have practical limits on the number of allowed values and are tied to the global option set schema. We flag multi-select fields during scoping, export the complete value set, and map them to Dynamics 365 option sets or (for very large value sets) to separate lookup tables or text fields. Where Dynamics 365 cannot accommodate all values, we prioritize active values and document excluded options for manual handling.

  • Address structure differences cause data misalignment if not explicitly mapped

    Salesforce stores Billing and Shipping address as separate composite address fields on Account and Contact. Dynamics 365 Account uses a single address record per address purpose (Invoice, Delivery, etc.) and only one can be marked as the primary address. Accounts with both Billing and Shipping addresses in Salesforce require transformation into two separate Dynamics 365 address records. Teams that treat this as a straightforward 1:1 mapping end up with merged or missing address data in Dynamics 365, which breaks shipping integrations and reporting.

Migration approach

Six steps for a successful CRM Service to Microsoft Dynamics 365 Sales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

CRM Service logo

CRM Service

Source

Strengths

  • Comprehensive standard object coverage including Accounts, Contacts, Opportunities, Leads, Campaigns, and Cases
  • Enterprise-grade API with bulk operations, webhooks, and OAuth 2.0 authentication across all editions
  • Highly customizable data model allowing unlimited custom objects with independent schemas and relationships
  • Large ecosystem of certified administrators, consultants, and implementation partners available for complex deployments
  • Advanced reporting and forecasting capabilities available at Enterprise and above tiers including Einstein AI

Weaknesses

  • Per-user pricing model scales linearly, making large teams expensive relative to flat-rate alternatives
  • Essential features gated behind higher tiers: workflow automation, approval processes, and advanced analytics require Enterprise minimum
  • Implementation costs add significant overhead: approximately 35% above subscription for professional services and training
  • Requires dedicated admin or consultant for configuration changes; self-service customization has practical limits without expertise
  • Custom objects and fields create migration complexity when switching platforms, often requiring field-by-field mapping
Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

Destination

Strengths

  • Native integration with Microsoft 365, Teams, Outlook, and SharePoint for unified productivity workflow
  • Unlimited custom tables and complex workflows on Enterprise tier enable deep customization for complex sales processes
  • AI-driven predictive analytics and deal intelligence on Enterprise and Premium tiers help sales teams prioritize pipeline
  • Dataverse unified data layer provides a consistent API and data model across all Dynamics 365 and Power Platform apps
  • Strong security model with Field-Level Security and Record Ownership rules for governance-conscious enterprises

Weaknesses

  • Sales Professional tier caps custom tables at 15, creating a migration ceiling for highly customized SMB environments
  • October 2024 pricing increases of $15 per user across all tiers apply to existing customers upon renewal
  • Implementation typically requires costly certified partners, adding 30–50% to total project cost
  • Updates and platform releases can disrupt customizations and plugins, requiring regression testing after each wave
  • Non-Microsoft integrations require additional configuration or middleware, limiting flexibility for heterogeneous tech stacks

Complexity grading

How hard is this migration?

Standard CRM migration. 3 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 CRM Service and Microsoft Dynamics 365 Sales .

  • Object compatibility

    B

    3 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

    CRM Service: Varies by edition and license type; not publicly documented with specific numbers.

  • Data volume sensitivity

    A

    CRM Service exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your CRM Service to Microsoft Dynamics 365 Sales 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 CRM Service to Microsoft Dynamics 365 Sales data migrations

Answers to the questions buyers ask most during CRM Service to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between four and six weeks for organizations under 30,000 Contacts and 5,000 Opportunities with no custom objects and clean data. Migrations with custom objects (__c fields), large Activity histories (over 500,000 Task or Event records), multiple Salesforce orgs merged into one Dynamics 365 instance, or complex pipeline stage configurations move to ten to sixteen weeks because of Dataverse API batch handling, Power Automate inventory documentation, and sandbox reconciliation cycles.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CRM Service.
Land in Microsoft Dynamics 365 Sales , 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