CRM migration
Field-level mapping, validation, and rollback between Evatic and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Evatic
Source
Odoo CRM
Destination
Compatibility
10 of 11
objects map 1:1 between Evatic and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Evatic and Odoo CRM take fundamentally different approaches to service data organization. Evatic stores everything — contacts, companies, service contracts, and equipment units — in a single unified model with role-based associations and a flat contract structure. Odoo separates leads and contacts into crm.lead and res.partner, uses a Kanban pipeline keyed by stage_id on leads, and requires the Sale or Subscription app for contract line items. The migration carries Evatic's service contracts, equipment units, contacts, companies, and custom fields into Odoo's corresponding models, flags which records require the Odoo Subscription app for recurring billing lines, and surfaces Evatic workflow definitions for manual rebuild in Odoo's automation tools. FlitStack pulls data from Evatic Connect (ESH) via paginated JSON export, transforms and deduplicates records, then loads them through Odoo's XML-RPC API or CSV import. Owner resolution happens by email match against Odoo res.users, and a 24–48 hour delta pickup window captures any in-flight changes during cutover so your Odoo environment reflects Evatic's final state at 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 Evatic 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.
Evatic
Contact
Odoo CRM
res.partner
1:1Evatic contact records map directly to Odoo res.partner. The contact name, email, phone, and address fields translate without transformation. Company associations in Evatic map as parent_id links in Odoo, establishing the partner hierarchy that Odoo's CRM and Sale apps rely on for contact-company relationships.
Evatic
Company
Odoo CRM
res.partner (company_type=company)
1:1Evatic company records map to Odoo res.partner with company_type set to 'company'. The company name, website, industry, and employee count fields carry over directly. Child contacts from Evatic that are associated with the company link via the parent_id field on the Odoo partner record.
Evatic
Service Contract
Odoo CRM
crm.lead + sale.order
1:1Evatic contract headers migrate as Odoo crm.lead records — the contract name becomes the opportunity name, contract value maps to planned_revenue, and contract status maps to stage_id per the value-mapping table. Contract line items require the Odoo Sale app to create sale.order records; we flag this dependency before migration runs.
Evatic
Contract Line Item
Odoo CRM
sale.order.line
1:manyEach Evatic contract line item splits into a separate Odoo sale.order.line record linked to the parent sale.order created from the contract header. Recurring billing lines are flagged as requiring the Odoo Subscription app — your team decides whether to install it or treat recurring lines as one-time sale.order.line entries.
Evatic
Unit / Equipment
Odoo CRM
product.product
1:1Evatic equipment units migrate as Odoo product records with product_type='product'. Serial numbers and model information map to lot/serial tracking fields on the product. The contract link is preserved as a custom field (x_contract_id) on the product so the service history remains traceable to the originating contract.
Evatic
Service Activity
Odoo CRM
mail.message
1:1Evatic service activities — technician notes, visit results, status-change logs — migrate as Odoo mail.message records attached to the parent crm.lead or res.partner. Original timestamps, activity type, and technician name are preserved as message metadata so the Odoo chatter reflects the full service timeline.
Evatic
Attachment / File
Odoo CRM
ir.attachment
1:1Evatic file attachments on contracts and equipment records are downloaded and re-uploaded to Odoo's ir.attachment table. Each attachment links to the corresponding res.partner, crm.lead, or product.product record via res_model and res_id. Original filenames and MIME types are preserved. Files over 100MB are flagged pre-migration.
Evatic
Owner / Salesperson
Odoo CRM
res.users
1:1Evatic owner and technician IDs are resolved by email match against Odoo res.users. Unmatched owners are flagged before migration begins so your Odoo admin can either invite them to Odoo or assign their records to a fallback user. No record lands in Odoo without a resolved owner.
Evatic
Contact Role
Odoo CRM
res.partner.category
1:1Evatic contact role values (technician, decision-maker, etc.) map to Odoo partner category tags (res.partner.category). Role values that have no direct Odoo category equivalent are stored as a custom tag created during migration so your admin can reorganize tags post-migration.
Evatic
Custom Fields (contracts, units, contacts)
Odoo CRM
x_ custom fields on crm.lead / product.product / res.partner
1:1Evatic custom fields on contracts, equipment units, and contacts migrate as x_name custom fields on the corresponding Odoo model. The field definition is created via Odoo's XML-RPC API, and the data populates correctly. However, the field does not appear on form views until an admin places it via the Form Editor. FlitStack delivers a custom field placement checklist listing every migrated field, its target model, and suggested view position.
Evatic
Service Status
Odoo CRM
crm.lead stage_id
1:1Evatic service status values (New / In Progress / Resolved / Closed) map to Odoo crm.lead stage_id values per the configured pipeline. The mapping is value-by-value based on the closest semantic match — Closed maps to Won or Lost depending on contract outcome; New maps to the first stage in the target pipeline.
| Evatic | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (company_type=company)1:1 | Fully supported | |
| Service Contract | crm.lead + sale.order1:1 | Fully supported | |
| Contract Line Item | sale.order.line1:many | Fully supported | |
| Unit / Equipment | product.product1:1 | Fully supported | |
| Service Activity | mail.message1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Owner / Salesperson | res.users1:1 | Fully supported | |
| Contact Role | res.partner.category1:1 | Fully supported | |
| Custom Fields (contracts, units, contacts) | x_ custom fields on crm.lead / product.product / res.partner1:1 | Fully supported | |
| Service Status | crm.lead stage_id1: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.
Evatic gotchas
Public API schema and endpoint reference is gated
DATEV integration locks fiscal data into a regional format
Managed Print Services (MPS) object hierarchy adds non-standard objects
Very small review corpus limits confidence in migration risk surface
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
Validate Evatic API access and audit object inventory
FlitStack authenticates to Evatic Connect (ESH) using your API credentials and runs a pre-export validation. We test read permissions for all target object types — contacts, companies, service contracts, units, and activities — and verify that the token scope covers every object. Any missing permissions are flagged with the specific objects affected so you can update the token configuration. We then pull a full inventory of record counts and field schemas from each object to build the transformation map.
Map Evatic objects to Odoo models and create custom fields
Using the object mapping plan, FlitStack generates the Odoo custom field definitions (x_name) for all Evatic custom fields on contracts and equipment units. Custom fields are created via Odoo's XML-RPC interface before data import begins. Your Odoo admin receives the custom field placement checklist and a draft value-mapping table for status-to-stage translation. The Odoo side schema must be confirmed before FlitStack begins the sample migration.
Run sample migration with field-level diff
A representative slice — typically 100–300 records per object type — migrates first covering contracts, units, contacts, and activities. We generate a field-level diff report showing source values, mapped values, any unmapped fields, and the applied status-to-stage mapping per record. You verify contract-to-lead type assignment, serial number placement, owner resolution rates, and custom field population before the full run commits. Any mapping adjustments are made before the final migration begins.
Full migration with owner resolution and delta pickup
The complete dataset migrates with owner resolved by email match to Odoo res.users. Contract status maps to crm.lead stage_id per the approved value-mapping table. File attachments re-upload to Odoo's ir.attachment table with original filenames and parent record links. A delta-pickup window of 24–48 hours captures any records created or modified in Evatic during the cutover. FlitStack applies write operations exclusively to Odoo — no changes are made to your Evatic environment during this phase.
Post-migration audit and rollback readiness
FlitStack generates a post-migration audit report: record counts per object, owner resolution rate, a sample of populated custom fields, and attachment re-upload success rate. If reconciliation identifies discrepancies — missing records, incorrect stage mapping, or owner resolution failures — one-click rollback reverts the Odoo environment to its pre-migration state so the migration can be re-run with corrected mappings. The rollback plan is confirmed before the full migration begins, not after.
Platform deep dives
Evatic
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 Evatic 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
Evatic: Not publicly documented.
Data volume sensitivity
Evatic 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 Evatic to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Evatic 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 Evatic
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.