CRM migration

Migrate from Dynamics 365 Field Service to HubSpot

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 logo

Dynamics 365 Field Service

Source

HubSpot

Destination

HubSpot logo

Compatibility

100%

12 of 12

objects map 1:1 between Dynamics 365 Field Service and HubSpot.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Dynamics 365 Field Service logo

Dynamics 365 Field Service

What's pushing teams away

  • Implementation requires certified Microsoft partners for anything beyond basic configuration; simple customizations that competitors handle in-house demand developer resources, inflating total cost of ownership.
  • Per-user licensing at $105/month compounds quickly—technicians, dispatchers, supervisors, and parts staff each require seats, and the true headcount often exceeds initial estimates.
  • Performance degrades when Work Order histories grow large; pages load slowly and offline sync timeouts occur in datasets exceeding tens of thousands of records without careful FetchXML tuning.
  • Change management and staff training are underestimated; technicians accustomed to simple mobile tools struggle with the learning curve, leading to low adoption and shadow systems.
  • The platform integrates poorly with non-Microsoft ERPs out of the box; customers using Business Central face custom integration work, and those on other ERP systems must build middleware.

Choosing

HubSpot logo

HubSpot

What's pulling them in

  • Lowest barrier to entry of any major CRM — the free tier with unlimited contacts lets teams validate fit before committing to a paid plan, according to G2 and Capterra reviewers.
  • Native integration between the CRM and sales engagement tools (sequences, email tracking, dialer) means no separate sync configuration, a theme across G2 Sales Hub reviews.
  • Pipeline visualization, deal tracking, and automated workflows are consistently praised as intuitive and easy to set up without developer involvement.
  • Strong onboarding for new team members — reviewers on Capterra and G2 highlight how quickly new reps become productive without formal training.
  • The HubSpot platform ecosystem (Marketing, Sales, Service, CMS hubs) allows growing companies to consolidate tools without building new integrations.

Object mapping

How Dynamics 365 Field Service objects map to HubSpot

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

maps to

HubSpot

Company

1:1
Fully supported

Dynamics 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

maps to

HubSpot

Contact

1:1
Fully supported

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

maps to

HubSpot

Ticket

1:1
Fully supported

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

maps to

HubSpot

Line Item

1:1
Fully supported

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

maps to

HubSpot

Product

1:1
Fully supported

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

maps to

HubSpot

User

1:1
Fully supported

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

maps to

HubSpot

Custom field on Ticket

1:1
Fully supported

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

maps to

HubSpot

Custom property or excluded

1:1
Fully supported

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

maps to

HubSpot

Custom Object / Custom Property

1:1
Fully supported

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

maps to

HubSpot

Note

1:1
Fully supported

Notes 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

maps to

HubSpot

Ticket property

1:1
Fully supported

Work 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

maps to

HubSpot

Excluded

1:1
Fully supported

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

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.

Dynamics 365 Field Service logo

Dynamics 365 Field Service gotchas

High

Dataverse service protection API limits throttle bulk exports

Medium

Offline profile FetchXML tuning is source-environment-specific

Medium

Project Operations integration has bidirectional sync limitations

Medium

Copilot add-on credits do not migrate and reset at zero

Low

File attachments stored in SharePoint require separate file migration

HubSpot logo

HubSpot gotchas

High

Marketing Contacts billing model is migration-critical

High

Feature tier gating is not visible until onboarding

Medium

Mandatory onboarding fees inflate year-one cost

Medium

HubSpot CSV importer cannot migrate engagements or attachments

Medium

Custom objects require Enterprise and a pre-existing schema

