CRM migration

Migrate from Olqan to Twenty CRM

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

Olqan logo

Olqan

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

50%

6 of 12

objects map 1:1 between Olqan and Twenty CRM.

Complexity

BStandard

Timeline

3-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Olqan to Twenty CRM is a CRM-focused migration that requires parsing Olqan's unified export into discrete object streams, mapping custom fields to Twenty's open data model, and resolving contact-to-company and deal-to-contact relationships in dependency order. Olqan's broad modules cover CRM, Projects, HR, and Finance; we migrate the CRM layer (Contacts, Companies, Deals, Tasks, and Tickets) as first-class records and handle the Project, HR, and Finance data as custom objects or tagged fields depending on what the customer needs retained. Twenty's self-hosted option gives teams data ownership and GPL-licensed customization, but it also means the customer manages their own upgrade path. We flag this during scoping for teams considering self-hosting versus Twenty's managed cloud offering. Workflows, automations, and integrations built in Olqan do not migrate; we deliver a written inventory for manual rebuild in Twenty's automation layer or a workflow tool of the customer's choice.

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

Olqan logo

Olqan

What's pushing teams away

  • Missing mobile app limits access to the platform outside of desktop browsers, frustrating field teams and on-the-go users.
  • Limited third-party integrations restrict connectivity with existing tools, requiring manual workarounds or custom development.
  • Platform immaturity means some features do not function as documented, requiring workarounds or waiting for patches.
  • Integration challenges cause data synchronization issues with external systems, creating duplicate records or missed updates.

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

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

Olqan

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Olqan Contacts map to Twenty's Person object. Standard fields (name, email, phone, job title) transfer directly. The Olqan lifecycle stage property maps to a custom field on Person since Twenty uses a different stage model. We also map the contact's associated company link and owner assignment, resolving the Olqan owner email to a Twenty user record during import.

Olqan

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Olqan Companies map directly to Twenty's Company object. Company name, domain, industry, size, and address fields migrate as typed fields. The Company object in Twenty serves as the Account-level parent for Person records, so we create all Companies before importing Persons to satisfy the lookup dependency. Olqan company domain becomes the Website field on Twenty Company.

Olqan

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Olqan Deals map to Twenty's Opportunity object. Deal name, value, stage label, and probability migrate directly. Olqan's pipeline assignment maps to a Twenty pipeline configuration we set up during schema design. Closed-won and closed-lost reasons from Olqan custom fields migrate to custom fields on the Twenty Opportunity record.

Olqan

Deal Stage

maps to

Twenty CRM

Pipeline Stage

lossy
Fully supported

Each Olqan deal pipeline and its stage values map to a Twenty pipeline with corresponding stage records. Stage probabilities migrate as percentage values. We configure the pipeline in Twenty before Deal migration begins so that stage values are valid at import time rather than defaulting to a catch-all stage.

Olqan

Task

maps to

Twenty CRM

Task

1:1
Fully supported

Olqan Tasks map to Twenty's Task object. Independent tasks and tasks nested within projects both migrate as Task records, with parent-child nesting preserved as a custom parent_task_id field where Twenty's current schema supports it. Task title, description, due date, assignee, and status migrate directly. Tasks linked to specific Contacts or Deals carry the appropriate Twenty ID references resolved during the import phase.

Olqan

Ticket

maps to

Twenty CRM

Task or Custom Object

1:1
Fully supported

Olqan support Tickets migrate to Twenty as Task records with a custom ticket_status field, or as a custom object depending on the customer's preference during scoping. Ticket priority, agent assignment, customer association, and conversation threads migrate. The conversation history is preserved as Task description or as a linked Note if the thread is long-form.

Olqan

Employee

maps to

Twenty CRM

Custom Object

lossy
Fully supported

Olqan Employee records have no direct Twenty CRM equivalent since Twenty is CRM-focused rather than an HR platform. We create a custom Employee object in Twenty with fields for job title, department, start date, contact email, and manager hierarchy. Employee-to-Employee manager lookups resolve by email match. HR data such as payroll, leave balances, and performance reviews are out of scope for migration to Twenty's CRM model.

