CRM migration

Migrate from Xapsys CRM to Twenty CRM

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

Xapsys CRM logo

Xapsys CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

80%

8 of 10

objects map 1:1 between Xapsys CRM and Twenty CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Xapsys CRM to Twenty CRM is a migration from a UK ERP-integrated SME platform to a modern open-source CRM with full custom object flexibility. Xapsys's defining architectural characteristic is its custom entity builder — every customer deployment has a different schema, which means we must extract the live field-level definition before building any map. Twenty uses a standard Company, People, and Opportunity object model with native support for custom objects created through the Settings Data Model interface, but it requires that all fields and custom objects exist before CSV import begins. We handle that sequencing: schema discovery from Xapsys, custom object pre-creation in Twenty, then record migration in dependency order (Companies first, then Contacts with resolved foreign keys, then Opportunities, then custom entity records). Xapsys workflow rules do not export via any documented mechanism; we deliver a written inventory of every active workflow for the customer's admin to rebuild in Twenty. Document links are preserved by mapping Xapsys's dual parent-reference structure to Twenty's attachment model. Timeline ranges from four to eight weeks for standard schemas, extending to ten to fourteen weeks when heavy custom entity usage requires extended discovery and field-by-field mapping.

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

Xapsys CRM logo

Xapsys CRM

What's pushing teams away

  • Standard package does not include reporting — customers report spending time and money developing reporting suites after purchase, which was not the expected out-of-box experience.
  • Custom fields and pipeline stage configurations have been described as glitchy by users on platforms with more active community discussion, with threads randomly dropping or dashboards refusing to export properly.
  • Pricing transparency on the website does not fully clarify what is included in each tier, leaving customers uncertain whether advanced features require a separate add-on purchase.
  • Custom entity flexibility is a strength but also a migration risk — since no two Xapsys instances share the same schema, any migration requires a fresh field-level discovery rather than a template-based approach.

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

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

Xapsys CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Xapsys Company records map directly to Twenty Company. We extract company name, address fields, and any classification or industry tags directly. Company is created first in the migration sequence so that Contact records can resolve their primary company reference during import. The Xapsys Companies table may include records synced from Sage or Xero; we preserve the ERP reference in a custom field erp_source__c for the customer's admin to use in building a custom integration post-migration.

Xapsys CRM

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Xapsys Contact records map to Twenty People. The primary company reference resolves to the imported Company via a foreign-key lookup that we perform before inserting People records. Email, phone, job title, and address fields migrate directly. Any classification tags on the Contact (such as customer type or segment flags) map to Twenty's tag system, with unmapped tags flagged for the customer's admin to assign manually in Settings.

Xapsys CRM

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Xapsys Opportunities map to Twenty Opportunity. Custom pipeline stages in Xapsys are user-defined strings stored as picklist values in the source database; we capture the full set of unique stage names during discovery, then pre-create the corresponding stage values in Twenty's pipeline configuration before import begins. Opportunity amount, close date, and probability migrate directly. Any custom fields on the Opportunity object are extracted during the schema discovery phase and pre-created as custom fields in Twenty before the Opportunity import batch runs.

Xapsys CRM

Custom Entity (any type)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Xapsys custom entities have no fixed schema — every deployment is different. We extract the live custom entity definition from the Xapsys SQL-backed instance during discovery, enumerate every custom object name and its fields with data types, then create matching custom objects in Twenty's Settings Data Model before any data import begins. This is the highest-risk phase of the migration: if Twenty's field type (text, number, date, select, multi-select, relation) does not match the Xapsys source, data truncation or import rejection occurs. We resolve field types with a type-mapping matrix and validate against a sample export before running the full load.

Xapsys CRM

Document

maps to

Twenty CRM

Attachment / Custom Field

1:1
Fully supported

Xapsys associates documents with both Companies and Opportunities via a dual parent-reference structure. We extract the document record, its filename, and its parent reference (company_id or opportunity_id) during the same export pass. In Twenty, we either attach the document to the migrated Company or Opportunity record via the native attachment model, or store the document reference in a custom URL field if the document itself is too large for direct attachment. The parent linkage is reconstructed post-import by matching the source record ID to the migrated record ID.

Xapsys CRM

Activity / Task

maps to

Twenty CRM

Task or Note

1:1
Fully supported

Xapsys stores task and activity history as related log entries attached to Contacts and Opportunities. Where bulk export is available, we map date, type, and description fields. If the export is partial or requires multiple API calls, we use batched retrieval with exponential backoff. Activities migrate as Twenty Task records with the type preserved in a custom field and the original timestamp set on the ActivityDate field to maintain the timeline ordering that sales teams rely on.

