CRM migration

Migrate from Dynamics 365 Field Service to Twenty CRM

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 logo

Dynamics 365 Field Service

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Dynamics 365 Field Service and Twenty CRM.

Complexity

BStandard

Timeline

3–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Dynamics 365 Field Service objects map to Twenty CRM

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)

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Work 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)

maps to

Twenty CRM

People

1:1
Fully supported

Bookable 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)

maps to

Twenty CRM

Tasks

1:1
Fully supported

Individual 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)

maps to

Twenty CRM

Custom Object: Field Asset

1:1
Fully supported

Customer 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)

maps to

Twenty CRM

Notes

1:1
Fully supported

Work 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)

maps to

Twenty CRM

Tasks

1:1
Fully supported

Service 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)

maps to

Twenty CRM

Custom Object: Service Agreement

1:1
Fully supported

Service 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)

maps to

Twenty CRM

Opportunity custom fields

1:1
Fully supported

Products 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)

maps to

Twenty CRM

Company

1:1
Fully supported

The 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)

maps to

Twenty CRM

People

1:1
Fully supported

The 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)

maps to

Twenty CRM

Opportunity custom field

1:1
Fully supported

Work 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)

maps to

Twenty CRM

Opportunity custom field

1:1
Fully supported

Priority 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.

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

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Resource Scheduling Optimization rules do not transfer to Twenty

    Dynamics 365 Field Service includes Resource Scheduling Optimization (RSO) that automatically assigns technicians based on territory, skill, travel time, and availability. Twenty has no native scheduling optimization engine — bookings migrate as historical records with assigned resources, but future scheduling rules, territory-based routing, and optimization constraints must be rebuilt using Twenty's workflow builder, API-driven automation, or a third-party scheduling integration. Teams should budget time to reconfigure dispatch logic in Twenty before relying on automated resource assignment.

  • Agreement-based recurring work orders require manual rebuild in Twenty

    Dynamics 365 Agreements generate recurring work orders automatically based on service schedules, date ranges, and frequency settings. Twenty has no native agreement or recurring-work-order generation — each Dynamics 365 agreement becomes a static custom record in Twenty with start/end dates and frequency fields preserved as reference data, but the automated generation of new work orders from those agreements stops at migration. Teams should use Twenty's workflow builder or API webhooks to re-implement recurring scheduling based on agreement date ranges, or rebuild agreement logic as a custom process using Twenty's custom objects and date-based triggers.

  • Product inventory and warehouse data has no native destination in Twenty

    Dynamics 365 Field Service tracks products with inventory quantities, warehouses, and stock status per work order line. Twenty has no native product catalog or inventory object — products added to work orders migrate as custom fields on the Opportunity (product name, quantity, unit price), but warehouse associations, stock quantities, and inventory transactions do not map to any Twenty object. Teams that rely on inventory tracking in Dynamics should plan to either migrate product data to a separate inventory management system or implement a custom Product/Inventory object in Twenty with manual stock updates.

  • Customer asset hierarchies flatten in Twenty's object model

    Dynamics 365 Customer Assets support parent-child hierarchies where a parent asset (HVAC system) contains child assets (compressor, condenser). Twenty's object model does not natively support hierarchical custom objects — asset parent-child relationships must be represented using a parent-asset custom field on the Field Asset custom object that references the Source_System_ID__c of the parent record. Circular references and deep hierarchies (more than 3 levels) require careful mapping during migration to avoid data integrity issues when resolving parent links.

  • CSV import limits constrain large work order exports

    Twenty's UI-based CSV import is capped at 20,000 records per export operation, and the API rate limit is 200 requests per minute on Professional tier. Dynamics 365 Field Service environments with high work order volumes (50,000+ records), extensive booking histories, and large asset catalogs may require batched migration using Twenty's API endpoints with pagination. We handle batching automatically, but teams with very large datasets should anticipate extended migration timelines and should consider API-based migration rather than relying solely on UI CSV imports.

Migration approach

Six steps for a successful Dynamics 365 Field Service to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

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.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

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

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • 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 Twenty CRM 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 Twenty CRM data migrations

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

Can't find your answer?

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 consultation

Most Dynamics 365 Field Service to Twenty migrations complete in 3–5 days for under 25,000 records across work orders, bookable resources, customer assets, and agreements. Environments with more than 25,000 records, multiple custom objects, or complex asset hierarchies extend to 7–14 days. The longest phase is typically the data audit and custom schema design — once Twenty's custom objects and fields are configured, the migration run itself is fast. We sequence Companies, then People, then Opportunities, then custom objects to respect Twenty's import order requirements.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dynamics 365 Field Service.
Land in Twenty CRM, 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