CRM migration
Field-level mapping, validation, and rollback between The Service Program and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
The Service Program
Source
Twenty CRM
Destination
Compatibility
10 of 12
objects map 1:1 between The Service Program and Twenty CRM.
Complexity
BStandard
Timeline
72–96 hours
Overview
The Service Program (TSP) is a service-business management platform built around work orders, dispatching, technicians, and QuickBooks integration. Its data model centers on Customers (with service Locations), Service Requests, Work Orders, Schedules, and Technicians — it does not use a conventional CRM object structure. Twenty CRM models the world as People, Companies, Opportunities, Tasks, and Notes with optional Custom Objects. The migration requires translating TSP's flat work-order and dispatch model into Twenty's relational People↔Companies↔Opportunities graph. FlitStack AI reads TSP's export schema — typically CSV or QuickBooks-synced records — and maps every field to its Twenty equivalent using direct field mapping for standard contact and account data, and Custom Objects for TSP-specific entities like Work Orders and Service Locations. Activity history (scheduling logs, dispatch events, time entries) migrates as Tasks and Notes on the linked record. Workflows, automations, and QuickBooks sync rules do not migrate — they require manual reconstruction in Twenty. The migration runs via Twenty's REST API in a sequenced batch process: Companies first, then People with companyId lookups, then Opportunities with opportunityId, then Tasks and Notes. Owner resolution matches TSP technician email addresses to Twenty Workspace Members. A delta-pickup window captures any TSP records modified during cutover before the switch.
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 The Service Program 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.
The Service Program
Customer
Twenty CRM
Company + Person
many:1TSP's customer record holds both company-level data (business name, billing address) and contact-level data (primary contact name, phone, email). We split this into a Twenty Company record for the business entity and a Person record for the primary contact, linking them via the company's domain or name match.
The Service Program
Service Location
Twenty CRM
Company (secondary) or Custom Object
1:1TSP supports multiple service locations per customer — each with its own address and equipment list. In Twenty, these can map as secondary Company records linked via a custom ServiceLocation relation field, or as a Custom Object with a companyId relation depending on whether the team treats locations as sub-accounts or standalone entities.
The Service Program
Service Request
Twenty CRM
Opportunity
1:1A TSP Service Request captures the customer's issue or recurring service need — analogous to an Opportunity in Twenty representing a deal or service engagement. We map the request's description, priority, and estimated value to Twenty's Opportunity name, stage, and amount fields. Recurring service requests map to Opportunity records with a custom recurrence flag.
The Service Program
Work Order
Twenty CRM
Opportunity + Tasks
many:1Each TSP Work Order contains line items, labor estimates, and status. We map the work order header to a Twenty Opportunity record capturing the service type, estimated amount, and stage. Individual line items and labor entries become Twenty Tasks linked to that Opportunity, preserving the item-level detail that drives service billing.
The Service Program
Schedule / Dispatch Entry
Twenty CRM
Task
1:1TSP scheduling records — which technician is assigned, when, and at which location — map to Twenty Tasks with due dates, assignees (matched to Workspace Members by email), and Notes capturing dispatch context. Completed schedule entries retain their original timestamps as a custom datetime field for historical reporting.
The Service Program
Technician / Staff
Twenty CRM
WorkspaceMember
1:1TSP technicians are matched by email address to Twenty Workspace Members. If a TSP technician has no corresponding Twenty user, we flag the record for admin action — either inviting the technician to Twenty or reassigning their work orders to an existing Workspace Member before migration.
The Service Program
Time Entry / Clock In-Out
Twenty CRM
Task + Custom Fields
1:1TSP time entries (clock-in, clock-out, duration) have no native Twenty equivalent. We migrate these as Tasks with custom duration fields (Time_Entry_Hours__c, Clock_In__c, Clock_Out__c) linked to the parent Work Order Opportunity. The task name reflects the service performed; the duration fields preserve billable hour data for QuickBooks sync reconstruction.
The Service Program
Equipment / Asset
Twenty CRM
Custom Object
1:1TSP tracks equipment at each service location (make, model, serial number, service history). This becomes a Twenty Custom Object named Equipment with fields: name, serialNumber, make, model, serviceLocationId (relation to Company), and lastServiceDate. Equipment is linked to the relevant Service Location Company record.
The Service Program
Invoice / Billing Record
Twenty CRM
Note + Custom Fields
1:1TSP invoicing lives inside its QuickBooks integration. We do not migrate invoice records — those remain in QuickBooks. Instead, we link the migrated TSP invoice number as a custom read-only field (Original_Invoice_Number__c) on the relevant Opportunity record so teams can cross-reference billing history via QuickBooks.
The Service Program
QuickBooks Linkage
Twenty CRM
Custom Field (Reference)
1:1TSP's sync relationship with QuickBooks — customer IDs, invoice IDs, chart-of-accounts mappings — has no direct Twenty equivalent. We preserve the QuickBooks customer reference ID as a custom field (QB_Customer_Ref__c) on the Company record for reconnection after migration. During post-migration setup, your team can map this reference ID to QuickBooks via a third-party integration, ensuring that new transactions stay synchronized across both platforms.
The Service Program
Work Order Notes / Attachments
Twenty CRM
Note
1:1TSP work order notes migrate as Twenty Notes on the linked Opportunity record. File attachments (photos, signed forms) are downloaded and re-uploaded via Twenty's file storage, then linked to the parent Opportunity record. All attachments retain their original file names and timestamps, which are stored in custom metadata fields to preserve audit trails and facilitate future reference.
The Service Program
Custom / Industry-Specific Fields
Twenty CRM
Custom Object or Custom Field
1:1TSP setups for specific trades (pool chemistry readings, HVAC refrigerant levels, lawn treatment zones) add industry-specific fields. These map to either custom fields on the relevant object or a Custom Object — we audit the TSP schema before migration and present the mapping plan for admin approval.
| The Service Program | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer | Company + Personmany:1 | Fully supported | |
| Service Location | Company (secondary) or Custom Object1:1 | Fully supported | |
| Service Request | Opportunity1:1 | Fully supported | |
| Work Order | Opportunity + Tasksmany:1 | Fully supported | |
| Schedule / Dispatch Entry | Task1:1 | Fully supported | |
| Technician / Staff | WorkspaceMember1:1 | Fully supported | |
| Time Entry / Clock In-Out | Task + Custom Fields1:1 | Fully supported | |
| Equipment / Asset | Custom Object1:1 | Fully supported | |
| Invoice / Billing Record | Note + Custom Fields1:1 | Fully supported | |
| QuickBooks Linkage | Custom Field (Reference)1:1 | Fully supported | |
| Work Order Notes / Attachments | Note1:1 | Fully supported | |
| Custom / Industry-Specific Fields | Custom Object or Custom Field1: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.
The Service Program gotchas
No public API means migration depends on QuickBooks export or Windows-database extraction
QuickBooks version gate blocks the sync layer on older installations
Custom fields and TSP-specific data require manual CSV preparation
SMS messaging and communication logs are not migratable
Annual contract with onboarding fees creates lock-in risk before migration
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 TSP data schema and export readiness
FlitStack AI reviews your TSP export schema — customer records, service locations, work orders, schedules, technician list, and any custom fields — and verifies export completeness against the TSP QuickBooks export or direct CSV dump. We identify orphaned records, duplicate customer entries, and fields that lack a direct Twenty equivalent. The output is a data audit report and a field-mapping specification that your admin reviews before any migration run begins. This step also confirms that all TSP technician email addresses are available for Workspace Member matching in Twenty.
Create Twenty data model before data import
Twenty requires custom fields and Custom Objects to exist before CSV import can populate them — the import creates records, not fields. FlitStack AI creates the custom fields and Custom Objects in your Twenty workspace based on the mapping specification: Equipment__c, Time_Entry_Hours__c, Clock_In__c, Clock_Out__c, Original_Create_Date__c, Source_System_ID__c, QB_Invoice_Ref__c, and any TSP industry-specific custom fields. Workspace Members are invited and confirmed so assigneeId resolution works during the task import step.
Sequence and load Companies, People, and Opportunities
FlitStack AI loads data into Twenty in the correct dependency order: Companies (customer businesses and service locations) first, then People linked via companyId, then Opportunities for Service Requests and Work Orders. Each batch is validated against Twenty's API constraints (max 200 records per batch call) and referential integrity rules. Source system IDs are stored on each record for delta-run de-duplication. A representative slice (typically 200–500 records spanning multiple record types) migrates first and generates a field-level diff for your review before the full run commits.
Migrate Tasks, Notes, and attachments
After Opportunities are confirmed in Twenty, FlitStack AI loads Tasks representing scheduling visits, time entries, and work-order line items — each linked to the parent Opportunity and assigned to the resolved Workspace Member. Notes from TSP work orders migrate as Twenty Notes on the parent record. File attachments (photos, signed forms) are downloaded from TSP, re-uploaded to Twenty's file storage, and linked to the relevant Opportunity record. All original timestamps and owner assignments are preserved via custom datetime fields.
Run delta-pickup and audit before cutover
A delta-pickup window (typically 24–48 hours) captures any TSP records modified or created during the migration cutover window — particularly new work orders or schedule changes that arrive while the team is still operating in TSP. FlitStack AI generates an audit log of every imported record with its source system ID, timestamp, and owner. One-click rollback reverts the Twenty workspace to its pre-migration state if reconciliation against the TSP audit report identifies discrepancies. Your team confirms record counts and relationship integrity before the TSP account is formally decommissioned.
Platform deep dives
The Service Program
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 The Service Program and Twenty CRM.
Object compatibility
2 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
The Service Program: Not applicable — no public API.
Data volume sensitivity
The Service Program 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 The Service Program to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your The Service Program 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 The Service Program
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.