CRM migration

Migrate from Axelor CRM to Odoo CRM

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

Axelor CRM logo

Axelor CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Axelor CRM and Odoo CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Axelor CRM to Odoo CRM is a migration between two open-source ERP-adjacent platforms with different core data models. Axelor uses a Lead-to-Third-Party pipeline where conversion produces either a customer or a prospect Third Party, while Odoo uses a distinct Lead-to-Opportunity model with Partner as the unified contact/company object. We extract data from Axelor's XML AppLoader exports, inspect custom Studio XML schemas during scoping to map all custom fields, and resolve the Third-Party-to-Partner conversion logic by splitting on the Axelor isCustomer flag. Agency routing (a distinct Axelor segmentation concept) has no native Odoo equivalent, so we reconstruct it as Odoo Tags on the Partner record. BPM workflows and business rules do not migrate as data; we document every workflow trigger, condition, and action as a written specification for the customer's admin to rebuild in Odoo Studio. Document metadata migrates; binary file transfer is handled separately from the data migration scope.

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

Axelor CRM logo

Axelor CRM

What's pushing teams away

  • Functional coverage gaps in niche areas like event management and training module capabilities, pushing specialized teams toward purpose-built solutions.
  • Technical knowledge required for installation and ongoing configuration, making it less accessible for non-technical admin teams compared to SaaS-first alternatives.
  • Graphic style customization is intentionally limited; teams wanting full UI theming or brand-aligned interfaces report frustration with the constrained styling options.
  • Support ecosystem relies heavily on partner integrators in markets outside France, making local expertise scarce and increasing implementation costs for international teams.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Axelor CRM objects map to Odoo CRM

Each row shows how a Axelor CRM object lands in Odoo 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

maps to

Odoo CRM

Lead

1:1
Fully supported

Axelor Lead records map directly to Odoo crm.lead. The Lead name, email, phone, source, medium, and expected closing date migrate to Odoo Lead fields. The Axelor lead agency assignments (many-to-many junction) are resolved by creating Odoo tag records for each Axelor Agency and applying them to the corresponding migrated Lead records. Lead priority and rating from Axelor map to Odoo's priority field and a custom stage-based rating field.

Axelor CRM

Third Party

maps to

Odoo CRM

Partner

1:1
Fully supported

Axelor Third Party is the core Contact/Company entity that covers both customers and prospects. We split the Axelor isCustomer flag: Third Parties where isCustomer is true map to Odoo Partner with customer_rank set to create a Customer Partner; those where isCustomer is false map to a Vendor Partner or remain as Prospect-ranked. The Axelor Third Party type (customer, prospect, vendor, both) drives the Odoo Partner category and is_customer, is_company boolean flags. Parent-child Third Party hierarchies (holding-subsidiary relationships) map to Odoo Partner's parent_id relationship.

Axelor CRM

Contact

maps to

Odoo CRM

Partner (individual, is_company=False)

1:many
Fully supported

Axelor Contacts are distinct child records linked to a parent Third Party. During migration, we create Odoo Partner records with is_company=False for each Axelor Contact and set the parent_id to the Partner created from the Contact's parent Third Party. The Axelor Contact's role, function, and direct phone/email fields map to the Odoo Partner function field and contact fields. If the parent Third Party does not yet exist at Contact migration time, we create it first.

Axelor CRM

Opportunity

maps to

Odoo CRM

Opportunity (crm.lead with type=opportunity)

1:1
Fully supported

Axelor Opportunities map to Odoo Opportunities (crm.lead with type='opportunity'). The Axelor stage name, expected amount, and probability migrate to Odoo's stage_id and expected_revenue fields. The partner_id on Odoo Opportunity resolves to the Partner created from the linked Third Party. If the Axelor Opportunity references a Contact (salePartner), that Contact's parent Third Party becomes the Odoo partner_id.

Axelor CRM

Opportunity Stages

maps to

Odoo CRM

Stage

lossy
Fully supported

