CRM migration

Migrate from Aidoo Mobile to Twenty CRM

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

Aidoo Mobile logo

Aidoo Mobile

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

11 of 11

objects map 1:1 between Aidoo Mobile and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Aidoo Mobile is a field-service management platform built around work orders, technician dispatch, service locations, and job status tracking. Twenty CRM is an open-source CRM built around People, Companies, and Opportunities with a GraphQL/REST API, a per-workspace metadata schema, and a strict CSV import order that requires Companies to load before People and Opportunities before related custom objects. The migration carries contacts and companies into Twenty's standard People and Companies objects, then maps Aidoo Mobile work orders and service records into Twenty's Opportunities with FSM-specific fields (service type, technician assignment, job status, location coordinates) created as custom fields via Twenty's Settings → Data Model before any import runs. Notes, tasks, and attachments migrate as Twenty Notes and Tasks attached to the corresponding record. The source API is accessed with scoped read-only credentials; a 24–48 hour delta-pickup window captures any records modified during the cutover window. We do not migrate Aidoo Mobile automations, dispatch rules, or FSM-specific workflows — those must be rebuilt in Twenty's Workflow Builder or external automation tools. Pricing reflects record count, custom field volume, and the complexity of translating FSM job-status and assignment data into CRM pipeline logic.

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

Aidoo Mobile logo

Aidoo Mobile

What's pushing teams away

  • Low overall review volume and 3.5/5 average rating signal a thinner support community than Jobber, Housecall Pro, or ServiceTitan.
  • Ranks 295th of 351 field service systems on ITQlick — suggesting the product has fallen behind on feature pace versus market leaders.
  • No published API documentation visible on the vendor site; custom integrations require sales engagement.
  • Pricing is quote-based — actual rates are not transparent and require contacting sales.
  • Smaller integration ecosystem than ServiceTitan or Salesforce Field Service, limiting fit for businesses with complex back-office stacks.

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

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

Aidoo Mobile

Customer / Contact

maps to

Twenty CRM

People

1:1
Fully supported

Aidoo Mobile customer and contact records migrate as Twenty People records. The email, phone, name, and address fields map directly. The company association in Aidoo Mobile (which company a customer belongs to) maps to Twenty's companyId relation field on the People record. Owner/technician assignments in Aidoo Mobile require email-based user matching against Twenty workspace members before the relation can be resolved.

Aidoo Mobile

Company / Account

maps to

Twenty CRM

Company

1:1
Fully supported

Aidoo Mobile company records migrate as Twenty Company records. Company name, industry, website, employee count, and annual revenue map to the corresponding Twenty Company fields. Parent-child company hierarchies in Aidoo Mobile map to Twenty's parentCompanyId relation field. If Aidoo Mobile stores multiple contacts per company, all associated People records link to the same Company record via companyId.

Aidoo Mobile

Work Order / Job Record

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Aidoo Mobile work orders are the central FSM object and map to Twenty Opportunities as the CRM-side equivalent. Job name becomes Opportunity name. Job status (Pending, In Progress, Completed, Cancelled) maps to Twenty's opportunityStage field with value-by-value mapping to Twenty pipeline stages the admin creates. Job amount or estimated cost maps to the Opportunity amount field. The Aidoo Mobile work order ID is preserved as a custom field (originalWorkOrderId__c) for traceability.

Aidoo Mobile

Service Type / Job Category

maps to

Twenty CRM

Custom Field on Opportunity (ServiceType__c)

1:1
Fully supported

Aidoo Mobile service types (e.g., HVAC Repair, Installation, Preventive Maintenance) have no direct equivalent in Twenty's standard Opportunity model. FlitStack AI creates a ServiceType__c custom select field on the Opportunity object in Twenty's Data Model before migration, mapping each Aidoo Mobile service type value to the corresponding pick-list option. Original service type values are preserved verbatim.

Aidoo Mobile

Technician / Assigned Worker

maps to

Twenty CRM

Custom Field on Opportunity (AssignedTechnician__c)

1:1
Fully supported

Aidoo Mobile technician assignments do not map to a native Twenty user relation because the technician pool may not overlap with Twenty CRM users. FlitStack creates an AssignedTechnician__c text field on Opportunity and stores the technician name or email. If the technician is also a Twenty workspace member, FlitStack creates a relation to the workspace user record by email match. Unmatched technicians are flagged for admin resolution before migration.

Aidoo Mobile

Location / Service Address

maps to

Twenty CRM

Custom Fields on Opportunity (ServiceLocation__c, Latitude__c, Longitude__c)

1:1
Fully supported

Aidoo Mobile service location and GPS coordinates translate to three custom fields on the Opportunity: ServiceLocation__c (full address text), Latitude__c (decimal number), and Longitude__c (decimal number). These are stored as custom fields because Twenty's native address model is tied to the Company object, and FSM service locations frequently differ from the customer's billing address.

