CRM migration

Migrate from Dynamics 365 Field Service to Microsoft Dynamics 365 Sales

Field-level mapping, validation, and rollback between Dynamics 365 Field Service and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .

Dynamics 365 Field Service logo

Dynamics 365 Field Service

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

100%

18 of 18

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

Complexity

BStandard

Timeline

3–6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Both Dynamics 365 Field Service and Dynamics 365 Sales sit on the same Microsoft Dataverse data model, which simplifies some aspects of this migration — but the operational models diverge sharply. Field Service organizes around work orders, resource scheduling, customer assets, and service agreements. Dynamics 365 Sales organizes around leads, opportunities, quotes, and sales orders. FlitStack AI maps the shared entity types (Account, Contact, Product) directly via the Dataverse API and flags the field-service-specific entities that require custom entity creation or export-for-reference. The migration extracts work orders as custom WorkOrder__c records, translates BookableResourceBooking history into custom datetime and user fields on those records, and preserves CustomerAsset data as a custom entity with service-history links. Service agreement recurring billing logic and resource scheduling rules have no Dynamics 365 Sales equivalent — those surface in the rebuild plan we deliver alongside the migration. Scheduling data (resource assignments, travel time, booking status) migrates as custom fields on the WorkOrder__c entity rather than native scheduling, since Dynamics 365 Sales lacks the schedule board. The delta-pickup window captures any work orders created or status-changed during the cutover so the destination reflects Field Service's final state at go-live.

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

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 Dynamics 365 Field Service objects map to Microsoft Dynamics 365 Sales

Each row shows how a Dynamics 365 Field 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.

Dynamics 365 Field Service

Account

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Direct 1:1 map via Dataverse API. Both platforms expose the Account entity with the same logical schema — name, address, industry, primary contact, and parent account hierarchy all map field-for-field without transformation. Owner resolved by email match to the destination user, with unmatched owners flagged for manual assignment before migration.

Dynamics 365 Field Service

Contact

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Direct 1:1 map. Both use the Contact entity with full name fields, email, phone, job title, address, and account lookup. Dynamics 365 Sales Contact.AccountId links to the migrated Account record. N:1 contact-to-account relationships from Field Service preserved via the same lookup.

Dynamics 365 Field Service

msdyn_workorder

maps to

Microsoft Dynamics 365 Sales

WorkOrder__c (custom Dataverse table)

1:1
Fully supported

Dynamics 365 Sales has no native work order entity. We create a WorkOrder__c custom table in Dataverse and map work order fields — work order number, service account, system status, sub-status, priority, description, actual arrival time, actual departure time, and total travel time — as custom fields on the WorkOrder__c record.

Dynamics 365 Field Service

msdyn_workorder -> msdyn_workorderincident

maps to

Microsoft Dynamics 365 Sales

WorkOrder__c.WorkOrderIncidents__c (custom field)

1:1
Fully supported

Work order incidents (problems linked to work orders) map to a custom multi-select text field or a related WorkOrderIncident__c table, depending on the complexity of incident data. Each incident's msdyn_name (problem description) and msdyn_estimate (labor estimate) migrate as fields on the incident record linked back to WorkOrder__c, preserving the relationship for reporting and audit purposes.

Dynamics 365 Field Service

BookableResourceBooking

maps to

Microsoft Dynamics 365 Sales

WorkOrder__c.BookingData__c (custom field)

1:1
Fully supported

Booking records (resource assignments, start/end times, booking status) have no native equivalent in Dynamics 365 Sales. We serialize the relevant booking fields — resource name, scheduled start, scheduled end, travel duration, and booking status — as JSON or delimited text in a custom BookingData__c field on the WorkOrder__c record.

Dynamics 365 Field Service

CustomerAsset

maps to

Microsoft Dynamics 365 Sales

CustomerAsset__c (custom Dataverse table)

1:1
Fully supported

CustomerAsset entity with operational status, install date, serial number, product, customer account, and asset parent has no Dynamics 365 Sales equivalent. We create a CustomerAsset__c custom table, map all standard fields, and link to the migrated Account record via AccountId lookup.

