CRM migration

Migrate from OneSuite to Twenty CRM

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

OneSuite logo

OneSuite

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

objects map 1:1 between OneSuite and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from OneSuite to Twenty CRM restructures your data around a different entity model. OneSuite combines CRM, project management, invoicing, and client portals in one subscription; Twenty is a self-hosted or SaaS CRM focused on People, Companies, and Opportunities with a modern UI and open-source codebase. The core migration maps OneSuite Clients to Twenty Companies and People, OneSuite Leads to Twenty People with a lead status field, and OneSuite Projects to a Twenty custom object that preserves the client relationship. OneSuite's lack of a bulk REST API means we extract via the documented CSV and JSON import paths, chunking large datasets to avoid truncation. We do not migrate Projects-as-tasks, Workflows, automations, or client portal configurations; we deliver a written inventory of these for your admin to rebuild in Twenty.

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

OneSuite logo

OneSuite

What's pushing teams away

  • Limited customisation options restrict tailored workflows for teams with non-standard agency processes.
  • Mobile app lacks key functionalities present in the desktop product, limiting field/remote work scenarios.
  • Reporting tools are basic — depth and flexibility lag behind dedicated PSA or BI tools.
  • Performance issues emerge with large data volumes (high project count, long history retention).
  • Workflow automation primitives are minimal — teams that automate heavily on Monday.com or ClickUp find OneSuite restrictive.

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

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

OneSuite

Client

maps to

Twenty CRM

Company and People

1:many
Fully supported

OneSuite Clients hold both company and contact data on a single record (contact details, company info, social links, revenue, ICP status). We split this into a Twenty Company record (company-level fields) and a Twenty People record (contact-level fields) linked to the Company via a relationship field. The split is computed using the presence of company name, domain, and revenue fields to determine which fields belong to Company versus People.

OneSuite

Lead

maps to

Twenty CRM

People

1:1
Fully supported

OneSuite Leads map directly to Twenty People records with a custom lead_status field preserving the original OneSuite stage (New, Contacted, Qualified, Converted). Source attribution and scoring values from OneSuite migrate as custom fields on People. We use email address as the dedupe key during import to avoid creating duplicate People records for Leads that share an email with an existing Client contact.

OneSuite

Project

maps to

Twenty CRM

Custom Object (Project)

1:1
Fully supported

Twenty has no native project object. We create a Project custom object in Twenty's Data Model with fields for name, description, status, client (linked to the Company record), start date, end date, and budget. The Client-to-Project relationship is preserved by linking the custom object's company field to the migrated Company record. If the customer uses Project templates, we migrate template metadata separately and flag the template automation logic for manual rebuild.

OneSuite

Invoice

maps to

Twenty CRM

Note (with attachment)

lossy
Fully supported

OneSuite Invoices contain line items, tax rates, payment status, and currency. Twenty has no native invoice object. We migrate invoice records as Note records attached to the relevant Company or People record, with the invoice number, amount, status, and currency preserved in the Note body and as custom fields. Complex multi-currency invoices or custom tax configurations are flagged for manual reconciliation post-migration.

OneSuite

Document

maps to

Twenty CRM

Attachment on Custom Object

1:1
Fully supported

OneSuite Documents can be associated with Clients or Projects. We migrate document metadata (name, type, URL, created date) as attachments on the relevant Company, People, or Project custom object. Binary file content is not migrated directly; we transfer URLs and flag any Documents exceeding the source account's tier storage cap (30 GB Freelancer, 60 GB Growing Agency) for a separate post-migration file transfer step.

OneSuite

Custom Fields

maps to

Twenty CRM

Custom Fields

lossy
Mapping required

OneSuite custom fields are flattened directly onto entities with slug-based keys (e.g. clientTier, projectPriority). We parse the API response, create equivalent typed fields in Twenty's Settings → Data Model before migration, and map each slug to the destination field name. If a destination field does not exist, we flag it for creation and hold that entity's migration batch until the field is provisioned. This prevents custom field values from being silently dropped during import.