Axelor Opportunity stage names and their sequence order map to Odoo CRM Stage records within the customer's Pipeline. We create stages in the same sequence order and assign probabilities matching the Axelor stage configuration. If the Axelor deployment uses custom stage names (beyond the default New, Qualified, Proposal, Won, Lost), we preserve them in Odoo stage names to avoid data misinterpretation.

Axelor CRM

Recurrent Revenue Fields

maps to

Odoo CRM

Custom Fields on Opportunity

lossy
Mapping required

The recurrent revenue amount and default recurring period fields on Axelor Opportunities exist only when 'Manage recurrent revenue on opportunities' is activated in Axelor CRM settings. We detect these fields during scoping by inspecting the Opportunity XML schema. When present, we create matching custom fields on the Odoo crm.lead model (recurrent_amount, recurrent_period) before Opportunity data import. The customer configures these fields in Odoo Studio post-migration.

Axelor CRM

Agencies

maps to

Odoo CRM

Tags

1:many
Mapping required

Agencies are a distinct Axelor CRM concept for routing and segmenting leads and Third Parties. Odoo has no native Agency object. We extract the Agency records as a distinct dataset, create Odoo crm.tag records for each Agency, and apply them to the migrated Leads and Partners. The many-to-many junction between Lead and Agency is resolved as a multi-tag assignment on each Lead during migration. Customers requiring agency-based routing in Odoo beyond tagging can configure this via Odoo Sales Team assignment rules.

Axelor CRM

Custom Objects (Studio)

maps to

Odoo CRM

Custom Models (ir.model) or Custom Fields

1:1
Mapping required

Axelor Studio custom objects are defined in XML and compiled to JPA models at deployment. We inspect the XML schema for each custom object during scoping, infer field names and data types, and create corresponding Odoo custom models via the Studio interface or a technical module. Custom fields on standard objects map to Odoo custom fields with equivalent types (char, integer, float, date, many2one, selection). Objects defined in XML as enums map to Odoo selection fields. This work is scoped as technical configuration during migration; the customer provides the XML model definitions during discovery.

Axelor CRM

Owner

maps to

Odoo CRM

User

1:1
Fully supported

Axelor user records include roles, organizational structure, and access permissions used for record ownership assignment. We extract the user identity data (name, email, active status) and match by email against the destination Odoo User table. Owners without a matching Odoo User are held in a reconciliation queue; the customer's Odoo admin provisions missing users before record import resumes. Role and permission schema do not migrate; Odoo's access rights model is fundamentally different from Axelor's role-based configuration.

Axelor CRM

Documents / Attachments

maps to

Odoo CRM

Attachments (ir.attachment)

1:1
Fully supported

Axelor DMS stores binary documents linked to CRM records. We export document metadata (filename, URL, file size, record reference) and include it in the migration scope as an attachment manifest. The actual binary files require a separate file transfer step using SFTP or cloud storage, outside the API-based migration scope. We provide the attachment manifest mapping each Axelor document to its target Odoo record (res_model, res_id) so the customer's admin can finalize the file transfer post-migration.

Axelor CRM

Engagement: Note

maps to

Odoo CRM

Note (mail.message)

1:1
Fully supported

Axelor notes linked to Leads, Third Parties, or Opportunities migrate to Odoo mail.message records with message_type='comment' on the corresponding Odoo record. The note body, author, and creation timestamp preserve. Notes with attachments resolve the attachment references against the attachment manifest to link files to the Odoo record.

Axelor CRM

Engagement: Task / Meeting

maps to

Odoo CRM

Task (project.task) / Calendar Event

1:1
Fully supported

Axelor task and meeting engagements linked to CRM records migrate to Odoo project.task records for tasks (with project_id=None for CRM-only tasks) and calendar.event records for meetings. The assignee maps from Axelor owner to Odoo User via the owner reconciliation queue. Meeting location and attendee information migrates to Odoo calendar.event and calendar.attendee records. Historical task and meeting data is migrated after Leads, Third Parties, and Opportunities are in place so that the parent record references resolve.

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.

Axelor CRM logo

Axelor CRM gotchas

High