Dynamics 365 Field Service

msdyn_agreement

maps to

Microsoft Dynamics 365 Sales

Custom export (ServiceAgreement__c + PDF)

1:1
Fully supported

Service agreements with recurring billing lines, service tasks, and booking setup have no Dynamics 365 Sales equivalent. We export agreement data to a custom ServiceAgreement__c table for reference and generate a PDF summary of each active agreement for manual re-creation in Sales using Opportunities and Contracts.

Dynamics 365 Field Service

Product

maps to

Microsoft Dynamics 365 Sales

Product

1:1
Fully supported

Product catalog — name, product number, default unit, price list items, and product type — maps directly. Field Service products used in work order products and work order services align with the Sales product entity. Unit group and pricing mechanics are shared across both platforms.

Dynamics 365 Field Service

PriceList / msdyn_usecs (price list item)

maps to

Microsoft Dynamics 365 Sales

PriceListItem

1:1
Fully supported

Field Service price list items (products × price lists × units) map to Dynamics 365 Sales price list item structure. Both use the same pricing engine and support quantity-based pricing, discount lists, and tiered pricing. Price list linkage to accounts and opportunities preserved.

Dynamics 365 Field Service

msdyn_workorderproduct

maps to

Microsoft Dynamics 365 Sales

WorkOrder__c.WorkOrderProducts__c (custom field)

1:1
Fully supported

Products consumed on work orders (parts used, quantity, unit price, line status) serialize into a custom field on WorkOrder__c since Sales has no work-order-product entity. The data remains queryable for reference even though it does not become a native opportunity product line.

Dynamics 365 Field Service

msdyn_workorderservice

maps to

Microsoft Dynamics 365 Sales

WorkOrder__c.WorkOrderServices__c (custom field)

1:1
Fully supported

Services delivered on work orders (service task, duration, billing type) serialize into a custom field on WorkOrder__c. The service description and estimated duration are preserved; actual duration comes from BookableResourceBooking.

Dynamics 365 Field Service

SystemUser (technicians and dispatchers)

maps to

Microsoft Dynamics 365 Sales

SystemUser / BookableResource

1:1
Fully supported

Field Service technicians and dispatchers exist as BookableResource records linked to SystemUser. We match SystemUser by email to destination users in Dynamics 365 Sales. Active field technicians who will not use Dynamics 365 Sales are flagged as 'to be assigned to a fallback user' before migration, ensuring no orphaned booking assignments exist in the destination environment.

Dynamics 365 Field Service

Territory / msdyn_geofield

maps to

Microsoft Dynamics 365 Sales

Territory

1:1
Fully supported

Service territories in Field Service map to Sales territories by territory name and region. Both use the Territory entity with the same hierarchical structure. Territory-based record assignment rules translate directly.

Dynamics 365 Field Service

Annotation (notes on work orders)

maps to

Microsoft Dynamics 365 Sales

Annotation

1:1
Fully supported

Notes attached to work orders, customer assets, or accounts map directly to the Annotation entity in Dynamics 365 Sales. Both platforms use the same Dataverse annotation model, ensuring consistency in how notes are stored and retrieved. File attachments migrate as annotation attachments with the original file blob preserved, maintaining complete audit trails and documentation for each record.

Dynamics 365 Field Service

Opportunity

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

If the Field Service instance contains opportunities (Enterprise instances can link opportunities to work orders), those map directly to Dynamics 365 Sales Opportunity. Pipeline stage, close date, probability, estimated revenue, and opportunity contacts migrate field-for-field, preserving the complete sales cycle data from the source environment.

Dynamics 365 Field Service

Quote / SalesOrder / Invoice

maps to

Microsoft Dynamics 365 Sales

Quote / Order / Invoice

1:1
Fully supported

Quotes, sales orders, and invoices present in the Field Service instance (typically from Project Service or Sales integration) migrate directly to their Dynamics 365 Sales equivalents. Product line items, pricing, discount amounts, and status fields align between the two platforms' transactional entities, ensuring accurate financial records and order history in the destination.

