CRM migration
Field-level mapping, validation, and rollback between Olqan and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Olqan
Source
Twenty CRM
Destination
Compatibility
6 of 12
objects map 1:1 between Olqan and Twenty CRM.
Complexity
BStandard
Timeline
3-6 weeks
Overview
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.
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 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
Twenty CRM
Person
1:1Olqan 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
Twenty CRM
Company
1:1Olqan 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
Twenty CRM
Opportunity
1:1Olqan 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
Twenty CRM
Pipeline Stage
lossyEach 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
Twenty CRM
Task
1:1Olqan 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
Twenty CRM
Task or Custom Object
1:1Olqan 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
Twenty CRM
Custom Object
lossyOlqan 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
Twenty CRM
Custom Object or Task Grouping
lossyOlqan 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
Twenty CRM
Task (billable)
lossyOlqan 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
Twenty CRM
Custom Object
lossyOlqan 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
Twenty CRM
User
1:1Olqan 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
Twenty CRM
Custom Fields
lossyOlqan 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.
| Olqan | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal Stage | Pipeline Stagelossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Ticket | Task or Custom Object1:1 | Fully supported | |
| Employee | Custom Objectlossy | Fully supported | |
| Project | Custom Object or Task Groupinglossy | Fully supported | |
| Time Log | Task (billable)lossy | Fully supported | |
| Invoice | Custom Objectlossy | Fully supported | |
| User and Owner | User1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required |
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.
Olqan gotchas
No mobile app for iOS or Android
Limited third-party integration ecosystem
Mixed-object exports require post-processing
Newer platform with evolving feature set
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 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.
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.
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.
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.
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.
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
Olqan
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Olqan and Twenty CRM.
Object compatibility
3 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
Olqan: Not publicly documented.
Data volume sensitivity
Olqan 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 Olqan to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Olqan
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.