CRM migration
Field-level mapping, validation, and rollback between ELMA365 and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
ELMA365
Source
Odoo CRM
Destination
Compatibility
8 of 12
objects map 1:1 between ELMA365 and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
ELMA365 is a BPM-focused platform where CRM data lives inside Projects, Tasks, and custom Applications rather than a dedicated CRM module. Odoo CRM uses a traditional crm.lead and res.partner data model with Opportunities for pipeline management. The structural difference is the most significant migration challenge: ELMA365's process instances and workflow state data have no direct Odoo equivalent, so we extract the business data (contacts, company info, deal values, task metadata) and map it to Odoo's standard CRM objects, while flagging the automation artifacts for manual rebuild. We handle ELMA365's multi-tenant HUB architecture by isolating each subsidiary workspace during extraction and reassembling the correct ownership in Odoo. Documents attached to ELMA365 Tasks and Projects migrate as ir.attachment records linked to the corresponding Odoo record. BPM workflows, RPA robots, and native Reports do not migrate; we deliver a written inventory of these artifacts for the customer's admin to rebuild in Odoo or accept as a process change.
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 ELMA365 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.
ELMA365
Contact (within Tasks and Projects)
Odoo CRM
res.partner
1:1ELMA365 stores contact records as participants or assignees on Tasks and Projects rather than in a dedicated contact directory. We extract unique contact records across all Tasks and Projects, deduplicate by email, and map to Odoo res.partner. Name, email, phone, and address fields map to standard res.partner fields. The is_company flag is inferred from whether the ELMA365 record represents an organization or individual.
ELMA365
Company (organization within Tasks or Projects)
Odoo CRM
res.partner (company type)
1:1ELMA365 organizations stored as company references within Tasks or custom Applications map to Odoo res.partner with is_company=True. We extract the organization's name, domain, industry, and address fields. The res.partner record is created before any linked contact records so that the contact's parent_id lookup is satisfied at insert time.
ELMA365
Task
Odoo CRM
crm.lead
1:1ELMA365 Tasks with business context (linked to a company or contact, carrying deal value or deal stage) map to Odoo crm.lead. Task title becomes crm.lead name; Task description maps to crm.lead description; due_date maps to crm.lead date_deadline. If the Task carries a monetary value or pipeline stage assignment, we map it to crm.lead expected_revenue and a configured stage in the destination crm.lead.stage model.
ELMA365
Project
Odoo CRM
crm.lead + Project
1:manyELMA365 Projects may contain both CRM-relevant data (client name, deal value, pipeline stage) and project management data (milestones, resource assignments). We split on discovery: CRM-relevant fields migrate to Odoo crm.lead as the deal record, and project management fields migrate to Odoo Project (if the customer licenses the Project app) with a link to the crm.lead via a Many2one. Tasks within the Project migrate to Project Task records linked to the Odoo Project.
ELMA365
Process Instance
Odoo CRM
crm.opportunity
1:1ELMA365 Process Instances carry workflow state, current step, and business data. We extract the instance fields and map the process name to Odoo crm.opportunity name, the current step to a mapped stage in crm.opportunity.stage_id, and any deal value or date fields to expected_revenue and planned_revenue_close_date. Historical process steps are not migratable as workflow history; we document the final state and a process step summary as notes on the Odoo opportunity.
ELMA365
Custom Application
Odoo CRM
Custom Model
1:1ELMA365 custom Applications store data in user-defined tables. We reverse-engineer the schema from ELMA365's configuration export and map each custom Application to an Odoo custom model with a matching field structure. Custom fields use Odoo's ir.model.fields with appropriate field types. Lookup relationships between custom Applications map to Odoo Many2one or Many2many depending on the original cardinality.
ELMA365
User and Role
Odoo CRM
res.users
1:1ELMA365 users, their display names, email addresses, and active status map to Odoo res.users. We match by email as the dedupe key. ELMA365 roles (configured in the BPM designer) map to Odoo access rights groups during scoping; the customer chooses which role-to-group mapping to apply since Odoo and ELMA365 permission models differ structurally.
ELMA365
Document
Odoo CRM
ir.attachment
1:1Documents attached to ELMA365 Tasks, Projects, or Process Instances are downloaded from ELMA365's file store and re-uploaded to Odoo's ir.attachment table, linked to the corresponding crm.lead, res.partner, or Project record via res_model and res_id. Folder hierarchy from ELMA365 is preserved as a directory path in the attachment's name field for manual reorganization in Odoo Documents or Knowledge.
ELMA365
HR Documents (КЭДО)
Odoo CRM
hr.employee Document
1:1Electronic HR documents (employment contracts, e-signatures) from ELMA365's КЭДО module migrate as ir.attachment records linked to hr.employee in Odoo if the HR app is licensed. E-signature metadata is preserved as attachment description; the legal validity of signatures must be re-established in the destination jurisdiction per the customer's legal team.
ELMA365
BPMN Workflow (definition)
Odoo CRM
Not migrated
lossyELMA365 BPM workflow definitions store as proprietary JSON configuration and cannot be exported or re-imported into Odoo. We flag every active BPM workflow during discovery and deliver a written inventory listing the workflow name, trigger, steps, conditions, and assignees. The customer rebuilds these as Odoo Automated Actions or Studio workflows post-migration.
ELMA365
RPA Robot
Odoo CRM
Not migrated
lossyELMA365 RPA robot definitions are proprietary to the ELMA365 RPA engine and do not transfer to any external platform. We flag every RPA configuration during discovery and document the automation purpose (data entry, screen scraping, form fill). The customer rebuilds these in Odoo RPA (a separate paid app) or accepts manual process re-entry.
ELMA365
Report and Dashboard
Odoo CRM
Not migrated
lossyELMA365 Reports and BI dashboards use the platform's native reporting engine and cannot be exported. We extract the underlying data for all reports during migration so the same dataset is available in Odoo Reporting or a connected BI tool. The customer rebuilds reports as Odoo Pivot Views, Graph Views, or exports to a BI platform such as Metabase or Power BI.
| ELMA365 | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (within Tasks and Projects) | res.partner1:1 | Fully supported | |
| Company (organization within Tasks or Projects) | res.partner (company type)1:1 | Fully supported | |
| Task | crm.lead1:1 | Fully supported | |
| Project | crm.lead + Project1:many | Fully supported | |
| Process Instance | crm.opportunity1:1 | Fully supported | |
| Custom Application | Custom Model1:1 | Fully supported | |
| User and Role | res.users1:1 | Fully supported | |
| Document | ir.attachment1:1 | Fully supported | |
| HR Documents (КЭДО) | hr.employee Document1:1 | Mapping required | |
| BPMN Workflow (definition) | Not migratedlossy | Fully supported | |
| RPA Robot | Not migratedlossy | Fully supported | |
| Report and Dashboard | Not migratedlossy | 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.
ELMA365 gotchas
No public API documentation for programmatic extraction
Multi-tenant HUB requires tenant isolation mapping
RPA and workflow automation do not migrate
MS Project XML export loses custom fields and metadata
Russian-language content requires locale handling
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
API access and ELMA365 environment discovery
We request API credentials from the customer's ELMA365 administrator and test connectivity to the /api/v1/ endpoints for Tasks, Projects, Contacts, and any custom Applications. We enumerate all HUB tenants and confirm whether the migration scope covers a single tenant or all subsidiaries. We extract a full configuration export including custom Application schemas, role definitions, and workflow definitions. We document the count of records per object, attachment file sizes, and any Cyrillic content volume. The discovery output is a written scope covering object counts, schema mapping notes, and a timeline risk assessment if API access is gated.
Odoo environment provisioning and schema design
We provision an Odoo Sandbox environment matching the target edition (Basic, Standard, Enterprise, or custom on-premise). We design the destination schema: custom fields on crm.lead and res.partner for migrated ELMA365 properties, custom models for each ELMA365 custom Application, Odoo access control groups mapped from ELMA365 roles, and crm.stage records configured to match the customer's pipeline stages. If the customer licenses the Project app, we configure project templates to receive ELMA365 Project data.
Tenant isolation and contact deduplication
For HUB multi-tenant sources, we run isolated API extractions per tenant workspace and merge contact deduplication across tenants. We identify duplicate email addresses appearing across multiple HUB tenants and flag them for the customer to resolve before import. We resolve the is_company flag for each contact record by analyzing whether the ELMA365 record represents an organization or individual. The deduplication output is a reconciled contact list ready for res.partner import.
Sandbox migration and reconciliation
We execute a full migration into the Odoo Sandbox using production-like data volume. The customer's CRM lead or system administrator reconciles record counts (contacts imported, leads created, opportunities created, attachments linked), spot-checks 25-50 records against the ELMA365 source, and validates that custom Application data appears correctly in Odoo custom models. Any field mapping corrections, validation rule conflicts, or missing required fields are resolved in the Sandbox before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: res.users (validated), res.partner records for companies and organizations, res.partner records for individual contacts (with parent_id resolved for company-linked contacts), crm.lead records from Tasks, crm.opportunity records from Process Instances (with stage and revenue mapped), custom model records from custom Applications (with Many2one lookups resolved), ir.attachment records for documents linked to the corresponding Odoo model. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and exponential backoff on rate limit responses.
Cutover, validation, and automation rebuild handoff
We freeze ELMA365 writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the automation rebuild inventory covering BPM workflows, RPA configurations, and Reports to the customer's admin team with recommended Odoo equivalents. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild ELMA365 automations as Odoo workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
ELMA365
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between ELMA365 and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ELMA365 and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between ELMA365 and Odoo CRM.
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
ELMA365: Not publicly documented.
Data volume sensitivity
ELMA365 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 ELMA365 to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your ELMA365 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 ELMA365
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.