Dynamics 365 Field Service

Custom entities (msdyn_* extensions)

maps to

Microsoft Dynamics 365 Sales

Custom Dataverse tables (msdyn_* or new_* prefixed)

1:1
Fully supported

Any custom Field Service extensions (custom fields on work order, custom lookup relationships, or plugin-generated attributes) map to corresponding custom columns in Dynamics 365 Sales. Custom entities that have no semantic equivalent in Sales are exported as custom Dataverse tables and linked to the migrated records via lookup fields, preserving data relationships and operational context.

Dynamics 365 Field Service

IoT alerts (msdyn_iotalert)

maps to

Microsoft Dynamics 365 Sales

Custom export only

1:1
Fully supported

IoT alerts from Connected Field Service have no Dynamics 365 Sales equivalent. We export alert history as a custom IOTAlert__c reference table linked to the affected CustomerAsset__c record. Active alert routing logic must be rebuilt in Power Automate or an IoT middleware.

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

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

  • Work orders have no native Dynamics 365 Sales equivalent and require a custom Dataverse table

    Microsoft Dynamics 365 Field Service's msdyn_workorder entity is a core construct that organizes service tasks, products, services, incidents, and booking data under a single record. Dynamics 365 Sales has no work order entity — there is no system status field, no sub-status pick-list, no work-order-product structure, and no booking linkage. FlitStack AI creates a WorkOrder__c custom table in Dataverse and maps all relevant work order fields as custom columns. The booking data from BookableResourceBooking serializes into a custom BookingData__c field on each WorkOrder__c record. This is the most significant schema decision in the migration and must be planned before data extraction begins.

  • Service agreement recurring billing and booking setup has no Dynamics 365 Sales equivalent

    The msdyn_agreement entity in Field Service handles recurring service commitments, including billing frequency, service tasks, and automatic work order generation from the agreement. Dynamics 365 Sales has no service agreement entity — there is no mechanism for recurring service billing, automated task scheduling, or agreement-linked booking generation. FlitStack AI exports agreement data to a custom ServiceAgreement__c reference table and generates a PDF summary of each active agreement's terms. Customers must rebuild service agreement logic manually in Dynamics 365 Sales using a combination of Opportunities for the commercial terms and Contracts for recurring billing if the Enterprise Contract management feature is enabled.

  • Customer asset service history and IoT alert routing cannot be migrated natively

    Field Service's CustomerAsset entity tracks equipment lifecycle — install date, operational status, parent asset, customer account, product, and serial number — with a full service history linked via the asset's related work orders. Dynamics 365 Sales has no asset entity at all. FlitStack AI creates a CustomerAsset__c custom Dataverse table and maps the asset's static fields and service history links. Connected Field Service IoT alerts (msdyn_iotalert) have no Dynamics 365 Sales equivalent; we export alert history as a custom IOTAlert__c reference table linked to CustomerAsset__c, but active IoT alert routing rules must be rebuilt in Power Automate or an IoT middleware post-migration.

  • Sales Professional tier enforces a 15-table limit that constrains custom entity creation

    Microsoft Dynamics 365 Sales Professional licenses restrict custom Dataverse tables to 15 total. A migration that creates WorkOrder__c, CustomerAsset__c, ServiceAgreement__c, and several supporting custom tables can quickly exceed this limit on a Sales Professional environment. FlitStack AI inventories all custom tables during the discovery phase and flags whether the destination environment is Sales Professional or Enterprise. If the 15-table limit is a constraint, we prioritize the most operationally critical custom entities and export the remainder as structured data files rather than tables, with a rebuild plan for when the customer upgrades to Sales Enterprise.

  • BookableResourceBooking travel and timing data loses its scheduling semantics in Sales

    Field Service's BookableResourceBooking entity captures not just the resource and time window but also travel time between bookings, drive time, and booking status transitions (traveling, in-progress, completed). Dynamics 365 Sales has no resource scheduling module and no equivalent to BookableResourceBooking. FlitStack AI serializes the most critical booking fields — resource name, start time, end time, booking status, and total travel duration — as structured fields on the WorkOrder__c record. However, the scheduling semantics (adjacent booking constraints, resource capacity, territory-based scheduling rules) do not migrate and must be manually documented for the customer's scheduling team to rebuild using whichever tool they adopt post-migration.

