CRM migration

Migrate from Plexus Software to Twenty CRM

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

Plexus Software logo

Plexus Software

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Plexus Software and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Plexus Software targets field-service and service businesses with scheduling, dispatch, time tracking, and job costing modules. Its data model centers on Jobs (work orders), Employees, Time Entries, Expenses, and Quotes — each tied to scheduling logic and pricing rules. Twenty CRM is an open-source CRM built on TypeScript, NestJS, React, and PostgreSQL with standard People, Companies, Opportunities, Notes, and Tasks objects plus unlimited Custom Objects. We map Plexus Jobs to a custom WorkOrder object, Time Entries to a custom TimeEntry object, and Expenses to a custom Expense object — preserving original create dates, assigned employee links, and job-stage values. Plexus Quotes (with line items and pricing rules) map to a custom Quote object where line items serialize as structured JSON or split into child records. Workflows, scheduling rules, and dispatch automations do not migrate — those are platform-specific and must be rebuilt in Twenty's workflow builder or via custom code. FlitStack sequences the migration so Companies import first (the 'one' side of relationships), then People, then Custom Objects referencing them, matching Plexus employee emails to Twenty workspace members for owner resolution.

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

Plexus Software logo

Plexus Software

What's pushing teams away

  • Small customer base and limited third-party reviews make it difficult to validate long-term platform viability before committing implementation resources.
  • Feature-driven pricing creates uncertainty at renewal — selecting or deselecting modules changes the base price in ways that are hard to predict without a detailed scoping call.
  • Competing FSM platforms like Jobber and Connecteam offer larger ecosystems, more integrations, and broader market presence that Plexus Software lacks.
  • Implementation support is bundled with pricing but not clearly scoped — some customers report needing additional paid consulting to get workflows running as advertised.
  • The platform is not well-indexed in public developer documentation or community forums, making it difficult to assess API capabilities before purchase.

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

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

Plexus Software

Employee

maps to

Twenty CRM

Workspace Member + People

many:1
Fully supported

Plexus employees (dispatchers, technicians, schedulers) map to Twenty Workspace Members for system access and People records for contact/assignment data. Skill profiles and capacity data store as custom fields on the People record. Email match resolves ownership during migration. Workspace Members must be created and accepted before Job and TimeEntry owner fields can resolve.

Plexus Software

Customer / Account

maps to

Twenty CRM

Companies

1:1
Fully supported

Plexus customer records (name, address, contact info, billing settings) map directly to Twenty Companies. Customer price catalog associations migrate as custom select fields on the Company record. Parent-child customer hierarchies map to the ParentId relation if supported in the Plexus export. Companies import first because they have no incoming foreign-key dependencies.

Plexus Software

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Plexus contact records (name, email, phone, job title) map directly to Twenty People. Multiple contacts per customer allowed — each links to the same Company via companyId. CreatedAt and updatedAt timestamps preserved as custom datetime fields since Twenty's system fields reflect migration time. Company must exist before contact import runs.

Plexus Software

Job / Work Order

maps to

Twenty CRM

Custom: WorkOrder

1:1
Fully supported

Plexus work orders require a custom WorkOrder object in Twenty since no standard CRM object handles field-service jobs. Fields include jobNumber (unique identifier), status, scheduledDate, assignedEmployeeId (relation to People), jobType, and siteAddress. Original job create date preserved as Original_Create_Date__c. Job status values require value-mapping to Twenty pick-list before import.

Plexus Software

Schedule / Dispatch

maps to

Twenty CRM

Custom: WorkOrder.scheduledDate + Custom: ScheduleAssignment

1:many
Fully supported

Plexus soft scheduling (capacity reservation without specific employee) and hard scheduling (assigned technicians) split into two Twenty constructs: scheduledDate on WorkOrder for the reservation date, and a custom ScheduleAssignment junction object linking WorkOrder to People for assigned-employee records. Skill-based dispatch logic must be rebuilt manually in Twenty's workflow builder.

Plexus Software

Time Entry

maps to

Twenty CRM

Custom: TimeEntry

1:1
Fully supported

Time sheets, billable hours, overtime rules, and timesheet approvals from Plexus map to a custom TimeEntry object in Twenty. Fields include entryDate, hoursWorked, isBillable (boolean), timeRule (overtime/double-time category), jobId (relation to WorkOrder), and employeeId (relation to People). GPS location data from Plexus mobile entry stored as a custom text field. Overtime enforcement logic does not migrate.

Plexus Software

Expense

maps to

Twenty CRM

Custom: Expense

1:1
Fully supported

Plexus Expenses (unplanned costs, reimbursable purchases) map to a custom Expense object in Twenty. Fields include expenseDate, amount, description, category (select from Plexus categories), reimbursementStatus, and jobId relation. Customer-facing billable expenses link to WorkOrder for invoice matching. Expense categories require pick-list value creation in Twenty before import.

Plexus Software

Quote / Estimate

