CRM migration
Field-level mapping, validation, and rollback between Axelor CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Axelor CRM
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Axelor CRM and Twenty CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Moving from Axelor CRM to Twenty CRM is a structural migration driven by platform complexity rather than record volume. Axelor's Third Party object conflates the Company and Person roles that Twenty models separately as People and Companies, requiring a split decision at scoping. Contacts in Axelor are child records of Third Parties and must be reconciled against the parent split during migration. The AppLoader export produces XML that we parse against Axelor's JPA model definitions to infer field names and types before any transform is written. BPM workflows, business rules, and Studio configurations do not export as data; we document them for the customer's admin to rebuild in Twenty's custom object and relation system. We do not migrate Users and permissions as code; we map Owner assignments by email match and flag any unmatched users for manual provisioning.
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 Axelor 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.
Axelor CRM
Lead
Twenty CRM
Person
1:1Axelor Leads migrate to Twenty Person records as first-class CRM objects. The Axelor lead status (New, Assigned, Qualified, Lost, Converted) maps to a Twenty select field representing the original status, and the conversion timestamp from Axelor becomes a date field on the Twenty Person record. Any agency routing assignments on the Lead are resolved via the lead-agency junction table and reconstructed as Tags on the Person after the Tag object is pre-created in Twenty.
Axelor CRM
Third Party
Twenty CRM
Person or Company (split required)
1:manyAxelor Third Parties represent both organizations and individuals within those organizations, a single object handling both roles. We perform a split at migration time based on the Third Party type field: type=Customer or type=Prospect with no individual name fields maps to Twenty Company; type=Customer or type=Prospect with an individual name maps to Twenty Person and optionally also creates a linked Company. The original Third Party type is preserved as a custom field for reporting continuity. The parent-child Contact relationship from Axelor is resolved against the split output.
Axelor CRM
Contact
Twenty CRM
Person
1:1Axelor Contacts are child records linked to a parent Third Party. After the Third Party split into Person and Company objects, we match each Contact to its parent by resolving the Third Party ID to the corresponding Twenty Person or Company record. The Contact's name, email, phone, and role fields migrate to the corresponding fields on the Twenty Person record, and the original Third Party ID is preserved in a custom field for audit traceability. Contacts without a resolvable parent Third Party are held in a reconciliation queue.
Axelor CRM
Opportunity
Twenty CRM
Opportunity
1:1Axelor Opportunities map directly to Twenty Opportunities. The pipeline stage name from Axelor becomes a select field value on the Twenty Opportunity, and the expected revenue amount migrates to the standard amount field. If the recurrent revenue configuration is active on the source (detected during scoping XML inspection), the recurring amount and period fields migrate as custom fields on the Opportunity in Twenty. The opportunity linked Third Party ID is resolved against the post-split Person or Company record.
Axelor CRM
Agency
Twenty CRM
Tag
lossyAxelor Agencies are a distinct routing and segmentation concept with no native equivalent in Twenty CRM. We pre-create a Tag object in Twenty during the schema design phase and map each Axelor Agency to a Tag with the agency name. The Tagging functionality in Twenty must be enabled in the workspace settings before migration, as Tags are not created by default. Customer admin confirms the tagging strategy during scoping.
Axelor CRM
Lead Agency (junction)
Twenty CRM
Tag
1:manyThe lead-to-agency assignment in Axelor is a many-to-many relationship stored in a junction table. We export this as a standalone lookup file during the Axelor AppLoader data extraction, then reconstruct the associations in Twenty by creating Tag records for each distinct Agency and applying them to the corresponding Person records. The junction table export is performed before the main record migration so that Tags are available for assignment during the Person load.
Axelor CRM
Custom Object (Studio)
Twenty CRM
Custom Object
1:1Axelor Studio custom objects are defined in XML and compiled to JPA models, with no standard export format beyond the AppLoader package. We perform a schema inspection step that reads the XML model definitions from the Axelor application configuration, infers the field structure (names, data types, required flags), and generates a Twenty custom object schema before any data extraction begins. All custom fields are created in Twenty via the UI or API before the custom object data migration starts, including any lookup relationships to standard objects that must exist first.
Axelor CRM
Recurrent Revenue Fields
Twenty CRM
Custom Fields on Opportunity
1:1The recurrent revenue amount and default recurring period fields on Axelor Opportunities appear only when the 'Manage recurrent revenue on opportunities' checkbox is activated in the CRM settings. We detect this configuration during scoping by inspecting the Opportunity XML schema for the recurring revenue fields and include them in the migration scope only when present. In Twenty, we create custom number and select fields on the Opportunity object before migration and map the values directly.
Axelor CRM
Document / Attachment
Twenty CRM
Attachment
1:1Axelor DMS stores documents linked to CRM records as binary files. We extract document metadata (filename, linked object type, linked record ID, creation date, author) from the AppLoader export and include it in the migration scope. The binary files themselves require separate file-transfer handling outside the standard data migration and are flagged for the customer's IT team to relocate to a shared file store or Twenty's document attachment storage post-migration.
Axelor CRM
User / Owner
Twenty CRM
User
1:1Axelor user records include roles, organizational structure, and access permissions that do not export as data. We extract user identity data (user ID, email, full name, active/inactive status) from the Axelor AppLoader export for mapping record ownership in Twenty. We match by email against the Twenty User table. Any Axelor user without a matching Twenty User goes to a reconciliation queue for the customer's admin to provision before record import proceeds. Role and permission schemas are not migrated.
| Axelor CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Lead | Person1:1 | Fully supported | |
| Third Party | Person or Company (split required)1:many | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Agency | Taglossy | Fully supported | |
| Lead Agency (junction) | Tag1:many | Fully supported | |
| Custom Object (Studio) | Custom Object1:1 | Fully supported | |
| Recurrent Revenue Fields | Custom Fields on Opportunity1:1 | Mapping required | |
| Document / Attachment | Attachment1:1 | Fully supported | |
| User / Owner | User1:1 | Fully 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.
Axelor CRM gotchas
Version-to-version migration breaks schema and workflows
BPM workflows and business rules do not export as data
No publicly documented API rate limits or developer portal
Custom Studio objects have no standard export format
Recurrent revenue fields are configuration-dependent
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
We audit the source Axelor installation across version (6.1.x through 6.5.x), AppLoader export capability, custom Studio objects, agency routing setup, BPM workflow count, and document attachment volume. We inspect the Opportunity XML schema for recurrent revenue field presence and the Third Party type distribution to design the Person/Company split rule. The discovery output is a written migration scope, object list, and split-rule specification that the customer signs off before extraction begins.
Schema design and Twenty workspace preparation
We pre-create all custom objects in Twenty (via the UI or API) before any data extraction, including custom fields, field types, and lookup relationships. We enable the Tags feature in the Twenty workspace settings for agency reconstruction. We configure the Opportunity pipeline stage values to match the Axelor stage names where possible, and create custom fields for Axelor-specific properties that have no direct Twenty equivalent (original Third Party ID, recurrent revenue fields if present, agency junction references). Schema is validated in a staging Twenty instance before production preparation.
Axelor AppLoader extraction and XML schema inspection
We run the Axelor AppLoader data package export for the scoped CRM objects: Leads, Third Parties, Contacts, Opportunities, Agencies, and any custom Studio objects. Simultaneously, we parse the XML model definitions for custom Studio objects to infer field structure and generate the field map. We export the lead-agency junction table as a standalone lookup file. All binary document files are flagged for separate file-transfer handling. We reconcile the extracted record counts against the Axelor UI counts before transform authoring begins.
Transform authoring and Third Party split execution
We write the migration transforms in dependency order: first the split rule for Third Parties into Person and Company records, then the Contact parent resolution against the split output, then Opportunities with recurrent revenue fields (if present), then Leads with agency Tags, then custom object records. Each transform emits a row-count report. We run the full transform pipeline against the AppLoader export in a staging environment to validate field mapping, null handling, and lookup resolution before any Twenty write occurs.
Sandbox migration and reconciliation
We run a full migration into a staging Twenty instance (equivalent to a sandbox) using production-like data volume. The customer's CRM admin reconciles record counts (Leads in, Persons in, Companies in, Opportunities in), spot-checks 25-50 records against the Axelor source for field accuracy and relationship integrity, and validates the agency Tags on Person records. Any mapping corrections are made to the transform before the production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from Third Parties with org-only split), Persons (from Third Parties with individual split and from Axelor Contacts), Opportunities (with Person and Company lookups resolved), Leads (with Tag lookups resolved), custom objects (last, with all lookup targets existing), then document metadata (with binary file relocation noted as a separate task). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and handoff
We freeze Axelor writes during the cutover window, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the BPM workflow inventory document, the custom object schema notes, and the agency routing reconstruction guide to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Axelor BPM workflows in Twenty's automation system inside the migration scope; that is a separate engagement.
Platform deep dives
Axelor 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 Axelor 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
Axelor CRM: Not publicly documented.
Data volume sensitivity
Axelor CRM exposes a bulk API — large-volume migrations stream efficiently.
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 Axelor CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Axelor 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 Axelor 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.