CRM migration
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
Source
Twenty CRM
Destination
Compatibility
8 of 10
objects map 1:1 between Xapsys CRM and Twenty CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
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.
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 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
Twenty CRM
Company
1:1Xapsys 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
Twenty CRM
People
1:1Xapsys 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
Twenty CRM
Opportunity
1:1Xapsys 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)
Twenty CRM
Custom Object
1:1Xapsys 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
Twenty CRM
Attachment / Custom Field
1:1Xapsys 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
Twenty CRM
Task or Note
1:1Xapsys 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
Twenty CRM
Pipeline Stage
lossyPipeline 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
Twenty CRM
Tag
1:1Xapsys 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
Twenty CRM
Not migrated
lossyXapsys 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
Twenty CRM
Not migrated
1:1Xapsys 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.
| Xapsys CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Company | Company1:1 | Fully supported | |
| Contact | People1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Custom Entity (any type) | Custom Object1:1 | Fully supported | |
| Document | Attachment / Custom Field1:1 | Fully supported | |
| Activity / Task | Task or Note1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Tag / Classification | Tag1:1 | Fully supported | |
| Customer Portal Settings | Not migratedlossy | Fully supported | |
| Workflow | Not migrated1: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.
Xapsys CRM gotchas
Custom entity schemas vary by deployment
Workflows do not export and must be rebuilt
Reporting is not included in standard package
Sage/Xero integration locks in dual-record discipline
Limited public API documentation
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
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.
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.
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.
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.
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
Xapsys CRM
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 Xapsys CRM 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
Xapsys CRM: Not publicly documented.
Data volume sensitivity
Xapsys CRM 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 Xapsys CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Xapsys CRM
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.