CRM migration
Field-level mapping, validation, and rollback between Evam and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Evam
Source
Odoo CRM
Destination
Compatibility
10 of 14
objects map 1:1 between Evam and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Evam to Odoo CRM is a migration from a real-time journey-orchestration platform to an open-source ERP-integrated CRM. Evam stores behavioral events, customer profiles, and journey logic tied to a proprietary event stream; Odoo CRM manages Contacts, Leads, Opportunities, and Tasks within a modular ERP stack. We cannot export Evam journey definitions as structured data or migrate AI predictive scores, which are computed in Evam's runtime and have no documented export endpoint. We scope event history to a defined time window (typically the last 90-180 days) to keep migration volume manageable, and we document every Evam segment criteria as Odoo dom filter XML so the customer's admin can rebuild targeting rules in Odoo. Channel credentials (SMS sender IDs, push credentials, in-app configurations) are environment-locked to Evam's registered application and must be re-registered in Odoo before cutover. Workflows, journey sequences, and automation rules do not migrate; we deliver a written inventory of each for the customer's admin to rebuild in Odoo Studio or via a partner.
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 Evam 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.
Evam
Customer
Odoo CRM
Contact
1:1Evam Customer records map directly to Odoo CRM Contact. Standard profile fields (name, email, phone, demographic attributes) migrate 1:1 to Odoo res.partner records. Custom customer properties migrate to Odoo custom fields on res.partner, which we pre-create via Odoo Studio or XML data migration script before import. The contact's primary address and company affiliation map to Odoo's address fields and partner_latitude/longitude if geolocation is present in Evam.
Evam
Customer
Odoo CRM
Account
1:1Evam Customers with a company association map to Odoo CRM Account (res.partner with partner_latitude=company). We use the Evam customer company domain as the Account name and populate the Website field. Accounts are created before Contacts so that the parent_id lookup is satisfied at Contact insert time. Customers without a company association become standalone Contacts with no parent account.
Evam
Customer
Odoo CRM
Lead
1:1Evam Customers in early lifecycle stages (anonymous visitor, new prospect) map to Odoo CRM Lead (crm.lead) if the customer is not yet a qualified contact in the destination sales process. We document the customer's Evam lifecycle stage as a custom field lead_source_stage__c on the Lead record for audit. Customers who have progressed past initial acquisition in Evam map directly to Contact/Account.
Evam
Event
Odoo CRM
CRM Activity (Task/Meeting/Call)
1:1Evam behavioral and transactional event records (page views, purchases, form submissions, custom events) migrate to Odoo CRM Activity records. We use event type to determine the Odoo activity type: browse events map to Note records, transactional events map to Meeting records, and engagement events map to Task records. Event timestamps migrate as Odoo activity create_date and activity_date for timeline ordering. The event payload (JSON schema) migrates as a custom text field event_payload__c for post-migration reconciliation.
Evam
Event (time-scoped snapshot)
Odoo CRM
CRM Activity History
lossyEvam processes billions of touchpoints, which cannot all be exported in one pass. We scope the event export to a defined time window (typically the last 90-180 days based on customer retention policy) and aggregate older events into summary records. Each aggregated summary captures the event count, first occurrence, last occurrence, and event type distribution per customer. This keeps migration volume manageable while preserving representative behavioral history.
Evam
Segment
Odoo CRM
Domain Filter (ir.filters)
lossyEvam Segments define customer groupings used to filter journey entry and campaign targeting. We document each Evam segment criteria as Odoo domain filter XML (ir.filters model) with equivalent field references mapped to Odoo res.partner field names. Segment membership (the list of customers in each segment) migrates as Odoo CRM static groups or as tagged records using Odoo's tag system (x_studio_tags). The customer's admin rebuilds dynamic Odoo filters from the documented segment rules post-migration.
Evam
Campaign
Odoo CRM
CRM Campaign
1:1Evam marketing campaigns attached to journey steps or run independently migrate to Odoo CRM Campaign (utm.campaign). Campaign metadata (name, status, start date, end date, channel assignments) migrates directly. Campaign performance metrics (open rates, click rates, conversion rates) are derived post-migration in Odoo reporting rather than migrated as historical calculations. Channel-specific campaign configurations (SMS sender IDs, push notification templates) are documented for manual re-setup.
Evam
Journey
Odoo CRM
CRM Sales Team + Pipeline Stage documentation
1:1Evam Journeys encode step sequences, branch conditions, wait timers, and entry/exit rules that have no direct Odoo equivalent. We do not migrate journey definitions as code. Instead, we document every active Evam journey as a written specification (step order, trigger conditions, channel actions, wait timers, exit criteria) and map the journey's primary customer segment to an Odoo CRM Sales Team and Pipeline Stage configuration. This gives the customer's admin a blueprint to rebuild journey logic using Odoo Studio or a CRM extension.
Evam
Channel (SMS)
Odoo CRM
SMS configuration documentation
1:1Evam SMS channel configurations (sender IDs, template IDs, provider credentials) are environment-locked to Evam's registered application and cannot be moved to Odoo. We document the full SMS channel configuration during discovery (provider name, account ID, sender ID patterns, approved templates) and provide a re-setup checklist for the customer's operations team to configure Twilio, MessageBird, or another SMS gateway in Odoo before cutover. The checklist includes template migration notes for each active SMS campaign.
Evam
Channel (Push/In-App)
Odoo CRM
Push notification configuration documentation
1:1Evam push notification and in-app message configurations (Firebase credentials, app IDs, notification templates) are bound to Evam's registered app environment and cannot be moved. We document the full push channel configuration during discovery and provide a re-setup checklist for the customer's dev team to configure Firebase Cloud Messaging or an equivalent in Odoo's website module or a custom push app. Template content migrates as text documentation for manual re-entry.
Evam
Custom Fields (Customers, Events, Journeys)
Odoo CRM
Custom Fields (res.partner, crm.lead, utm.campaign)
lossyExtended properties on Evam Customers, Events, or Journeys defined beyond the standard schema migrate to Odoo custom fields. We pre-create each destination field via Odoo XML data migration or Studio before import, matching the Evam field data type to the nearest Odoo field type (Char, Text, Integer, Float, Date, Datetime, Selection, Many2one). Lookup fields in Evam that reference other Evam objects require manual schema mapping to Odoo relational fields during scoping.
Evam
AI Models / Predictive Scores
Odoo CRM
Not migratable (rebuild required)
lossyEvam AI-based propensity scores are computed per-customer within Evam's runtime environment and are not accessible via the documented API. We cannot migrate these scores directly. We document the score calculation criteria (model inputs, weighting factors, score range) as a written specification so the customer's data science team can re-implement scoring in Odoo using Odoo Studio custom fields, an Odoo AI app, or a third-party scoring integration (e.g., a Python-based model connected via Odoo RPC). Customers should plan a scoring-free reset on day one.
Evam
Owner
Odoo CRM
User
1:1Evam Owners referenced on Customer, Event, Campaign, and Journey records map to Odoo CRM User (res.users). We resolve owners by email match against the Odoo destination instance. Any Evam Owner without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Active/inactive status in Odoo is set to match the owner's active status in Evam.
Evam
Engagement: Email
Odoo CRM
CRM Activity (Note or Task)
1:1Evam email engagement records (email opens, clicks, sends) migrate to Odoo CRM Note or Task records linked to the parent Contact or Lead. Email content migrates as a Note body; engagement metadata (open count, click count, send timestamp) migrates as custom fields on the Note record. Odoo does not have a native EmailMessage object in standard CRM; email integration requires Odoo Mail module configuration, which is scoped separately from the data migration.
| Evam | Odoo CRM | Compatibility | |
|---|---|---|---|
| Customer | Contact1:1 | Fully supported | |
| Customer | Account1:1 | Fully supported | |
| Customer | Lead1:1 | Fully supported | |
| Event | CRM Activity (Task/Meeting/Call)1:1 | Fully supported | |
| Event (time-scoped snapshot) | CRM Activity Historylossy | Fully supported | |
| Segment | Domain Filter (ir.filters)lossy | Fully supported | |
| Campaign | CRM Campaign1:1 | Fully supported | |
| Journey | CRM Sales Team + Pipeline Stage documentation1:1 | Fully supported | |
| Channel (SMS) | SMS configuration documentation1:1 | Fully supported | |
| Channel (Push/In-App) | Push notification configuration documentation1:1 | Fully supported | |
| Custom Fields (Customers, Events, Journeys) | Custom Fields (res.partner, crm.lead, utm.campaign)lossy | Fully supported | |
| AI Models / Predictive Scores | Not migratable (rebuild required)lossy | Not supported | |
| Owner | User1:1 | Fully supported | |
| Engagement: Email | CRM Activity (Note or Task)1: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.
Evam gotchas
Journey logic lacks structured export
AI predictive scores are non-exportable
Event data volume requires selective snapshot strategy
Channel credentials are environment-locked
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
Discovery and migration scoping
We audit the source Evam instance across customer record volume, event history window, active journey count, segment definitions, campaign metadata, channel configurations, and custom field schemas. We pair this with an Odoo environment assessment: edition (Community or Enterprise), active modules (CRM only or CRM with Sales, Accounting, Project), existing custom fields, and user count. The discovery output is a written migration scope document specifying record volumes per object, the event time window, the segment-to-domain-filter mapping plan, and the channel re-setup checklist.
Schema pre-creation in Odoo staging environment
We pre-create the destination schema in an Odoo staging environment. This includes provisioning custom fields on res.partner (Contact), crm.lead (Lead), utm.campaign (Campaign), and crm.activity (Activity), configuring CRM Pipeline stages and Sales Teams to match the Evam journey primary segments, creating ir.filters records for each Evam segment definition, and setting up tags on res.partner for segment membership migration. Schema is deployed via Odoo XML data migration script or through Odoo Studio into a Sandbox org for validation before production migration begins.
Event history scoping and aggregation strategy
We define the event history time window (typically 90-180 days) based on customer retention policy and Odoo CRM storage constraints. We run a pre-migration API extraction of Evam event data scoped to the agreed window, aggregating the results into per-customer activity summaries and per-campaign engagement metrics. The aggregation logic is documented and validated against a sample of raw Evam event records before the full extraction runs. Older event data is documented as an archive export for the customer to retain outside Odoo if required for compliance.
Sandbox migration and reconciliation
We run a full migration into an Odoo Sandbox using production-like data volume. The customer's CRM lead reconciles record counts (Contacts in, Leads in, Accounts in, Activities in), spot-checks 25-50 random records against the Evam source data, and validates that segment membership tags and custom field values transferred correctly. Any mapping corrections, field type mismatches, or schema conflicts are resolved in the staging environment before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Users (manual provisioning validated), Accounts (from Evam company associations), Contacts (with parent_id resolved), Leads (with lifecycle stage mapped to Odoo lead status), Campaign records (utm.campaign), Activities (Event history scoped to the agreed time window), segment membership tags, and custom field values on all records. Each phase emits a row-count reconciliation report before the next phase begins. Channel configurations and journey definitions are documented and handed over at this stage.
Cutover, validation, and journey rebuild handoff
We freeze Evam write access during cutover and run a final delta migration of any records modified during the migration window. We then enable Odoo CRM as the system of record. We deliver the journey documentation, segment rebuild specifications, channel re-setup checklists, and AI scoring model specifications 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. Workflows, journey automation rules, and automation sequences do not migrate as code; they are documented for manual rebuild in Odoo Studio or via a certified Odoo partner.
Platform deep dives
Evam
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 Evam 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
Evam: Not publicly documented.
Data volume sensitivity
Evam 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 Evam to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Evam 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 Evam
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.