CRM migration

Migrate from MobileWorker to Twenty CRM

Field-level mapping, validation, and rollback between MobileWorker and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

MobileWorker logo

MobileWorker

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

91%

10 of 11

objects map 1:1 between MobileWorker and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

MobileWorker is an ArcGIS Online user type designed for field technicians who collect data, receive work assignments, and navigate routes offline. Its data model centres on Workers, Assignments, and location-based dispatch records — objects that have no direct counterpart in Twenty CRM's standard schema. Twenty provides People, Companies, Opportunities, Tasks, and Notes as standard objects, with custom objects available on paid tiers for anything beyond that. This migration carries every record type from MobileWorker — worker profiles, assignment history, routing data, geospatial fields — into Twenty's relational structure, creating custom fields and custom objects where no standard equivalent exists. FlitStack AI sequences the migration so parent records (Companies) load before child records (People linked by companyId), validates field-level mapping against a sample slice before committing the full run, and captures a 24–48 hour delta window for in-flight changes during cutover. The operational reality is that MobileWorker's offline-first dispatch logic does not translate to Twenty CRM's workflow builder, so routing rules and assignment automation must be rebuilt using Twenty's trigger-based actions.

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

MobileWorker logo

MobileWorker

What's pushing teams away

  • Pricing is not published on the vendor site — customers must book a discovery call to receive a quote.
  • Reviewer feedback (per Capterra/SoftwareWorld) notes that the platform 'doesn't work when you have no network cable access' — offline behavior may be limited for remote sites.
  • No public API documentation; integrations are configured via vendor engagement.
  • Specialized to UK civil/highways verticals — overseas customers find smaller partner network and localised content.
  • Smaller customer base than mainstream FSM platforms (Jobber, ServiceTitan, IFS) — comparison data is limited.

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 MobileWorker objects map to Twenty CRM

Each row shows how a MobileWorker 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.

MobileWorker

Worker / Field Technician

maps to

Twenty CRM

People

1:1
Fully supported

MobileWorker stores technician profiles as named users tied to an ArcGIS organizational account. These map directly to Twenty's People object. Custom fields capture MobileWorker's worker-specific attributes (certifications, vehicle ID, dispatch zone) that have no standard equivalent in Twenty. Owner assignment resolves by email match against Twenty workspace members.

MobileWorker

Work Assignment / Job

maps to

Twenty CRM

Opportunity or Task (custom)

1:1
Fully supported

MobileWorker's core record is a work assignment with status, priority, due date, assigned worker, and location. Twenty's standard Opportunity tracks sales deals, not field jobs. We create a custom Opportunity sub-type or use Tasks for short-cycle assignments, preserving status (assigned, in-progress, completed), priority pick-list, and the original assignment ID as Source_System_ID__c. Routing data lives in custom fields.

MobileWorker

Company / Account

maps to

Twenty CRM

Companies

1:1
Fully supported

MobileWorker's location records often attach to a business address. These map to Twenty's Companies object with standard fields (name, domain, industry, employee count). The company's physical address populates Twenty's address fields, and the primary contact on the assignment links to a Person record via companyId.

MobileWorker

Location / Work Site

maps to

Twenty CRM

Companies (address fields) + custom fields

many:1
Fully supported

A MobileWorker assignment includes a work-site address and lat/long coordinates. The address migrates to Twenty's Company address fields. Geospatial coordinates (latitude, longitude, accuracy, timestamp) have no native Twenty field type — we create custom number fields (Site_Latitude__c, Site_Longitude__c, Location_Accuracy__c) for reference. Geofence radius migrates as a custom number field.

MobileWorker

Worker Assignment History

maps to

Twenty CRM

Task (historical events)

1:1
Fully supported

Each status change on a MobileWorker assignment generates a timestamped audit entry. We migrate these as Twenty Tasks with Type='Field Update', preserving the original timestamp, worker name, old status, and new status. This maintains the full assignment lifecycle for reporting continuity in Twenty.

MobileWorker

Attachment / Photo

maps to

Twenty CRM

Notes (file attachment)

1:1
Fully supported

Photos and documents attached to MobileWorker assignments (before/after images, signature captures) are downloaded and re-uploaded as Twenty Notes linked to the relevant Opportunity or Task record. File size limits apply — files over the platform threshold are flagged for manual retrieval. Inline images in notes are extracted and re-hosted.

MobileWorker

Custom Attribute Form (Worker)

maps to

Twenty CRM

Custom fields on People

1:1
Fully supported