Migration approach

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

  1. Authenticate to both Field Service and Dynamics 365 Sales via Dataverse API

    FlitStack AI connects to the source Microsoft Dynamics 365 Field Service environment using OAuth 2.0 with an Azure AD application registration, and to the destination Dynamics 365 Sales environment with equivalent credentials. We validate API access for both environments, enumerate existing entities and custom tables, and confirm that the destination Sales Professional vs Enterprise tier is identified before schema planning begins. The API token management includes automatic token refresh and handles Dataverse's request throttling limits.

  2. Extract field service entities in dependency order: Accounts → Contacts → Assets → Work Orders → Bookings

    We extract entities sequentially respecting foreign-key dependencies. Accounts migrate first (to resolve AccountId on contacts), then Contacts (to resolve CustomerAsset links and ContactId on work orders), then Products and Price Lists, then CustomerAsset records linked to accounts, then WorkOrder records, then BookableResourceBooking records linked to work orders. Each extraction run preserves original created-on and modified-on timestamps, owner IDs, and all option-set integer values for downstream mapping. We run incremental delta extraction daily during the planning phase to capture in-flight work orders.

  3. Map schema and create custom Dataverse tables in the destination environment

    Based on the entity inventory, FlitStack AI generates a schema setup plan: WorkOrder__c custom table with all mapped work order fields and a BookingData__c text field for serialized booking data; CustomerAsset__c custom table with asset fields and a ServiceHistory__c text field; ServiceAgreement__c for agreement reference. For Sales Professional environments, we flag the 15-table count and recommend which entities to prioritize as tables vs exported files. The plan is reviewed by the customer's admin before any schema objects are created in the destination environment.

  4. Run a sample migration of 200–500 representative records with field-level diff

    A representative slice of data — 50 accounts, 100 contacts, 20 customer assets, 75 work orders spanning multiple system statuses, 3–5 assets with full booking histories — migrates to the destination first. We generate a field-level diff report comparing source field values against destination field values for every mapped column. The diff covers work order system status mapping, service account resolution, owner matching, and the serialization of booking data into the WorkOrder__c BookingData__c field. The customer reviews the diff and approves or flags corrections before the full migration runs.

  5. Execute full migration with delta-pickup window and one-click rollback available

    The full migration runs against the production Dynamics 365 Sales environment. A delta-pickup window (typically 24–48 hours, configurable) runs concurrently, capturing any work orders created, status-changed, or newly linked to assets in Field Service during the cutover. Every operation is logged to an audit table. If reconciliation fails — for example, if booking data integrity checks reveal malformed serialization — one-click rollback reverts the destination to the pre-migration state. The rollback uses a snapshot taken before the full run commits, with all affected tables reverted in a single orchestrated operation.

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.
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. All 8 core objects map 1:1 between Dynamics 365 Field Service and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Dynamics 365 Field Service and Microsoft Dynamics 365 Sales .

  • Object compatibility

    A

    All 8 core objects map 1:1 between Dynamics 365 Field Service and Microsoft Dynamics 365 Sales .

  • 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 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 Dynamics 365 Field Service to Microsoft Dynamics 365 Sales data migrations

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

Can't find your answer?

Walk through your Dynamics 365 Field 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 field service to sales migrations complete in 3–6 weeks of active migration work for datasets under 25,000 records. The longest phase is schema planning — deciding which entities become custom Dataverse tables, which become exported reference files, and confirming whether the destination runs Sales Professional (15-table limit) or Enterprise (unlimited tables). Complex setups with over 100,000 work orders, active customer assets, and service agreements extend to 8–12 weeks, with the delta-pickup and rollback validation steps adding 3–5 days to the cutover window.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Field 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