CRM migration
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
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Connect Field Service and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
72–120 hours
Overview
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.
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
Connect Field Service platform overview
Scorecard, SWOT, gotchas, and pricing for Connect Field Service.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Microsoft Dynamics 365 Sales
msdyn_workorderservicetask
1:1Connect 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
Microsoft Dynamics 365 Sales
msdyn_orderinvoicingproduct
1:1WorkOrderLineItem 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
Microsoft Dynamics 365 Sales
msdyn_bookableresourcebooking
1:1ServiceAppointment.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)
Microsoft Dynamics 365 Sales
msdyn_resourcerequirement
1:1The 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
Microsoft Dynamics 365 Sales
msdyn_territory
1:1Salesforce 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
Microsoft Dynamics 365 Sales
msdyn_schedulingparameter
1:1FSL 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
Microsoft Dynamics 365 Sales
msdyn_customerasset
1:1Salesforce 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
Microsoft Dynamics 365 Sales
msdyn_worktype
1:1Work 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
Microsoft Dynamics 365 Sales
msdyn_bookableresource
1:1Salesforce 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
Microsoft Dynamics 365 Sales
msdyn_geofence (custom)
1:1Salesforce 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)
Microsoft Dynamics 365 Sales
msdyn_workorder incident
many:1Some 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
Microsoft Dynamics 365 Sales
SharePoint (attached to msdyn_workorder)
1:1Salesforce 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.
| Connect Field Service | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| WorkOrder | msdyn_workorderservicetask1:1 | Fully supported | |
| WorkOrderLineItem | msdyn_orderinvoicingproduct1:1 | Fully supported | |
| ServiceAppointment | msdyn_bookableresourcebooking1:1 | Fully supported | |
| FSL__Skill__c (Junction) | msdyn_resourcerequirement1:1 | Fully supported | |
| FSL__Service_Territory__c | msdyn_territory1:1 | Fully supported | |
| FSL__Scheduling_Policy__c | msdyn_schedulingparameter1:1 | Fully supported | |
| Asset | msdyn_customerasset1:1 | Fully supported | |
| FSL__Work_Type__c | msdyn_worktype1:1 | Fully supported | |
| FSL__Service_Resource__c | msdyn_bookableresource1:1 | Fully supported | |
| FSL__Geolocation__c | msdyn_geofence (custom)1:1 | Fully supported | |
| FSL__Incident__c (Linked to WorkOrder) | msdyn_workorder incidentmany:1 | Fully supported | |
| WorkOrder.Attachments | SharePoint (attached to msdyn_workorder)1: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.
Connect Field Service gotchas
Per-seat licensing applies to dispatchers, technicians, and often read-only users
Custom fields and non-standard objects require explicit mapping before migration
Offline sync state is not persistently exported via standard API
Scheduling optimization rules and territory logic do not transfer between platforms
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
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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
Connect Field Service
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Connect Field Service and Microsoft Dynamics 365 Sales .
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
All 8 core objects map 1:1 between Connect Field Service and Microsoft Dynamics 365 Sales .
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
Connect Field Service: 100 API calls per minute per org for standard REST API; bulk API available for larger data volumes.
Data volume sensitivity
Connect 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 Connect Field Service to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Connect Field Service
Other ways to arrive at Microsoft Dynamics 365 Sales
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.