CRM migration

Migrate from ServiceMax to Twenty CRM

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

ServiceMax logo

ServiceMax

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

93%

13 of 14

objects map 1:1 between ServiceMax and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ServiceMax organizes field service data around Work Orders, Installed Products, Service Contracts, and Entitlements — a schema built on Salesforce objects (SVMXC__Work_Order__c, SVMXC__Installed_Product__c, SVMXC__Service_Contract__c) with dispatch, scheduling, and parts-consumption logic. Twenty CRM uses a leaner model: People, Companies, Opportunities, Tasks, and Custom Objects, with CSV import and REST/GraphQL API for bulk loading. The migration carries Work Orders into Twenty's custom WorkOrder object, Installed Products into a custom Asset object, and Service Contracts into a custom Contract object. Dispatch logic, SFM Wizards, SFM Transactions, Counter Rules, and dispatch console views do not migrate — FlitStack exports their definitions as JSON so your admin can rebuild them in Twenty's workflow builder. Activity history (calls, emails, meetings, notes) maps to Twenty Tasks. Owner and technician resolution happens by email match against Twenty Workspace Members. The full run uses Twenty's CSV import (up to 20,000 records per batch) or REST API with 100–200 req/min on Pro cloud — whichever suits your record volume.

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

ServiceMax logo

ServiceMax

What's pushing teams away

  • Enterprise customers report that total cost of ownership—licensing plus Salesforce admin resources plus implementation consultants—becomes prohibitive compared to standalone FSM platforms.
  • The steep configuration curve frustrates teams; one reviewer described it as 'a Lamborghini that takes a multitude of engineers to operate,' with heavy reliance on custom SFM Transactions and code.
  • Frequent Salesforce platform updates can break custom ServiceMax configurations, forcing re-testing and re-deployment of workflows, wizards, and mobile permissions after every major Salesforce release.
  • Organizations outgrow the product's reporting depth; multiple reviewers note limited visibility into attached files across Work Orders and difficulty building cross-object reports without dedicated BI tools.
  • Connectivity-dependent mobile apps cause productivity loss when technicians work in low-signal environments, and the browser mode lacks certain billing and pricing UI elements available in the native app.

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

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

ServiceMax

Account (Salesforce standard)

maps to

Twenty CRM

Company

1:1
Fully supported

ServiceMax Accounts map directly to Twenty Companies. The Account Name, Website, Industry, NumberOfEmployees, and AnnualRevenue fields translate to Twenty's name, domain, industry, employees, and revenue fields. Address fields (Street, City, State, PostalCode, Country) on the Account map to Twenty's address compound field on the Company record.

ServiceMax

Contact (Salesforce standard)

maps to

Twenty CRM

Person (People)

1:1
Fully supported

ServiceMax standard Contacts map directly to Twenty People records. Core fields including FirstName, LastName, Email, Phone, MobilePhone, and job Title migrate without transformation. The Contact's AccountId lookup resolves to a Company ID in Twenty, establishing the Person-to-Company relationship so each contact is properly linked to its parent organization record.

ServiceMax

SVMXC__Work_Order__c

maps to

Twenty CRM

WorkOrder__c (Custom Object)

1:1
Fully supported

Work Orders are the primary migration object. ServiceMax work orders carry SVMXC__Order_Status__c, SVMXC__Priority__c, SVMXC__Billing_Type__c, SVMXC__Scheduled_Date__c, SVMXC__Completion_Date__c, SVMXC__Work_Performed__c, and SVMXC__City__c/State__c/Country__c. None of these map to native Twenty fields — they all require custom field creation on a custom WorkOrder__c object before migration data lands.

ServiceMax

SVMXC__Work_Order__c.AccountId

maps to

Twenty CRM

WorkOrder__c.CompanyId

1:1
Fully supported

The Work Order's AccountId (service location / customer account) resolves to a Twenty Company record by Account Name match. If no matching Company exists in Twenty, FlitStack creates one from the service address fields on the Work Order before migrating the Work Order itself.

ServiceMax

SVMXC__Work_Order__c.ContactId

maps to

Twenty CRM

WorkOrder__c.PersonId

1:1
Fully supported

