CRM migration
Field-level mapping, validation, and rollback between SuperOffice CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
SuperOffice CRM
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between SuperOffice CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from SuperOffice CRM to Twenty CRM is a modernization migration from a structured European mid-market platform to a modern open-source CRM. SuperOffice uses a Company-Contact-Sale model with Quote alternatives and Selections as dynamic named lists; Twenty uses a Person-Company-Opportunity model where Quote alternatives flatten into Opportunity line items and Selections have no native equivalent. We resolve the Quote hierarchy flattening during scoping, pre-create all custom fields in Twenty's Data Model before import (a requirement that blocks imports when skipped), and preserve Selection membership as tagged records. Workflows, automations, and SuperOffice's document archive are excluded from migration scope; we deliver a written inventory of each for the customer's admin to rebuild. Owner resolution happens by email match against Twenty Members.
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 SuperOffice 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.
SuperOffice CRM
Contact
Twenty CRM
Person
1:1SuperOffice Contact maps to Twenty Person. Standard fields (name, email, phone, address) map directly. Custom fields from SuperOffice userDefined table migrate as custom fields on Person, which must be pre-created in Settings -> Data Model before import per Twenty's requirements. The Person-Company relationship is established via the workplace link: we create the Company first, then map the Contact's associate link to the workplace relationship on Person during import.
SuperOffice CRM
Company
Twenty CRM
Company
1:1SuperOffice Company maps to Twenty Company with a 1:1 field mapping. Company is imported first in all migrations to satisfy the Company-Person relationship requirement. All standard address fields and any userDefined custom fields on Company are mapped and pre-created in Twenty before import.
SuperOffice CRM
Sale
Twenty CRM
Opportunity
1:1SuperOffice Sale maps to Twenty Opportunity. The sale stage maps to Opportunity status; the amount maps to Opportunity amount; the linked Contact (via the associate table) links to the Opportunity via the Person participant. We resolve the Person ID at migration time before Opportunity insert so that the opportunity-person relationship is satisfied on first import.
SuperOffice CRM
Quote and QuoteAlternative
Twenty CRM
Opportunity and OpportunityLineItem
1:manySuperOffice Quote -> QuoteAlternative -> line items is a three-level hierarchy. Twenty has Opportunity and OpportunityLineItem but no native Quote object. We map the primary QuoteAlternative to the Opportunity as line items (Product2, quantity, unit price). Additional QuoteAlternatives are serialized as JSON and stored in a custom field on the Opportunity, then surfaced in the post-migration handoff document so the admin can recreate them as separate Opportunities if needed.
SuperOffice CRM
Project
Twenty CRM
Custom Object (Project)
1:1SuperOffice Project has type and status managed via ProjType and ProjStatus list tables, with links to Contacts and Sales via the associate table. Twenty has no native Project object. We create a Project custom object in Twenty's Data Model with type and status as select fields, preserve the type-status link as custom field configuration, and map project memberships as participant records.
SuperOffice CRM
Activity (Call, Task, Appointment)
Twenty CRM
Task
1:1SuperOffice Activities (calls, tasks, appointments) link to Contact or Company via the associate table. We map all activity types to Twenty Task: calls use Task with a call_disposition custom field; appointments use Task with startDate and dueDate fields; standard tasks map directly. Activity timestamps and completion status migrate as-is. Links to Contact and Company are resolved via the Person and Company ID lookup.
SuperOffice CRM
Selection
Twenty CRM
Tagged Records
lossySuperOffice Selections are named dynamic lists of Contacts, Companies, or Sales. Twenty has no native Selection or dynamic list object. We export each Selection as a named tag applied to the relevant records: for a Selection of Contacts, we add a custom tag (the Selection name) to each Person record; for a Selection of Sales, we add it to each Opportunity. The admin recreates static versions of Selections in Twenty using filtered table views.
SuperOffice CRM
Document
Twenty CRM
External File Export
1:1SuperOffice documents stored in the so_arc folder can be exported as binary blobs with metadata. Twenty has no native document archive equivalent. We export documents as a structured file share (ZIP organized by record type and ID) with a manifest CSV mapping each file to its SuperOffice record. The admin receives the file export and links documents manually or via a file-storage integration.
SuperOffice CRM
Custom Properties (userDefined)
Twenty CRM
Custom Fields
lossyCustom fields on Contacts, Companies, Sales, and Projects from SuperOffice's userDefined table are mapped individually to Twenty custom fields. Dropdown lists (UDList definitions) must be recreated in Twenty's Data Model as select options before import. We flag any unsupported field types (for example, SuperOffice's URL fields become text fields in Twenty) and document the transformation.
SuperOffice CRM
User (Associate)
Twenty CRM
Member
1:1SuperOffice Users have email, name, and license status. We resolve Users by email match against Twenty Members. The customer must invite all Members and confirm they have accepted before we begin record import, because OwnerId and assignee references on Opportunities and Tasks require a resolved Member ID. Inactive SuperOffice users are mapped to inactive Members or excluded per customer direction.
SuperOffice CRM
Tag
Twenty CRM
Tag
1:1SuperOffice tags applied across Contact, Company, Sale, and Project objects are exported and mapped to Twenty Tags. Tags in Twenty are a native field type on Person and Company and can be used for filtering in table views.
SuperOffice CRM
Pipeline Stages
Twenty CRM
Opportunity Status Options
lossySuperOffice pipeline stages are tied to the SaleType list table with stage names, order, and probability percentages. We export these as a configuration object and apply them as select options on Twenty's Opportunity status field during workspace setup. The customer configures stage probabilities in Twenty's opportunity settings post-migration.
| SuperOffice CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Sale | Opportunity1:1 | Fully supported | |
| Quote and QuoteAlternative | Opportunity and OpportunityLineItem1:many | Fully supported | |
| Project | Custom Object (Project)1:1 | Fully supported | |
| Activity (Call, Task, Appointment) | Task1:1 | Fully supported | |
| Selection | Tagged Recordslossy | Fully supported | |
| Document | External File Export1:1 | Fully supported | |
| Custom Properties (userDefined) | Custom Fieldslossy | Fully supported | |
| User (Associate) | Member1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Pipeline Stages | Opportunity Status Optionslossy | Mapping required |
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.
SuperOffice CRM gotchas
On-prem to cloud migration requires SuperOffice 7.1 minimum
Customizations and integrations may break after on-prem to cloud migration
Duplicate email addresses block user migration
Quote-Alternative hierarchy flattens in most destination CRMs
Activity-to-record associations require post-migration verification
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
Pre-migration audit and workspace preparation
We audit the SuperOffice database across Contacts, Companies, Sales, Projects, Quotes, Activities, Selections, and userDefined custom fields. We identify duplicate emails, Travel users, and SentryAddonNames references (SuperOffice on-prem requirements) and remediate before export. In parallel, we create the Twenty workspace: we pre-create all custom objects and custom fields identified in the audit, invite all Members and confirm acceptance, and configure the Opportunity status select options to match the SuperOffice pipeline stages.
Data export from SuperOffice
We export each object type separately from SuperOffice: Companies first (satisfying the Company-Contact link), then Contacts (with associate table links preserved for later resolution), then Sales (with SaleType and stage), then Quotes and QuoteAlternatives (for the hierarchy restructure), then Projects, then Activities, then Selections. Documents are exported as a structured file archive. Tags are exported as a mapping table against record IDs. The export produces a set of CSVs and a document manifest.
Transform and Quote-Alternative restructure
We transform the SuperOffice data to Twenty's schema. The critical transform is the Quote-Alternative hierarchy: we create an Opportunity record per Quote, map the primary QuoteAlternative line items to OpportunityLineItem records, and serialize any secondary QuoteAlternatives to JSON in a custom field. Selections are converted to tags on the relevant Person or Company records. Custom field types are normalized: SuperOffice date formats are ISO-8601 aligned, phone numbers are standardized, and dropdown lists are matched against the select options pre-created in Twenty.
Sandbox migration and reconciliation
We run a full migration into Twenty's sandbox or a staging environment using the production data volume. The customer's lead admin reconciles record counts (Companies in, Persons in, Opportunities in, Tasks in), spot-checks 25-50 records against the SuperOffice source for field accuracy, and validates that Person-Company relationships and Opportunity-Person links rendered correctly. Mapping corrections are made here before production migration.
Production migration in dependency order
We run production migration in dependency order: Company (first, no dependencies), Person (with workplace link to Company), Opportunity (with Person ID resolved), OpportunityLineItem (with Opportunity ID resolved), Project custom object, Task (with Person and Company IDs resolved last), Tags (applied to existing records), then document archive export delivered as a file package. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and rebuild handoff
We freeze SuperOffice writes during cutover, run a final delta migration of any records modified during the window, then enable Twenty as the system of record. We deliver a document archive package, a Quote-Alternative handoff note, and a Selection rebuild guide. We provide a one-week hypercare window for reconciliation issues. We do not rebuild SuperOffice automations, workflows, or document links as part of the migration scope; that work is documented separately for the customer's admin.
Platform deep dives
SuperOffice CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 SuperOffice CRM and Twenty CRM.
Object compatibility
1 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
SuperOffice CRM: Tiered: Starter 500 req/min, Professional 2,500 req/min, Enterprise 10,000 req/min.
Data volume sensitivity
SuperOffice 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 SuperOffice CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your SuperOffice 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 SuperOffice 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.