maps to

Twenty CRM

Custom: Quote

1:1
Fully supported

Plexus quotes and estimates require a custom Quote object. Line items serialize as a custom JSON field or split into QuoteLineItem child records (implemented as a second custom object). Quote total, status, validUntil, and customerId (relation to Companies) migrate directly. Custom pricing rules from Plexus Customer Price Catalogs stored as custom fields on the Quote.

Plexus Software

Job Costing

maps to

Twenty CRM

Custom: WorkOrder + Custom: TimeEntry

many:1
Fully supported

Plexus job costing (labor cost per employee, third-party costs, prevailing-wage rules) merges into the WorkOrder and TimeEntry objects. Total labor cost calculates from TimeEntry hours multiplied by employee wage rate stored as a custom field on People. Third-party costs store as custom Expense records linked to WorkOrder.

Plexus Software

Attachment / File

maps to

Twenty CRM

Note

1:1
Fully supported

Plexus file attachments on jobs (photos, signed documents, receipts) migrate as Twenty Notes attached to the corresponding WorkOrder or Expense record. Original filenames preserved. Inline images from notes downloaded and re-hosted in Twenty's file storage. File size limits apply per Twenty's upload constraints.

Plexus Software

Skill Profile

maps to

Twenty CRM

Custom: Skill on People

1:1
Fully supported

Plexus Skill-Based Employee Suggestions store as a custom multi-select field (Skills__c) on the People record. Skills are text values migrated as-is — scheduling rule logic based on skill-matching must be rebuilt manually in Twenty's workflow builder. Skill values must be normalized if Plexus uses inconsistent naming conventions.

Plexus Software

Workflow / Automation

maps to

Twenty CRM

No equivalent

1:1
Fully supported

Plexus workflows (dispatch notifications, schedule-change alerts, timesheet approval routing) have no Twenty CRM equivalent. We export Plexus workflow definitions as a reference document for manual rebuild in Twenty's workflow builder or via custom code. FlitStack migrates data only — workflow logic requires manual recreation by your admin team.

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.

Plexus Software logo

Plexus Software gotchas

Medium

Soft scheduling reservations lack employee assignment

Medium

Prevailing-wage job costing schema is Plexus-specific

Low

GPS location data attached to time entries is non-transferable

Medium

Customer Price Catalog rules require manual mapping

Low

Feature-driven pricing creates billing ambiguity at renewal

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

  • Twenty requires custom objects pre-created before import — fields do not auto-generate

    Twenty's CSV import process creates records, not fields. If you attempt to import a WorkOrder object with a scheduledDate__c column but that custom field does not yet exist in Settings → Data Model, the import will fail or skip those columns silently. FlitStack delivers a schema setup plan before migration runs: we document every custom object (WorkOrder, TimeEntry, Expense, Quote), every custom field name, field type (text, number, date, select, boolean, relation), and any pick-list values that need pre-configuration. Your Twenty admin creates these in Settings → Data Model before the import step executes. This is a hard sequencing requirement — not a soft recommendation.

  • Plexus work-order scheduling logic has no direct Twenty equivalent — soft scheduling and skill-based dispatch must be rebuilt

    Plexus Soft Scheduling reserves employee capacity without assigning a specific technician. Combined with Skill-Based Employee Suggestions, this drives automated dispatch recommendations. Twenty has no native soft-scheduling or capacity view — scheduling data from Plexus migrates as a hard scheduledDate on the WorkOrder and a Skills__c multi-select on People, but the automation logic (matching open skills to open slots) must be rebuilt in Twenty's workflow builder or as custom code. FlitStack exports Plexus scheduling rules and skill profiles as a reference document your team uses for the rebuild. This is not a data-loss risk — data migrates completely — but a workflow-rebuild cost that should be scoped before cutover.

  • Plexus exports may require multiple CSV batches due to volume — no public API means no bulk export

    Plexus Software does not publicly document a REST API. Data export relies on CSV extracts or direct database queries through Plexus backend access. If your Plexus deployment holds more than 20,000 records in any object (Jobs, Time Entries, Expenses), the export must be split into multiple batches that align with Twenty's CSV import limit of 20,000 records per file. FlitStack coordinates the batching strategy during discovery, maps batch sequence to Twenty's import order (Companies → People → WorkOrders → TimeEntries → Expenses → Quotes), and validates record counts at each step to prevent orphaned relationships from partial imports.

  • Employee-to-Twenty Workspace Member resolution must complete before owner fields can populate

    Plexus Jobs and Time Entries reference Employees (assigned technicians, dispatchers). Twenty's owner/assignment fields point to People records or Workspace Members by ID. During migration, owner fields cannot resolve until the corresponding Workspace Members exist in Twenty — a chicken-and-egg problem if employees are imported from Plexus as People records. FlitStack runs Workspace Member creation first (invite employees by email, wait for acceptance), captures their Twenty IDs, then uses those IDs when migrating Job and TimeEntry records. Unresolved owners flag before migration commits so your team either invites the missing employee to Twenty or assigns a fallback People record.

  • Plexus Quotes with structured line items need custom serialization strategy in Twenty

    Plexus Quotes include line items with product/service descriptions, quantities, unit prices, and discounts — a structured sub-record. Twenty's standard Quote object has no native line-item child object. FlitStack handles this in one of two ways: (1) line items serialize as a JSON string in a custom lineItemsJson__c text field on the Quote record, preserving full detail but not queryable in standard Twenty views; or (2) a custom QuoteLineItem object is created as a second custom object with a relation to Quote, queryable but requiring more setup. Your team chooses the strategy before migration — we surface both options in the schema plan and apply your decision value-by-value.