MobileWorker allows custom attribute forms attached to workers — certifications, vehicle plates, skill tags, dispatch preferences. Each attribute becomes a custom field on Twenty's People object. Pick-list values (e.g., certification type) map value-by-value to Twenty select fields. We create all custom fields in Twenty before the migration run.

MobileWorker

Custom Attribute Form (Assignment)

maps to

Twenty CRM

Custom fields on Opportunity / Task

1:1
Fully supported

Assignment-level custom attributes (work type, materials used, service code, client PO number) map to custom fields on the target Opportunity or Task object in Twenty. Number fields, text fields, and select fields are created in Settings → Data Model before import. Required-field constraints are honoured during mapping validation.

MobileWorker

Dispatch Group / Team

maps to

Twenty CRM

Custom field on People + Workspace Members

1:1
Fully supported

MobileWorker's dispatch groups (team-based routing) map to a custom pick-list field on Twenty's People object (Dispatch_Team__c) and are cross-referenced against Twenty workspace members. If Twenty members exist with matching emails, the worker record links directly; otherwise the dispatch team is stored as a reference field for manual assignment.

MobileWorker

MobileWorker User / Owner

maps to

Twenty CRM

Workspace Members

1:1
Fully supported

MobileWorker owner IDs resolve by email match against Twenty workspace members. Unmatched owners are flagged before migration — the team either invites them to Twenty first or assigns their records to a fallback member. No record lands in Twenty without a resolved owner reference. MobileWorker's role-based permissions (dispatcher vs field worker) do not migrate.

MobileWorker

Notes / Comments on Assignment

maps to

Twenty CRM

Notes

1:1
Fully supported

Free-text notes and comments attached to MobileWorker assignments migrate as Twenty Notes linked to the target Opportunity or Task record. Original timestamps and author names are preserved. Rich-text formatting is converted to Twenty's supported format — complex HTML notes are flagged for manual review.

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.

MobileWorker logo

MobileWorker gotchas

High

No public API documentation for schema or endpoints

High

No documented bulk export mechanism

Medium