Aidoo Mobile

Asset / Equipment

maps to

Twenty CRM

Custom Object (Asset__c)

1:1
Fully supported

Aidoo Mobile equipment and asset records migrate as a Twenty custom object named Asset__c. The object is created in Twenty's Settings → Data Model before import. Asset records link back to the related Company (customer) record via a companyId relation field. Asset serial number, model, install date, and last service date migrate as custom fields on the Asset__c object.

Aidoo Mobile

Job Notes / Service Comments

maps to

Twenty CRM

Note

1:1
Fully supported

Aidoo Mobile job notes and service comments migrate as Twenty Note records. Each note is linked to the corresponding Opportunity record (the Twenty representation of the work order) via the noteTargetId relation. Original note timestamps and author information are preserved on the Note record. Notes with attachments in Aidoo Mobile trigger a file re-upload step to Twenty Files.

Aidoo Mobile

Scheduling / Dispatch Event

maps to

Twenty CRM

Task

1:1
Fully supported

Aidoo Mobile dispatch scheduling events translate to Twenty Task records linked to the Opportunity. The scheduled date and time become the Task dueDate and dueDateTime fields. Task status maps from the dispatch status (Scheduled → Open, Dispatched → In Progress, Completed → Completed). Assigned technician maps to the Twenty workspace member via email resolution.

Aidoo Mobile

Attachment / File (on Work Order or Customer)

maps to

Twenty CRM

File (via Twenty API / CSV import)

1:1
Fully supported

Aidoo Mobile file attachments on work orders or customer records are downloaded and re-uploaded to Twenty's file storage. Each file is linked to the target record (Opportunity or People) via the attachments relation. File size limits for the Twenty cloud instance apply; files exceeding the limit are flagged for manual download guidance. Inline images embedded in Aidoo Mobile notes are extracted and re-hosted as separate files.

Aidoo Mobile

Custom Object (FSM-specific)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Any Aidoo Mobile custom objects beyond the standard FSM schema (e.g., Permits, Inspections, or SafetyChecklists) map 1:1 to Twenty custom objects. The custom object name, field definitions, and data types are preserved. Custom-object-to-standard-object relationships (e.g., an Inspection linked to a Work Order) require junction objects in Twenty — FlitStack creates these as part of the migration plan when N:N relationships are detected.

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.

Aidoo Mobile logo

Aidoo Mobile gotchas

High

Aidoo Mobile has no publicly documented API

Medium

Pricing is not publicly published

Low

Limited review corpus for data quality signals

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

  • FSM job-status model does not map 1:1 to Twenty pipeline stages

    Aidoo Mobile job statuses (Pending, In Progress, On Hold, Completed, Cancelled) represent a field-service lifecycle. Twenty's pipeline stages are sales-cycle-oriented and are defined per Opportunity by the workspace admin in Settings → Data Model. FlitStack cannot auto-create pipeline stages — the admin must define the stage names and order in Twenty before migration. We map Aidoo Mobile job statuses to those stages value-by-value, but if the Aidoo Mobile setup uses more than one FSM lifecycle (e.g., separate inspection vs. repair workflows), each requires its own pipeline or custom field in Twenty. This schema decision must be made before data imports run.

  • Twenty requires custom fields to exist before CSV or API import

    Unlike platforms that create fields on-the-fly during import, Twenty's Data Model enforces a strict sequence: fields must exist in Settings → Data Model before any data referencing them can load. FlitStack handles this by running a pre-migration schema-setup phase that creates every custom field identified in the Aidoo Mobile data model (ServiceType__c, AssignedTechnician__c, ServiceLocation__c, Latitude__c, Longitude__c, Priority__c, OriginalWorkOrderID__c, and any Asset__c fields) in Twenty before the first record is imported. If this step is skipped, imports that reference those fields silently drop the field data.

  • Import order constraint — Companies must load before People

    Twenty's foreign-key model requires the 'one' side of a one-to-many relationship to exist before the 'many' side can reference it. People records carry a companyId lookup that must point to an existing Company record. If Aidoo Mobile exports contacts before companies (or if the CSV import sequence is not controlled), the companyId relations will fail to resolve and contacts will land without a company link. FlitStack sequences the migration as: (1) Companies, (2) People, (3) Opportunities, (4) Custom objects. We deliver a numbered CSV import plan so the Twenty admin can load files in the correct order whether using the Twenty UI import wizard or the GraphQL API.

  • Aidoo Mobile technician assignments are not CRM users

    Aidoo Mobile technicians are the primary actors in the FSM workflow, but they are often not Twenty CRM users — they may be field workers with no CRM seat. In Twenty, the Opportunity record does not natively support a 'technician assigned' lookup to a non-CRM user. FlitStack creates an AssignedTechnician__c text field that stores the technician's name or email. If the technician is also a Twenty workspace member, we resolve by email and create a relation; if not, the field holds the raw name and the Twenty admin decides whether to invite the technician as a workspace member or keep the field as a reference-only custom field.

  • Aidoo Mobile API export capability is not well-documented publicly

    Unlike HubSpot, Salesforce, or Pipedrive, Aidoo Mobile does not have a widely-referenced public REST API with published rate limits and endpoint documentation in the research data. If Aidoo Mobile exposes a data export endpoint (CSV or JSON), FlitStack uses it. If the only export path is manual CSV download from the Aidoo Mobile UI, the migration uses UI-exported CSV files processed through FlitStack's ETL pipeline. We flag any fields that cannot be programmatically extracted and provide a manual export guide for those fields before the migration begins.