The Work Order's ContactId field resolves to a Twenty Person record by performing an email address match against the migrated Person list. Any contacts that fail to match are flagged in a pre-flight report for manual review; the Work Order itself is not blocked from migrating, but the unresolved Person link is recorded in the migration audit log for post-migration cleanup.

ServiceMax

SVMXC__Installed_Product__c

maps to

Twenty CRM

Asset__c (Custom Object)

1:1
Fully supported

ServiceMax Installed Products (field service assets) migrate to a custom Asset__c object in Twenty. Custom fields capture SVMXC__Serial_Number__c, SVMXC__Status__c, SVMXC__Warranty_Expiration__c, SVMXC__Installation_Date__c, and the linked AccountId. Entitlement and warranty checks that ServiceMax performs automatically must be rebuilt as custom logic in Twenty.

ServiceMax

SVMXC__Work_Detail__c (Work Order Line Items)

maps to

Twenty CRM

WorkOrderLineItem__c (Custom Object)

1:1
Fully supported

Work Order Line Items (parts consumed, labor lines) migrate to a custom WorkOrderLineItem__c object linked to the WorkOrder__c. SVMXC__Line_Status__c, SVMXC__Quantity__c, and SVMXC__Product__c product name require custom field creation. Each line item links to the parent Work Order via a relation field.

ServiceMax

SVMXC__Service_Contract__c

maps to

Twenty CRM

Contract__c (Custom Object)

1:1
Fully supported

Service Contracts migrate to a custom Contract__c object. SVMXC__Start_Date__c, SVMXC__End_Date__c, SVMXC__Contract_Value__c, and SVMXC__Status__c become custom fields. The contract-to-asset entitlement linkage that ServiceMax uses for warranty validation does not exist in Twenty and must be rebuilt using custom fields and workflow conditions.

ServiceMax

Case (Salesforce standard, if used in ServiceMax)

maps to

Twenty CRM

Task

1:1
Fully supported

ServiceMax-integrated Cases map to Twenty Tasks using a transformed mapping approach. Key fields including Case Number, Subject, Description, Status, and Priority translate directly to corresponding task attributes. Any parent link referencing an associated Work Order or Company record is preserved as a custom relation field on the Task object to maintain the original contextual relationship.

ServiceMax

Product2 (Salesforce standard)

maps to

Twenty CRM

Product__c (Custom Object)

1:1
Fully supported

ServiceMax product catalog entries (Product2 records enhanced with SVMXC__ fields) migrate to a custom Product__c object in Twenty. Standard fields like Product Name, ProductCode, Description, and Family translate to custom text and select fields. Inventory levels tracked in SVMXC__Inventory_Location__c require a separate custom inventory object since Twenty lacks native inventory tracking.

ServiceMax

Task / Event (Salesforce standard activities)

maps to

Twenty CRM

Task

1:1
Fully supported

ServiceMax activity history encompassing calls, emails, meetings, and notes logged on Work Orders migrates directly to Twenty Tasks. The Subject, Description, Status, ActivityDate, and WhoId/WhatId link fields transfer without transformation. The WhatId reference (Work Order link) resolves to the migrated WorkOrder__c record ID to preserve the activity's association with the parent work order.

ServiceMax

SVMXC__Tech_Resource__c (technician / resource)

maps to

Twenty CRM

WorkspaceMember (Twenty standard)

1:many
Fully supported

ServiceMax technicians who are also Salesforce users match to Twenty Workspace Members by email. Non-user technician records (created as SVMXC__Resource__c without a Salesforce UserId) must be imported as Contacts first, then manually promoted to Workspace Members in Twenty's Settings → Members panel.

ServiceMax

SVMXC__Preventive_Maintenance_Process__c

maps to

Twenty CRM

MaintenanceRule__c (Custom Object)

1:1
Fully supported

Preventive Maintenance Process definitions are not migrated directly but exported as JSON for manual rebuilding. The exported definitions include frequency rules, asset scope parameters, and task templates that define each process. FlitStack maps the asset list and frequency rules to a custom MaintenanceRule__c object, while the automated trigger logic must be reconstructed by your admin using Twenty's workflow builder.

ServiceMax

Attachment (on Work Order, Asset, Contact)

maps to

Twenty CRM

File / Attachment

1:1
Fully supported