Authentication method not publicly documented

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

  • MobileWorker's offline-first architecture has no equivalent in Twenty CRM

    MobileWorker is built around field technicians working with no connectivity — assignments sync when the device reconnects, and location is tracked at the device level with GPS accuracy metadata. Twenty CRM is a standard cloud-connected CRM with no offline mode. Assignment location data (latitude, longitude, accuracy, timestamp) has no native geospatial field type — we store it as custom number fields on the Opportunity record. Dispatch routing logic, geofence triggers, and offline sync behaviour must be rebuilt in Twenty's workflow builder or as a custom extension. This is the most significant functional gap in the migration and should be scoped as a post-migration rebuild task.

  • Twenty requires custom fields to exist before CSV import — fields must be pre-created

    Twenty's CSV import creates records, not fields. If a custom field does not exist in Settings → Data Model at migration time, the import will either skip the column silently or throw a validation error depending on whether the field is required. MobileWorker has extensive custom attribute forms on both workers and assignments. We pre-create every custom field in Twenty before the migration run — this includes geospatial fields (Site_Latitude__c, Site_Longitude__c), routing metadata fields (Geofence_Radius__c, Dispatch_Zone__c), and status/history fields. The workspace must be set up with these fields first.

  • Twenty's API rate limits cap at 100–200 calls per minute depending on tier

    Twenty's free Pro tier allows 100 API calls per minute; the Organization tier allows 200 per minute. Large MobileWorker datasets with thousands of assignment history records require careful pagination and retry logic during the migration run. If the dataset exceeds 20,000 records, Twenty's CSV export limit (20,000 records per export) requires splitting the export into multiple batches. We throttle API calls within these limits and sequence batch loads to avoid hitting quota errors that would interrupt the migration mid-run.

  • Assignment-to-worker relationships are N:1 in MobileWorker but require explicit linking in Twenty

    A single MobileWorker assignment can be assigned to one worker, and a worker can have many assignments — a straightforward N:1 relationship. In Twenty, linking an Opportunity to a Person record requires either a custom Person link field on the Opportunity or a junction object. We resolve this by creating an Assignee__c custom field on the Opportunity that holds the Twenty People record ID (resolved by email match from MobileWorker's assigned_worker_id). If the worker does not yet have a Twenty account, we flag the Opportunity and assign it to a fallback workspace member for manual re-assignment after the team is onboarded.

  • MobileWorker's dispatch groups and team routing do not migrate as structured data

    MobileWorker supports dispatch groups — named teams of workers that receive assignments by territory or skill. Twenty has no native dispatch-group concept; teams are modelled as workspace members with shared permissions, not as a grouping entity for assignment routing. We store dispatch group membership as a custom pick-list field (Dispatch_Team__c) on each People record and note the grouping for manual configuration in Twenty's workspace settings. The routing automation that assigns jobs to dispatch groups must be rebuilt using Twenty's workflow triggers after migration.

Migration approach

Six steps for a successful MobileWorker to Twenty CRM data migration

  1. Audit and export MobileWorker source data

    FlitStack AI extracts all records from MobileWorker via the ArcGIS Online export interface — Workers, Assignments, Assignment History, and any custom attribute forms. We export to CSV format, capturing all visible columns in each object view. Location data (lat/long, accuracy, geofence radius) is extracted as separate fields. We validate record counts against MobileWorker's internal counts and flag any records with missing required fields before transformation begins. Duplicate records and stale entries (no activity in 24+ months) are documented for the team to review.

  2. Design and pre-create Twenty CRM schema

    Before any data lands, FlitStack AI delivers a schema setup plan specifying every custom field needed on People, Companies, and Opportunity objects — including field types, pick-list values, and required/unique constraints. The Twenty workspace admin creates these fields in Settings → Data Model. We also map dispatch groups and create the Assignee__c lookup structure. Workspace members are invited and confirmed so owner resolution can resolve during the migration run. This step prevents the most common Twenty import failure: importing into non-existent fields.

  3. Transform and validate field mapping with a sample migration

    A representative slice of 100–300 records — spanning workers, companies, assignments, and history events — is migrated first. FlitStack AI generates a field-level diff showing every source field, its mapped Twenty destination, any transformation applied (coordinate splitting, status value mapping, date normalisation), and any records that failed to resolve (unmatched worker emails, missing parent companies). The team reviews the diff to confirm geospatial fields landed correctly, assignment status mapping matches business intent, and owner resolution is complete before the full run commits.

  4. Execute full migration with delta-pickup window

    With schema validated and sample migration approved, FlitStack AI runs the full migration against Twenty CRM using the REST and GraphQL APIs with rate-limit throttling. All object batches are loaded in dependency order: Companies first, then People (linked by companyId), then Opportunities (linked by companyId and Assignee__c), then Tasks for assignment history, then Notes for attachments. A delta-pickup window opens immediately after the full run completes — typically 24–48 hours — capturing any assignments modified or created in MobileWorker during the cutover. An audit log records every operation, and one-click rollback is available if reconciliation identifies data integrity issues.

  5. Reconcile, verify, and hand off rebuild reference for automations

    FlitStack AI delivers a reconciliation report comparing record counts, field-level completeness, and relationship integrity between source and destination. Any records that failed to migrate or resolved to a fallback owner are listed with root cause. We export the MobileWorker workflow definitions and dispatch routing logic as a human-readable rebuild reference document for the Twenty admin, covering how assignment-status triggers map to Twenty's workflow builder and how geofence routing should be reconstructed using Twenty's custom-object and trigger model.

Platform deep dives

Context on both ends of the pair

MobileWorker logo

MobileWorker

Source

Strengths

  • Targeted vertical fit for UK civil engineering, construction, highways, plant hire, and traffic management.
  • Lone-worker protection built in (rare among general FSM tools).
  • Vehicle telematics and driver behavior tied to job records.
  • Mobile forms and document attachments cover compliance/site-handover workflows.
  • Free trial without credit card.

Weaknesses

  • No published pricing.
  • Reviewer comments on offline behavior suggest connectivity dependence at remote sites.
  • No public API documentation.
  • UK-centric vertical focus limits overseas fit.
  • Limited third-party reviewer footprint for benchmarking.
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 manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across MobileWorker and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a manual workaround.

  • 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

    MobileWorker: Not publicly documented.

  • Data volume sensitivity

    B

    MobileWorker doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your MobileWorker 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 MobileWorker to Twenty CRM data migrations

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

Can't find your answer?

Walk through your MobileWorker to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most MobileWorker to Twenty CRM migrations complete in 48–72 hours of clock time for datasets under 25,000 records. Larger setups with 100,000+ records, extensive custom attribute forms, or assignment history spanning multiple years extend to 7–14 days. The longest single step is typically pre-creating the custom fields in Twenty's Data Model settings — that schema setup should run before the migration scripts are triggered. FlitStack AI sequences the work so Twenty is ready to receive data on day one of the migration run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from MobileWorker.
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