CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Field Service and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Dynamics 365 Field Service
Source
Freshsales
Destination
Compatibility
11 of 12
objects map 1:1 between Dynamics 365 Field Service and Freshsales.
Complexity
BStandard
Timeline
48–72 hours
Overview
Microsoft Dynamics 365 Field Service extends the Dynamics 365 CRM with field-service-specific entities: Work Orders, Bookable Resources, Customer Assets, Service Territories, and Incident Types. These objects model service dispatch, asset tracking, and preventive maintenance scheduling. Freshsales is a sales-focused CRM with standard Lead, Contact, Account, and Deal objects plus custom objects, workflows, and Freddy AI. The migration carries your core CRM data (accounts, contacts, leads, opportunities) and field-service data (work orders, assets, products) into Freshsales's schema. Work Orders map to Deals with a custom status workflow preserving D365's stage values. Bookable Resources resolve to Freshsales users by email. Customer Assets become a custom object linked to accounts. Freshsales has no native resource scheduling or work-order management — those business processes need to be rebuilt using Freshsales workflows, tasks, and custom modules after migration. We use Dynamics 365 Dataverse API and Freshsales REST API to extract and load all records in sequenced order respecting foreign-key dependencies. A 24–48 hour delta pickup window captures in-flight changes during cutover.
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 Freshsales, 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
Freshsales
Account
1:1D365 Accounts map directly to Freshsales Accounts. Address, phone, industry, employee count, and revenue fields transfer directly. Parent Account hierarchy in D365 maps to Freshsales Parent Account via the same field — circular references are flagged before migration runs. We also map the original owner ID to Owner_Id__c for audit trails and activate duplicate‑detection rules on name and domain to avoid re‑creating records.
Dynamics 365 Field Service
Contact
Freshsales
Contact
1:1D365 Contacts map to Freshsales Contacts with all standard fields: name, email, phone, job title, address. D365 allows multiple primary contacts per account; Freshsales enforces one primary contact per record — we preserve the primary designation and surface secondary contacts as Contact relationship records.
Dynamics 365 Field Service
Lead
Freshsales
Lead
1:1D365 Leads map 1:1 to Freshsales Leads. Lead status, lead score, source, and owner fields migrate directly. D365 lead scoring model values transfer to Freshsales as a custom numeric field since Freshsales scoring is AI-driven on Pro+ plans only. We also migrate custom lead attributes to Freshsales custom fields, preserving data like product interest and region. The original D365 lead creation timestamp is stored as Created_Date__c for historical reference.
Dynamics 365 Field Service
Opportunity
Freshsales
Deal
1:1D365 Opportunities map to Freshsales Deals. Pipeline, stage, amount, close date, probability, and owner transfer directly. D365 opportunity contact roles map to Freshsales Deal Contact associations. Multiple opportunity product lines flatten into Deal Product entries. We also map opportunity fields to Freshsales Deal fields, preserving deal source. Currency values transfer, and the original D365 opportunity creation date is stored as Created_Date__c. Duplicate detection on deal name and account prevents duplicates.
Dynamics 365 Field Service
Work Order
Freshsales
Deal
1:1D365 Work Orders map to Freshsales Deals with a custom Work_Order__c checkbox field marking migrated service records. Work Order status maps to a custom pick-list field (Service_Status__c) preserving D365 values: Scheduled, In Progress, Completed, Cancelled, On Hold. Account and Contact links transfer as Deal associations. Service Territory maps to a custom Territory__c field on the Deal.
Dynamics 365 Field Service
Work Order Product
Freshsales
Deal Product / Product Catalog
many:1D365 Work Order Products (line items specifying which products are used per work order) merge into Freshsales Deal Products. Each D365 product line becomes a Product Catalog entry with pricing pulled from D365 Price List lines. Unit, quantity, cost, and discount fields transfer as line-item attributes.
Dynamics 365 Field Service
Bookable Resource
Freshsales
User
1:1D365 Bookable Resources (technicians, vehicles, equipment) resolve to Freshsales Users by email match. Resource type (User vs. Contact vs. Equipment) is stored as a custom field Resource_Type__c. Unmatched resources are flagged before migration — your team either creates Freshsales users or assigns records to a default owner.
Dynamics 365 Field Service
Customer Asset
Freshsales
Custom Object: Field_Service_Asset__c
1:1D365 Customer Assets (installed equipment, serial numbers, warranty records, parent-child hierarchies) have no Freshsales equivalent. We create a custom object Field_Service_Asset__c with fields for Asset Name, Serial Number, Status, Account lookup, Parent Asset lookup, Installation Date, and Warranty Expiry. Hierarchy depth is preserved via self-referential Parent_Asset__c field.
Dynamics 365 Field Service
Incident Type
Freshsales
Custom Object: Incident_Type__c
1:1D365 Incident Types define common problem categories with associated tasks, products, and pricing. These become a custom object Incident_Type__c in Freshsales linked to the Product Catalog. Task templates associated with each incident type store as a custom text field for manual rebuild reference.
Dynamics 365 Field Service
Service Territory
Freshsales
Custom Object: Service_Territory__c
1:1D365 Service Territories define geographic zones that group Bookable Resources. Freshsales has no native territory object for field service. We create Service_Territory__c with Name, City, State, Zip, and timezone fields. Work Orders reference the territory via Territory__c custom field on the Deal.
Dynamics 365 Field Service
Bookable Resource Booking
Freshsales
Task / Event
1:1D365 Bookable Resource Bookings (technician schedule blocks, travel time, break windows) map to Freshsales Events with Type set to 'Field Visit' or 'Travel'. Original booking start/end times, resource assignment, and location transfer. Overlapping bookings on the same day consolidate into daily Event records for cleanliness.
Dynamics 365 Field Service
Agreement / Service Contract
Freshsales
Deal (renewal tracking)
1:1D365 Service Agreements and Preventative Maintenance contracts store as a custom Agreement__c custom object linked to the Account. Contract start date, end date, billing frequency, and SLA terms transfer as custom fields. Active/expired status maps to an Agreement_Status__c pick-list. We also preserve contract value as Contract_Value__c and map renewal dates to Renewal_Date__c for alerts. The Account lookup is set to D365 account, and hierarchies are flattened with a Parent_Agreement__c reference.
| Dynamics 365 Field Service | Freshsales | Compatibility | |
|---|---|---|---|
| Account | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Work Order | Deal1:1 | Fully supported | |
| Work Order Product | Deal Product / Product Catalogmany:1 | Fully supported | |
| Bookable Resource | User1:1 | Fully supported | |
| Customer Asset | Custom Object: Field_Service_Asset__c1:1 | Fully supported | |
| Incident Type | Custom Object: Incident_Type__c1:1 | Fully supported | |
| Service Territory | Custom Object: Service_Territory__c1:1 | Fully supported | |
| Bookable Resource Booking | Task / Event1:1 | Fully supported | |
| Agreement / Service Contract | Deal (renewal tracking)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.
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
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Pre-migration audit: map D365 entities and flag scheduling, asset, and pricing complexity
We run a structured scan of your Dynamics 365 Field Service instance: account and contact counts, work order volume and type distribution, Bookable Resource headcount, Customer Asset hierarchy depth, and Price List complexity. This scan identifies the custom objects and fields needed in Freshsales, flags asset hierarchies requiring special handling, and surfaces scheduling parameters that cannot migrate automatically. You receive a Migration Readiness Report before any data moves.
Stand up Freshsales custom objects and fields based on migration readiness findings
Using the Readiness Report, we create the custom objects and fields needed: Field_Service_Asset__c, Service_Territory__c, Incident_Type__c, and Agreement__c custom objects, plus custom fields on the Deal object (Service_Status__c, Work_Order_Type__c, Work_Order__c checkbox, Service_Territory__c, Tax_Amount__c). We also configure field-level security profiles, record type assignments, and pick‑list values to mirror D365 business‑unit segmentation, preserving defaults to reduce post‑migration data entry. Your Freshsales admin reviews the custom field setup plan before it is applied so the schema is aligned with your team's workflow intentions.
Resolve Bookable Resources to Freshsales users by email match
D365 Bookable Resources are matched to Freshsales users by email address. Resources without a matchable email (equipment resources, generic pool resources) are flagged in the pre-migration report. Your team decides whether to create Freshsales users for those resources or assign their work orders to a fallback owner. During the matching process we also map the D365 resource type (User, Contact, Equipment) to a custom Resource_Type__c field on the Freshsales User record. If no email exists, we write a temporary placeholder and flag the record for manual review. We do not land any record in Freshsales without a confirmed owner.
Sequence migration: Accounts → Contacts → Products → Work Orders → Assets → Bookings
Freshsales requires Accounts before Contacts and Deals before Activities. We sequence the migration: (1) Accounts and Contacts, (2) Products and Price List entries, (3) Work Orders mapped to Deals, (4) Customer Assets to Field_Service_Asset__c custom object, (5) Bookable Resource Bookings to Events. Foreign-key dependencies resolve in this order so every lookup field in Freshsales has a valid target at insert time.
Run sample migration with field-level diff before full commit
A representative slice — typically 200–500 records spanning accounts, contacts, work orders, and assets — migrates first. We generate a field-level diff comparing source D365 values against Freshsales target values so you can verify Service_Status__c pick-list mapping, asset hierarchy preservation, and owner resolution. You approve the sample before the full run commits. Any field mapping corrections happen before bulk migration.
Cut over with delta pickup window for in-flight work orders
The full migration runs against Freshsales. During cutover, your team continues working in D365. A 48-hour delta pickup window captures any work orders modified, created, or completed between the initial extraction and the cutover go-live. Audit log records every operation. One-click rollback is available if reconciliation uncovers missing records or mapping errors. After go-live, your team receives a D365 reference export — a structured JSON file of all migrated D365 entities with original IDs — for any manual verification needed.
Platform deep dives
Dynamics 365 Field Service
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Freshsales.
Object compatibility
2 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 Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Field Service to Freshsales 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 Freshsales
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.