CRM migration
Field-level mapping, validation, and rollback between eZnet CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
eZnet CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between eZnet CRM and Odoo CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
eZnet CRM and Odoo CRM use fundamentally different organizational models. eZnet CRM structures data around Accounts with linked Contacts, Opportunities, and Activities under per-user record caps on lower tiers. Odoo CRM is the CRM module of the Odoo ERP suite; it organizes data around Companies with Leads, Opportunities in Kanban-piped Stages, and Activities linked as Mail Messages or Tasks to the parent record. No public API endpoint reference exists for eZnet CRM, which means migration tooling relies on available export mechanisms, typically CSV-based file transfers with manual relationship resolution. We capture eZnet's custom field schema during discovery, pre-create matching Odoo custom fields before import, and preserve the Account-Contact-Opportunity linkage through staged import sequencing. Workflows, Campaign automation, and sequence cadences from eZnet do not migrate as code; we deliver a written inventory for the customer's admin to rebuild in Odoo Studio or through Python-based Odoo automation.
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 eZnet 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.
eZnet CRM
Account
Odoo CRM
Company
1:1eZnet CRM Accounts map directly to Odoo CRM Company records. Account Name becomes the Company name field, website maps to website, and phone/address fields map to Odoo's contact fields on the Company record. Account is imported before Contacts so that the parent-company lookup relationship is satisfied at the moment of Contact insert. We preserve any custom fields on the eZnet Account as Odoo custom fields on res.partner using Odoo Studio or direct Python model inheritance. Territory assignments from eZnet Enterprise map to Odoo CRM Sales Team or tags on the Company record.
eZnet CRM
Contact
Odoo CRM
Contact
1:1eZnet CRM Contacts map to Odoo CRM Contact records (res.partner with is_company=False). First name, last name, email, phone, mobile, and address fields migrate directly. The Account-Contact link from eZnet is preserved by resolving the parent Company ID during import so that the Contact is linked to the correct Odoo Company at insert time. Duplicate detection is performed on email address before import.
eZnet CRM
Lead
Odoo CRM
Lead
1:1eZnet CRM Leads map to Odoo CRM Lead records (crm.lead with type='lead'). Lead status, source, rating, and any custom lead fields migrate as Odoo custom fields on the Lead record. We preserve the eZnet lead stage and conversion date if the lead was previously converted. Unconverted Leads land in the Odoo Lead pipeline and can be converted to Opportunities through Odoo's standard Convert to Opportunity action.
eZnet CRM
Opportunity
Odoo CRM
Opportunity
1:1eZnet CRM Opportunities map to Odoo CRM Opportunity records (crm.lead with type='opportunity'). Deal amount, expected close date, probability, and stage migrate directly. We pre-create Odoo pipeline Stages to match the eZnet pipeline structure, preserving stage names, order, and probability percentages. The Account lookup and Owner assignment resolve at migration time through email matching to Odoo User records.
eZnet CRM
Pipelines
Odoo CRM
Stage
lossyeZnet CRM pipeline and stage configuration migrates as Odoo CRM Stage records within the appropriate Sales Team. Stage names, display order, and probability percentages are re-created in Odoo before Opportunity import begins. Odoo allows unlimited stages per pipeline, unlike eZnet's tier-constrained pipeline configuration on lower plans.
eZnet CRM
Activities
Odoo CRM
Mail Message and Task
1:manyeZnet CRM Activities (calls, emails, tasks, events) split into Odoo Mail Message records for email content and Task records (project.task or mail.activity.type) for calls, tasks, and events. Each migrated activity links to the parent Contact or Company record via Odoo's res_id/res_model referencing mechanism. Activity date and owner are preserved; note content migrates as Mail Message body text. Some activity types may flatten into Odoo's Chatter log on the parent record rather than as separate records, which we document during scoping.
eZnet CRM
Documents
Odoo CRM
Attachments
1:1eZnet CRM Document Library records map to Odoo CRM attachments (ir.attachment records linked via res_model and res_id to the parent Company or Contact). Document metadata (name, description, file type, upload date) migrates; actual file blobs require separate file transfer handling and are flagged during discovery for explicit scope confirmation. We reparent attachments to the correct Odoo parent record after the Company and Contact imports complete.
eZnet CRM
Users
Odoo CRM
User
1:1eZnet CRM Users with role-based security map to Odoo User records. We resolve by email match and map eZnet role and profile assignments to Odoo Security Groups (Sales: User, Manager) and Sales Team assignments. Inactive users from eZnet are preserved in Odoo as inactive records so that historical Opportunity and Activity ownership is preserved for audit.
eZnet CRM
Custom Fields
Odoo CRM
Custom Fields
lossyeZnet CRM custom fields on any object migrate to Odoo custom fields on the equivalent model (res.partner for Contact/Account custom fields, crm.lead for Opportunity/Lead custom fields). We capture the full field schema including data type, picklist values, and visibility settings during discovery. Odoo custom fields are pre-created via data migration script before record import begins. Picklist values migrate as selection fields or tags depending on the source field cardinality.
eZnet CRM
Marketing Campaigns
Odoo CRM
Campaign
1:1eZnet CRM Marketing Campaign records migrate to Odoo CRM Campaign (utm.campaign). Campaign name, start date, status, and budget migrate directly. Campaign member associations to Contacts migrate as Odoo CRM Salesteam tags or as Campaign members if the Odoo Marketing module is installed. Note that campaign automation rules, email sequences, and workflow triggers from eZnet do not migrate as code.
eZnet CRM
Inventory Items
Odoo CRM
Product
1:1eZnet CRM Inventory Items (Professional tier and above) map to Odoo Product records (product.template). Item name, SKU, stock levels, and pricing migrate to Odoo product fields. Unit of measure and vendor information map to Odoo product variants if applicable. This object only migrates if the Odoo Inventory or Sales app is installed in the destination database.
eZnet CRM
Tickets
Odoo CRM
Ticket
1:1eZnet CRM Customer Support module tickets migrate to Odoo Helpdesk tickets (helpdesk.ticket) if the Odoo Helpdesk app is installed. Ticket subject, description, priority, status, and assigned technician migrate directly. Linked Contact and Account resolve via the Odoo partner lookup at migration time. Resolution notes and internal comments migrate as Ticket messages.
| eZnet CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipelines | Stagelossy | Mapping required | |
| Activities | Mail Message and Task1:many | Mapping required | |
| Documents | Attachments1:1 | Mapping required | |
| Users | User1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Marketing Campaigns | Campaign1:1 | Mapping required | |
| Inventory Items | Product1:1 | Mapping required | |
| Tickets | Ticket1: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.
eZnet CRM gotchas
Per-tier record limits create migration scope boundaries
No publicly documented API endpoint reference
Sparse public review corpus limits migration risk assessment
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 export capability assessment
We audit the source eZnet CRM instance across tier (Standard/Professional/Enterprise/Private Cloud), record counts per object (Accounts, Contacts, Leads, Opportunities, Activities, Documents), custom field schema, and available export mechanisms. Since eZnet has no documented API, we confirm what CSV export options eZnet exposes (full database export vs. per-module, batch size limits, format). We pair this with an Odoo instance review: which Odoo apps are installed (CRM only vs. CRM + Helpdesk + Inventory), Odoo edition (Community or Enterprise), and current Stage and Sales Team configuration. The discovery output is a written migration scope, a confirmed export approach, and an Odoo configuration checklist.
Schema design and Odoo stage configuration
We design the destination schema in the Odoo database. This includes pre-creating custom fields on res.partner (Company and Contact), crm.lead (Lead and Opportunity), and helpdesk.ticket if applicable. We configure Odoo CRM pipeline Stages to match the eZnet pipeline structure: stage names, display order, and probability percentages are re-created in Odoo before any record import begins. Sales Teams, if used in eZnet, map to Odoo Sales Teams. Schema changes are deployed in the destination Odoo environment before data import.
Data export and CSV preparation
We extract data from eZnet CRM via available export mechanisms, typically CSV files per object module. We handle the relationship resolution order: Accounts export first (as the parent), then Contacts with parent Account ID reference, then Leads, then Opportunities with parent Account and Owner references, then Activities with parent Contact/Account references. We normalize date formats to YYYY-MM-DD, standardize phone number formats, deduplicate on email address for Contacts, and flag any records with missing required fields for customer review before import.
Sandbox migration and reconciliation
We run a full migration into an Odoo test environment using production-like data volume. The customer's admin reconciles record counts (Accounts in, Contacts in, Leads in, Opportunities in, Activities in), spot-checks 25-50 random records against the eZnet source for field-level accuracy, and validates that the Odoo pipeline stages are correctly assigned to Opportunities. Any mapping corrections and data quality issues are resolved here before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from eZnet Accounts), Contacts (with parent Company resolved), Leads, Opportunities (with Company, Owner, and Stage resolved), Activities (Mail Messages and Tasks with parent Contact/Company resolved), Documents (attachment metadata with re-parenting to Odoo records), Custom Fields data, and Tickets (if Helpdesk is installed). Each phase emits a row-count reconciliation report before the next phase begins. Owner resolution uses email match against Odoo Users; unresolved owners go to a reconciliation queue for the customer's admin to provision.
Cutover, validation, and automation rebuild handoff
We freeze new record creation in eZnet CRM during the cutover window, run a final delta migration of any records modified during the migration period, then set Odoo CRM as the system of record. We deliver a written inventory of every eZnet workflow rule, campaign automation, and sequence cadence with a recommended Odoo Studio or Python automation equivalent for the customer's admin to rebuild post-migration. We do not rebuild eZnet automations as Odoo server actions inside the migration scope; that is a separate engagement. We support a one-week hypercare window for reconciliation issues raised during initial user testing.
Platform deep dives
eZnet CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 eZnet CRM and Odoo CRM.
Object compatibility
3 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
eZnet CRM: Not publicly documented.
Data volume sensitivity
eZnet 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 eZnet CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your eZnet 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 eZnet 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.