Migration approach

Six steps for a successful Aidoo Mobile to Twenty CRM data migration

  1. Audit Aidoo Mobile data model and export capabilities

    FlitStack connects to Aidoo Mobile with scoped read-only credentials to inventory all objects, fields, and relationships. We identify standard objects (Customer, Company, Work Order, Asset) and any custom objects, cataloging field types and pick-list values. If Aidoo Mobile exposes an API, we test bulk export endpoints and note rate limits. If export is UI-only, we produce a manual export checklist covering each object and field group. The audit output is a data inventory document used to plan the Twenty schema setup phase.

  2. Pre-create Twenty custom fields in Data Model

    Before any data moves, FlitStack creates all required custom fields in Twenty's Settings → Data Model: ServiceType__c, AssignedTechnician__c, ServiceLocation__c, Latitude__c, Longitude__c, Priority__c, OriginalWorkOrderID__c, OriginalJobCreateDate__c, SourceSystemID__c, and the Asset__c custom object with its fields. We also work with the Twenty admin to define pipeline stage names and order that map to Aidoo Mobile job statuses. This phase must complete before the CSV import sequence begins — Twenty enforces this constraint.

  3. Resolve technician and owner assignments by email

    Aidoo Mobile technician and owner assignments are matched against Twenty workspace members by email. FlitStack generates a resolution report listing all Aidoo Mobile users, their email addresses, and whether they have a matching Twenty account. Unmatched users are flagged for the admin to either invite to Twenty or assign to a fallback owner. No Opportunity or Task record lands without an owner assignment — either a resolved Twenty user or a named fallback.

  4. Run a sample migration with field-level diff

    A representative slice of 100–500 records — spanning Customers, Companies, Work Orders, and Assets — migrates first. FlitStack generates a field-level diff between the Aidoo Mobile source values and the resulting Twenty records so the admin can verify job-status-to-pipeline-stage mapping, custom field value preservation, technician assignment resolution, and GPS coordinate accuracy. The diff is reviewed before the full run is committed. Any mapping corrections are applied to the migration engine before the production migration starts.

  5. Execute full migration with delta-pickup cutover

    The full migration runs against Twenty using the validated field mapping and import sequence (Companies → People → Opportunities → Custom Objects). A delta-pickup window of 24–48 hours captures any records created or modified in Aidoo Mobile during the cutover period. FlitStack generates an audit log of every operation, including records that received a delta update. One-click rollback is available if reconciliation against the source audit log reveals discrepancies. Post-migration, the admin verifies record counts, relationship integrity, and custom field completeness before marking the migration complete.

Platform deep dives

Context on both ends of the pair

Aidoo Mobile logo

Aidoo Mobile

Source

Strengths

  • Mobile-first technician experience with voice calling and clean UI.
  • Lower price point than enterprise FSM platforms.
  • Three-tier plan structure provides a defined upgrade path.
  • Core FSM features (dispatch, GPS, work orders, e-signature, inventory) are covered.
  • Implementation timelines (2–6 weeks per ITQlick) are shorter than enterprise FSM rollouts.

Weaknesses

  • Thin review base (3.5/5 average) compared to mainstream FSM platforms.
  • Ranked 295 of 351 FSM products by ITQlick — suggests feature pace lag.
  • No publicly documented API or integration directory.
  • Quote-only pricing for all tiers, no transparent rate card.
  • Limited integration ecosystem versus ServiceTitan, Salesforce Field Service, or Jobber.
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 Aidoo Mobile 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

    Aidoo Mobile: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Aidoo Mobile to Twenty migrations complete in 48–72 hours of clock time for under 50,000 records. Larger migrations with 50,000–500,000 records or complex FSM-to-CRM schema translation (multiple work-order types, asset hierarchies, technician-to-CRM-user resolution) extend to 5–10 days. The longest planning step is pre-creating Twenty custom fields and defining pipeline stages that map to Aidoo Mobile job statuses — this must be done before any data import begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Aidoo Mobile.
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