Version-to-version migration breaks schema and workflows

High

BPM workflows and business rules do not export as data

Medium

No publicly documented API rate limits or developer portal

Medium

Custom Studio objects have no standard export format

Low

Recurrent revenue fields are configuration-dependent

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Axelor Third Party to Odoo Partner split requires type decision at migration time

    Axelor Third Party covers both customers and prospects under a single entity type with a boolean isCustomer flag, while Odoo uses Partner with separate customer_rank and vendor_rank integers plus category tags for classification. We resolve this during scoping by inspecting the isCustomer and isProspect flags in the Axelor Third Party records, but if the Axelor data has inconsistent or missing type flags (a common data quality issue in legacy Axelor deployments), the migration will create Partners with an ambiguous classification. We flag any Third Party with a null or conflicting type as a reconciliation exception for the customer to resolve before final import.

  • BPM workflows and business rules do not migrate and require complete rebuild

    Axelor's BPM engine stores workflow logic as DMN models and application configuration, not as data records. AppLoader exports the DMN XML for deployment into another Axelor instance, but this is an application deployment action, not a data export. There is no direct equivalent in Odoo because Odoo Studio automation actions, server actions, and the Approvals module work differently. We do not migrate BPM workflows. We deliver a written inventory of every identified Axelor workflow trigger, condition, action, and assigned user so the customer's Odoo admin has a documented specification for rebuilding in Odoo Studio. This inventory work is scoped within the migration engagement; the rebuild itself is a separate admin task.

  • Custom Studio objects require XML schema inspection and Odoo module development

    Axelor Studio custom objects are defined in XML and compiled to JPA models. Unlike standard objects, they have no guaranteed export format through the AppLoader and their field names and data types differ from what a non-Axelor developer would expect. We perform a schema inspection step during scoping that reads the XML model definitions, infers the field structure, and generates a field map before extraction. Odoo does not have a Studio-level equivalent for entirely new custom models; these require a technical module with Python model definitions and XML views. If the customer has more than two or three custom Studio objects, Odoo module development becomes a parallel technical workstream alongside the data migration.

  • Odoo version and module compatibility must be verified before migration

    Odoo major version upgrades (e.g., Odoo 17 to Odoo 18) require module compatibility review because community and third-party Odoo Apps may not yet support the newer version. Reddit posts on Odoo community migration results confirm that custom modules are the primary source of upgrade friction. If the customer is migrating into an existing Odoo deployment, we verify the installed apps and their version compatibility. If they are provisioning a new Odoo instance, we recommend Odoo 17 Enterprise or Community as the safer default at time of migration unless the customer specifically requires Odoo 18 and has verified their required apps are available for it.

  • Agency routing reconstruction as Tags does not replicate the full Axelor routing logic

    Axelor Agencies serve both as segmentation tags and as routing assignment targets for lead distribution to sales teams. In Odoo, Tags are purely descriptive labels with no routing logic attached. We reconstruct the agency label as Tags on Lead and Partner for data preservation and filtering, but the routing assignment logic (e.g., round-robin assignment based on Agency) cannot migrate as a data artifact. The customer's Odoo admin must rebuild any routing automation in Odoo Studio using server actions or a third-party lead assignment module. We document the original agency-to-owner assignments as a reference table during migration scoping.

Migration approach

