CRM migration

Migrate from Resco – Mobility & Productivity to Twenty CRM

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 logo

Resco – Mobility & Productivity

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Resco – Mobility & Productivity and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Resco – Mobility & Productivity logo

Resco – Mobility & Productivity

What's pushing teams away

  • Some customers find the learning curve steep for new users — the UI is not intuitive for first-time users and the configuration complexity requires training investment.
  • Sync performance degrades with large published apps, causing slower synchronization times and delayed updates that frustrate remote field workers.
  • Organizations outgrow Resco when they need broader CRM capabilities beyond field mobility, particularly when the underlying CRM itself is being replaced.
  • Very niche or specific workflow requirements are not well supported — customers report that some features feel too broad for specialized use cases.
  • The platform requires a separate underlying CRM license, adding cost and complexity that smaller teams find difficult to justify.

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 Resco – Mobility & Productivity objects map to Twenty CRM

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

maps to

Twenty CRM

Organization

1:1
Fully supported

Resco 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

maps to

Twenty CRM

Contact

1:1
Fully supported

Resco 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

maps to

Twenty CRM

Custom Object: WorkOrder (or Opportunity)

lossy
Fully supported

Work 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

maps to

Twenty CRM

Custom Object: WorkOrderLineItem (or OpportunityLineItem)

lossy
Fully supported

Work 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

maps to

Twenty CRM

Custom Object: InspectionTemplate

lossy
Fully supported

Resco 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

maps to

Twenty CRM

Custom Object: InspectionResponse

1:1
Fully supported

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

maps to

Twenty CRM

Note or Custom Activity records

1:1
Mapping required

Location 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

maps to

Twenty CRM

N/A (configuration, not migratable)

lossy
Fully supported

Route 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

maps to

Twenty CRM

Task

1:1
Fully supported

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

maps to

Twenty CRM

Custom Objects

1:1
Mapping required

Woodford 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

maps to

Twenty CRM

Attachment or External Storage

1:1
Mapping required

Resco 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

maps to

Twenty CRM

User

1:1
Fully supported

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

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.

Resco – Mobility & Productivity logo

Resco – Mobility & Productivity gotchas

High

Sync filter misconfiguration causes silent data loss

Medium

API call consumption varies dramatically between sync modes

Medium

Resco Guides feature discontinued with no migration path

Low

External storage integration is not app-native

Low

Location tracking data is user-owned in the Mobile Auditing entity

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

  • Twenty CRM has no native field service management entities

    Resco's Field Service+ layer provides native Work Order, Inspection Questionnaire, Route Plan, and asset management entities that have no Twenty CRM equivalent. Teams migrating from Resco must decide whether to model field work as Opportunities, Tasks, or custom objects in Twenty, and whether to use a separate field service management tool post-migration. We help the customer make this schema decision during discovery and document the chosen model before any data moves. Skipping this step results in Work Orders landing as unstructured text or being omitted entirely.

  • Resco Guides discontinuation leaves no migration artifact

    Resco Guides, the step-by-step workflow instruction component for field technicians, was discontinued with no migration path to any destination. Any existing Guides configurations are lost if migration proceeds. We flag this during discovery so the customer can export Guides content as documentation or screenshots before cutover. Replacement requires a separate knowledge management or digital workflow tool.

  • Sync filter exclusion causes silent record omission

    Resco's upload and download filters per entity restrict which records sync. If filters are misconfigured or omitted during migration scoping, records that should migrate are silently excluded. We audit all entity-level filter conditions during discovery and run an Import Preview step to surface any records that would be skipped before committing the migration. If Resco is connected to a parent Dynamics 365 or Dataverse instance, we prefer extracting from the parent CRM API directly to bypass Resco filter conditions entirely.

  • Offline data captured only in Resco may not exist in the parent CRM

    Records created or modified offline in Resco sync back to the parent CRM only when connectivity is restored and the sync completes without errors. If a customer has been operating primarily in offline mode, some records may exist only in Resco and not yet in the underlying Dynamics 365 or Dataverse instance. We audit the sync status and record freshness in Resco before extraction to identify any records at risk of being missed if extraction runs from the parent CRM only.

  • Woodford custom entity schema requires manual re-creation in Twenty

    Custom entities created in Woodford (Resco's low-code form designer) are not exported as portable schema files. We extract the field definitions, picklist values, and relationship structure from the Woodford project during discovery and use that to manually create the equivalent custom object in Twenty's Data Model. The mapping is accurate but requires admin validation before the custom entity data import runs. Any logic branches or calculated fields in the Woodford form designer do not migrate automatically.

Migration approach

Six steps for a successful Resco – Mobility & Productivity to Twenty CRM data migration

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

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

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

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

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

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

Context on both ends of the pair

Resco – Mobility & Productivity logo

Resco – Mobility & Productivity

Source

Strengths

  • Genuine offline-first capability with automatic sync when connectivity is restored
  • Low-code mobile form designer enables rapid field-process customization without developer resources
  • Deep integration with Microsoft Dynamics 365 and Dataverse with native mobile form parity
  • Location tracking with GPS capture of field assets without additional hardware like RFID
  • Cross-platform clients for iOS, Android, Windows, smartwatches, and HoloLens

Weaknesses

  • Requires an underlying Dynamics 365, Dataverse, or Salesforce license, adding cost and dependency
  • Steep configuration learning curve — Woodford requires training investment for new administrators
  • Sync performance degrades with large published apps, causing delayed updates for field workers
  • Limited support for highly specialized or niche workflow scenarios outside field service patterns
  • No standalone CRM data store — Resco is always an extension layer, not a replacement system
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 Resco – Mobility & Productivity 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

    Resco – Mobility & Productivity: Governed by the underlying CRM platform (Dynamics 365, Dataverse, or Salesforce API limits).

  • Data volume sensitivity

    A

    Resco – Mobility & Productivity exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Resco – Mobility & Productivity 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 Resco – Mobility & Productivity to Twenty CRM data migrations

Answers to the questions buyers ask most during Resco – Mobility & Productivity to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 records with two to three custom entity types and a straightforward Work Order model decision. Migrations involving field service data (work orders with line items, inspection templates, location history), multiple Woodford custom entities, or records that must be extracted from both the Resco sync layer and an underlying Dynamics 365 parent CRM move to seven to twelve weeks because of the dual-extraction complexity, custom schema build, and inspection template specification work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Resco – Mobility & Productivity.
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