CRM migration

Migrate from Connect Field Service to Microsoft Dynamics 365 Sales

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

Connect Field Service logo

Connect Field Service

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

92%

11 of 12

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

Complexity

BStandard

Timeline

72–120 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Connect Field Service (Salesforce's field service management module) stores service operations in a WorkOrder-ServiceAppointment-WorkOrderLineItem object hierarchy that Salesforce users manage through the FSL mobile app and scheduling console. Dynamics 365 Sales operates on a different paradigm: Accounts and Contacts as the central entity graph, with Case entities handling service requests and the Field Service app handling scheduling, resources, and assets. We map Connect Field Service work orders to Dynamics 365 Cases or Agreements depending on the source work order type, ServiceAppointments to Bookable Resources bookings, and WorkOrderLineItems to Agreement Booking Date Lines or Case resolving products. Resource skills from FSL_Skill__c map to Dynamics 365 Skills on the Bookable Resource entity. Custom fields on WorkOrder and ServiceAppointment get created as custom columns on the corresponding Dynamics 365 tables. Workflows, scheduling policies, and optimization rules do not migrate — those must be rebuilt using Dynamics 365's Resource Scheduling Optimization and Power Automate. We extract via Salesforce REST API and Bulk API, transform using field-level mapping rules, and load through Dynamics 365 Web API with batch operations. A delta-pickup window captures any changes made 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

Connect Field Service logo

Connect Field Service

What's pushing teams away

  • Per-seat pricing model becomes expensive as organizations scale technician headcount, especially when supervisors, dispatchers, and parts staff all require licenses.
  • Complex workflow configuration requires dedicated admin resources; smaller teams find the setup overhead disproportionate to their needs.
  • Mobile app performance degrades in low-connectivity or offline scenarios common in remote industrial sites and rural service territories.
  • Integration with third-party accounting or parts procurement systems requires middleware or custom API work that adds ongoing maintenance burden.
  • Upgrade cycles sometimes introduce breaking changes to custom fields or API behavior without sufficient migration notice.

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

Each row shows how a Connect 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.

Connect Field Service

WorkOrder

maps to

Microsoft Dynamics 365 Sales

msdyn_workorderservicetask

1:1
Fully supported

Connect Field Service WorkOrders map to a combination of Dynamics 365 entities. For break/fix work orders we map to Incident (msdyn_workorder) with StatusCode reflecting the source WorkOrder.Status. For preventive maintenance or scheduled work orders we map to Agreement Booking Setup with recurring Agreement Booking Date Lines. The mapping choice is determined by WorkOrder.WorkType.SlaExitCriteria or a custom WorkOrder.Type field.

Connect Field Service

WorkOrderLineItem

maps to

Microsoft Dynamics 365 Sales

msdyn_orderinvoicingproduct

1:1
Fully supported

WorkOrderLineItem records map to Dynamics 365 msdyn_orderinvoicingproduct if the work order is linked to an Agreement and billable. If the line is a non-billable part used during a Case resolution, it maps to Case Resolution Product (incidentresolution) for the associated msdyn_workorder. Line item taxes from Salesforce's TaxLineItem require custom field mapping since Dynamics 365 handles tax via the finance side.

Connect Field Service

ServiceAppointment

maps to

Microsoft Dynamics 365 Sales

msdyn_bookableresourcebooking

1:1
Fully supported

ServiceAppointment.StartTime and EndTime map directly to msdyn_bookableresourcebooking.StartTime and EndTime. The FSL AssignedResource record (junction between ServiceAppointment and ServiceResource) becomes the msdyn_resource lookup on the booking. BookingStatus maps from ServiceAppointment.Status via a value-mapping table since Salesforce FSL statuses (None, Scheduled, Travel, Onsite, Completed, Cannot Complete) differ from Dynamics 365 booking statuses (Pending, In Progress, Completed, Canceled).

Connect Field Service

FSL__Skill__c (Junction)

maps to

Microsoft Dynamics 365 Sales

msdyn_resourcerequirement

1:1
Fully supported

The FSL Skill junction object (ServiceResource-to-Skill link with proficiency) maps to Dynamics 365 msdyn_resourcerequirement linked to the Bookable Resource. The Skill name becomes the msdyn_Skill.msdyn_SkillName lookup. Proficiency level from FSL_Skill.Proficiency maps to msdyn_RatingValue on the requirement. If no matching Dynamics 365 Skill exists, we create it as a custom Skill entity record before linking.

Connect Field Service

FSL__Service_Territory__c

maps to

Microsoft Dynamics 365 Sales

msdyn_territory

1:1
Fully supported

Salesforce FSL service territories map to Dynamics 365 msdyn_Territory records. Each territory gets its name, geographic boundary (if defined via FSL__Geolocation__c lat/long), and associated organizational unit. The territory linking to ServiceResource via FSL__Territory_Usage__c junction becomes msdyn_BookableResource.TerritoryIds in Dynamics 365. Multi-geography FSL orgs with overlapping territories require careful validation since Dynamics 365 territory scoping differs from FSL territory rules.

Connect Field Service

FSL__Scheduling_Policy__c

maps to

Microsoft Dynamics 365 Sales

msdyn_schedulingparameter

1:1
Fully supported

FSL scheduling policies (priority rules, travel time settings, booking window limits) have no direct Dynamics 365 equivalent that can be auto-created. We preserve the policy configuration as an exported JSON reference document for your Dynamics 365 admin to rebuild using Resource Scheduling Optimization admin settings. Priority weighting from Salesforce becomes scheduling goal configuration in RSO.

Connect Field Service

Asset

maps to

Microsoft Dynamics 365 Sales

msdyn_customerasset

1:1
Fully supported

Salesforce Asset maps to Dynamics 365 msdyn_customerasset. The AccountId lookup maps to msdyn_AccountId. Asset.ParentAssetId (hierarchical parent-child) requires flattening because Dynamics 365's customer asset does not have a native parent link — we create a custom ParentAssetId__c text field and populate it with the parent's Salesforce ID for traceability. InstallDate maps to msdyn_InserviceDate, and Status maps to msdyn_AssetStatus via value mapping.

Connect Field Service

FSL__Work_Type__c

maps to

Microsoft Dynamics 365 Sales

msdyn_worktype

1:1
Fully supported

Work Type records map directly to Dynamics 365 msdyn_worktype. Name, FSL__Duration__c (estimated duration) maps to msdyn_EstimatedDuration, and FSL__Description__c maps to msdyn_Description. Billing type (Time and Materials vs Fixed Price) maps to msdyn_BillingType. If the source Work Type has FSL__ServiceReportTemplateId__c that generates PDF reports, those reports do not migrate — we export the template names for manual reconfiguration in Dynamics 365.

Connect Field Service

FSL__Service_Resource__c

maps to

Microsoft Dynamics 365 Sales

msdyn_bookableresource

1:1
Fully supported

Salesforce ServiceResource (technicians and dispatchers) map to Dynamics 365 msdyn_bookableresource. The resource type (FSL__Resource_Type__c: Technician, Dispatcher, Others) determines msdyn_BookableResourceType (User, Contact, or Account). User-linked resources get their Dynamics 365 UserId via email matching. Resources without a matching D365 user are created as Contact-type Bookable Resources with a flag that they need a D365 license assigned before booking assignment.

Connect Field Service

FSL__Geolocation__c

maps to

Microsoft Dynamics 365 Sales

msdyn_geofence (custom)

1:1
Fully supported

Salesforce FSL geolocation fields on WorkOrder (FSL__Latitude__c, FSL__Longitude__c) do not have a native Dynamics 365 equivalent for work order address storage. We create custom latitude and longitude fields on msdyn_workorder and populate them from the source FSL geolocation values so dispatchers retain the service location coordinates on the work order in Dynamics 365.

Connect Field Service

FSL__Incident__c (Linked to WorkOrder)

maps to

Microsoft Dynamics 365 Sales

msdyn_workorder incident

many:1
Fully supported

Some FSL implementations use FSL__Incident__c as a parent record grouping multiple WorkOrders for a single customer issue. When present, we merge the incident's description, severity, and resolution into the primary msdyn_workorder record's description and msdyn_Resolution fields, preserving the incident ID in a custom Source_Incident_ID__c field for audit trail.

Connect Field Service

WorkOrder.Attachments

maps to

Microsoft Dynamics 365 Sales

SharePoint (attached to msdyn_workorder)

1:1
Fully supported

Salesforce file attachments on WorkOrder records migrate as SharePoint document library files attached to the corresponding msdyn_workorder. The original filename and content type are preserved. Files exceeding Dynamics 365's 32MB attachment limit are flagged for manual retrieval or chunked upload via Power Automate.

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.

Connect Field Service logo

Connect Field Service gotchas

High

Per-seat licensing applies to dispatchers, technicians, and often read-only users

High

Custom fields and non-standard objects require explicit mapping before migration

Medium

Offline sync state is not persistently exported via standard API

Medium

Scheduling optimization rules and territory logic do not transfer between platforms

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

  • Asset parent-child hierarchies collapse into flat references

    Salesforce Asset supports native ParentAssetId creating unlimited-depth equipment hierarchies — a common pattern for organizations tracking nested components (chiller unit inside HVAC system inside building). Dynamics 365 msdyn_customerasset has no native parent-child relationship. We preserve parent links as a custom Source_ParentAssetId__c text field containing the Salesforce Asset ID, but Dynamics 365 UI will not render a tree view. Your admin must decide whether to accept the flat model, build a custom subgrid with Power Apps, or accept that asset hierarchies beyond depth-1 must be queried via reporting.

  • FSL scheduling policies require manual RSO reconfiguration

    Connect Field Service scheduling policies (FSL__Scheduling_Policy__c) encode priority weighting, travel time calculation methods, maximum booking windows, and dispatcher override rules in Salesforce configuration objects. Dynamics 365 Resource Scheduling Optimization stores equivalent settings in the RSO admin console but uses a completely different schema. There is no import tool — each scheduling policy must be manually translated into RSO optimization goals and constraints by your Dynamics 365 administrator. We export the source policy definitions as a JSON reference file to accelerate that rebuild.

  • ServiceAppointment merged-status records split into multiple bookings

    Salesforce FSL allows one ServiceAppointment to have multiple FSL__Assigned_Resource__c records, supporting multi-technician dispatch scenarios where two or more field resources are assigned to a single job. Dynamics 365 Bookable Resource Booking does not support multiple resources on a single booking record — each booking entry accommodates exactly one resource. When migrating ServiceAppointments with multiple assigned resources, we automatically split them into individual Bookable Resource Booking records, each linked back to the same parent msdyn_WorkOrderId via the Source_ServiceAppointmentId__c custom field. This approach preserves the complete assignment history and allows reporting on individual resource utilization per original service appointment in D365.

  • FSL geolocation fields map to custom decimal fields

    Connect Field Service stores latitude and longitude on WorkOrder in FSL__Latitude__c and FSL__Longitude__c. Dynamics 365 msdyn_workorder has no native latitude/longitude fields on the work order entity itself — the Field Service map control uses the Service Address composite field instead. We create custom decimal fields msdyn_Latitude__c and msdyn_Longitude__c on msdyn_workorder and populate them from source. The Dynamics 365 map control will still render using the service address, not these coordinates, so your admin may need to update dispatch workflows that relied on FSL geolocation triggers.

  • WorkOrderType BillingType mismatch requires Agreement vs Case routing decision

    Salesforce FSL WorkOrder does not have an explicit billing-type flag — billing behavior derives from the WorkType or from whether the work order is linked to a ServiceContract. Dynamics 365 separates work orders into Incident (break/fix, billed per use) and Agreement-based work orders (contracted maintenance, billed on schedule). During migration, we evaluate WorkOrder.IsClosed and presence of ServiceContract linkage to route records: closed work orders without a service contract become Incident records; open or recurring work orders linked to a contract become Agreement Booking Date Lines. Mis-routed records are flagged in the pre-flight diff report for admin correction before the full run.

Migration approach

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

  1. Extract Salesforce FSL data via REST and Bulk API

    We connect to your Salesforce org using OAuth 2.0 with a dedicated integration user holding read-only API access. The extraction phase pulls WorkOrder, ServiceAppointment, WorkOrderLineItem, Asset, ServiceResource, Skill, WorkType, ServiceTerritory, and all custom FSL fields using Bulk API for records over 100,000 and REST API for smaller datasets. Relationship data (AssignedResources junction, Skill junctions) is fetched in a second pass after parent IDs are known. All records include system fields (CreatedDate, LastModifiedDate, OwnerId) for timestamp preservation and audit logging.

  2. Build Dynamics 365 destination schema before data arrives

    Before any data loads, we create the custom fields identified in the field mapping plan — msdyn_Latitude__c and msdyn_Longitude__c on msdyn_workorder, Source_*__c tracking fields on every primary entity, and the Parent_Asset_SourceId__c field on msdyn_customerasset. We also pre-create msdyn_Territory records from FSL ServiceTerritory data, msdyn_Skill records from FSL Skill data, and msdyn_WorkType records from FSL WorkType data so all lookup targets exist before work orders are inserted. This step requires a Dynamics 365 admin to grant FlitStack AI application-user permissions with customizer role.

  3. Resolve resource owners and users by email

    Salesforce ServiceResource records are matched to Dynamics 365 Users by email address on the FSL__Related_User__c field. Resources without a matching D365 user are flagged as Contact-type Bookable Resources requiring a D365 license assignment before booking allocation. We generate an owner-resolution report listing matched resources, unmatched resources, and the suggested fallback owner so your team can address gaps before the migration run.

  4. Run sample migration with field-level diff on 200 records

    A representative sample — 100 WorkOrders spanning different statuses and work types, 50 ServiceAppointments, 30 Assets, and 20 ServiceResources — migrates first. We generate a field-level diff comparing source Salesforce values against the destination Dynamics 365 record values for every mapped field. The diff report surfaces value-mapping gaps, date format adjustments, and lookup resolution failures before the full dataset runs. Your team approves the diff before we proceed.

  5. Execute full migration with delta-pickup window

    The full dataset runs against Dynamics 365 using batch API calls (up to 1,000 records per batch) to maximize throughput. A 48-hour delta-pickup window runs in parallel, capturing any WorkOrder or ServiceAppointment records modified in Salesforce during the migration window. The delta is merged via upsert using the Source_* ID fields as external keys. An audit log records every insert, update, and skip. One-click rollback reverts all D365 records created during the migration if reconciliation fails.

Platform deep dives

Context on both ends of the pair

Connect Field Service logo

Connect Field Service

Source

Strengths

  • Tightly coupled with major CRM backends like Salesforce and Dynamics 365 for unified customer records.
  • Mobile-first design with offline sync capability for technicians working in low-connectivity environments.
  • IoT and remote monitoring integration for predictive maintenance alerting.
  • Dynamic scheduling with territory-based routing and real-time dispatcher reassignment.
  • Multi-currency and multi-region support for organizations operating across geographic business units.

Weaknesses

  • Per-user license costs scale linearly with technician and dispatcher count, creating budget pressure during seasonal peaks.
  • Workflow and business rule configuration requires specialized admin expertise, increasing total cost of ownership.
  • Custom field and object development requires Salesforce DX or equivalent developer tooling, limiting declarative extensibility.
  • API rate limits and bulk API availability vary by edition, constraining automated migration throughput.
  • Offline data synchronization can produce conflicts that require manual resolution when technicians work in intermittent connectivity.
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 Connect Field Service and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Connect 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

    Connect Field Service: 100 API calls per minute per org for standard REST API; bulk API available for larger data volumes.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your Connect 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 migrations complete within 72–120 hours of clock time for orgs with fewer than 25,000 total records across WorkOrders, ServiceAppointments, and Assets. Larger implementations exceeding 200,000 records or those with multi-geography service territories, heavy asset hierarchies, and custom FSL fields require 10–18 days. The longest single step is usually Dynamics 365 schema setup (creating custom fields, territories, and skills) because it requires admin validation before data loads. Field-level diff on a 200-record sample adds 1–2 days but prevents costly post-migration corrections.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Connect 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