OneSuite

Member

maps to

Twenty CRM

Member (User)

1:1
Fully supported

OneSuite Members are team users assigned to Projects, Clients, and Invoices. We extract all Members referenced across entities and map them to Twenty Members. We resolve by email match. Any OneSuite Member without a matching Twenty User is held in a reconciliation queue. Per Twenty's documentation, users must be invited and accept before importing records that reference them, otherwise Owner relationships cannot be mapped.

OneSuite

Pipeline Stage

maps to

Twenty CRM

Custom Field Options

lossy
Fully supported

OneSuite Lead pipeline stages are user-defined. We map stage names and ordering to a custom select field on the People object in Twenty. Stages with custom automation or scoring rules are flagged in the migration inventory for manual reconfiguration in Twenty because automation logic cannot be replicated in the migration scope.

OneSuite

Templates

maps to

Twenty CRM

Note (template metadata)

1:1
Mapping required

OneSuite Project and Document templates contain metadata and field structure. We migrate template names, descriptions, and field definitions as Note records on the relevant objects. Template automation logic (workflow triggers, auto-assignment) cannot be replicated automatically and is included in the written automation inventory delivered post-migration.

OneSuite

Files

maps to

Twenty CRM

Attachment

1:1
Mapping required

OneSuite Files attach to Projects, Tasks, or Invoices. We transfer file metadata (name, type, URL, size) as attachments on the relevant migrated record. Files approaching or exceeding plan storage caps (30 GB Freelancer, 60 GB Growing Agency) are flagged before migration so the customer can decide whether to upgrade OneSuite storage, archive files externally, or migrate file URLs only.

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.

OneSuite logo

OneSuite gotchas

High

No documented bulk API forces CSV or JSON UI import for migrations

Medium

Storage tier caps apply to imported file content and attachments

Medium

API custom field flattening requires slug-aware remapping

Medium

Lead count capped on lower tiers may require plan upgrade before migration

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

  • No bulk API on OneSuite requires CSV chunk sequencing

    OneSuite's API documentation covers standard CRUD endpoints but does not include a bulk or batch endpoint. We work around this using the officially documented CSV and JSON import/export paths. For accounts with thousands of records, we chunk large exports into multiple files sized to avoid OneSuite's import buffer truncation, which silently drops records when a file exceeds the threshold. Without explicit chunking, accounts with 5,000+ records risk incomplete migration on the export side before Twenty even receives the data.

  • Twenty requires pre-created fields before CSV import

    Twenty's CSV import creates records, not fields. Per Twenty's documentation, all custom fields must exist in Settings → Data Model before any CSV import begins. OneSuite's custom fields are flattened onto entities with slug-based keys, meaning we must first parse all custom field slugs, map each to a typed Twenty field (text, number, date, select), and have the customer or FlitStack AI provision those fields in Twenty before migration runs. Skipping this step causes custom field values to be silently discarded during import.

  • Project records have no native destination object

    OneSuite Projects contain tasks, milestones, and client relationships. Twenty has no native project object, so Projects must be migrated as a custom object. We create the Project custom object in Twenty's Data Model during the schema setup phase, but this adds a configuration step not present in migrations between platforms with aligned data models. If the customer uses Project templates with automation, those automations are documented but not migrated.

  • Invoice records have no native destination object

    OneSuite Invoices carry line items, tax rates, payment status, and currency tied to Clients. Twenty has no invoice object. We migrate invoice metadata as Note records with custom fields and flag complex multi-currency or custom tax configurations for manual reconciliation. The invoice-to-payment relationship and Stripe/Quickpay payment links do not migrate; the customer re-establishes payment processing in their chosen accounting tool post-migration.

  • Member invites must precede record import in Twenty

    Twenty requires that team Members exist in the workspace before importing records that reference them as Owner or Assignee. We extract all distinct OneSuite Members referenced across records, reconcile by email against Twenty's Members list, and hold any record batches that reference unprovisioned users. If Members are not invited and accepted before their related records are imported, Owner relationships resolve as null, requiring a post-migration cleanup pass.

