CRM migration
Field-level mapping, validation, and rollback between RSoft CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
RSoft CRM
Source
Twenty CRM
Destination
Compatibility
9 of 11
objects map 1:1 between RSoft CRM and Twenty CRM.
Complexity
CModerate
Timeline
2-4 weeks
Overview
Moving from RSoft CRM to Twenty CRM is a structural migration from an India-centric, telephony-bundled platform to an open-source, self-hostable CRM with a GraphQL API and a clean interface that suits teams of 10 to 100 people. RSoft's export surface covers Leads, Contacts, Companies, Deals, and Tickets via CSV, but IVR call recordings and WhatsApp message threads live in RSoft-specific modules that do not appear in the export — we flag these gaps during scoping and transfer files separately where the customer requests it. RSoft's tier-gated custom field and workflow limits (capped at 5 on Standard and Advanced plans) routinely exceed the cap for teams migrating mid-growth, so we audit the plan tier and surface any fields that would be orphaned. Twenty's standard field model is intentionally lean — Person and Company objects ship with fewer built-in fields than HubSpot or Salesforce, which means we configure the destination schema (custom fields, custom objects, pipeline stages) before any data lands. Workflow definitions do not migrate; we deliver a written inventory of every active RSoft workflow for the customer's admin to rebuild in Twenty's workflow engine.
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 RSoft 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.
RSoft CRM
Contact
Twenty CRM
Person
1:1RSoft Contacts map to Twenty Persons. We map name fields, email, phone, address, lifecycle stage, and owner. RSoft's custom contact properties above the 5-field tier limit require manual review before import — any field exceeding the destination's plan limit is flagged and the customer decides which fields to create in Twenty before the migration begins. The Person.displayName is constructed from firstName and lastName if available; otherwise the full contact name string is used.
RSoft CRM
Lead
Twenty CRM
Person (lead status)
1:1RSoft Leads map to Twenty Persons with a lead status marker. We extract Lead source, status, score, assigned owner, and associated activities. RSoft's Lead-to-Contact conversion record is preserved as a Person record with a conversion_date field we add as a custom field. If Twenty's workspace uses the opportunities feature, leads that have moved to a deal stage may alternatively map to an Opportunity linked to the Person.
RSoft CRM
Company
Twenty CRM
Company
1:1RSoft Company records map directly to Twenty Company records. We map company name, industry, size, address, and owner. The Company-to-Person relationship is preserved by sequencing Companies first in the migration load order so that the Company record exists before any linked Person record is created in Twenty.
RSoft CRM
Deal
Twenty CRM
Opportunity
1:1RSoft Deals map to Twenty Opportunities. We map deal amount, probability, expected close date, owner, and pipeline stage. RSoft uses a drag-and-drop pipeline builder allowing multiple pipelines; each RSoft pipeline maps to a Twenty pipeline configured before migration. Closed-Won and Closed-Lost reasons from RSoft custom fields migrate as Opportunity custom fields in Twenty.
RSoft CRM
Pipeline Stage
Twenty CRM
Pipeline Stage
lossyRSoft custom stage names and probabilities map to Twenty pipeline stages. We extract the stage name, position, probability, and any stage-specific automation triggers and document them as Twenty stage configuration notes. Stage reordering is preserved by setting the sortOrder field in Twenty during pipeline setup.
RSoft CRM
Activities (calls, emails, SMS, notes)
Twenty CRM
Task or Event
1:1Activities logged against Contacts, Leads, or Deals migrate as Tasks in Twenty. Call logs from IVR are flagged as a gap because RSoft stores IVR call recordings in a separate module not included in CSV export — we identify the count and total duration of orphaned IVR call records during scoping and offer a separate file-transfer approach if the customer wants to preserve audio files. Standard call and email log entries migrate as Tasks with the activity type preserved in a custom field.
RSoft CRM
Ticket
Twenty CRM
Task (with custom status)
1:1RSoft Tickets migrate as Tasks in Twenty, with ticket status and priority mapped to custom task fields. RSoft's Ticket Management processes requests from email, online, phone, chat, and social media — the source channel is preserved in a custom field for audit. If Twenty's workspace uses a custom ticket object, we configure it during the schema design phase before import.
RSoft CRM
Custom Fields (excess of 5 on Standard/Advanced)
Twenty CRM
Custom Fields
lossyRSoft caps custom fields at 5 on Standard and Advanced plans. Any custom fields beyond that limit must be reviewed with the customer before import because they will be absent from the CSV export unless the customer is on the Customised plan. We audit the RSoft plan tier during discovery, list every custom field name and data type, and configure matching custom fields in Twenty before migration begins. Fields that exceed the destination plan's limits are flagged with a cost estimate for the appropriate Twenty plan tier.
RSoft CRM
Attachments
Twenty CRM
ContentDocument (via file transfer)
1:1RSoft does not expose document attachments via CSV export. Files linked to Contacts, Deals, or Tickets must be migrated separately via direct file transfer, not inline with record migration. We extract the list of attachment names and parent record IDs from the customer during discovery, bulk-transfer the files to a shared location, and attach them to the correct records in Twenty after the record migration completes using Twenty's file attachment API.
RSoft CRM
Tag
Twenty CRM
Tag
1:1Tags on Contacts, Leads, and Deals export via CSV and map as Tags in Twenty. We deduplicate tags during import and preserve the association with the parent record (Person, Company, or Opportunity) using Twenty's tag API. Tags used for lead scoring in RSoft are preserved as tag values rather than converted to a numeric score field unless the customer requests the transformation.
RSoft CRM
User and Owner
Twenty CRM
WorkspaceMember
1:1RSoft user accounts map to WorkspaceMember records in Twenty. We extract the full user roster from RSoft and map each to a corresponding Twenty workspace member by email match. Orphaned owner references — records in RSoft assigned to a user who will not have an account in Twenty — are flagged in a reconciliation queue before migration. The customer's admin provisions any missing workspace members before record import begins.
| RSoft CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Lead | Person (lead status)1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Activities (calls, emails, SMS, notes) | Task or Event1:1 | Fully supported | |
| Ticket | Task (with custom status)1:1 | Fully supported | |
| Custom Fields (excess of 5 on Standard/Advanced) | Custom Fieldslossy | Fully supported | |
| Attachments | ContentDocument (via file transfer)1:1 | Not supported | |
| Tag | Tag1:1 | Fully supported | |
| User and Owner | WorkspaceMember1: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.
RSoft CRM gotchas
Add-on cost stacking inflates the headline price
Custom fields and workflows are tier-gated
IVR call logs and WhatsApp conversations do not export via CSV
No publicly documented API rate limits or bulk endpoints
Record limits vary by plan tier
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 RSoft export audit
We audit the customer's RSoft portal across plan tier, object counts (Leads, Contacts, Companies, Deals, Tickets, Activities), custom field inventory, active workflows, and attachment volume. We verify the plan tier against the contract because custom field limits and record caps differ across Standard, Advanced, Enterprise, and Customised. We extract the CSV exports in dependency order (Companies, then Contacts, then Leads, then Deals, then Tickets) and flag any objects approaching RSoft's 25,000 or 50,000 record limits. We identify IVR call log and WhatsApp conversation gaps and present the customer with a file-transfer option for orphaned attachment data.
Twenty schema design and configuration
We configure the Twenty destination workspace before any data import. This includes adding standard fields (industry, website, phone type, jobTitle, department) to Person and Company that RSoft ships natively; configuring pipeline stages and probabilities to match the RSoft pipeline model; setting up custom fields to absorb RSoft custom field data beyond the 5-field tier cap; and designing the custom object schema if the customer uses RSoft custom objects on the Customised plan. Schema configuration uses Twenty's GraphQL /metadata API, deployed into the customer's Twenty workspace before the first CSV import.
Mapping document and migration order specification
We produce a written mapping document that specifies the CSV column-to-Twenty field mapping for every object, the custom field transformation logic, the tag deduplication strategy, the owner email-to-workspaceMember lookup table, and the exact load order. The mapping document is reviewed and signed off by the customer's admin before any migration run begins. This document also includes the workflow inventory: every RSoft workflow trigger, condition, and action is documented for rebuild in Twenty's workflow engine.
Sandbox migration and reconciliation
We run a full migration into a Twenty staging workspace using production-like data volume. The customer reconciles record counts, spot-checks 20-30 random records against the RSoft source, and signs off the mapping and schema before production migration begins. Any field mapping corrections, missing custom fields, or pipeline stage adjustments happen here. We do not proceed to production migration until the sandbox reconciliation report is approved.
Owner and user provisioning in Twenty
We extract every distinct RSoft user referenced on Contacts, Leads, Deals, and Tickets and match by email against the Twenty workspace members. Any RSoft owner without a matching Twenty workspace member goes to a reconciliation queue. The customer's admin provisions any missing workspace members (active or inactive depending on whether the original RSoft user is still with the team). Migration cannot proceed past record import because OwnerId references on Opportunities and Tasks must resolve at insert time.
Production migration in dependency order
We run production migration in record-dependency order: Companies (first, so Account records exist for Person lookups), Persons (from Contacts and Leads), Opportunities (from Deals with stage and probability mapped), Tasks (from Activities with type preserved), and Tickets (as Tasks with custom status fields). Each phase emits a row-count reconciliation report before the next phase begins. Attachments are transferred in parallel via file transfer and linked to the correct parent records after the record migration completes.
Cutover, validation, and workflow handoff
We freeze RSoft writes during the cutover window, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the workflow inventory document to the customer's admin team with recommended equivalents in Twenty's workflow engine. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild RSoft workflows as Twenty workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
RSoft CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across RSoft CRM 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
RSoft CRM: Not publicly documented.
Data volume sensitivity
RSoft 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 RSoft CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your RSoft 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 RSoft 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.