ServiceMax file attachments associated with Work Orders, Installed Products, and Contacts are downloaded from Salesforce storage and re-uploaded to Twenty's file storage system. Each file—ranging from PDF inspection reports and equipment photos to signed service documents—is attached to its corresponding migrated record (WorkOrder__c, Asset__c, or Person) to preserve documentation continuity.

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.

ServiceMax logo

ServiceMax gotchas

High

API call limits reset on a 24-hour rolling window

Medium

SFM Transaction and Wizard dependencies create migration loops

Medium

Configuration Profile migration excludes Default profiles

Low

Large Technical Attributes configurations slow the Migration Tool UI

Low

Pricing and Billing UI missing from browser mode

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

  • Work order status pick-list has no native Twenty equivalent

    ServiceMax Work Orders use SVMXC__Order_Status__c with values 'Open', 'Dispatched', 'In Progress', 'On Hold', 'Completed', and 'Cancelled' — a pick-list enforced by Salesforce field-level security. Twenty has no native work order stage concept; the stage field on the custom WorkOrder__c object must be created as a custom pick-list and populated with these exact values during migration setup. If the pick-list values are not pre-created in Twenty before the migration run, Twenty rejects the records on import. FlitStack delivers the value-mapping table in the pre-migration schema plan so you can create the pick-list options in Twenty's Settings → Data Model before data lands.

  • ServiceMax's asset entitlement model does not exist in Twenty

    ServiceMax's entitlement engine (SVMXC__Entitlement__c lookups on Work Orders, Auto-Entitlement Rules, and Service Contract coverage checks) is a built-in FSM construct that evaluates warranty status and contract coverage at the time of Work Order creation. Twenty has no entitlement, warranty-check, or auto-entitlement object. Migrated Work Orders will not automatically validate against the Asset's warranty_expiry__c or the linked Contract__c. Your admin must rebuild entitlement logic as conditions in Twenty's workflow builder — FlitStack exports the entitlement rule definitions from ServiceMax (via SVMX Migration Tool JSON export or manual configuration audit) as a rebuild reference.

  • Non-user technician records require a two-step migration

    ServiceMax technician records (SVMXC__Resource__c) that are not also Salesforce Users cannot be matched by email to Twenty Workspace Members because they do not have a UserId. These technicians appear on Work Orders as SVMXC__Group_Member__c or SVMXC__Assigned_Resource__c lookups. Twenty requires a Workspace Member to exist before you can link a record to a user. FlitStack flags all Work Orders assigned to non-user technicians, migrates them as Contacts first, and surfaces a migration step to manually promote those Contacts to Workspace Members in Twenty's Settings → Members panel before the full migration run.

  • Twenty's CSV import requires import order — Companies before People before Work Orders

    Twenty's documentation explicitly requires CSV import in dependency order: Companies first (the 'one' side of relationships), then People (linked to Companies via companyId), then Opportunities or custom objects. ServiceMax Work Orders reference Accounts (service location) and Contacts (customer contact). If the Work Order CSV lands in Twenty before the Account has been migrated as a Company, the companyId foreign key resolves to null and the Work Order appears unlinked. FlitStack sequences the migration: Accounts → Companies, Contacts → People, then Work Orders with resolved foreign keys. The migration plan specifies the exact import batch order before execution begins.

  • ServiceMax's Counter Rules and SPM Calculation Methods have no Twenty equivalent

    ServiceMax Counter Rules track usage meters on Installed Products and trigger Preventive Maintenance Processes when thresholds are reached (e.g., 'every 500 hours of operation'). SPM Calculation Methods define how service contract revenue is allocated. Neither construct exists in Twenty's object model. Counter Rule definitions are exported from ServiceMax as configuration JSON (via the SVMX Migration Tool or direct API). FlitStack maps the counter threshold and asset linkage to a custom Usage_Meter__c object in Twenty, but the trigger logic that automatically creates Preventive Maintenance Work Orders must be rebuilt as a workflow in Twenty's automation builder using the exported definitions as specification.

Migration approach

