CRM migration
Field-level mapping, validation, and rollback between Microsoft Dynamics 365 Sales and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Microsoft Dynamics 365 Sales
Source
HubSpot
Destination
Compatibility
14 of 15
objects map 1:1 between Microsoft Dynamics 365 Sales and HubSpot.
Complexity
BStandard
Timeline
24–72 hours
Try the reverse
Overview
Dynamics 365 Sales stores accounts, contacts, and leads in separate tables with a business-process-flow field (stepname) that has no native HubSpot equivalent. HubSpot uses a single contact object with lifecycle_stage as the unifying property — a contact that never converted in Dynamics becomes a HubSpot contact at the appropriate lifecycle stage, not a separate lead record. We extract Dynamics data via the Dataverse API (accounts, contacts, leads, opportunities, tasks, emails, notes, and custom entities) and map each record into HubSpot's contact, company, deal, and custom object model. Dynamics business process flows — including pipeline stage names, probabilities, and forecast categories — become HubSpot deal pipelines with stage-level mapping. Custom entities in Dynamics migrate as HubSpot custom objects. Dynamics workflows, plugins, and SLA configurations do not migrate and must be rebuilt in HubSpot's automation tools. The migration runs in a staged sequence: accounts first, then contacts with owner resolution by email match, then opportunities, then activities. A delta-pickup window (24–48 hours) captures any records modified in Dynamics during the cutover. We deliver a field-level diff of the sample migration before the full run commits.
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
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Destination platform
HubSpot platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot.
Data migration guide
The complete HubSpot migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Microsoft Dynamics 365 Sales migration guide
Understand the data you're exporting from Microsoft Dynamics 365 Sales before mapping it.
Destination checklist
HubSpot migration checklist
Pre- and post-cutover tasks for moving onto HubSpot.
Source checklist
Microsoft Dynamics 365 Sales migration checklist
Exit checklist for unwinding your Microsoft Dynamics 365 Sales setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Microsoft Dynamics 365 Sales object lands in HubSpot, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Microsoft Dynamics 365 Sales
Account
HubSpot
Company
1:1Dynamics Account maps directly to HubSpot Company. Company name, website, address fields, industry, employee count, and annual revenue transfer as-is. HubSpot does not have a separate parent-account hierarchy in the same way as Dynamics — parent-child relationships map via HubSpot association labels.
Microsoft Dynamics 365 Sales
Contact
HubSpot
Contact
1:1Dynamics Contact maps one‑to‑one to HubSpot Contact, preserving standard fields such as full name, email, phone, job title, and address. Owner resolution matches Dynamics OwnerId email to an existing HubSpot user; unmatched records are flagged for manual assignment before migration. Dynamics StateCode (active/inactive) translates to the corresponding HubSpot lifecycle stage, ensuring active contacts land in the correct lifecycle state.
Microsoft Dynamics 365 Sales
Lead
HubSpot
Contact
1:1Dynamics Lead maps to HubSpot Contact, not a separate lead object. Unconverted Leads land in HubSpot at the lifecycle stage you specify (typically 'lead' or 'MQL'). Dynamics StateCode=1 (Qualified) routes to lifecycle stage 'SQL'. We preserve the original Lead creation date as a custom datetime field.
Microsoft Dynamics 365 Sales
Lead (unqualified)
HubSpot
Contact with lifecycle stage = lead
1:manyDynamics Leads that were never converted split into HubSpot contacts at the 'lead' lifecycle stage. We apply a configurable routing rule based on Lead StateCode and StatusCode so your HubSpot lifecycle distribution reflects your original Dynamics pipeline state at migration time.
Microsoft Dynamics 365 Sales
Opportunity
HubSpot
Deal
1:1Dynamics Opportunity maps to HubSpot Deal. Deal name, amount, close date, probability, and owner transfer directly. Dynamics stepname (business process flow stage) maps to a HubSpot deal pipeline stage — each Dynamics pipeline with its own business process flow becomes a separate HubSpot deal pipeline.
Microsoft Dynamics 365 Sales
Business Process Flow (stepname field)
HubSpot
Deal Pipeline Stage
1:1Dynamics stores pipeline stage as stepname within a business process flow, not on the Opportunity itself. We extract stepname per Opportunity and map it to the corresponding HubSpot deal stage in the target pipeline. Stage entry dates map to HubSpot deal stage history timestamps.
Microsoft Dynamics 365 Sales
Task
HubSpot
Engagement (Task/Email/Call)
1:1Dynamics tasks (phone calls, follow-up tasks) map to HubSpot engagements on the contact timeline. Original timestamps, owners, and subject lines transfer. Task Regarding (linked record) maps to HubSpot's association model so the activity appears on the correct contact or deal.
Microsoft Dynamics 365 Sales
Email (EmailSendProfile / EmailActivity)
HubSpot
Engagement Email
1:1Dynamics email activities map directly to HubSpot email engagements, preserving sender, recipient, subject, body (plain text or HTML), and sent timestamp. Direction (inbound or outbound) is recorded using HubSpot's email direction property. Tracking events such as opens and clicks from Dynamics appear as HubSpot email events on the contact timeline, maintaining engagement history. Attachments in Dynamics emails are stored as HubSpot file links on the engagement record.
Microsoft Dynamics 365 Sales
PhoneCall
HubSpot
Engagement Call
1:1Dynamics phone call records map to HubSpot call engagements, preserving the call subject, duration, direction (inbound or outbound), and the CallOutcome field. Call duration and direction are displayed on the HubSpot contact timeline for accurate activity reporting. If Dynamics stores a call recording URL, it is transferred as a custom property on the HubSpot engagement so users can replay the conversation directly from the record.
Microsoft Dynamics 365 Sales
Note (Annotation)
HubSpot
Engagement Note
1:1Dynamics notes attached to any record such as Account, Contact, or Opportunity are mapped to HubSpot notes on the corresponding contact or deal, preserving note body, author, and file links. The note-created and note-modified timestamps transfer to HubSpot as datetime properties, maintaining an audit trail for compliance. Attachments referenced in Dynamics notes are linked as HubSpot file references so users can access the original documents from the HubSpot record.
Microsoft Dynamics 365 Sales
Custom Entity (Dataverse table)
HubSpot
Custom Object
1:1Dynamics custom tables in Dataverse map 1:1 to HubSpot custom objects. All custom fields transfer as HubSpot custom properties. Lookup relationships from custom entities to Account or Contact map to HubSpot association labels — many-to-many junction tables become HubSpot many-to-many association types.
Microsoft Dynamics 365 Sales
Product
HubSpot
Product (HubSpot line items)
1:1Dynamics Product catalog entries — including product name, product number, default unit price, and quantity — map to HubSpot products, where they become available for line items on deals. Each HubSpot product can be associated with deals via line items, allowing revenue calculations. When Dynamics contains price lists, we create a value‑mapping table that translates each Dynamics price list price to the HubSpot product price, ensuring pricing is applied during migration.
Microsoft Dynamics 365 Sales
User / Owner
HubSpot
User
1:1Dynamics OwnerId (user or team) resolves by email match to HubSpot users. Records owned by Teams route to a designated HubSpot user or queue. Unmatched owners are flagged before migration — your team either creates HubSpot users or reassigns records before the full run.
Microsoft Dynamics 365 Sales
Competitor
HubSpot
Custom Property on Deal
1:1Dynamics Opportunity Competitors lack a native HubSpot counterpart, so we capture each competitor name as a multi-select custom property on the HubSpot Deal. The property stores the list of competitors associated with the opportunity, preserving competitive intelligence context for the deal. If Dynamics stores competitor details such as website or revenue, those can be added as separate custom properties on the deal record to keep richer context.
Microsoft Dynamics 365 Sales
Territory
HubSpot
Custom Property on Contact/Deal
1:1Dynamics territory assignment (Territory object) stores region or district on the Opportunity, and may include levels such as region, district, and zone. HubSpot lacks a native territory field, so we create a custom pick-list property (Territory__c) and map each Dynamics territory value to a HubSpot pick-list entry. If Dynamics uses territory fields, we replicate them as custom properties on the deal or contact record, preserving the territorial hierarchy for reporting.
| Microsoft Dynamics 365 Sales | HubSpot | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead | Contact1:1 | Fully supported | |
| Lead (unqualified) | Contact with lifecycle stage = lead1:many | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Business Process Flow (stepname field) | Deal Pipeline Stage1:1 | Fully supported | |
| Task | Engagement (Task/Email/Call)1:1 | Fully supported | |
| Email (EmailSendProfile / EmailActivity) | Engagement Email1:1 | Fully supported | |
| PhoneCall | Engagement Call1:1 | Fully supported | |
| Note (Annotation) | Engagement Note1:1 | Fully supported | |
| Custom Entity (Dataverse table) | Custom Object1:1 | Fully supported | |
| Product | Product (HubSpot line items)1:1 | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Competitor | Custom Property on Deal1:1 | Fully supported | |
| Territory | Custom Property on Contact/Deal1: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.
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
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
Audit Dynamics data model and build the field mapping specification
FlitStack AI connects to your Dynamics 365 instance via the Dataverse API and inventories all active tables — accounts, contacts, leads, opportunities, tasks, emails, notes, and custom entities. We extract the business process flow definitions (stepname sequences per pipeline) and the StateCode/StatusCode pick-list values. We then produce a field mapping specification that documents exactly how each Dynamics field translates to a HubSpot property, including value mappings for pick-lists and routing rules for lead-to-lifecycle-stage assignment. Your team reviews and approves the specification before any data moves.
Create HubSpot properties and deal pipelines for the migration target
Before data lands, we create all required HubSpot custom properties (custom fields) referenced in the field mapping — for example, Original_Create_Date__c, Dynamics_Contact_ID__c, Dynamics_Lead_ID__c, and Territory__c. We also create the HubSpot deal pipelines that correspond to your Dynamics business process flows, defining each stage name and probability matching the Dynamics stepname sequence. HubSpot's pipeline stage order must be configured manually in HubSpot's pipeline settings, so we deliver step-by-step setup instructions as part of the pre-migration plan.
Resolve owners and map Dynamics users to HubSpot users by email
Dynamics OwnerId (on every record) resolves by email match to HubSpot users. FlitStack AI generates an owner-resolution report listing matched pairs and any Dynamics owners without a corresponding HubSpot user account. Unmatched owners are flagged before the migration — your team either creates HubSpot users for them or designates a fallback HubSpot owner. No record migrates with an unresolved owner. Team-owned records (Dynamics team sharing) are assigned to a designated HubSpot user or a HubSpot Sales team as you specify.
Migrate accounts and contacts first, then leads and opportunities
We sequence the migration to respect HubSpot's foreign-key requirements: accounts (companies) migrate first so contact associations resolve, then contacts and unconverted leads land with their company links intact, then opportunities (deals) attach to their associated contacts and companies, then activities (tasks, emails, notes) attach to their parent records. This ordering ensures that every deal in HubSpot has at least one associated contact and company when the migration completes — the minimum required for deal reporting to function correctly.
Run a sample migration with field-level diff and verify routing rules
A representative sample — typically 200–500 records spanning each major entity type — migrates first. We generate a field-level diff showing the source value in Dynamics, the mapped value in HubSpot, and any transformation notes. You verify the lifecycle-stage routing for converted vs. unconverted leads, the deal-stage mapping for each pipeline, and owner resolution. Any discrepancies in the sample are corrected in the mapping specification before the full migration runs.
Execute full migration with delta-pickup and one-click rollback
The full migration runs against your HubSpot instance. A delta-pickup window (24–48 hours after the initial run) captures any records created or modified in Dynamics during the cutover so HubSpot reflects the final state of Dynamics at go-live. FlitStack AI audit log records every operation — record count per entity, field-level mapping applied, and owner resolution summary. If reconciliation reveals unexpected gaps, one-click rollback reverts the HubSpot environment to its pre-migration state so your team can investigate without data loss.
Platform deep dives
Microsoft Dynamics 365 Sales
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Microsoft Dynamics 365 Sales and HubSpot.
Object compatibility
1 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
Microsoft Dynamics 365 Sales : Per-user and per-environment request limits enforced across Power Platform; exact limits vary by license tier and environment capacity.
Data volume sensitivity
Microsoft Dynamics 365 Sales 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 Microsoft Dynamics 365 Sales to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Microsoft Dynamics 365 Sales to HubSpot migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Microsoft Dynamics 365 Sales
Other ways to arrive at HubSpot
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.