CRM migration
Field-level mapping, validation, and rollback between Xapsys CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Xapsys CRM
Source
Odoo CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Xapsys CRM and Odoo CRM.
Complexity
BStandard
Timeline
4-7 weeks
Overview
Moving from Xapsys CRM to Odoo CRM is a consolidation migration: teams leave a purpose-built UK SME CRM for a modular ERP platform where CRM is one application among dozens. Xapsys's defining characteristic is its custom entity builder — every Xapsys deployment has a different schema, so we must extract the live field list before writing a single line of mapping logic. We import Companies and Contacts into Odoo res.partner records, map Xapsys Opportunities to Odoo crm.lead with stage probabilities, and handle custom Xapsys entities as Odoo custom models requiring schema pre-creation. Workflow rules, automated triggers, and email sequences do not export from Xapsys — we document every active automation during discovery and deliver a written rebuild plan for Odoo's Automated Actions and Studio. Reporting gaps that drove the switch are addressed by Odoo's native pivot, graph, and dashboard tools included at every paid tier. We do not migrate Sage or Xero integrations; those must be reconfigured as Odoo-native accounting connections post-go-live.
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 Xapsys 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.
Xapsys CRM
Company
Odoo CRM
res.partner (company type)
1:1Xapsys Company records map to Odoo res.partner records with the is_company flag set to True. The company name, registered address, phone, website, and classification fields map directly. Xapsys companies often hold a system-of-record flag for Sage or Xero data — we preserve this as a note field in Odoo because Odoo's accounting module creates its own partner records for GL purposes and the customer's admin reconciles which is canonical post-migration.
Xapsys CRM
Contact
Odoo CRM
res.partner (individual)
1:1Xapsys Contact records map to Odoo res.partner with is_company set to False and a parent_id link to the Company partner record. First name, last name, email, phone, mobile, job title, and address fields migrate directly. The parent lookup is resolved by matching company name or domain during the Contact import phase.
Xapsys CRM
Opportunity
Odoo CRM
crm.lead
1:1Xapsys Opportunities map to Odoo crm.lead. Each Xapsys pipeline stage name is mapped to an Odoo crm.lead.stage record with an assigned probability percentage. The Xapsys opportunity value (expected revenue) maps to Odoo's expected_revenue field, and the close date maps to date_deadline. Company and Contact links are resolved via partner_id lookup on the res.partner records imported in the preceding phases.
Xapsys CRM
Pipeline Stage
Odoo CRM
crm.lead.stage
lossyXapsys pipeline stages are user-defined strings stored on each opportunity. We capture every distinct stage name during schema discovery and create corresponding Odoo crm.lead.stage records. Each stage gets a probability percentage that we map from Xapsys if those are exposed, or we use industry-standard defaults if not. The stage sequence order is preserved from Xapsys.
Xapsys CRM
Custom Entity
Odoo CRM
Custom Model (ir.model)
1:1This is the highest-risk migration object. Every Xapsys deployment has a different set of custom entities and custom fields, and no two instances share the same schema. We extract the live custom entity schema from the Xapsys SQL-backed instance, build an Odoo custom model (ir.model) in the destination database before any data import, create all custom field definitions (ir.model.fields) with matching types, and only then import the custom entity records. The customer must decide whether each custom entity maps to a standalone Odoo model or is folded into crm.lead as extra fields — we present both options during scoping.
Xapsys CRM
Document
Odoo CRM
ir.attachment + document.file
1:1Xapsys associates documents with both Companies and Opportunities. We extract the document filename, binary content, and the parent reference (company_id or opportunity_id). Post-import, we link each ir.attachment record to the migrated res.partner or crm.lead using res_model and res_id. If the destination Odoo instance has the Documents app installed, documents migrate as document.file records with folder and tag metadata preserved.
Xapsys CRM
Activity / Task
Odoo CRM
mail.activity
1:1Xapsys activity logs (tasks, calls, notes, meeting references) attached to contacts and opportunities migrate to Odoo mail.activity records. Activity type, date, description, and outcome migrate as activity_type_id, date_deadline, summary, and note fields respectively. The activity is linked to the res.partner or crm.lead record via res_model and res_id resolution after partner and lead import completes.
Xapsys CRM
Tag / Classification
Odoo CRM
crm.tag
lossyXapsys classification tags on records migrate to Odoo crm.tag records. We extract tag names from every tagged record during discovery, create the tag records in Odoo, and write crm.lead.tag.rel entries linking each lead to its tags. Tags that have no meaningful Odoo equivalent are flagged for the customer to review during UAT.
Xapsys CRM
Customer Portal settings
Odoo CRM
portal.settings (documentation only)
lossyXapsys exposes a self-service B2B portal for clients to re-order, check credit balance, and track orders. Portal configuration, content, and session data do not migrate programmatically. We document the existing portal settings during discovery and advise the customer on Odoo Website portal configuration or a custom portal module as the replacement. The B2B ordering workflow may require reimplementation as an Odoo eCommerce or sales app configuration.
Xapsys CRM
Workflow rules
Odoo CRM
Not migrated (documentation provided)
1:1Xapsys workflow rules — automated triggers, stage-change actions, and email sequences — are not exposed via any documented export endpoint. They are silently dropped in a flat-file migration. We catalog every active workflow during discovery, produce a written specification for each one, and deliver an Odoo Automated Actions and Studio rebuild plan. The customer or an Odoo implementation partner rebuilds the critical workflows post-migration.
Xapsys CRM
Sage / Xero integration settings
Odoo CRM
Odoo Accounting / external connector (reconfiguration required)
lossyXapsys is designed to live alongside Sage 50, Sage 200, or Xero, and companies often use Xapsys as the sales layer above accounting. Integration configuration — partner sync rules, invoice push settings, credit balance checks — does not migrate. We document the existing integration flow during discovery, identify every Xapsys-ERP data flow, and the customer's Odoo admin or an Odoo accounting partner reconfigures the Odoo-native accounting connection or a third-party Sage/Xero connector for Odoo.
Xapsys CRM
Owner / User
Odoo CRM
res.users
1:1Xapsys Users referenced on Contacts, Companies, and Opportunities are resolved by email match against the Odoo res.users table. Any Xapsys owner without a matching Odoo user is placed in a reconciliation queue for the customer's admin to provision before the main migration begins. Inactive users are mapped to inactive Odoo users so historical assignment data is preserved.
| Xapsys CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Company | res.partner (company type)1:1 | Fully supported | |
| Contact | res.partner (individual)1:1 | Fully supported | |
| Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline Stage | crm.lead.stagelossy | Fully supported | |
| Custom Entity | Custom Model (ir.model)1:1 | Fully supported | |
| Document | ir.attachment + document.file1:1 | Fully supported | |
| Activity / Task | mail.activity1:1 | Fully supported | |
| Tag / Classification | crm.taglossy | Fully supported | |
| Customer Portal settings | portal.settings (documentation only)lossy | Fully supported | |
| Workflow rules | Not migrated (documentation provided)1:1 | Fully supported | |
| Sage / Xero integration settings | Odoo Accounting / external connector (reconfiguration required)lossy | Fully supported | |
| Owner / User | res.users1: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.
Xapsys CRM gotchas
Custom entity schemas vary by deployment
Workflows do not export and must be rebuilt
Reporting is not included in standard package
Sage/Xero integration locks in dual-record discipline
Limited public API documentation
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Schema discovery and field-level mapping
We connect to the customer's Xapsys SQL-backed cloud instance using read-only credentials (provided by the customer after requesting access from Xapsys) and extract the complete object and field list for the live deployment. We list every standard object (Companies, Contacts, Opportunities), every custom entity, every custom field with its data type, and every distinct pipeline stage name. We produce a written schema map showing each Xapsys field alongside its Odoo destination equivalent. This discovery document is the foundation for every subsequent migration step and is validated against a sample data export before we proceed.
Odoo environment provisioning and custom model creation
We provision the destination Odoo environment (Odoo Online, Odoo.sh, or on-premise depending on the customer's choice) and install the CRM application. We create any custom Odoo models (ir.model) required for Xapsys custom entities that cannot be folded into crm.lead as extra fields, then create all custom field definitions (ir.model.fields) with type-matched Odoo field definitions before any data is imported. We configure crm.lead.stage records with stage names, probabilities, and sequence order matched from the Xapsys discovery output. The Odoo environment is validated by an admin before we proceed to data migration.
Integration audit and rebuild plan
We audit every Xapsys integration — Sage 50, Sage 200, Xero, Office 365, and any third-party bolt-ons — and document the data flows, sync frequency, and which Xapsys records are involved. We deliver an integration rebuild plan specifying which Odoo module or connector handles each integration post-migration, with a recommendation for Odoo-native accounting if the customer consolidates onto Odoo ERP. Sage and Xero integration reconfiguration is outside migration scope and is handed off to the customer's Odoo admin or an Odoo accounting partner.
Sandbox migration and reconciliation
We run a full migration into the Odoo Sandbox environment using production-like data volume. The customer's RevOps or CRM admin reconciles record counts across every object, spot-checks 25-50 records for field-level accuracy against the Xapsys source, and validates that pipeline stage assignments match the original Xapsys data. Any mapping corrections are documented and applied to the production migration script. The customer signs off on the Sandbox results before production cutover begins.
Production migration in dependency order
We run the production migration in record-dependency order: res.partner (Companies first, then Contacts with parent_id resolved), crm.lead (with stage_id and partner_id resolved), mail.activity (with res_model and res_id linking back to the migrated partner and lead records), ir.attachment (with document re-linkage script), custom entity records (into Odoo custom models), and crm.tag records (with lead tag linkage). Each phase emits a row-count reconciliation report before the next phase begins. A final delta migration captures any records modified in Xapsys during the cutover window.
Cutover, validation, and workflow rebuild handoff
We freeze Xapsys writes during the cutover window, run the final delta migration, then set Odoo as the system of record. We validate critical record counts and field values post-cutover. We deliver the Workflow and Integration inventory document to the customer's admin team with an Odoo Automated Actions and Studio rebuild plan for every active Xapsys workflow. We support a one-week hypercare window for reconciliation issues. We do not rebuild Xapsys workflows as Odoo Automated Actions inside the migration scope; that is a separate engagement.
Platform deep dives
Xapsys CRM
Source
Strengths
Weaknesses
Odoo 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 Xapsys CRM and Odoo 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
Xapsys CRM: Not publicly documented.
Data volume sensitivity
Xapsys 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 Xapsys CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Xapsys CRM to Odoo 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 Xapsys CRM
Other ways to arrive at Odoo 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.