CRM migration
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
Source
Twenty CRM
Destination
Compatibility
11 of 11
objects map 1:1 between Aidoo Mobile and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
Twenty CRM
People
1:1Aidoo 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
Twenty CRM
Company
1:1Aidoo 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
Twenty CRM
Opportunity
1:1Aidoo 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
Twenty CRM
Custom Field on Opportunity (ServiceType__c)
1:1Aidoo 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
Twenty CRM
Custom Field on Opportunity (AssignedTechnician__c)
1:1Aidoo 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
Twenty CRM
Custom Fields on Opportunity (ServiceLocation__c, Latitude__c, Longitude__c)
1:1Aidoo 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
Twenty CRM
Custom Object (Asset__c)
1:1Aidoo 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
Twenty CRM
Note
1:1Aidoo 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
Twenty CRM
Task
1:1Aidoo 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)
Twenty CRM
File (via Twenty API / CSV import)
1:1Aidoo 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)
Twenty CRM
Custom Object
1:1Any 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.
| Aidoo Mobile | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer / Contact | People1:1 | Fully supported | |
| Company / Account | Company1:1 | Fully supported | |
| Work Order / Job Record | Opportunity1:1 | Fully supported | |
| Service Type / Job Category | Custom Field on Opportunity (ServiceType__c)1:1 | Fully supported | |
| Technician / Assigned Worker | Custom Field on Opportunity (AssignedTechnician__c)1:1 | Fully supported | |
| Location / Service Address | Custom Fields on Opportunity (ServiceLocation__c, Latitude__c, Longitude__c)1:1 | Fully supported | |
| Asset / Equipment | Custom Object (Asset__c)1:1 | Fully supported | |
| Job Notes / Service Comments | Note1:1 | Fully supported | |
| Scheduling / Dispatch Event | Task1:1 | Fully supported | |
| Attachment / File (on Work Order or Customer) | File (via Twenty API / CSV import)1:1 | Fully supported | |
| Custom Object (FSM-specific) | Custom Object1: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.
Aidoo Mobile gotchas
Aidoo Mobile has no publicly documented API
Pricing is not publicly published
Limited review corpus for data quality signals
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
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.
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.
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.
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.
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
Aidoo Mobile
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Aidoo Mobile and Twenty CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
Aidoo Mobile: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
Aidoo Mobile doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 Aidoo Mobile to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Aidoo Mobile
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.