Six steps for a successful ServiceMax to Twenty CRM data migration

  1. Audit ServiceMax objects and export configuration definitions

    FlitStack connects to your ServiceMax org via the Salesforce API and inventories SVMXC__Work_Order__c, SVMXC__Installed_Product__c, SVMXC__Service_Contract__c, SVMXC__Work_Detail__c, SVMXC__Resource__c, and standard Contacts and Accounts. We also export ServiceMax configuration definitions — SFM Transactions, Preventive Maintenance Processes, Counter Rules, and dispatch console view setups — as JSON bundles using ServiceMax's export-to-file tool. This audit produces the object inventory, field inventory, and record counts that drive the migration scope and pricing.

  2. Design Twenty's custom object schema and field-mapping plan

    FlitStack creates the custom WorkOrder__c, Asset__c, Contract__c, WorkOrderLineItem__c, and MaintenanceRule__c objects in Twenty's Settings → Data Model based on the audit. For each custom field we map the SVMXC__ field name, data type, and pick-list values. The field-mapping plan is delivered as a CSV showing src_object → src_field → dst_object → dst_field → mapping_type. Your admin pre-creates all pick-list values (especially the Work Order stage values) in Twenty before the migration runs, per Twenty's requirement that fields must exist before CSV import.

  3. Resolve owner and technician references by email match

    ServiceMax technicians and dispatch users are matched to Twenty Workspace Members by email address. FlitStack cross-references the SVMXC__Resource__c email field against Twenty's member list. Unmatched technicians are flagged in a pre-flight report — your admin either invites them to Twenty first or assigns their Work Orders to a fallback Workspace Member. No Work Order migrates with a dangling owner reference; all unresolved links are logged for post-migration reconciliation.

  4. Run sample migration with field-level diff

    A representative slice migrates first — typically 200–500 records spanning Accounts, Contacts, Work Orders, Assets, and Service Contracts. We generate a field-level diff comparing source SVMXC__ values against Twenty's imported values so you can verify stage mapping, technician assignment, asset linkage, and foreign-key resolution before the full run commits. You sign off on the diff before FlitStack proceeds to the full migration.

  5. Execute full migration with delta-pickup window and audit log

    The full migration runs in sequence: Companies (Accounts), People (Contacts), then Assets, Contracts, and Work Orders with resolved foreign keys. Twenty's CSV import handles batches of up to 20,000 records per object; larger volumes use the REST/GraphQL API with 100–200 req/min throttling. A 24–48 hour delta-pickup window captures any Work Orders modified in ServiceMax during the cutover. FlitStack maintains an audit log of every operation; one-click rollback reverts all imported records if reconciliation identifies data quality issues.

Platform deep dives

Context on both ends of the pair

ServiceMax logo

ServiceMax

Source

Strengths

  • Deep Salesforce integration means customer and contact data stays unified without duplicate entry or sync middleware.
  • Comprehensive asset lifecycle management with entitlement enforcement, warranty tracking, and contract coverage logic built in.
  • Preventive maintenance scheduling with counter-based triggers and interval rules reduces reactive service and improves contract retention.
  • Mobile app for iOS and Android gives technicians offline access to Work Orders, Asset history, and form data in the field.
  • Technical Attributes framework models complex product configurations and links them to Assets for smarter diagnosis and parts matching.

Weaknesses

  • Configuration complexity requires specialized Salesforce/ServiceMax administrators; the learning curve is steep for new teams.
  • Cost structure compounds quickly—licensing is Salesforce-based per-user, and implementation often requires external consultants with ServiceMax-specific expertise.
  • Mobile app performance degrades in low-connectivity environments, and the browser mode lacks feature parity for pricing and billing sections.
  • Custom SFM Transactions and Wizards are brittle when Salesforce releases platform updates, causing re-testing cycles.
  • Limited native BI and reporting; cross-object analytics require additional tooling beyond Salesforce Reports.
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 ServiceMax 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

    ServiceMax: Salesforce API limits apply—reported ~5,000 API calls per org per 24-hour rolling window, with per-application limits within that.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Small migrations under 50,000 records (Accounts, Contacts, Work Orders, Assets) typically complete in 48–72 hours of clock time after Twenty's schema is set up. Larger migrations with 100,000–500,000 Work Order records or multiple SVMXC__ custom objects extend to 7–14 days. The longest step is pre-migration schema setup — creating custom WorkOrder__c, Asset__c, and Contract__c objects with all SVMXC__ field equivalents in Twenty's Settings → Data Model. Mapping SFM Transactions and Counter Rules for rebuild reference adds planning time but does not block the data migration.

Adjacent paths

Related migrations to explore

Ready when you are

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