CRM migration

Migrate from OneHash CRM to Twenty CRM

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

OneHash CRM logo

OneHash CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

80%

8 of 10

objects map 1:1 between OneHash CRM and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from OneHash CRM to Twenty CRM is a migration from a forked ERPNext platform with Indian-market pricing and ERP breadth to a developer-first, open-source CRM built on a clean data model. OneHash organizes business data around Leads, Contacts, Opportunities, Quotations, Sales Orders, and Invoices, with extensive DocType-level customization inherited from ERPNext. Twenty CRM exposes a REST API for import with documented migration guidance, but it lacks native sequencing, has a limited public API feature set, and does not ship with a bulk export utility. We handle the ERPNext DocType schema discovery pass before export, extract all custom field definitions from the affected DocTypes, resolve OneHash INR-denominated billing flags during scoping, and use Twenty's REST API with batch chunking and parent-record lookup to land records in the correct order. Workflows, automations, and ERP module data (Employees, Chart of Accounts, Projects) do not migrate; we deliver a written inventory of these for your admin to rebuild in Twenty's workflow builder.

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

OneHash CRM logo

OneHash CRM

What's pushing teams away

  • Initial complexity requires a steep learning curve — G2 reviewers note the software is 'initially complex' even if it becomes usable with practice.
  • Performance and loading issues reported on larger datasets suggest the platform does not scale as smoothly as enterprise-grade alternatives.
  • Limited documentation and unclear API specifications make custom integrations and data extraction difficult without developer involvement.
  • Businesses with purely US or European operations may find the India-market pricing structure and rupee billing cumbersome for budgeting and invoicing.
  • Some reviewers note the platform's aggressive sales outreach via Calendly and spam booking calls creates a negative first impression, driving early churn.

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

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

OneHash CRM

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

OneHash Contacts follow ERPNext DocType conventions with first_name, last_name, email, phone, and organization linkage. They map 1:1 to Twenty's Person object. The OneHash organization linkage (stored as customer_name reference) resolves to a Twenty Organization record that we create before Person import so the relationship is satisfied at insert time. Email deduplication applies if duplicate Person records share the same email address.

OneHash CRM

Lead

maps to

Twenty CRM

Lead

1:1
Fully supported

OneHash Leads are a distinct DocType before conversion to Contact or Opportunity. We preserve the full lead history including source, status, and conversion log. The lead_status property maps to Twenty's Lead status field. Conversion metadata (converted_to_contact, converted_to_opportunity timestamps) migrates as custom fields on the Lead record if the customer requires the audit trail.

OneHash CRM

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

OneHash Opportunities track deal stages within Pipelines. We migrate stage names, amounts, probability, and party information (contact and organization references). Pipeline stage ordering is preserved via a stage-sequence map applied at import. OneHash opportunity_amount, probability, and weighted_amount map to Twenty's amount, probabilityPercent, and a computed pipeline value respectively.

OneHash CRM

Quotation

maps to

Twenty CRM

Custom Object (Quote equivalent)

1:1
Fully supported

OneHash Quotations carry line items linked to Items, with tax templates and terms. We map quotation line items to Twenty custom fields or a custom Quote object that we create in the destination schema. The quotation-to-opportunity linkage is preserved as a custom relationship field on the Opportunity. PDF attachments on Quotations migrate as file blobs linked to the parent record.

OneHash CRM

Sales Order

maps to

Twenty CRM

Custom Object (Order equivalent)

1:1
Fully supported

OneHash Sales Orders reference both Customers and Items and carry delivery and billing status flags. Order item rows map field-by-field. Since OneHash allows custom Item fields that may not exist in Twenty's standard schema, we pre-create any required custom fields on the destination Order object before import. Delivery and billing status flags transfer as custom status fields.

OneHash CRM

Customer

maps to

Twenty CRM

Organization

1:1
Fully supported

OneHash Customers are organization-level records linked to Contacts. We migrate the Customer record with its billing and shipping addresses and map the associated Contact relationship to Twenty's Person-Organization linkage. Organization domain from the Customer record maps to Twenty's domain field for enrichment compatibility.

