CRM migration
Field-level mapping, validation, and rollback between Metis CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Metis CRM
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Metis CRM and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Metis CRM to Twenty CRM is a client-centric migration with an API-access constraint on the source side. Metis has no documented public REST API, so all extraction runs through its per-zone CSV exports (Clients, Opportunities, Jobs, People, Timesheets, Expenses). We extract these zones, resolve parent-child relationships across the import sequence, and write the records into Twenty through its GraphQL API or CSV import endpoints. Metis's Jobs map to Twenty Deals with a pipeline and stage design session before migration. People map to Contacts with their associated Company resolved from the Client lookup. Timesheet entries with an orphan Job association require pre-migration reconciliation because Twenty has no standalone time tracking object outside the Activity timeline. We do not migrate Metis Resourcing Reports because they are view exports, not transactional records. Receipt images and expense attachments travel as a parallel file transfer outside the primary data migration. Workflows, automations, and quote templates in Metis do not migrate; we deliver a written inventory for the customer's admin to rebuild in Twenty's settings.
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 Metis 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.
Metis CRM
Client
Twenty CRM
Company
1:1Metis Client records map directly to Twenty Company. The Client's name, address, contact email, and phone fields map to Twenty's Company standard fields. We use Client name as the dedupe key during import. Company is the first object inserted because People and Opportunities both carry a Client lookup that must be resolved before child record import.
Metis CRM
People
Twenty CRM
Contact
1:1Metis People records map to Twenty Contact. We extract role, contact details (email, phone, address), and the linked Client to resolve the Twenty Company foreign key. The Person's name fields map to Contact's display name and email. Role information migrates to a custom Contact field or the job title standard field depending on the customer's scoping preference.
Metis CRM
Opportunity
Twenty CRM
Deal
1:1Metis Opportunity records map to Twenty Deal. Stage, value, and close date transfer directly. The Opportunity's linked Client resolves to the Twenty Company that was created first in the import sequence. Pipeline in Metis maps to a Twenty pipeline that we configure during schema setup before migration begins.
Metis CRM
Job
Twenty CRM
Deal (project variant)
1:1Metis Jobs are project records with job costing, status, and dates. They map to Twenty Deals with a custom field job_type__c set to 'project' to distinguish from Opportunities in the same pipeline. Job costing fields migrate to custom Deal fields. We run Jobs after Opportunities in the import sequence because both are child objects of Client but Jobs may carry richer cost data that the customer wants visible in Twenty reporting.
Metis CRM
Timesheet
Twenty CRM
Task + Event
1:manyMetis Timesheet entries map to Twenty Activity records. Billable time entries with a linked Job map to Task records with the Job's Deal as the WhatId. Non-billable entries map to Event records. Duration, date, and billable flag transfer to Task or Event fields. Timesheets without a linked Job (orphan entries) go to a reconciliation queue before migration; the customer chooses to assign them to a default placeholder Deal, skip them, or create placeholder Deals.
Metis CRM
People Expenses
Twenty CRM
Custom Expense Object
lossyMetis People Expenses map to a Twenty custom object (expense__c) with fields for amount, date, category, and person reference. Receipt images do not embed in the CSV export and migrate via parallel file transfer. Each expense record in the migration log carries a image_reattachment note instructing the customer to re-link the receipt file in Twenty after migration. We do not use the Xero-friendly People Expenses export variant as a migration source; we extract the standard zone CSV and handle Xero mapping as a separate destination-side concern.
Metis CRM
Central Expenses
Twenty CRM
Custom Expense Object (agency-level)
lossyMetis Central Expenses (agency-level overhead) map to the same Twenty expense__c custom object with an additional field expense_scope__c set to 'central' to differentiate from People Expenses. Receipt images handle identically to People Expenses — parallel file transfer with re-attachment notes in the migration log.
Metis CRM
Owner (Person-level)
Twenty CRM
User
1:1Metis People records tagged as team members (not just clients) map to Twenty User accounts. We resolve by email match. If a matching Twenty User does not exist, the record is held in the Owner reconciliation queue and the customer provisions the User before record import resumes.
Metis CRM
Resourcing Report
Twenty CRM
Not migrated (view export)
1:1Metis Resourcing Reports are filtered views combining People availability with Job assignments — not transactional records. The underlying data (People, Jobs, time allocations) migrates separately. Twenty has no native resourcing view; the community recommends pairing with Metabase or another BI tool for utilization reporting. We flag this gap in the migration inventory and describe the data sources available for rebuilding the report in a BI layer.
Metis CRM
Xero-friendly People Expenses
Twenty CRM
Not used as migration source
1:1The Xero-friendly export format is a destination-specific schema variant designed for direct Xero import. It is not a general migration source format. We extract the standard People Expenses zone CSV and handle any Xero mapping as a separate transformation step if the customer requires it.
| Metis CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | Company1:1 | Fully supported | |
| People | Contact1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Job | Deal (project variant)1:1 | Fully supported | |
| Timesheet | Task + Event1:many | Fully supported | |
| People Expenses | Custom Expense Objectlossy | Mapping required | |
| Central Expenses | Custom Expense Object (agency-level)lossy | Mapping required | |
| Owner (Person-level) | User1:1 | Fully supported | |
| Resourcing Report | Not migrated (view export)1:1 | Mapping required | |
| Xero-friendly People Expenses | Not used as migration source1:1 | Not 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.
Metis CRM gotchas
No public API forces CSV-only migration paths
Receipt images exported as separate files outside the main CSV
Orphan time entries without a linked Job
Xero-friendly export is a destination format, not a source object
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
Source export and pre-migration audit
We guide the customer through exporting all Metis zone CSVs: Clients, Opportunities, Jobs, People, Timesheets, People Expenses, Central Expenses, and the Resourcing Report underlying data. We audit the exports for orphan time entries (Timesheets without a Job link), missing receipt images, and Client-to-People relationship completeness. We produce a pre-migration audit report that lists record counts per zone, flags the orphan reconciliation decisions required, and estimates the attachment re-attachment scope. The customer resolves the orphan timesheet decisions before we begin the data import.
Destination schema design and pipeline configuration
We design the Twenty destination schema based on the customer's object requirements. This includes creating the expense__c custom object with the required fields (amount, date, category, person reference, scope flag), configuring the Deal pipeline with stages mapped from Metis Opportunity and Job statuses, and setting up any custom fields required for job costing and person role data. We also configure the Twenty pipeline structure (single or multiple pipelines based on the customer's Metis setup) before any data insert begins.
Owner and user provisioning
We extract every distinct team member (People records with team role) from the Metis export and match by email against the Twenty destination workspace's User list. Users without a match go to a reconciliation queue. The customer provisions any missing Twenty Users before record import resumes. Owner resolution is required before inserting Opportunities, Jobs, and Expenses because those records carry an owner reference in Twenty.
Parent record migration in dependency order
We run the migration in strict dependency order: Companies (from Clients) first, then Contacts (from People with CompanyId resolved), then Deals (from Opportunities with CompanyId and OwnerId resolved), then Job Deals (from Jobs with job_type__c set and costing fields migrated). Each phase emits a row-count reconciliation report before the next phase begins. This sequencing prevents foreign key failures on insert.
Activity and expense migration with parallel file transfer
Timesheets migrate as Task and Event records with the orphan reconciliation decision applied. Expenses migrate as expense__c custom object records. Receipt image files transfer in parallel via a separate file listing extracted from Metis, and we generate a re-attachment manifest mapping each file to its destination record ID in Twenty. The customer re-attaches files using the manifest after migration.
Cutover, validation, and resourcing gap handoff
We freeze Metis writes during cutover, run a delta migration for any records modified during the window, then hand off to the customer. We validate record counts, spot-check 20-30 records for field accuracy, and deliver the migration inventory including the resourcing gap note (no native resourcing view in Twenty), the attachment re-attachment manifest, and the orphan timesheet decisions applied. We do not rebuild Metis Resourcing Reports as part of the migration scope; we document the available data for a BI rebuild.
Platform deep dives
Metis CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Metis CRM and Twenty CRM.
Object compatibility
1 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
Metis CRM: Not publicly documented.
Data volume sensitivity
Metis 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 Metis CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Metis 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 Metis 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.