CRM migration
Field-level mapping, validation, and rollback between Jarvis CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Jarvis CRM
Source
Twenty CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Jarvis CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Jarvis CRM to Twenty CRM is a migration from a FileMaker Pro-powered per-customer instance with no REST API to a self-hosted open-source CRM with a GraphQL API. The primary technical challenge is that Jarvis has no documented public API, so we extract data via FileMaker export scripts and direct table access. Every Jarvis deployment has a unique schema because FileMaker allows full customization, which means a mandatory schema audit precedes any migration scope. We reconstruct relational links between Contacts, Companies, and Projects using primary-key and foreign-key exports rather than name-matching. Twenty's data model maps closely to standard CRM terminology (Companies, People, Opportunities), but its lack of native ERP modules means that Jarvis Projects, Time Entries, and Vendor records require custom object or manual workflow alternatives. Row-level security is not yet available in Twenty, which affects organizations with strict data-separation requirements. We do not migrate FileMaker Pro scripts, custom FileMaker workflows, or QuickBooks Online integration configurations; these require separate rebuild work post-migration.
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 Jarvis 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.
Jarvis CRM
Contacts
Twenty CRM
People
1:1Jarvis Contact records map to Twenty People. We extract via FileMaker export including contact name, email, phone, address, job title, and owner assignment. Custom contact fields (deployment-specific) map to Twenty custom fields that we create in Settings before import. The Jarvis contact-to-company relationship (Contact linked to Company via FileMaker relationship) resolves to the People.company field during Twenty import by matching Company foreign keys.
Jarvis CRM
Companies/Accounts
Twenty CRM
Companies
1:1Jarvis Company records map to Twenty Companies. We export the full Company table including company name, domain, industry, address, phone, and any custom company fields. Company is the first object imported into Twenty because People, Opportunities, and Tasks reference it via lookup. We use the company name as the dedupe key during import to prevent duplicate Companies.
Jarvis CRM
Opportunities
Twenty CRM
Opportunities
1:1Jarvis Opportunity records map to Twenty Opportunities with stage, amount, expected close date, probability, and owner preserved. Pipeline stage names from Jarvis (which vary per deployment) map to Twenty Opportunity.stage values. We create the stage options in Twenty Settings before import. Opportunities link to People (the primary contact) and Companies via Twenty's Opportunity.company and Opportunity.person foreign keys.
Jarvis CRM
Projects
Twenty CRM
Custom Object: Projects
1:1Jarvis Projects map to a Twenty Custom Object named Projects. We extract project records including name, description, start date, end date, status, and budget. Task structures within projects export from FileMaker as a separate table; we flatten these into Twenty Tasks linked to the Project custom object via a lookup field. Gantt chart layout data exports as metadata but does not map to a native Twenty format; we store Gantt layout notes in a custom field for admin reference.
Jarvis CRM
Time Entries
Twenty CRM
Custom Object: Time Entries
1:1Jarvis time entries (billable and non-billable hours linked to projects, contacts, or vendors) map to a Twenty Custom Object named Time Entries. We extract date, duration, description, billable flag, and the linked project and contact references. Because Twenty does not have native time tracking, the custom object provides a data housing layer; billing workflow and time approval require manual rebuild in Twenty Settings or a separate time-tracking tool.
Jarvis CRM
Vendors
Twenty CRM
Custom Object: Vendors
1:1Jarvis vendor records (part of the ERP module) map to a Twenty Custom Object named Vendors. We extract vendor name, contact information, payment terms, and any custom fields. QuickBooks Online vendor data that lives in Jarvis through the native integration does not migrate through FileMaker export; the customer must re-export from QuickBooks Online directly if vendor history is needed in Twenty.
Jarvis CRM
Products and Services
Twenty CRM
Products
1:1Jarvis product and service catalog records map to Twenty Products. We extract item names, descriptions, SKUs, unit prices, and any custom product fields. Product-to-opportunity associations from Jarvis map to the Opportunity.items relationship in Twenty. The Jarvis product catalog export uses FileMaker table exports; we align column headers to Twenty Product field names during the transform phase.
Jarvis CRM
Tasks and Activities
Twenty CRM
Tasks
1:1Jarvis task flows and activity records (follow-ups, assignments, meeting logs) map to Twenty Tasks. We extract activity type, title, description, due date, completion status, owner, and linked record references. Task types from Jarvis (call, email, meeting, note) map to Twenty Task.type values. Historical timestamps (created date, modified date) preserve as Task.createdAt and Task.updatedAt to maintain audit trails.
Jarvis CRM
User and Owner Assignment
Twenty CRM
Members
1:1Jarvis user records and owner assignments export from the FileMaker ACL and record-level ownership fields. We map each Jarvis user to a corresponding Twenty Member by email address. Twenty Members must be invited and accept their invitations before we import any records with owner assignments; otherwise owner references cannot resolve. Users without a matching Twenty Member go to a reconciliation queue for the customer's admin to provision.
Jarvis CRM
Custom Properties
Twenty CRM
Custom Fields
lossyEvery Jarvis deployment has custom fields on Contacts, Companies, Opportunities, and Projects that do not exist in a standard FileMaker schema. We identify all custom properties during the mandatory schema audit, then create matching custom fields in Twenty Settings under the relevant object before any data import. Custom fields must exist before CSV import because the CSV import creates records, not fields. We flag any custom properties that have no equivalent Twenty field type for admin decision during scoping.
Jarvis CRM
Attachments
Twenty CRM
Files (manual re-upload)
lossyFile attachments stored within the FileMaker instance can be exported, but attachment storage format and location vary by deployment. We identify attachment storage paths during scoping and include them in the scope only if the FileMaker host grants access. Twenty does not support bulk file attachment import via CSV; we document the file locations and naming conventions so the customer's admin can re-upload them manually or via a separate file migration tool. Attachments linked to specific records via FileMaker relationships require manual re-attachment in Twenty after import.
Jarvis CRM
Marketing Campaigns and Groups
Twenty CRM
Custom Object: Campaigns
1:1Jarvis campaign and contact group records export as basic CRM data (campaign name, type, status, and group membership lists). We map these to a Twenty Custom Object named Campaigns with a many-to-many relationship to People for group membership. Because Jarvis does not have a native marketing automation engine, campaign data is typically basic (names and tags rather than engagement metrics); we preserve what exists and note that email campaign sending capability is not a Twenty feature in the free or standard tiers.
| Jarvis CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contacts | People1:1 | Mapping required | |
| Companies/Accounts | Companies1:1 | Mapping required | |
| Opportunities | Opportunities1:1 | Mapping required | |
| Projects | Custom Object: Projects1:1 | Mapping required | |
| Time Entries | Custom Object: Time Entries1:1 | Mapping required | |
| Vendors | Custom Object: Vendors1:1 | Fully supported | |
| Products and Services | Products1:1 | Mapping required | |
| Tasks and Activities | Tasks1:1 | Mapping required | |
| User and Owner Assignment | Members1:1 | Mapping required | |
| Custom Properties | Custom Fieldslossy | Mapping required | |
| Attachments | Files (manual re-upload)lossy | Mapping required | |
| Marketing Campaigns and Groups | Custom Object: Campaigns1:1 | 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.
Jarvis CRM gotchas
No documented public API means migration requires FileMaker-native exports
FileMaker schema varies per deployment because the platform is fully customizable
Customizations are not included in base pricing and require separate engagement
Data relationships between FileMaker tables must be reconstructed manually
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
FileMaker schema audit and scoping
We connect with the customer's FileMaker host to conduct a schema audit of the live instance. We identify all tables in use (Contacts, Companies, Opportunities, Projects, Tasks, Time Entries, Vendors, Products, Custom Properties), extract the field list per table, and document the relational links between tables (which table references which via foreign keys). This audit output is a written schema map that forms the basis of the migration scope. We also identify attachment storage locations, custom scripts, and any integration configurations that depend on the FileMaker Pro backend.
Twenty workspace setup and custom object creation
We create the Twenty workspace and set up the data model before any data import. This includes creating any custom objects (Projects, Time Entries, Vendors, Campaigns) under Settings, adding custom fields to standard objects (Companies, People, Opportunities, Tasks) to receive migrated custom properties, and configuring Opportunity stage values to match the source pipeline stages. We also invite all team members who will receive migrated records so that owner assignments can resolve during import. This step requires Twenty to be accessible and configured before FileMaker exports begin.
FileMaker data extraction in dependency order
We export data from the FileMaker instance in a sequence that respects foreign-key dependencies. We begin with Companies (the parent in most relationships), then export People (which references Companies), then Opportunities (which references People and Companies), then Tasks and Activities, then Projects and Time Entries. For each table, we include the primary key, all standard fields, all custom fields, and the foreign-key columns that link to other tables. We coordinate with the FileMaker host for export execution and validate that row counts from the export match the schema audit baseline before proceeding.
Data transform and relationship reconstruction
We transform the FileMaker export files into Twenty CSV import format. This includes renaming columns to match Twenty field names, mapping FileMaker field types to Twenty field types (text, number, date, email, phone, select, multi-select), and reconstructing relational links using the foreign-key columns extracted from FileMaker. For example, when importing People, we resolve the Company foreign key from the exported CompanyID column to the imported Company UUID in Twenty. We handle date format normalization, phone number formatting, and multi-select field splitting during this phase.
Twenty CSV import in dependency order with validation
We import data into Twenty using the CSV import tool in the correct dependency order: Companies first, then People, then Opportunities, then Tasks, then custom objects last. After each import phase, we reconcile record counts against the FileMaker export to confirm no records were dropped. We spot-check 25-50 records per object against the source to verify field mapping accuracy. Any records rejected by Twenty (due to missing required fields or invalid formats) are corrected in the transform layer and re-imported before proceeding to the next phase.
Cutover, delta sync, and admin handoff
We freeze FileMaker writes during the cutover window, run a final delta migration of any records modified between the last full export and the cutover date, then mark Twenty as the system of record. We validate record counts one final time and deliver the custom script inventory, integration configuration inventory, and any manual rebuild checklists to the customer's admin. We do not rebuild FileMaker Pro scripts, QuickBooks Online integrations, or custom workflows as these are outside standard migration scope. We offer a one-week post-go-live support window for reconciliation issues raised during initial team use.
Platform deep dives
Jarvis CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Jarvis CRM and Twenty CRM.
Object compatibility
2 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
Jarvis CRM: Not publicly documented.
Data volume sensitivity
Jarvis 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 Jarvis CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jarvis 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 Jarvis 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.