CRM migration
Field-level mapping, validation, and rollback between Soffront and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Soffront
Source
Twenty CRM
Destination
Compatibility
7 of 11
objects map 1:1 between Soffront and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Soffront to Twenty CRM is a structural migration from a Main Object-centric architecture to a standard modern CRM data model. Soffront organizes workflows around a specific object type and generates dependent Tasks, while Twenty CRM uses a simpler object structure with a /metadata API for custom objects. We extract Soffront data through their paginated API (defaulting to 500 records per call), perform field-level custom field mapping during discovery because Soffront instances carry entirely different field names for the same objects, and import into Twenty through their REST import endpoints. Knowledge Base articles require a category structure rebuild in Twenty since the two platforms organize content differently. We do not migrate Soffront workflows or automation rules; these are delivered as a written inventory for the customer to rebuild in Twenty's native automation tools. Group assignments map to Twenty's Workspace membership model during import.
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 Soffront 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.
Soffront
Contact
Twenty CRM
Person
1:1Soffront Contact records map to Twenty CRM Person objects. Standard fields (name, email, phone, address, lifecycle stage) migrate directly. Group assignments from Soffront map to Workspace memberships in Twenty. Custom picklist values on Contact records are mapped during the field inventory phase. Email opt-in and opt-out flags migrate to Twenty's Subscription fields.
Soffront
Account
Twenty CRM
Company
1:1Soffront Account records (representing organizations or companies) map to Twenty CRM Company objects. The Account-Contact relationship in Soffront becomes a Person-Company relationship in Twenty. All standard fields including industry, size, and custom properties migrate. Company is created before Person import so the lookup relationship is satisfied at insert time.
Soffront
Deal
Twenty CRM
Opportunity
1:1Soffront Deal records track opportunities through custom pipelines with stage names, amounts, and owners. Stage names vary between Soffront instances so we perform a value-mapping exercise during discovery to align with Twenty's pipeline stage model. Closed-won and closed-lost reasons from Soffront custom fields become custom opportunity fields in Twenty.
Soffront
Activity (calls, emails, meetings, tasks)
Twenty CRM
Task or Event
1:1Soffront Activities include calls, emails, meetings, and tasks linked to Contacts or Deals. Activity type labels and custom activity fields require field-level mapping to Twenty's timeline model. Calls and tasks migrate as Task records; meetings migrate as Event records. Email content migrates as Task with the body preserved. Historical timestamps are preserved by setting ActivityDate to the original Soffront activity date.
Soffront
Project
Twenty CRM
Task (with Workspace grouping)
1:manySoffront Projects include status, milestones, assigned managers, resources, and due dates. Twenty CRM does not have a native Project object, so we split Projects into Workspace-organized Task hierarchies. Milestones become parent Tasks; sub-tasks become child Tasks. Project metadata (status, manager, due date) is stored as custom fields on the root Task record.
Soffront
Ticket
Twenty CRM
Task or CRM Ticket
1:1Soffront support tickets flow from capture through assignment, escalation, and resolution. If Twenty CRM is configured with the Tickets feature enabled, we map tickets directly. If not, tickets migrate as Tasks with a custom ticket_status__c field and priority preserved. Conversation history migrates as linked Task comments or activity entries.
Soffront
Knowledge Base
Twenty CRM
Custom Article Object
lossySoffront Knowledge Base stores articles by category and links them to ticket types for agent lookup. Twenty CRM does not have a native Knowledge Base with category inheritance. We export Soffront articles with their category assignments, create a flat article structure in Twenty (custom object via /metadata API), and store the original Soffront category as a field on each article record for reference. Category labels are delivered as a separate mapping document.
Soffront
Custom Object
Twenty CRM
Custom Object
1:1Soffront supports custom object types beyond the standard data model. Twenty CRM exposes custom objects through the /metadata API. We inspect the custom object schema at the start of each migration, pre-create the equivalent Twenty custom object via API, including all custom fields, lookup relationships, and field types, before any custom object data is imported. Custom field naming follows Twenty's conventions.
Soffront
Custom Fields (on standard objects)
Twenty CRM
Custom Fields
lossyCustom fields on Soffront standard objects are common due to the platform's high customization capacity. We capture field names, types, and picklist values during discovery and map each to a corresponding custom field in Twenty. Picklist values are re-created in Twenty's field schema before migration. This mapping document is validated against the source and destination before any records move.
Soffront
Group
Twenty CRM
Workspace + Team Membership
1:manySoffront Groups organize records for access control and segmentation. Twenty CRM uses Workspace-based access control. We map Soffront Group memberships to Twenty Workspace memberships during migration. If multiple Soffront Groups should share a single Twenty Workspace (a common pattern when Groups are used for segmentation rather than security), we document this as a merge decision during scoping and apply it during the import phase.
Soffront
Attachment
Twenty CRM
Attachment via File object
1:1Attachments linked to Contacts, Deals, Tickets, and Projects are exported from Soffront and re-uploaded to Twenty CRM. File size limits and storage location vary by Soffront edition. We preserve the attachment's parent record relationship and store the original Soffront filename and link as metadata fields on the Twenty file record. On-premise Soffront users may have attachments stored in local file systems requiring a different extraction path than cloud users.
| Soffront | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Account | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Activity (calls, emails, meetings, tasks) | Task or Event1:1 | Fully supported | |
| Project | Task (with Workspace grouping)1:many | Fully supported | |
| Ticket | Task or CRM Ticket1:1 | Fully supported | |
| Knowledge Base | Custom Article Objectlossy | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Custom Fields (on standard objects) | Custom Fieldslossy | Fully supported | |
| Group | Workspace + Team Membership1:many | Fully supported | |
| Attachment | Attachment via File object1: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.
Soffront gotchas
API rowcount defaults to 500 records per call
Workflow definitions tied to Main Objects require recreation
Knowledge Base articles must be mapped to destination KB categories
Custom field names vary between Soffront instances
On-premise and cloud editions have different import/export paths
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
Discovery and edition assessment
We audit the source Soffront instance across deployment type (cloud or on-premise), API access credentials, record counts per object, active custom fields and picklist values, Soffront Group structure, Knowledge Base article count and category assignments, and any active workflow definitions. We pair this with a Twenty CRM configuration assessment: self-hosted Docker deployment or Twenty Cloud, Workspace structure, and whether the Tickets feature is enabled. The discovery output is a written migration scope, a field mapping document, and a Knowledge Base category mapping sheet.
Field inventory and mapping document
We extract the complete field list from every Soffront object including standard fields, custom fields, and picklist values. For each field we identify the Soffront field name, data type, and the corresponding Twenty CRM field name or the custom field we will create. This document is reviewed and signed off by the customer's Soffront admin before extraction begins. Custom picklist values are re-created in Twenty's schema before any records import.
Schema pre-creation in Twenty CRM
We create all required custom objects, custom fields, picklist values, and Workspace structures in Twenty CRM before any data import. This includes custom objects discovered in Soffront (created via Twenty's /metadata API), custom fields on standard objects, picklist value sets matching Soffront's picklist options, and Workspace configurations mapped from Soffront Groups. Schema is validated in a staging environment or with a test import before production migration begins.
Paginated data extraction from Soffront
We extract Soffront data object by object using paginated API calls with the Rowcount parameter set to 500 (or lower if the customer has a reduced API quota). For large activity histories we implement offset pagination to pull records in sequential chunks. Attachments are extracted separately with parent record references preserved. Knowledge Base articles are exported with their category assignments. The extraction outputs raw CSV files per object for transformation.
Data transformation and staging import
We transform extracted records according to the field mapping document. This includes renaming fields to Twenty's conventions, applying picklist value mappings, resolving Soffront Owner references to Twenty User email matches, splitting Projects into Task hierarchies, mapping Group memberships to Workspace memberships, and preparing Knowledge Base articles with category labels as fields. Transformed data is staged for import validation.
Production migration in dependency order
We run production migration in record-dependency order: Company (from Soffront Accounts), Person (from Soffront Contacts with CompanyId resolved), Workspace memberships (from Soffront Groups), Opportunity (with CompanyId, OwnerId, and pipeline stage resolved), Tasks and Events (with PersonId or CompanyId resolved), Custom Objects (with their lookup relationships), Project task hierarchies, Ticket records, and Knowledge Base articles. Each phase emits a row-count reconciliation report before the next phase begins. Attachments are uploaded last with parent record lookups confirmed.
Cutover, validation, and workflow handoff
We freeze Soffront writes during the cutover window, run a final delta migration of records modified during migration, and deliver the Knowledge Base category mapping document and the workflow inventory to the customer's admin team. We validate record counts against the source and spot-check a sample of records for accuracy. We support a hypercare window for reconciliation issues. We do not rebuild Soffront workflows as Twenty automation logic; that is delivered as a written document for the customer's admin to implement.
Platform deep dives
Soffront
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 4 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 Soffront and Twenty CRM.
Object compatibility
4 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
Soffront: Not publicly documented; rowcount parameter caps results at 500 records per call by default.
Data volume sensitivity
Soffront exposes a bulk API — large-volume migrations stream efficiently.
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 Soffront to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Soffront 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 Soffront
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.