Olqan

Project

maps to

Twenty CRM

Custom Object or Task Grouping

lossy
Fully supported

Olqan Projects migrate as a custom Project object in Twenty with a name, description, status, and milestone list. Individual tasks within a project link to the Project record via a custom lookup field. Time logs associated with Olqan Projects migrate as Task records with a billable flag and hours field. If the customer prefers not to carry Project data into Twenty, we flag this during scoping and exclude it from the migration scope.

Olqan

Time Log

maps to

Twenty CRM

Task (billable)

lossy
Fully supported

Olqan Time Logs associated with tasks or projects migrate as Task records with the billable flag set and hours recorded. Time logs not linked to a task are attached to the parent Project record. Duration and date migrate as typed fields. Unbilled time entries with no project association migrate as standalone Task records for reconciliation.

Olqan

Invoice

maps to

Twenty CRM

Custom Object

lossy
Fully supported

Olqan Invoices migrate as a custom Invoice object in Twenty with line item data stored in a custom line_items JSON field or as related custom records. Invoice header fields (total, status, payment terms) migrate directly. Historical paid invoices retain their original amounts and dates. Since Twenty has no native invoicing module, customers seeking continued invoice generation should evaluate Twenty's custom object capabilities against their workflow needs or maintain a separate billing tool.

Olqan

User and Owner

maps to

Twenty CRM

User

1:1
Fully supported

Olqan Users and Owners map to Twenty User records. We match by email address, which serves as the unique identifier. Any Olqan Owner without a matching Twenty User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Olqan users migrate as inactive Twenty users to preserve historical assignment on closed deals and completed tasks.

Olqan

Custom Fields

maps to

Twenty CRM

Custom Fields

lossy
Mapping required

Olqan custom fields on Contacts, Companies, Deals, Tasks, and Tickets migrate to Twenty custom fields on the corresponding objects. We detect field data types (text, number, date, checkbox, dropdown) and map them to the equivalent Twenty field type. Custom field labels are preserved. Fields on excluded objects (HR, Finance modules) are documented in the custom field inventory but not migrated unless the customer requests a custom object for that data.

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.

Olqan logo

Olqan gotchas

Medium

No mobile app for iOS or Android

Medium

Limited third-party integration ecosystem

Low

Mixed-object exports require post-processing

Low

Newer platform with evolving feature set

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

  • Self-hosted Twenty upgrades can blank the CRM view

    GitHub issue #14705 documents a case where upgrading a self-hosted Twenty instance from version 1.4.0 to 1.6.7 resulted in a largely blank CRM interface despite the database migrations completing without error. For customers moving from Olqan's cloud-only platform to Twenty's self-hosted option, we flag this risk during scoping. We recommend upgrading in a staging environment before production, validating that all migrated records render correctly post-upgrade, and maintaining a database backup before applying any version jump larger than one minor release.

  • Mixed-object Olqan exports require post-processing before import

    Olqan's export functionality can bundle records from its CRM, Project, HR, and Finance modules into a single download file. We handle this by parsing the export into separate object streams keyed on Olqan's object type identifiers before loading into Twenty. Customers should expect a manual verification window to confirm that object boundaries are correctly set. Any records with an ambiguous object type are flagged in the reconciliation report for the customer's review before final commit.

  • Workflows, automations, and integrations do not migrate

    Olqan's automation features (task triggers, pipeline automation, HR workflows) are platform-specific and do not transfer to Twenty's automation model. We do not migrate them as code. We deliver a written inventory of every active Olqan automation with its trigger, conditions, and actions, and the customer rebuilds them in Twenty using Twenty's built-in automation tools or an external workflow platform like Make or n8n. Integration connections (Olqan's Google, Slack, Stripe, and Customer.io links) also do not migrate and must be re-established in Twenty or replaced.

  • Twenty's custom object schema requires pre-creation via metadata API

    Custom objects in Twenty require creation via the /metadata API before data import begins. This means the custom Employee, Project, and Invoice object schemas are created in a pre-migration step, before any records load. We coordinate this schema deployment with the migration timeline and validate the object names and field types match the Olqan source fields before the production migration phase begins. If the customer adds new custom fields in Olqan after schema creation, those fields require a schema update before the delta migration.