OneHash CRM

Item

maps to

Twenty CRM

Custom Object (Product equivalent)

1:1
Fully supported

OneHash Items include product and service definitions with pricing, stock data, and custom attributes. Since OneHash Items can carry extensive custom fields specific to the business, we map standard fields (name, item_code, description, standard_rate) to a Twenty custom Product object and preserve custom attributes as additional custom fields on that object. Stock quantity fields are mapped where Twenty's schema supports them.

OneHash CRM

Custom Fields (DocType-specific)

maps to

Twenty CRM

Custom Fields

lossy
Fully supported

OneHash allows unlimited custom fields per DocType via ERPNext's Customize Form tool. These fields do not appear in standard API responses unless explicitly requested. We run a pre-migration discovery pass that introspects each DocType's custom field definitions via the API before mapping, ensuring no custom property is dropped during export. Custom field definitions are recreated in Twenty's schema before data import.

OneHash CRM

Attachments

maps to

Twenty CRM

Attachments

1:1
Mapping required

Documents attached to any DocType migrate as binary blobs. We preserve the filename and linkage to the parent record. Large attachments may require chunked download and upload due to API payload limits. We verify attachment integrity via checksum before upload and flag any attachments exceeding Twenty's file size limits for manual handoff.

OneHash CRM

Employee

maps to

Twenty CRM

Not migrated (separate engagement)

lossy
Fully supported

Employee records include designation, department, and salary structure. This is an ERP module object, not a CRM core object. We do not migrate Employees as part of standard scope. We deliver a written record of all Employee DocType fields and their definitions for the customer's admin to assess whether a separate HR migration or manual entry is appropriate in Twenty or a dedicated HR tool.

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.

OneHash CRM logo

OneHash CRM gotchas

Medium

OneHash is a fork of ERPNext with Indian-market pricing

Medium

Annual billing is mandatory for paid plans above the free tier

High

No publicly documented API rate limits or bulk export endpoints

Medium

Custom Fields are DocType-specific and require schema discovery

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

  • ERPNext DocType inheritance requires schema discovery before export

    OneHash CRM is a fork of ERPNext with Indian-market pricing, citing GNU GPL v3 in its footer. The underlying DocTypes, field types, and API conventions are inherited from ERPNext. When migrating away from OneHash, teams expecting a proprietary schema will encounter ERPNext conventions like naming conventions (snake_case field names), Link field types (foreign-key references to other DocTypes), and Dynamic Link fields (polymorphic references). We handle this by running a pre-migration schema discovery pass against each DocType, capturing the full field list including custom fields, before designing the Twenty import schema. Skipping this step results in dropped fields and broken lookups.

  • No publicly documented API rate limits or bulk export endpoints

    OneHash does not publish API rate limits or a dedicated bulk or batch export API in its public documentation. The platform inherits ERPNext's REST API but exposes it inconsistently across DocTypes. We discover rate limits dynamically during migration by monitoring 429 responses and backing off accordingly. For large data volumes, we recommend requesting a read-only API key with elevated limits from OneHash support before migration begins. Without elevated access, large record counts may require multiple iteration passes with exponential backoff, extending timeline.

  • INR billing reconciliation required before cutover

    OneHash uses INR-denominated annual billing with no monthly-commitment option above the free tier. Growth is billed at ₹23,512 annually. Teams migrating from OneHash often have INR-denominated subscription records, billing addresses, and currency settings that do not map directly to Twenty's USD pricing model. We surface the billing cadence during scoping and flag any currency mismatch in the customer's data. The migration itself does not handle subscription billing migration (that is a separate cancellation task with OneHash), but we flag the INR billing records in scope so the customer is aware before cutover.

  • Twenty post-upgrade app health status can show false outage during migration window

    Per documented challenges with Twenty CRM v1.x upgrades, app health status can display App outage due to pending migrations resulting from workspace schema changes. This can occur during the migration window if Twenty's internal migration system interprets incoming imports as pending schema updates. We monitor app health status throughout the import process and pause writes if an outage state is detected until the migration queue clears. This does not result in data loss but may temporarily extend the import window.