Xapsys CRM

Pipeline Stage

maps to

Twenty CRM

Pipeline Stage

lossy
Fully supported

Pipeline stages in Xapsys are user-defined string values, not an enumerated set. A standard CRM-to-CRM migration must map each source stage name to its Twenty pipeline stage equivalent. We produce a stage map during discovery, pre-create the stage names in Twenty's pipeline configuration (ensuring each stage has an appropriate probability value), and validate the map against a sample import of 50 Opportunities before running the full Opportunity batch. Closed-Lost and Closed-Won stages are matched to Twenty's standard Closed Won and Closed Lost values.

Xapsys CRM

Tag / Classification

maps to

Twenty CRM

Tag

1:1
Fully supported

Xapsys allows classification tags on Company, Contact, and Opportunity records. We extract tag names and values from the source system and map them to Twenty's tag system. Any tags that have no direct equivalent in Twenty are flagged during discovery and listed in a supplemental tagging map document for the customer's admin to assign or rename post-migration. Multi-value tags on a single record migrate as multiple tag entries in Twenty, preserving the original tagging behavior.

Xapsys CRM

Customer Portal Settings

maps to

Twenty CRM

Not migrated

lossy
Fully supported

Xapsys exposes a self-service portal for B2B clients (re-orders, credit balance, order tracking). Portal configuration and content do not migrate directly across platforms because Twenty does not include a native B2B customer portal. We scope portal settings separately during discovery, document the existing portal configuration, and advise the customer to evaluate Twenty's Experience Cloud integration or a custom portal built on Twenty's GraphQL API as the replacement path.

Xapsys CRM

Workflow

maps to

Twenty CRM

Not migrated

1:1
Fully supported

Xapsys workflow rules — automated triggers, stage-change actions, and email sequences — are not exposed via any documented export endpoint. They are silently dropped in any flat-file migration. We catalog every active workflow during discovery, produce a written specification for each one (trigger, conditions, actions, and recommended Twenty equivalent), and deliver this document at migration close. The customer's admin rebuilds revenue-critical workflows in Twenty's workflow builder post-migration. This is explicitly documented in Twenty's own migration guide as a manual step.

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.

Xapsys CRM logo

Xapsys CRM gotchas

High

Custom entity schemas vary by deployment

High

Workflows do not export and must be rebuilt

Medium

Reporting is not included in standard package

Medium

Sage/Xero integration locks in dual-record discipline

Low

Limited public API documentation

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

  • Xapsys custom entity schemas require pre-migration discovery

    Xapsys CRM's defining architectural choice is its custom entity builder. Every customer instance has a different set of objects and fields. When migrating to Twenty, we cannot apply a generic field map — we must extract the live schema from the Xapsys SQL-backed instance first, build a per-field map, pre-create the corresponding custom objects in Twenty's Settings Data Model, and validate the map against a sample export before running the full import. This discovery phase adds time that is not required when migrating platforms with fixed schemas. Skipping it results in import rejection when Twenty encounters a field type it cannot accept.

  • Twenty requires fields to exist before CSV import begins

    Twenty's migration documentation explicitly states: Fields must exist before import. The CSV import creates records, not fields. This is a sequencing constraint that requires all custom objects and custom fields in Twenty to be pre-created in Settings Data Model before any data import batch runs. We handle this by running the schema discovery phase first, creating the destination schema in a Twenty sandbox, validating against a sample export, and only then proceeding to production migration. Migrations that skip this step result in columns being silently ignored or records being rejected at import time.

  • Twenty workflows, views, and permissions must be rebuilt manually

    Twenty's own migration documentation states: Views, workflows, and permissions must be recreated manually after migration. This is not a limitation of FlitStack AI — it is a platform design choice. Xapsys workflow rules do not export via any documented API endpoint, and Twenty does not accept workflow definitions via import. We deliver a written inventory of every active Xapsys workflow with its trigger, conditions, and actions documented for the customer's admin to rebuild in Twenty. This is a manual post-migration task that must be planned and budgeted separately from the data migration.

  • Sage and Xero integration does not migrate to Twenty

    Xapsys CRM is designed to live alongside Sage 50, Sage 200, or Xero, and many Xapsys deployments use these ERPs as the system of record for company and contact data. Twenty CRM has no native Sage or Xero connector. Migration planning must determine which system was the authoritative source for each data object to avoid duplicating or conflicting records in Twenty. We flag ERP-synced records during discovery and advise the customer on whether a custom GraphQL-based integration should be built post-migration or whether the ERP connection is being replaced by Twenty's own data model.

  • Xapsys API access requires scoped credential verification

    Xapsys does not prominently surface API documentation on its public website. Community discussion references custom objects with quirky field ID behavior in API calls. We probe API access during scoping and use a read-only test credential to verify export endpoint availability before committing to a migration timeline. If the API access method is restricted or undocumented for a particular deployment, we fall back to direct SQL extraction from the Xapsys cloud instance with the customer's database credentials, which we obtain during the scoping phase.