Pair-specific challenges

  • Dynamics 365 lookup fields have no native HubSpot equivalent — relationships convert to text IDs

    Dynamics 365 Field Service uses lookup fields (msdyn_serviceaccount, parentcustomerid, msdyn_product) to establish typed relationships between entities. HubSpot has no native lookup field mechanism — associations are handled by ID or through HubSpot's association labels. FlitStack AI converts Dynamics lookup field GUIDs to HubSpot-compatible text properties and resolves them to actual HubSpot record IDs during migration, but post-migration verification of relationship integrity is required. Your team should audit account-contact and work order-company associations in HubSpot after migration to confirm links are correct.

  • HubSpot's native Dynamics connector handles basic types only — custom integration may be needed regardless

    HubSpot's native Microsoft Dynamics 365 connector supports standard objects and basic field types out of the box. It does not sync lookup fields, multi-select picklists, or custom entities without additional configuration. For a full migration of your Dynamics 365 Field Service data — especially work orders, bookable resources, and custom msdyn_* entities — the native connector's limitations mean FlitStack AI uses direct Dataverse API access rather than the connector, giving full control over field-level mapping and custom entity handling that the connector cannot provide.

  • Dynamics custom fields and custom entities require Operations Hub subscription for type-aware mapping

    HubSpot's custom field type system (text, number, date, pick-list, etc.) does not cover every Dynamics field type. When field types differ — for example, a Dynamics integer field that needs to become a HubSpot pick-list — you need a HubSpot Operations Hub subscription to configure custom field mappings that handle the type transformation. Without Operations Hub, FlitStack AI can migrate custom fields as text properties, but the more nuanced type-aware mapping that preserves Dynamics pick-list behavior requires Operations Hub configuration after migration.

  • Dynamics 365 Field Service is a specialized module — full migration requires multi-entity mapping planning

    Dynamics 365 Field Service does not exist in isolation — it shares the Dataverse platform with accounts, contacts, and potentially custom entities used by other Dynamics modules (Sales, Marketing, Project Operations). Work orders reference accounts, products, bookable resources, and facilities simultaneously. Migrating the field service data correctly requires mapping all entities in scope together, not work orders in isolation. FlitStack AI sequences the migration so foreign key relationships (account IDs, product IDs, resource IDs) resolve correctly in HubSpot, but your team must confirm the full entity scope before migration begins to avoid orphaned lookups.

  • Bookable resource-to-user mapping fails when Dynamics resources lack email addresses

    HubSpot users are identified by email. Dynamics 365 bookable resources represent field technicians, crew members, and equipment — not all of which have email addresses in Dynamics. FlitStack AI resolves bookable resources to HubSpot users by email match. Resources without email addresses are flagged as unmatched and excluded from automatic user mapping. Your team must decide whether to create HubSpot users manually for unmatched resources, assign their records to a fallback owner, or exclude them from the migration scope. Equipment-type bookable resources that are not HubSpot users at all are migrated as custom properties on tickets rather than as users.

Migration approach

Six steps for a successful Dynamics 365 Field Service to HubSpot data migration

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

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

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

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

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

Context on both ends of the pair

Dynamics 365 Field Service logo

Dynamics 365 Field Service

Source

Strengths

  • Intelligent schedule board with multi-constraint optimization (skills, location, SLA, travel time) reduces manual dispatch effort on large technician fleets.
  • IoT integration via Connected Field Service enables proactive maintenance alerts that auto-create Work Orders before equipment fails.
  • Native mobile app with robust offline mode allows technicians to work disconnected and sync changes when connectivity returns.
  • Deep Dataverse foundation means seamless data sharing with Microsoft Dynamics 365 Sales , Customer Service, and Power Platform apps without middleware.
  • Microsoft's regular release cadence keeps the platform current with AI features, Copilot assistance, and updated compliance certifications.

Weaknesses

  • Per-user licensing at $105/month creates predictable cost inflation as technician headcount grows, with no meaningful volume discounts for large fleets.
  • Implementation and ongoing customization require certified Microsoft partners or developer-staffed IT teams, limiting agility for mid-market organizations.
  • Performance degrades in large datasets without careful FetchXML optimization; offline sync timeouts are common without proactive query tuning.
  • Integration with non-Microsoft ERP systems (SAP, Oracle, NetSuite) requires custom middleware or third-party connectors that add cost and maintenance overhead.
  • Schema changes between release waves can break custom field references, requiring re-validation of data mappings after each major update.
HubSpot logo

HubSpot

Destination

Strengths

  • Genuinely useful free CRM tier with no seat limit on contact records.
  • All-in-one sales engagement layer (sequences, email tracking, calling, dialer) embedded natively in the CRM, eliminating a separate integration.
  • Intuitive interface and fast onboarding for individual reps, per G2 and Capterra reviews.
  • Workflow automation triggers across contacts, deals, and tickets with a visual builder.
  • API coverage for all standard objects including custom objects at Enterprise tier.

Weaknesses

  • Pricing model is contact-based at the marketing layer — importing all records as marketing contacts can multiply the monthly bill by 4×.
  • Feature tier cliffs are frequent surprises: sequences, calling, advanced reporting, and quoting are all gated, often requiring plan upgrades mid-implementation.
  • Mandatory onboarding fees at Professional ($1,500) and Enterprise ($3,500) are not prominently disclosed on the pricing page.
  • API rate limits are restrictive for bulk migration — burst limits of 100-200 req/10sec and search endpoint limits of 4 req/sec require careful job queuing.
  • Custom objects, additional pipelines, and advanced forecasting are Enterprise-only, making cost projections difficult for growing teams.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Dynamics 365 Field Service and HubSpot.

  • Object compatibility

    B

    1 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

    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

    A

    Dynamics 365 Field Service exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Dynamics 365 Field Service to HubSpot 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 Dynamics 365 Field Service to HubSpot data migrations

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

Can't find your answer?

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 consultation

Most Dynamics 365 Field Service migrations complete in 24–48 hours for smaller datasets under 50,000 total records across accounts, contacts, work orders, and products. Larger setups with 500,000+ records, multiple custom entities, and complex lookup relationships extend to 5–7 days. The longest step is typically schema mapping and lookup resolution planning — resolving Dynamics account and contact lookup IDs to HubSpot association IDs before data lands.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Field Service.
Land in HubSpot, 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