Migration approach

Six steps for a successful OneSuite to Twenty CRM data migration

  1. Discovery and CSV export path design

    We audit the OneSuite account for total record counts across Clients, Leads, Projects, Invoices, Documents, and Members. We assess custom field usage, storage volume, lead count against the plan tier cap (10,000 on Freelancer/Solopreneur), and whether any account is approaching its storage ceiling (30-60 GB). We design the CSV export sequencing: chunk files by entity type and size, flag any entities exceeding OneSuite's import buffer, and produce a written migration scope before any extraction begins.

  2. Twenty workspace preparation and schema design

    We create the destination schema in Twenty: custom objects (Project), custom fields on Companies, People, and Opportunities matching the parsed OneSuite custom field slugs, and select options for pipeline stages. We configure any needed picklist values before migration. We then invite all team Members via Twenty's Members settings and confirm acceptance before record import begins, because Owner relationships cannot be resolved without provisioned users.

  3. Data extraction and transformation

    We extract data from OneSuite using the documented CSV export paths, chunking by entity type. We apply transformations: Client split into Company and People, custom field slug remapping to typed Twenty fields, date format normalization, and Owner resolution by email against the Twenty Member list. Records with unmapped Owners or missing required fields go to a reconciliation queue for the customer's admin to resolve before the next import batch.

  4. Sandbox migration and reconciliation

    We run a full migration into a Twenty test workspace using production-like data volume. The customer's admin reconciles record counts (Companies in, People in, Projects in, Invoices in), spot-checks 25-50 records against the OneSuite source, and validates that custom field values transferred correctly and that relationships (Client-to-Project, Member assignments) resolved as expected. Schema corrections happen here before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Members validated, then Companies (from OneSuite Clients), then People (contacts split from Clients plus migrated Leads), then Projects as custom objects with Company lookup resolved, then Invoices as Note records with custom fields, then Documents and Files as attachments, then activity history if present. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation inventory handoff

    We freeze OneSuite writes during cutover and run a final delta migration of any records modified during the migration window. We enable Twenty as the system of record. We deliver the automation inventory documenting every OneSuite workflow, template automation, and client portal configuration requiring rebuild in Twenty. We do not rebuild automations, sequences, or portal configurations as part of the migration scope; those are documented for the customer's admin to rebuild. We support a one-week hypercare window for reconciliation issues raised during initial use.

Platform deep dives

Context on both ends of the pair

OneSuite logo

OneSuite

Source

Strengths

  • Unified CRM, project management, invoicing, and client portal in a single subscription.
  • Built-in Stripe and Quickpay integration for invoice payment collection.
  • White-label client portal available on higher tiers for agency branding.
  • Lead pipeline with scoring and source tracking for sales-ready teams.
  • Per-seat pricing is predictable with unlimited clients, projects, and invoices on all paid tiers.

Weaknesses

  • No publicly documented bulk API endpoints for automated migration at scale.
  • Storage limits are tier-gated and may require manual handling of large file archives.
  • Mobile app is listed as upcoming, limiting field access for some teams.
  • Enterprise pricing is not published, requiring a sales contact for larger teams.
  • API documentation is partially incomplete, making full schema discovery necessary before migration.
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 OneSuite 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

    OneSuite: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 Clients and 5,000 Leads with no custom objects or complex pipeline stages. Migrations with Projects requiring Custom Object creation in Twenty, large Documents volumes with storage triage, or multiple OneSuite plan tiers with different lead caps move to six to ten weeks because of the schema pre-work, custom field provisioning in Twenty, and CSV chunk sequencing on the export side.

Adjacent paths

Related migrations to explore

Ready when you are

Move from OneSuite.
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