Migration approach

Six steps for a successful Xapsys CRM to Twenty CRM data migration

  1. Schema discovery and custom entity extraction

    We connect to the Xapsys SQL-backed cloud instance with read-only credentials and extract the live schema: all standard objects (Companies, Contacts, Opportunities, Activities), all custom entity names and their field definitions including data types, all pipeline stage names, all active workflow rules, and all document attachment records with their parent references. We produce a written schema map and a sample export of 50 records per object type to validate field mapping viability before committing to the full migration scope. This phase typically takes five to seven business days and is the critical path item that determines whether a migration lands in the four-to-eight or ten-to-fourteen week window.

  2. Twenty workspace preparation and schema pre-creation

    We set up a Twenty workspace (self-hosted on the customer's infrastructure) and pre-create every custom object and custom field identified in the Xapsys discovery phase. This includes custom objects with their field types matched to the Xapsys source types via a type-mapping matrix, pipeline stages with probability values, and any picklist or select options. We verify that each field accepts the data types coming from the Xapsys export before any import batch runs. We also invite all team members to the Twenty workspace at this stage so that Owner fields can be resolved during import.

  3. Sandbox migration and reconciliation

    We run a full migration into the Twenty sandbox using production-like data volume. The customer's RevOps lead reconciles record counts (Companies in, People in, Opportunities in, Activity records in), spot-checks 25-50 random records against the Xapsys source, and validates that custom entity records have the correct field values and relationships. Custom entity mapping corrections, stage name adjustments, and tag resolution decisions happen in the sandbox, not in production. Sign-off from the customer's admin is required before we proceed to production migration.

  4. Production migration in dependency order

    We run production migration in strict record-dependency order: Companies first (as the parent for all other objects), then People with the company reference resolved via foreign-key lookup, then Opportunities with both company and people references resolved, then custom entity records (with any lookups to standard objects resolved at migration time), then Activities as Task records with original timestamps preserved, then document attachments with parent linkage reconstructed. Each phase emits a row-count reconciliation report. Any records rejected during import (due to missing required fields or type mismatches) are queued for correction and re-imported in the next batch.

  5. Cutover and workflow inventory delivery

    We freeze Xapsys writes during a cutover window, run a final delta migration of any records created or modified during the migration window, then confirm Twenty as the system of record. We deliver the written workflow inventory document listing every active Xapsys workflow with its trigger, conditions, and recommended Twenty equivalent. We support a three-day hypercare window following cutover to resolve any data reconciliation issues raised by the customer's team. We do not rebuild Xapsys workflows as Twenty workflow rules inside the migration scope; that work is documented and handed off for the customer's admin to execute.

Platform deep dives

Context on both ends of the pair

Xapsys CRM logo

Xapsys CRM

Source

Strengths

  • Native cloud sync with Sage 50, Sage 200, and Xero accounting platforms for UK SMEs
  • Custom entity builder allowing firm-specific data structures without developer involvement
  • Customer portal for B2B clients to re-order, check credit balance, and track orders
  • Mobile access without VPN dependency for field sales teams
  • Document management linking contracts to both company and opportunity records

Weaknesses

  • Reporting is not included in the standard package and requires additional development cost
  • API documentation and public developer resources are not prominently accessible
  • Customer base is small and geographically concentrated in the UK, limiting community resources and peer support
  • Migration requires custom field-level mapping per instance due to heavy use of custom entities
  • No prominent data export or migration tooling documented on the vendor site
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. 2 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 Xapsys CRM and Twenty CRM.

  • Object compatibility

    B

    2 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

    Xapsys CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Standard migrations under 10,000 Contacts, 2,000 Opportunities, and no custom entities land between four and six weeks. Migrations with heavy custom entity usage (10+ custom objects with complex field definitions and interrelationships) extend to ten to fourteen weeks because of the required schema discovery phase, custom object pre-creation in Twenty, and custom field type validation. Document libraries over 5,000 attachments add additional time for parent-linkage reconstruction.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Xapsys CRM.
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