Six steps for a successful Axelor CRM to Odoo CRM data migration

  1. Discovery and source version scoping

    We audit the source Axelor CRM deployment across version (6.1.x through 6.5.x), installed apps, custom Studio objects, BPM workflow count, agency count, data volumes per object (Leads, Third Parties, Contacts, Opportunities, engagements), and whether the recurrent revenue configuration is active. We inspect the Opportunity XML schema to confirm whether recurring revenue fields are present. We extract and review the Axelor AppLoader export package structure and identify any XML model definition files for custom objects. This output is a written migration scope that identifies which objects migrate as data, which require XML schema inspection, and which are configuration items requiring manual rebuild.

  2. Schema inspection and field mapping design

    We inspect the XML model definitions for all custom Studio objects, infer field names and data types, and design the corresponding Odoo schema: custom fields on standard models (via Odoo Studio) or custom models (via a technical module). We design the Third Party-to-Partner type split rules, the Agency-to-Tag mapping, and the Contact parent-Third-Party resolution order. We map Axelor Opportunity stages to Odoo CRM stages with probability alignment. The schema design is validated against the customer's Odoo instance (new or existing) before any data extraction begins.

  3. Data extraction and staging

    We extract data from Axelor via AppLoader exports and direct database query for objects not fully covered by AppLoader. We stage the extracted data in a structured CSV format with normalized field names, applying the Third Party type split, Contact parent resolution, and Agency-to-Tag junction resolution. We run deduplication checks on Third Party records (matching on company name, domain, email) to identify duplicates before import. Data quality issues (null required fields, invalid formats) are flagged in a pre-import audit report with remediation recommendations.

  4. Owner and user reconciliation

    We extract every distinct Axelor Owner referenced on Lead, Third Party, Contact, Opportunity, and engagement records and match by email against the destination Odoo User table. Any Owner without a matching Odoo User goes to a reconciliation queue for the customer's Odoo admin to provision. Agency-to-Odoo-User routing assignments are documented as a reference table since routing automation does not migrate. Migration cannot proceed past this step because Odoo requires a valid res_users reference for record assignment.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Partners (from Third Parties, split by type), Contacts (with parent_id resolved to Partner), Leads (with tag assignments applied), Opportunities (with partner_id and stage_id resolved), custom object data, engagement history (Notes, Tasks, Meetings). Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and throttling to avoid overwhelming the destination instance. Attachment metadata is delivered as a manifest for the customer's separate file transfer step.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Axelor writes during cutover, run a final delta migration of records modified during the migration window, then enable Odoo as the system of record. We deliver the BPM workflow inventory document (for Axel's rebuilding in Odoo Studio) and the Agency routing reference table. We support a one-week hypercare window for reconciliation issues raised by the customer's sales team. We do not rebuild BPM workflows or routing automation in Odoo as part of the migration scope; those are documented for the customer's Odoo admin to handle separately.

Platform deep dives

Context on both ends of the pair

Axelor CRM logo

Axelor CRM

Source

Strengths

  • True open-source AGPL license with identical community and enterprise codebases — no feature-gating in the OSS edition.
  • Low Code Studio enables screen, form, workflow, and business-rule changes without recompiling the J2EE backend.
  • Single platform combines CRM, ERP, BPM, BI, web portals, and document management under one schema, reducing tool sprawl.
  • Modular install path lets teams start with CRM only and expand into Finance, Inventory, or HR without re-platforming.
  • Deployment flexibility — cloud-hosted, on-premise, or hybrid with mobile access included — fits data-residency and offline requirements.

Weaknesses

  • Steep technical onboarding curve for teams without J2EE or partner integrator access.
  • Limited UI/theming customization compared to modern SaaS CRM platforms.
  • Niche functional modules (event management, training) have reduced feature depth versus specialists.
  • No publicly documented API rate limits or developer portal, making integration planning harder.
  • Partner ecosystem for implementation and support is concentrated in France and French-speaking markets.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Axelor CRM and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Axelor CRM and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Axelor CRM and Odoo CRM.

  • 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

    Axelor CRM: Not publicly documented.

  • Data volume sensitivity

    A

    Axelor CRM exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Axelor CRM to Odoo 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 Axelor CRM to Odoo CRM data migrations

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

Can't find your answer?

Walk through your Axelor CRM to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and eight weeks for accounts under 15,000 Third Parties and 3,000 Opportunities with no custom Studio objects and no co-migration of Odoo ERP modules. Migrations with multiple custom Studio objects, large engagement histories (Notes, Tasks, Meetings), or parallel migration of Odoo Finance or Inventory alongside CRM move to ten to sixteen weeks because of XML schema inspection, Odoo module development scoping, and the dependency-ordered import sequence.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Axelor CRM.
Land in Odoo 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