Migration approach

Six steps for a successful Plexus Software to Twenty CRM data migration

  1. Stand up Twenty workspace schema first

    Before any data moves, your Twenty admin (or our team) creates the custom objects and fields needed for Plexus data: WorkOrder, TimeEntry, Expense, and Quote objects; all custom fields (scheduledDate__c, hoursWorked__c, isBillable__c, wageRate__c, skills__c, lineItemsJson__c, sourceSystemId__c, originalCreateDate__c); pick-list values for job status and time rule categories; and Workspace Members for every Plexus employee. We deliver a schema setup plan based on your Plexus export so the Twenty side is ready before validation runs.

  2. Invite Plexus employees to Twenty and resolve workspace members by email

    Twenty requires Workspace Members to exist before owner/assignment fields can reference them. FlitStack extracts employee emails from Plexus, generates invitations to your Twenty workspace, and waits for acceptance confirmation. Unmatched employees (no email in Plexus, or email not matching a Twenty user) are flagged with a fallback assignment rule so Job and TimeEntry records land with a designated admin owner rather than null.

  3. Export Plexus data in dependency order and batch by volume

    Plexus data exports as CSV (or via backend query). FlitStack sequences exports by dependency: Companies first (no incoming foreign keys), then People (referencing Companies), then WorkOrders (referencing People), then TimeEntries and Expenses (referencing WorkOrders), then Quotes. If any object exceeds Twenty's 20,000-record CSV import limit, we split the export into date-ordered batches and import in sequence, validating record counts at each step to prevent orphaned relationships.

  4. Run a sample migration with field-level diff

    A representative slice migrates first — typically 100–500 records spanning People, Companies, WorkOrders, TimeEntries, and a sample Quote. We generate a field-level diff showing source values versus Twenty destination values for every mapped field. You verify job status value-mapping, scheduledDate population, owner resolution, and quote line-item serialization before the full run commits. Sample size scales with record volume: larger datasets use a larger slice but the principle is the same.

  5. Cut over with delta-pickup for in-flight records

    Full migration runs against Twenty. A delta-pickup window (typically 24–48 hours) captures any Plexus records created or modified during the cutover — active jobs, new time entries, updated quotes. FlitStack uses the sourceSystemId__c field to de-duplicate against already-migrated records. Audit log captures every operation (create, update, skip) and one-click rollback is available if reconciliation fails. Plexus remains fully operational throughout — scoped read access only.

Platform deep dives

Context on both ends of the pair

Plexus Software logo

Plexus Software

Source

Strengths

  • Skill-matching scheduler reduces manual dispatch work and improves first-attempt fix rates for jobs requiring specific certifications.
  • Mobile time entry with GPS location data ties labor records directly to job sites without requiring employees to log in from an office terminal.
  • Job costing at the individual worker level supports prevailing-wage and union labor compliance requirements common in field service.
  • Soft scheduling reserves capacity without committing specific employees, giving dispatchers flexibility to fill slots as the day evolves.
  • Customer Price Catalogs automate special-rate application at invoice time, reducing manual overrides and billing disputes on contracted accounts.

Weaknesses

  • Limited public API documentation and no developer community presence make it difficult to assess extensibility or integration capabilities.
  • Pricing is opaque — feature-driven base price requires a sales conversation rather than self-service evaluation, slowing vendor comparison.
  • Small review sample (18 verified reviews on Capterra) makes it hard to identify consistent pain points versus outlier experiences.
  • Competing FSM platforms have broader marketplace integrations (QuickBooks, Salesforce, ServiceTitan) that Plexus Software does not clearly match.
  • No publicly documented bulk export or migration tooling — data portability depends on Plexus support involvement.
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 Plexus Software 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

    Plexus Software: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Plexus-to-Twenty migrations complete in 48–72 hours for under 10,000 Plexus records. Larger setups with 50,000+ records or multiple custom objects (WorkOrder, TimeEntry, Expense, Quote) extend to 7–14 days. The longest step is usually data extraction from Plexus and pre-creating Twenty's custom schema — Twenty's CSV import itself runs quickly once the field structure is in place. Planning and schema setup add 3–5 days before any data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Plexus Software.
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