Migration approach

Six steps for a successful OneHash CRM to Twenty CRM data migration

  1. Discovery and schema audit

    We audit the source OneHash CRM portal across DocTypes, custom field definitions per DocType, pipeline count, active workflows, and record volume for each object. We pair this with a Twenty CRM workspace audit to confirm available API endpoints, custom object creation permissions, and any existing data that may create dedupe conflicts. The discovery output is a written migration scope that lists every DocType, every custom field, the target Twenty object mapping, and any DocType-level dependencies that require parent-record provisioning before import.

  2. DocType schema discovery pass

    We run a schema discovery pass against each OneHash DocType via the API, capturing the full field list including ERPNext-standard fields and DocType-specific custom fields. This pass surfaces Link fields (foreign-key references), Dynamic Link fields (polymorphic references), Table fields (child record arrays), and any custom fields added via the Customize Form tool. The output is a per-DocType field manifest used to design the Twenty import schema, including any custom fields that need pre-creation in Twenty before data import begins.

  3. Twenty schema provisioning and sandbox validation

    We pre-create any custom fields and custom objects required in Twenty's schema before any data import. This includes recreating OneHash custom fields on the equivalent Twenty objects, creating custom Quote and Order objects if quotation and sales order migration is in scope, and configuring any required picklist values or relationship fields. Schema is validated in a Twenty sandbox or test workspace before production migration begins. Any field type mismatches (OneHash currency vs Twenty number, OneHash Datetime vs Twenty date) are resolved here.

  4. Parent-record import first

    We run import in dependency order: Organizations (from OneHash Customers) are imported before Persons (from OneHash Contacts) so that Organization lookups are satisfied at Person insert time. Opportunities are imported after Organizations and Persons so that the party references resolve. Quotations and Sales Orders import last because they reference Opportunities and Items. Each phase emits a row-count reconciliation report before the next phase begins, and any records that fail import are held in a reconciliation queue for review.

  5. Custom field and attachment migration

    After core records are imported and reconciled, we migrate DocType-level custom field values by updating the custom field columns on each imported record. Attachments are migrated as file blobs linked to the parent record, with integrity verification via checksum. Large attachments exceeding Twenty's file size limits are flagged for manual handoff.

  6. Cutover, validation, and workflow inventory handoff

    We freeze OneHash writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver a written inventory of all active OneHash workflows and automations for the customer's admin to rebuild in Twenty's workflow builder. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild workflows as code inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

OneHash CRM logo

OneHash CRM

Source

Strengths

  • Free starter plan for up to 2 users with chat history and inbox support, per official pricing page.
  • All-in-one bundling of CRM with ERP modules reduces tool sprawl for small and mid-sized businesses.
  • Multi-currency and multi-language support enables global operations from a single platform.
  • Workflow automation for approvals, role assignments, and repetitive tasks, per product feature documentation.
  • Strong customer support responsiveness highlighted across multiple review sources.

Weaknesses

  • Steep initial learning curve due to ERPNext-inherited complexity, cited by G2 reviewers.
  • Limited public API documentation makes programmatic data extraction difficult without reverse-engineering.
  • Performance degrades on large datasets, according to review themes around loading and lag issues.
  • Limited customization compared to true ERPNext forks; white-label and DocType customization are restricted relative to self-hosted ERPNext.
  • Aggressive outbound sales tactics, including Calendly booking spam, noted in Trustpilot reviews.
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 OneHash CRM 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

    OneHash CRM: Not publicly documented — discovered dynamically during migration.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your OneHash CRM 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 two and four weeks for accounts under 10,000 Contacts and 3,000 Opportunities with no extensive DocType-level custom fields. Migrations with multiple custom DocTypes, large quotation and sales order histories, or a need to reconcile INR billing records move to four to six weeks because of the schema discovery pass, custom field extraction, and parent-record lookup resolution. Twenty's own implementation guidance (TaskRhino and Twenty's documentation) cites two to four weeks for standard CRM migrations and four to six weeks for complex enterprise setups.

Adjacent paths

Related migrations to explore

Ready when you are

Move from OneHash CRM.
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