Migration approach

Six steps for a successful Olqan to Twenty CRM data migration

  1. Discovery and scoping audit

    We audit the Olqan workspace across all active modules: CRM (Contacts, Companies, Deals), Projects (tasks, time logs, milestones), HR (employee profiles), Finance (invoices), and Tickets. We count records per object, identify custom fields and their data types, map owner and assignee relationships, and flag any Olqan-specific features (lifetime deal pricing, custom module configurations) that affect migration scope. The audit output is a written scope document with object-level record counts, a custom field inventory, and a recommendation on which Olqan modules to migrate into Twenty CRM versus exclude from scope.

  2. Twenty schema design and custom object creation

    We design Twenty's target schema based on the scoping audit. For standard objects (Person, Company, Opportunity, Task), we map Olqan fields directly and configure pipeline stages. For custom objects (Employee, Project, Invoice), we create the schema via Twenty's metadata API before any data migration begins, defining field types, lookups, and any validation rules the customer requires. We run a schema validation in a Twenty staging environment to confirm object creation succeeds and field types are correctly set before production migration.

  3. Test migration and reconciliation

    We run a full migration into a Twenty staging environment using production-like data volume from Olqan. The customer reconciles record counts (Persons, Companies, Opportunities, Tasks, and any custom object records), spot-checks 25-50 records against the Olqan source, and verifies that parent-child relationships (Person linked to Company, Opportunity linked to Person and Company) are preserved correctly. Any mapping corrections happen in this phase. The customer signs off on the test migration before production migration begins.

  4. Owner and user reconciliation

    We extract every distinct Olqan User and Owner referenced on CRM records and match by email against the Twenty destination's user table. Any Olqan owner without a matching Twenty user goes to a reconciliation queue for the customer's admin to provision. This step must complete before CRM record migration begins because OwnerId references are required on Opportunity and Task records in Twenty.

  5. Production migration in dependency order

    We run production migration in record dependency order: custom object schemas (verified from staging), Persons, Companies, Opportunities, Tasks, Tickets, and custom object records. Each phase emits a row-count reconciliation report before the next phase begins. Parent-record lookups (CompanyId on Person, PersonId and CompanyId on Opportunity) are resolved before insert. Olqan's mixed-module export is parsed into separate object streams before loading. Activity history (Tasks and Notes) migrates last to ensure all parent records exist.

  6. Cutover and automation rebuild handoff

    We freeze Olqan writes during cutover, run a final delta migration of any records created or modified during the migration window, then validate the final state in Twenty. We deliver a written automation and integration inventory document for the customer's admin team to rebuild Olqan workflows in Twenty or an external workflow tool. We support a brief post-migration window to resolve reconciliation issues raised by the customer's team. We do not rebuild Olqan automations as Twenty automations inside the migration scope.

Platform deep dives

Context on both ends of the pair

Olqan logo

Olqan

Source

Strengths

  • Combines CRM, project management, HR, finance, and ticketing in a single platform
  • Intuitive interface with low learning curve for non-technical users
  • Responsive customer support willing to build custom features
  • Automation capabilities across multiple business functions
  • Lifetime deal options available for cost-conscious buyers

Weaknesses

  • No mobile app limits accessibility for remote or field-based teams
  • Third-party integration ecosystem is limited compared to established CRMs
  • Platform is relatively new with some features still maturing
  • Documentation coverage may be incomplete for advanced or edge-case scenarios
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. 3 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 Olqan and Twenty CRM.

  • Object compatibility

    B

    3 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

    Olqan: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Olqan 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 six weeks for accounts under 10,000 Contacts and 2,000 Deals with no custom objects. Migrations that include Olqan's Project, HR, or Finance modules as custom objects, or that involve large Ticket histories with conversation threads, move to eight to fourteen weeks because of custom object schema creation, multi-module export parsing, and relationship resolution across non-standard object types.

Adjacent paths

Related migrations to explore

Ready when you are

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