CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Field Service and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Dynamics 365 Field Service
Source
HubSpot
Destination
Compatibility
12 of 12
objects map 1:1 between Dynamics 365 Field Service and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
Microsoft Dynamics 365 Field Service organizes data across accounts, contacts, work orders, products, bookable resources, and booking entities — all with relational lookup fields that link records by internal GUIDs. HubSpot uses a flat property system where associations are established by ID rather than by relational field. FlitStack AI reads your Dynamics 365 Field Service schema via the Dataverse API, maps every standard entity (account, contact, work order, product) to its HubSpot equivalent, and converts Dynamics lookup field values into HubSpot association-compatible text properties for manual post-migration linking. Custom fields from Dynamics 365 transfer as HubSpot custom properties — a Data Hub or Operations Hub subscription enables advanced custom field mapping when field types differ. We surface your booking status values, resource mappings, and work order line items for review so you can decide what maps cleanly and what requires a HubSpot custom object or manual rebuild. The migration runs in sequenced API batches: accounts and contacts first, then work orders and products, with a delta-pickup window capturing any records modified during the cutover window.
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.
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 Field Service 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.
Dynamics 365 Field Service
Account
HubSpot
Company
1:1Dynamics 365 account records map 1:1 to HubSpot company records. Primary address fields (city, country, line1) transfer to HubSpot's address properties. The HubSpot company domain property derives from the Dynamics account website field. This direct mapping preserves all standard account fields in HubSpot company properties with no transformation required. Unresolved lookups are flagged before migration commits.
Dynamics 365 Field Service
Contact
HubSpot
Contact
1:1Dynamics 365 contact records migrate to HubSpot contacts. The mobilephone field maps directly to HubSpot mobilephone. The contact's parentcustomerid lookup (account reference) resolves to an association with the target HubSpot company — any unresolved lookups are flagged before migration commits. This ensures account-contact relationships are preserved in HubSpot associations. All standard contact fields transfer as HubSpot contact properties.
Dynamics 365 Field Service
Work Order (msdyn_workorder)
HubSpot
Ticket
1:1Dynamics 365 work orders map to HubSpot tickets. The msdyn_name becomes the ticket subject; msdyn_description becomes the ticket body. Work order status codes (Active, Scheduled, Completed) map via value_mapping to HubSpot ticket_status values (open, pending, closed). The msdyn_serviceaccount lookup resolves to the primary HubSpot company association. Work order priority and incident type fields migrate as custom properties on the ticket.
Dynamics 365 Field Service
Work Order Product (msdyn_workorderproduct)
HubSpot
Line Item
1:1Work order line items migrate as HubSpot line items associated with the migrated ticket. The msdyn_product lookup resolves to a HubSpot product ID — the product must exist in HubSpot first or is created during the migration. Quantity and unit amount transfer as line item properties. Line item tax and discount fields from Dynamics become custom properties on the HubSpot line item.
Dynamics 365 Field Service
Product (msdyn_product)
HubSpot
Product
1:1Dynamics 365 field service products map to HubSpot product records. Product name, product number, and pricedescription transfer directly. The product's default unit map resolves to HubSpot's unit cost property. All standard product fields (stock keeping unit, vendor name) migrate as HubSpot product properties. The product must exist in HubSpot before line item migration references it.
Dynamics 365 Field Service
Bookable Resource (bookableresource)
HubSpot
User
1:1Dynamics 365 bookable resources represent field technicians and equipment. These map to HubSpot users by email match — unmatched bookable resources without email addresses are flagged for manual user creation or exclusion from the migration. Resource type (technician, facility, equipment) becomes a custom property on the HubSpot user or ticket depending on whether the resource maps to a user record or a custom property.
Dynamics 365 Field Service
Booking Status (bookingstatus)
HubSpot
Custom field on Ticket
1:1Dynamics 365 booking status codes (e.g., In Progress, Completed, Canceled) have no native HubSpot equivalent. These migrate as a custom pick-list property (Booking_Status__c) on HubSpot tickets, with value_mapping applied to translate Dynamics status codes to HubSpot-compatible pick-list values. Status reason codes from Dynamics map to corresponding pick-list labels in HubSpot. The custom property is created during migration setup if not already present in HubSpot.
Dynamics 365 Field Service
Facility/Equipment (msdyn_facility)
HubSpot
Custom property or excluded
1:1HubSpot has no native facility or equipment entity. Field service equipment records migrate as HubSpot custom properties (facility name, location, capacity) on the ticket if your HubSpot plan supports custom objects, or are flagged for manual rebuild as a custom HubSpot object. Equipment type and operational status fields become additional custom properties on the associated ticket or custom object.
Dynamics 365 Field Service
Custom Entities (msdyn_* custom)
HubSpot
Custom Object / Custom Property
1:1Dynamics 365 custom entities (entities with names prefixed msdyn_ or custom_* in your Dataverse instance) that lack HubSpot native equivalents migrate as HubSpot custom properties — or as HubSpot custom objects on Enterprise plans. We surface the full list during the schema discovery phase so your team decides the mapping strategy. Custom entity relationships to standard entities (account, contact, work order) are resolved via value_mapping on the corresponding HubSpot custom property or object.
Dynamics 365 Field Service
Note (annotation)
HubSpot
Note
1:1Notes attached to Dynamics 365 accounts, contacts, and work orders migrate as HubSpot engagement notes. Original timestamps, owners, and parent-record links are preserved. Rich-text formatting in Dynamics notes converts to HubSpot's note formatting model. Note attachments (files) require separate handling — they migrate to HubSpot file storage with links embedded in the engagement note record. Any formatting not supported by HubSpot converts to plain text.
Dynamics 365 Field Service
msdyn_WorkOrderIncident
HubSpot
Ticket property
1:1Work order incidents (the problem type or incident category linked to a work order) migrate as a custom pick-list property on the HubSpot ticket. Incident type name becomes the custom property value — no native HubSpot equivalent exists, so this is recreated as Incident_Type__c. The incident's primary customer and product lookups resolve to HubSpot company and product associations where applicable.
Dynamics 365 Field Service
msdyn_PurchaseOrderProduct
HubSpot
Excluded
1:1Purchase order and inventory management records in Dynamics 365 Field Service (used for parts tracking) have no HubSpot equivalent. These records are excluded from the CRM migration scope — your team rebuilds inventory tracking in HubSpot or a separate operations tool. Purchase order history can be exported as a CSV reference file for manual entry into your replacement inventory system.
| Dynamics 365 Field Service | HubSpot | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Work Order (msdyn_workorder) | Ticket1:1 | Fully supported | |
| Work Order Product (msdyn_workorderproduct) | Line Item1:1 | Fully supported | |
| Product (msdyn_product) | Product1:1 | Fully supported | |
| Bookable Resource (bookableresource) | User1:1 | Fully supported | |
| Booking Status (bookingstatus) | Custom field on Ticket1:1 | Fully supported | |
| Facility/Equipment (msdyn_facility) | Custom property or excluded1:1 | Fully supported | |
| Custom Entities (msdyn_* custom) | Custom Object / Custom Property1:1 | Fully supported | |
| Note (annotation) | Note1:1 | Fully supported | |
| msdyn_WorkOrderIncident | Ticket property1:1 | Fully supported | |
| msdyn_PurchaseOrderProduct | Excluded1: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 Field Service gotchas
Dataverse service protection API limits throttle bulk exports
Offline profile FetchXML tuning is source-environment-specific
Project Operations integration has bidirectional sync limitations
Copilot add-on credits do not migrate and reset at zero
File attachments stored in SharePoint require separate file migration
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
Map the full Dynamics 365 Field Service schema before migration
FlitStack AI reads your Dynamics 365 Field Service schema via the Dataverse API. We identify all entities in scope — accounts, contacts, work orders, work order products, products, bookable resources, booking statuses, and any custom msdyn_* or custom_* entities. We deliver a schema mapping plan that specifies which entities migrate, which become HubSpot custom properties, and which are excluded. Your team reviews and approves the entity scope before any data moves. This step prevents orphaned lookup relationships in HubSpot by ensuring all referenced entities are accounted for.
Migrate companies and contacts first — resolve lookup IDs to HubSpot associations
HubSpot requires companies to exist before contacts can be associated. FlitStack AI sequences the migration so accounts (Dynamics) → companies (HubSpot) run first, followed by contacts. Dynamics lookup field GUIDs (parentcustomerid, msdyn_serviceaccount) are resolved against the migrated account IDs to establish correct HubSpot company associations. Any Dynamics lookup pointing to an account that does not migrate is flagged as an error — your team decides whether to create a placeholder company in HubSpot or exclude the orphaned contact from migration.
Resolve Dynamics users and bookable resources to HubSpot users by email
HubSpot owners on tickets are resolved by matching Dynamics user email addresses to HubSpot user records. FlitStack AI runs an email match against your HubSpot user list before migration. Unmatched Dynamics users (including bookable resources without email addresses) are flagged in a pre-migration report. Your team either creates HubSpot users for them first or assigns their records to a fallback owner. No record lands in HubSpot without a resolved owner unless explicitly excluded by your team.
Run a sample migration with field-level diff across all entity types
A representative sample of 50–100 records spanning accounts, contacts, work orders, work order products, and products migrates first. FlitStack AI generates a field-level diff between the Dynamics source values and the HubSpot destination values for every field. Your team verifies that lookup field GUIDs resolved to correct HubSpot association IDs, that status value_mapping applied correctly, that custom fields landed as the intended HubSpot property types, and that owner resolution worked for bookable resources. No full migration run commits until the sample diff is approved.
Execute full migration with delta-pickup window and audit log
The full migration runs in sequenced API batches: companies → contacts → products → work orders → work order products → notes. A delta-pickup window (typically 24–48 hours) runs simultaneously, capturing any Dynamics records modified or created during the cutover period so HubSpot reflects the final state at go-live. FlitStack AI maintains a full audit log of every record migrated, every transformation applied, and every lookup resolved. One-click rollback is available if post-migration reconciliation finds data integrity issues that cannot be resolved through field-level correction.
Platform deep dives
Dynamics 365 Field Service
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 Dynamics 365 Field Service 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
Dynamics 365 Field Service: Service protection limits enforced per org; specific numeric thresholds are not publicly documented by Microsoft and vary by workload type.
Data volume sensitivity
Dynamics 365 Field 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 Dynamics 365 Field Service to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Field Service 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 Dynamics 365 Field Service
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.