CRM migration
Field-level mapping, validation, and rollback between edge CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
edge CRM
Source
Odoo CRM
Destination
Compatibility
10 of 14
objects map 1:1 between edge CRM and Odoo CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from edge CRM to Odoo CRM is a structural migration from a standalone lightweight CRM to a modular ERP where CRM is one component of a larger suite. edge CRM organises sales around a flat pipeline with AI-scored Leads and a simplified contact-company model; Odoo CRM uses crm.lead for prospects and opportunities, linked to res.partner as a unified contact-account model with optional Project and Timesheet modules for deeper activity tracking. The most significant migration risk is edge CRM's lack of a documented public API, which we resolve by confirming export options with the edge CRM account team before sequencing. We pre-create Odoo's field schema for all custom fields before data import, preserving the edge CRM relationship graph intact rather than flattening records to CSV. Automations and workflow logic do not transfer and must be rebuilt in Odoo's Action Rules or Studio automator. Reports and dashboard configurations also do not migrate; we deliver a written inventory for the admin to rebuild in Odoo's reporting module.
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 edge 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.
edge CRM
Contact
Odoo CRM
res.partner (contact type)
1:1edge CRM Contacts map to Odoo res.partner records with partner_type set to contact. First name and last name from edge CRM map to firstname and lastname on res.partner using the base_name_autocomplete module conventions. Email, phone, and mobile map to email, phone, and mobile. Custom contact properties on edge CRM require pre-creation in Odoo Studio as custom fields on res.partner before import; we document each field's edge CRM data type and the closest matching Odoo field type to avoid truncation or type-rejection errors.
edge CRM
Company
Odoo CRM
res.partner (company type)
1:1edge CRM Companies map to Odoo res.partner records with partner_type set to company. Company name maps to name, domain or website maps to website, and address fields map to street, street2, city, state_id, zip, and country_id. The company record must exist before any linked Contacts import so that the parent_id foreign key resolves on insert. edge CRM's company-contact association table is preserved as parent_id references in Odoo.
edge CRM
Lead
Odoo CRM
crm.lead
1:1edge CRM Leads map to Odoo crm.lead records with type set to lead. The AI qualification score from edge CRM transfers to a custom field x_edge_lead_score__c that we create in Odoo Studio before import. Lead status maps to crm.lead stage_id with stage names remapped from edge CRM's stage labels to the nearest Odoo crm.stage values. edge CRM's lead-company association (linked Company on the Lead record) maps to partner_id on crm.lead.
edge CRM
Deal
Odoo CRM
crm.lead (opportunity type)
1:1edge CRM Deals map to Odoo crm.lead records with type set to opportunity. Deal name maps to name, monetary value maps to planned_revenue, expected close date maps to date_deadline, and deal owner maps to user_id resolved via email match against Odoo res.users. The edge CRM pipeline stage assignment maps to stage_id, and the associated Company and Contact links map to partner_id and the partner_id contact. Closed-won and closed-lost outcomes from edge CRM map to Odoo's crm.lead won and lost stage states.
edge CRM
Pipeline Stages
Odoo CRM
crm.stage (kanban configuration)
lossyedge CRM allows custom stage names and sequence ordering per pipeline. We extract the full stage list including custom names and positions, then configure corresponding crm.stage records in Odoo CRM's kanban view. Each stage is assigned the correct sequence number and probability percentage matching the edge CRM configuration. If the customer has multiple pipelines in edge CRM, we create separate Sales Teams in Odoo and configure stage sequences per team.
edge CRM
Custom Fields
Odoo CRM
ir.model.fields (Studio-created)
lossyedge CRM allows teams to define custom properties on Contacts, Companies, Deals, and Leads. We extract the full custom field schema during the audit phase, then pre-create each field in Odoo Studio on the corresponding model (res.partner or crm.lead) before data import. We flag fields where the edge CRM data type (multi-select, long-text, date) has no direct Odoo equivalent and document the transformation approach. Multi-select picklist values from edge CRM are stored as comma-separated strings in the Odoo custom field unless the customer requests a dedicated ir.model.selection setup.
edge CRM
Activity: Call, Email, Meeting, Note
Odoo CRM
mail.message
1:1edge CRM activity logs (calls, emails, meetings, notes) map to Odoo mail.message records linked to the corresponding crm.lead (opportunity or lead) or res.partner record via model, res_id, and message_type fields. Call duration, disposition, and recording reference transfer to custom message fields on mail.message. Meeting location and attendee information map to mail.message body fields. The original edge CRM timestamp is preserved as mail.message.date so the Odoo chatter timeline is chronologically accurate from day one of cutover.
edge CRM
Task
Odoo CRM
project.task or crm.lead follower task
lossyedge CRM tasks with due dates and assignment map to Odoo project.task if the customer activates the Project module alongside CRM, or to internal follower tasks on crm.lead if Project is not in scope. Completed and open tasks both transfer; overdue status from edge CRM is stored as a date field in the Odoo destination task rather than a system flag. Task assignments resolve by email match to Odoo res.users.
edge CRM
Attachment
Odoo CRM
IR.attachment
1:1Documents stored in edge CRM's document management module can be exported as binary files if the edge CRM export mechanism exposes a download endpoint or a support-assisted bulk export. We flag attachments during scoping, assess per-record whether a download is available, and import files as IR.attachment records in Odoo linked to the corresponding res.partner or crm.lead via res_model and res_id. If edge CRM does not expose file downloads, we document the attachment inventory for manual re-upload post-migration.
edge CRM
Owner
Odoo CRM
res.users
1:1edge CRM record owners map to Odoo res.users by email address match. We extract the distinct owner list from all migrating record types and resolve each against the destination Odoo instance's user table. Any edge CRM owner without a matching Odoo user is placed in a reconciliation queue for the customer's Odoo admin to provision before the record import phase begins. Inactive Odoo users are used for historical owner assignment if the original edge CRM owner is no longer active.
edge CRM
Smart PDF Builder (Proposal/Invoice)
Odoo CRM
sale.order or account.move
lossyedge CRM's built-in Smart PDF Builder generates proposals and invoices attached to Deals. If the customer has activated the Odoo Sale or Accounting modules, these documents map to sale.order (quotations and sales orders) or account.move (invoices). The Odoo document type is confirmed during scoping, and if neither Sale nor Accounting module is in the destination Odoo configuration, we document the proposal content for manual re-creation and flag it as out-of-scope.
edge CRM
Tag
Odoo CRM
crm.tag
1:1edge CRM tags on Leads and Deals map to Odoo crm.tag records. We extract all distinct tag values, create the corresponding tags in Odoo, and link them to crm.lead records via the crm.tag.rel many-to-many table during import. Tag names are preserved verbatim so reporting by tag in Odoo matches the edge CRM segmentation the team is already familiar with.
edge CRM
Lead-Company Association
Odoo CRM
crm.lead.partner (relational link)
1:1edge CRM links Leads to Companies through a separate association table. In Odoo, this maps to the partner_id field on crm.lead where the Company is a res.partner record of company type. We resolve the Company reference at migration time using the Company name or domain as the dedupe key against Odoo's existing res.partner records, then populate partner_id on the related crm.lead so the lead-company association is intact in the Odoo chatter view.
edge CRM
Reports and Dashboard Configurations
Odoo CRM
none
1:1Dashboard configurations, saved reports, and chart layouts built inside edge CRM's reporting module are not exposed via a portable export format and cannot be migrated. We document the full list of edge CRM reports with their dimensions, filters, and chart types as a written handoff to the customer's Odoo admin for rebuild using Odoo's reporting tools (native graph views, custom reports, or FoxERP reporting extensions). This is explicitly out-of-scope for the migration deliverable.
| edge CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner (contact type)1:1 | Fully supported | |
| Company | res.partner (company type)1:1 | Fully supported | |
| Lead | crm.lead1:1 | Fully supported | |
| Deal | crm.lead (opportunity type)1:1 | Fully supported | |
| Pipeline Stages | crm.stage (kanban configuration)lossy | Mapping required | |
| Custom Fields | ir.model.fields (Studio-created)lossy | Mapping required | |
| Activity: Call, Email, Meeting, Note | mail.message1:1 | Fully supported | |
| Task | project.task or crm.lead follower tasklossy | Fully supported | |
| Attachment | IR.attachment1:1 | Fully supported | |
| Owner | res.users1:1 | Fully supported | |
| Smart PDF Builder (Proposal/Invoice) | sale.order or account.movelossy | Fully supported | |
| Tag | crm.tag1:1 | Fully supported | |
| Lead-Company Association | crm.lead.partner (relational link)1:1 | Fully supported | |
| Reports and Dashboard Configurations | none1: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.
edge CRM gotchas
No free trial or free version means pre-purchase evaluation is limited
No publicly documented API or export endpoints
Automations and workflows do not survive migration
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
Export method confirmation and discovery audit
The first step is confirming edge CRM's export mechanism with the edge CRM account team, because no public API or export endpoint is documented. We raise this as a risk item in scoping, request access to any built-in CSV or Excel export tools, and if those are insufficient, engage edge CRM support directly. Simultaneously, we run a full data audit: counting Contacts, Companies, Deals, Leads, activity records, tasks, and attachments; identifying custom field definitions; extracting the pipeline stage list with names and order; and inventorying automations and saved reports. The audit output is a written scope document that both platforms sign off on before migration planning proceeds.
Odoo environment provisioning and schema design
We provision the Odoo environment in the customer's chosen deployment (Odoo.sh cloud or on-premises) and install the CRM module plus any additional Odoo apps agreed during scoping (Sale, Accounting, Project, or Inventory). We create Odoo user accounts matching the edge CRM owner list, configure Sales Teams, and set access rights. We then create all required custom fields in Odoo Studio on res.partner and crm.lead using the edge CRM custom field schema from the audit, and configure crm.stage records with names and sequence numbers matching the edge CRM pipeline stages. All schema changes are deployed to a staging environment first for validation.
Staging migration and field mapping validation
We run a full migration into the Odoo staging environment using a representative subset of data. The customer reviews record counts, spot-checks 25-50 records against the edge CRM source, and confirms that pipeline stages display correctly in the kanban view. Field mapping corrections identified during staging are documented and applied before any production migration begins. Any export method changes confirmed with edge CRM are validated against the staging data to ensure the format is compatible with Odoo's import wizard. The customer sign-off on the staging migration is a gate requirement before production cutover is scheduled.
Owner reconciliation and user provisioning
We extract every distinct owner referenced across edge CRM Contacts, Companies, Deals, and Leads and match by email against the Odoo destination res.users table. Owners without a matching Odoo user are placed in a reconciliation list. The customer's Odoo admin provisions any missing users (active or inactive depending on whether the original edge CRM owner is still with the team) before the production migration begins. This step is a hard dependency because OwnerId references are required on all standard crm.lead records in Odoo and import will fail for records with unresolved owner references.
Production migration in dependency order
We execute the production migration in record-dependency sequence: res.partner records of company type first (no dependencies), then res.partner records of contact type with parent_id resolved, then crm.lead records of type lead, then crm.lead records of type opportunity with stage_id and user_id resolved, then activity history (mail.message records via batched API calls), then tasks, then attachments if file download is confirmed, then tags linked via crm.tag.rel. Each phase emits a row-count reconciliation report before the next phase begins. We run a delta pass at the end of migration to capture any records modified in edge CRM during the cutover window.
Cutover, validation, and automation handoff
We freeze writes in edge CRM during the cutover window, execute the final delta migration, then confirm Odoo as the system of record. The customer validates critical record counts and spot-checks a sample of migrated records. We deliver the automation inventory document listing every edge CRM automation with its trigger, conditions, and recommended Odoo Action Rule or Studio automator equivalent. We offer a one-week hypercare window for reconciliation issues raised during the first days of Odoo use. Any workflow rebuild work beyond documenting the existing automation logic is a separate engagement.
Platform deep dives
edge CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 edge CRM and Odoo CRM.
Object compatibility
2 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
edge CRM: Not publicly documented.
Data volume sensitivity
edge 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 edge CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your edge 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 edge 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.