CRM migration
Field-level mapping, validation, and rollback between Resco – Mobility & Productivity and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Resco – Mobility & Productivity
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Resco – Mobility & Productivity and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Resco Mobility & Productivity to Twenty CRM is a platform exit, not a simple record copy. Resco is an extension layer that wraps an underlying Microsoft Dynamics 365, Dataverse, or Salesforce instance — your CRM data lives in that parent CRM, not in Resco itself. We migrate the entity records stored in the Resco data layer (Accounts, Contacts, Work Orders, inspection responses, location tracking, and Woodford-configured custom entities) into Twenty's relational object model. The most significant migration decisions involve Work Orders (Twenty has no native field service management entity — we map these to a custom WorkOrder object or to Opportunities depending on your business model), inspection questionnaires (Resco-specific artifacts that require custom object schema in Twenty), and route plans (configuration data that cannot be migrated and must be rebuilt using Twenty's built-in workflow or a third-party routing tool). We do not migrate Woodford form designs, Resco Guides, or sync filter configurations as these are platform-native artifacts with no Twenty equivalent.
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 Resco – Mobility & Productivity 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.
Resco – Mobility & Productivity
Account
Twenty CRM
Organization
1:1Resco Account records (mirrored from the underlying CRM) map directly to Twenty Organization. We use the Organization name as the dedupe key during import. If Resco is connected to Microsoft Dynamics 365 or Dataverse, we extract Account records from the parent CRM's API rather than the Resco sync layer, as the Resco export may apply filter conditions that exclude some records. Address, phone, industry, and website fields map to their Twenty Organization field equivalents.
Resco – Mobility & Productivity
Contact
Twenty CRM
Contact
1:1Resco Contact records map to Twenty Contact with a direct 1:1 field mapping for standard fields (name, email, phone, title). The primary Address on Contact migrates to the Twenty address block. Contact ownership resolves by matching the Owner email to the target Twenty User. If Contacts were associated with an Account in the parent CRM, we resolve the Organization ID at migration time before Contact insert to satisfy the Lookup relationship.
Resco – Mobility & Productivity
Work Order
Twenty CRM
Custom Object: WorkOrder (or Opportunity)
lossyWork Order is a first-class Resco Field Service+ entity with no direct Twenty CRM equivalent. Twenty does not include field service management as a standard feature. We work with the customer during discovery to decide whether Work Orders map to a custom WorkOrder object (requiring pre-creation of the schema in Twenty's Data Model) or to Opportunities if the business treats field work as billable projects. Status, assignment, line items, and photos migrate in either case; the schema decision affects downstream reporting and filtering in Twenty.
Resco – Mobility & Productivity
Work Order Line Item
Twenty CRM
Custom Object: WorkOrderLineItem (or OpportunityLineItem)
lossyWork Order line items from Resco Field Service+ require the same schema decision as their parent Work Order. If the customer chooses a custom WorkOrder object, line items become a related custom WorkOrderLineItem object. If Work Orders map to Opportunities, line items map to OpportunityLineItem equivalents using Twenty's opportunityLineItems relation. Part number, quantity, unit price, and description fields transfer directly in either configuration.
Resco – Mobility & Productivity
Inspection Questionnaire Template
Twenty CRM
Custom Object: InspectionTemplate
lossyResco inspection templates are Woodford-configured artifacts with branching logic, conditional questions, and scoring rules. These are schema definitions that cannot be exported as data. We extract the template structure (question text, field types, response options, branch conditions) during discovery and document it in a written specification that the customer's admin uses to recreate the template as a Twenty custom object. The inspection response data (actual filled-out forms) migrates as records in the recreated custom object.
Resco – Mobility & Productivity
Inspection Response Record
Twenty CRM
Custom Object: InspectionResponse
1:1Filled inspection forms stored in Resco map to inspection response records in the custom InspectionResponse object we create in Twenty. Each response is linked to the parent Contact (the field worker who completed it) and to the related Work Order if applicable. Question responses, completion timestamps, and GPS capture location migrate as fields. Resco's digital signature field on inspections migrates as a text blob or base64-encoded attachment depending on format.
Resco – Mobility & Productivity
Mobile Auditing (Location Tracking Records)
Twenty CRM
Note or Custom Activity records
1:1Location tracking records in Resco are stored in the Mobile Auditing entity with the Owner field set to the initiating user, not to the work order or asset. These records are audit trail artifacts, not operational records. We migrate them as Note records attached to the related Work Order or Contact, preserving the timestamp, user identity, and location coordinates. Customers who need structured location history may prefer a custom activity object with latitude and longitude fields rather than Notes.
Resco – Mobility & Productivity
Route Plan
Twenty CRM
N/A (configuration, not migratable)
lossyRoute plans in Resco are optimized sequences of work orders generated by the routing engine. These are runtime configuration artifacts rather than transactional records. There is no migration path for route plan data; the routing logic does not translate to Twenty CRM, which has no native routing engine. We flag route plans during discovery and advise the customer to plan for a third-party routing tool (such as a Maps API integration or a dedicated FSM routing solution) to replace this capability post-migration.
Resco – Mobility & Productivity
Activity / Calendar Events
Twenty CRM
Task
1:1Resco activities synced from the parent CRM (appointments, tasks, calendar events) map to Twenty Task records. Subject, description, due date, assigned user, and status transfer directly. If the customer used Resco's calendar integration with Microsoft Exchange or Google Calendar, we flag this as an integration to re-establish post-migration in Twenty's settings.
Resco – Mobility & Productivity
Custom Entities (Woodford-configured)
Twenty CRM
Custom Objects
1:1Woodford custom entities not mirrored in the parent CRM require explicit schema re-creation in Twenty. We extract the entity definition (field names, field types, picklist values, lookup relationships) from the Resco project export during discovery and use it to pre-create the equivalent Twenty custom object via Twenty's Data Model settings before any data import. Any lookup relationships to standard entities (Account, Contact) must be resolved to their Twenty equivalents before the custom object import runs. Entities without a clear Twenty counterpart require a re-modeling decision with the customer.
Resco – Mobility & Productivity
Documents and Attachments
Twenty CRM
Attachment or External Storage
1:1Resco stores documents locally or routes them to external services (Dropbox, Google Drive, OneDrive, SharePoint). We migrate attachments linked to CRM records as Twenty attachment records. If the customer used SharePoint routing from a Dynamics 365 environment, we recommend re-establishing SharePoint or an alternative external storage connection in Twenty post-migration, as Twenty does not have a native SharePoint integration at this stage. Standalone local files stored only in Resco require explicit extraction before the migration window.
Resco – Mobility & Productivity
User / Owner
Twenty CRM
User
1:1Resco user records reference the underlying CRM user identity. When migrating from a Dynamics 365 or Salesforce parent CRM to Twenty, user IDs and ownership assignments must be re-mapped to Twenty User records. We resolve owners by email match. Any Resco user without a matching Twenty User is held in a reconciliation queue for the customer to provision before record import resumes, as OwnerId references are required on most standard object inserts.
| Resco – Mobility & Productivity | Twenty CRM | Compatibility | |
|---|---|---|---|
| Account | Organization1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Work Order | Custom Object: WorkOrder (or Opportunity)lossy | Fully supported | |
| Work Order Line Item | Custom Object: WorkOrderLineItem (or OpportunityLineItem)lossy | Fully supported | |
| Inspection Questionnaire Template | Custom Object: InspectionTemplatelossy | Fully supported | |
| Inspection Response Record | Custom Object: InspectionResponse1:1 | Fully supported | |
| Mobile Auditing (Location Tracking Records) | Note or Custom Activity records1:1 | Mapping required | |
| Route Plan | N/A (configuration, not migratable)lossy | Fully supported | |
| Activity / Calendar Events | Task1:1 | Fully supported | |
| Custom Entities (Woodford-configured) | Custom Objects1:1 | Mapping required | |
| Documents and Attachments | Attachment or External Storage1:1 | Mapping required | |
| User / Owner | User1: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.
Resco – Mobility & Productivity gotchas
Sync filter misconfiguration causes silent data loss
API call consumption varies dramatically between sync modes
Resco Guides feature discontinued with no migration path
External storage integration is not app-native
Location tracking data is user-owned in the Mobile Auditing entity
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
Source environment audit and parent CRM identification
We identify whether Resco is connected to Microsoft Dynamics 365, Dataverse, or Salesforce as the parent CRM, and audit the Resco Woodford project configuration for all active entities, custom objects, sync filter settings, and inspection templates. We review the Resco Mobile Auditing entity for location tracking records, flag Resco Guides content for documentation, and identify any records that exist only in Resco (not yet synced to the parent CRM). The output is a written migration scope specifying every entity to migrate, the source of each extraction (Resco sync layer vs parent CRM API), and the records at risk of omission due to filter conditions.
Twenty CRM schema design and Work Order model decision
We design the destination schema in Twenty's Data Model. This includes creating custom objects for InspectionTemplate, InspectionResponse, and WorkOrder if the customer chooses that model. We create any additional custom entities from Woodford configuration, matching field names and types to their Twenty equivalents. The Work Order model decision (custom object vs Opportunity) is finalized in this step with the customer's RevOps or operations lead. Standard entities (Organization, Contact, Task) use their Twenty defaults. Schema is deployed into a Twenty staging instance before production data import.
Sandbox migration and reconciliation
We run a full migration into a Twenty staging or development instance using production-equivalent record volumes. The customer's team reconciles record counts (Organizations in, Contacts in, Work Orders in, inspection responses in, custom entity records in) against the Resco and parent CRM sources, spot-checks 25-50 records for field-level accuracy, and validates the Work Order model decision. Any mapping corrections and schema adjustments happen in this phase. No production data moves until this stage is signed off.
User provisioning and owner reconciliation
We extract every distinct Resco user referenced as an Owner on any entity record and match by email against the Twenty User table. Any Resco user without a matching Twenty User goes to a reconciliation queue for the customer to provision. This step must complete before record import because OwnerId references are required on most object inserts in Twenty. If the customer is also migrating from the parent CRM, we coordinate User provisioning across both extractions.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated), Organizations (from Resco Accounts), Contacts (with OrganizationId resolved), custom objects for WorkOrder schema (if applicable), Work Orders (with resolved owner and organization references), Inspection templates and responses, Activity records (Tasks via Twenty API), custom entity records (with lookups to standard objects resolved), and attachments. Each phase emits a row-count reconciliation report before the next phase begins. We use Twenty's REST API with rate-limit handling and exponential backoff.
Cutover, validation, and post-migration handoff
We freeze Resco writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver the inspection template specification document (for admin re-creation), the Work Order model decision record, and the routing tool recommendation for route plan replacement. We support a one-week hypercare window for reconciliation issues. We do not rebuild Resco sync filters, Woodford form designs, or Resco Guides as Twenty artifacts inside the migration scope; these are documented separately for the customer's admin team.
Platform deep dives
Resco – Mobility & Productivity
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 Resco – Mobility & Productivity 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
Resco – Mobility & Productivity: Governed by the underlying CRM platform (Dynamics 365, Dataverse, or Salesforce API limits).
Data volume sensitivity
Resco – Mobility & Productivity 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 Resco – Mobility & Productivity to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Resco – Mobility & Productivity 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 Resco – Mobility & Productivity
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.