CRM migration
Field-level mapping, validation, and rollback between Dynamics 365 Field Service and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Dynamics 365 Field Service
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Dynamics 365 Field Service and Twenty CRM.
Complexity
BStandard
Timeline
3–5 days
Overview
Microsoft Dynamics 365 Field Service organizes field operations around Work Order, Bookable Resource, Customer Asset, and Agreement entities, with scheduling optimization, incident tracking, and product inventory tied to service tasks. Twenty CRM uses a simpler object model centered on People, Companies, Opportunities, Notes, and Tasks, with custom objects available on Professional and Organization tiers. The migration maps Dynamics 365 work orders to Twenty Opportunities (tracking booking status and resolution), bookable resources to People records (with role information), customer assets to Companies or custom objects, and service incidents to Notes. We surface Dynamics 365 products and service lines as custom fields on Opportunities rather than native inventory objects, since Twenty lacks a native product catalog. Resource scheduling rules, preventive maintenance agreements, and territory-based routing do not transfer — those require manual rebuild in Twenty's workflow builder or API-driven automation. We sequence the migration so parent records (Companies) load before child records (People), using email-based owner resolution against Twenty workspace members. A delta-pickup window captures in-flight work orders during cutover, and audit logging tracks every mapped field for reconciliation.
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 Twenty CRM, 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
msdyn_workorder (Work Order)
Twenty CRM
Opportunity
1:1Work orders map to Opportunities in Twenty with the work order number as Opportunity name, total amount from price calculation, and booking status (Scheduled, In Progress, Completed, Cancelled) as a custom select field. Original work order created-on and resolved-on timestamps migrate as custom datetime fields to preserve service timeline for reporting continuity.
Dynamics 365 Field Service
msdyn_bookableresource (Bookable Resource)
Twenty CRM
People
1:1Bookable resources map to People records in Twenty, with the resource name as the person's display name and email as the primary identifier. Resource type (User, Contact, Account, Equipment, Generic) migrates as a custom select field on the People record. For User-type resources, email matching against Twenty workspace members resolves ownership automatically.
Dynamics 365 Field Service
msdyn_bookableresourcebooking (Booking)
Twenty CRM
Tasks
1:1Individual bookings attach to Twenty Tasks linked to the relevant Opportunity (work order) and the assigned People record (bookable resource). Booking start/end times become task due dates, and booking status (Held, Committed, Cancelled) maps to task completion status. Multiple bookings for the same work order generate multiple Tasks with resource attribution.
Dynamics 365 Field Service
msdyn_customerasset (Customer Asset)
Twenty CRM
Custom Object: Field Asset
1:1Customer assets require a custom Field Asset object in Twenty, linked to the related Company record. Asset name, serial number, product, installation date, and parent asset hierarchy migrate as custom fields on the Field Asset object. Installed products on the asset become linked records or custom fields depending on the relationship complexity.
Dynamics 365 Field Service
msdyn_workorderincident (Incident)
Twenty CRM
Notes
1:1Work order incidents migrate as Notes attached to the related Opportunity (work order). Incident type, symptom, cause, and resolution text populate the Note body. Primary incident flag migrates as a custom field on the Note if multiple incidents exist per work order.
Dynamics 365 Field Service
msdyn_workorderservicetask (Service Task)
Twenty CRM
Tasks
1:1Service tasks on a work order become Tasks linked to the Opportunity. Task type (field inspection, testing, repair) maps to a custom task-type field. Duration and actual duration migrate as numeric fields. Nested task hierarchies in Dynamics flatten to a flat task list with a parent-task custom field for structure preservation.
Dynamics 365 Field Service
msdyn_agreement (Agreement)
Twenty CRM
Custom Object: Service Agreement
1:1Service agreements require a custom Service Agreement object in Twenty linked to the Company. Agreement name, start/end dates, service frequency, and invoicing method migrate as custom fields. Active/inactive status preserves the agreement lifecycle. Recurring work order generation rules do not migrate — those scheduling patterns must be rebuilt via Twenty's workflow builder or API-driven automation.
Dynamics 365 Field Service
msdyn_workorderproduct (Work Order Product)
Twenty CRM
Opportunity custom fields
1:1Products added to work orders migrate as a custom field group on the Opportunity: product name, quantity, unit price, and line total. Dynamics 365 product inventory data (warehouse, stock quantity) does not map to Twenty's flat data model — inventory tracking requires a separate inventory management tool or custom object implementation.
Dynamics 365 Field Service
Account (msdyn_Account / parent account)
Twenty CRM
Company
1:1The parent account in Dynamics 365 Field Service maps directly to a Company record in Twenty. Account name, address, industry, and number of employees map to the corresponding Twenty Company fields. For organizations with nested account hierarchies, parentId resolves to the top-level Company in Twenty's flat structure.
Dynamics 365 Field Service
Contact (customer contact on work order)
Twenty CRM
People
1:1The primary customer contact on a Dynamics 365 work order maps to a People record in Twenty, linked to the corresponding Company via companyId. Contact name, email, phone, and job title migrate as standard People fields. Secondary contacts on the same work order attach as additional linked People records.
Dynamics 365 Field Service
msdyn_workordertype (Work Order Type)
Twenty CRM
Opportunity custom field
1:1Work order type (Maintenance, Inspection, Installation, Emergency) migrates as a custom select field on the Opportunity. Stage probability and forecast category are not natively set by this field in Twenty — those must be configured manually or via workflow based on work order type and booking status.
Dynamics 365 Field Service
msdyn_priority (Priority)
Twenty CRM
Opportunity custom field
1:1Priority levels (Critical, High, Normal, Low) map to a custom Priority__c select field on the Opportunity. Each Dynamics 365 priority value maps to the corresponding Twenty value. Priority-based SLA timers in Dynamics do not have a direct equivalent in Twenty — those rules must be rebuilt as workflow triggers or external automation.
| Dynamics 365 Field Service | Twenty CRM | Compatibility | |
|---|---|---|---|
| msdyn_workorder (Work Order) | Opportunity1:1 | Fully supported | |
| msdyn_bookableresource (Bookable Resource) | People1:1 | Fully supported | |
| msdyn_bookableresourcebooking (Booking) | Tasks1:1 | Fully supported | |
| msdyn_customerasset (Customer Asset) | Custom Object: Field Asset1:1 | Fully supported | |
| msdyn_workorderincident (Incident) | Notes1:1 | Fully supported | |
| msdyn_workorderservicetask (Service Task) | Tasks1:1 | Fully supported | |
| msdyn_agreement (Agreement) | Custom Object: Service Agreement1:1 | Fully supported | |
| msdyn_workorderproduct (Work Order Product) | Opportunity custom fields1:1 | Fully supported | |
| Account (msdyn_Account / parent account) | Company1:1 | Fully supported | |
| Contact (customer contact on work order) | People1:1 | Fully supported | |
| msdyn_workordertype (Work Order Type) | Opportunity custom field1:1 | Fully supported | |
| msdyn_priority (Priority) | Opportunity custom field1: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
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Audit Dynamics 365 data export and map work order hierarchy
We connect to your Dynamics 365 environment via scoped read access and export the full work order, bookable resource, customer asset, and agreement data sets. We verify record counts, date ranges, and custom field usage against your documented data model. This phase identifies the volume of records per entity, flags any inactive or soft-deleted records that should be excluded, and surfaces gaps in the standard Dynamics 365 schema that require custom entity exports.
Design Twenty custom objects and field schema
Based on the data audit, we create the custom objects in Twenty (Field Asset, Service Agreement) and add all required custom fields to People, Company, Opportunity, and Task records. We configure custom select fields for status pick-lists, date fields for booking timestamps, and text/currency fields for work order amounts and product lines. Your Twenty workspace admin reviews the schema before we load data, ensuring field labels and pick-list values match your operational terminology.
Resolve bookable resources to Twenty workspace members by email
Bookable resources in Dynamics 365 map to People records in Twenty. We match msdyn_email on each bookable resource against Twenty workspace member emails to auto-assign ownership. Resources without a matching Twenty user are flagged for manual resolution — your team either creates a new Twenty workspace member or assigns those records to a fallback user. No Opportunity or Task lands without an owner assigned.
Run a sample migration with field-level diff across work orders and bookings
A representative slice of records (typically 100–500 work orders spanning multiple statuses, resource assignments, and incident counts) migrates into Twenty first. We generate a field-level diff showing every mapped value from Dynamics 365 against the corresponding Twenty field — you verify booking status mapping, priority values, work order type mapping, and asset linkage before the full run commits. Custom field labels, pick-list completeness, and owner resolution are validated at this stage.
Execute full migration with delta-pickup and audit logging
The full migration runs in sequence: Companies first, then People (linked to Companies via companyId), then Opportunities (linked to Companies and People), then Tasks and Notes, then custom objects (Field Asset, Service Agreement). A delta-pickup window (typically 24–48 hours) runs concurrently with cutover — any work orders modified or created in Dynamics 365 during the window are captured and loaded last. Every operation logs to an audit table with source system ID, destination ID, and field mapping version for reconciliation.
Deliver reconciliation report and post-migration support plan
After cutover, we generate a reconciliation report comparing Dynamics 365 record counts against Twenty record counts by entity type and status. Any records that failed migration, missed relationships, or unresolved owners are listed with resolution steps. We provide a rebuild reference document for your Twenty admin covering agreement-based scheduling, priority SLA triggers, and resource optimization rules — the workflows that did not migrate but need to be re-implemented in Twenty's workflow builder or via API automation.
Platform deep dives
Dynamics 365 Field Service
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Twenty CRM.
Object compatibility
1 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 Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Dynamics 365 Field Service to Twenty CRM 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 Twenty CRM
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.