CRM migration
Field-level mapping, validation, and rollback between RedEye and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
RedEye
Source
Odoo CRM
Destination
Compatibility
6 of 12
objects map 1:1 between RedEye and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from RedEye to Odoo CRM is a paradigm shift from a B2C contact-centric model to a B2B relational CRM embedded in an ERP suite. RedEye deduplicates all customer identity into a single Contact record with behavioural enrichment and multi-channel lifecycle data; Odoo CRM uses a Lead-Account-Contact-Opportunity hierarchy that assumes B2B pipeline management rather than retail behavioural tracking. We resolve this during scoping by mapping RedEye contacts to Odoo Contacts (and where applicable, inferring Odoo Account records from domain or company linkage) and by storing behavioural event history as custom fields and activity logs rather than native RedEye-style journey nodes. Campaign structures migrate as Odoo CRM tags and stage configurations; customer journeys do not replicate natively, so we document the journey tree for the customer's admin to rebuild in Odoo Studio or via a third-party marketing automation module. Workflows, journey automations, and RedEye reports do not migrate as code or dashboards; we deliver a written inventory of every active workflow and a recommendation for how Odoo or a compatible marketing automation module handles equivalent logic.
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 RedEye 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.
RedEye
Contact
Odoo CRM
Contact + Account (split required)
1:manyRedEye's unified Contact record maps to Odoo CRM's Contact object as the primary record. Company linkage from RedEye (where present) maps to Odoo Account. For RedEye contacts with no company association, we infer an Account from the contact's domain using a domain-extraction rule during import, creating a linked Account record so that Odoo's CRM Opportunity lookups can reference it. The RedEye contact identifier is stored in the Odoo contact's external_id field for reconciliation. Custom contact properties from RedEye migrate as Odoo IrModelField custom fields on res.partner.
RedEye
Company
Odoo CRM
Account
1:1RedEye company records (lighter-weight in B2C context) map directly to Odoo res.partner records with partner_type = 'company'. The RedEye company name becomes the Account name and the domain becomes the Website field. Account is created before any linked Contact import so that the contact_id.partner_id lookup is satisfied at the moment of insert. If the source RedEye account has no company records, we skip this object and rely on the contact-to-account inference in the Contact mapping.
RedEye
Campaign
Odoo CRM
CRM Tag + Stage Configuration
lossyRedEye campaigns migrate as Odoo CRM tags (crm.lead.tag) with the campaign name as the tag label. Campaign timing rules (start date, end date, goal metrics) are documented in a campaign inventory spreadsheet rather than a native Odoo campaign object, since Odoo CRM does not have a native multi-channel campaign scheduler. The customer's admin assigns tags to Opportunities and Contacts post-migration for campaign attribution. Channel assignments from RedEye (email, SMS, push) require manual reconfiguration in Odoo's marketing automation modules or third-party tools.
RedEye
Customer Journey
Odoo CRM
Documented (no native equivalent)
lossyRedEye journey logic (visual branching rules tied to contact behaviour and lifecycle stages) does not have a direct Odoo CRM equivalent. Odoo CRM has no native visual journey builder. We extract the full journey tree from RedEye as a structured rule document listing every trigger condition, branch, delay, and CRM action. We deliver this document to the customer's admin, who rebuilds equivalent logic in Odoo Studio, via a third-party Odoo marketing automation app, or in a standalone tool like Mautic if marketing automation is separated from the CRM layer.
RedEye
Events
Odoo CRM
CRM Activity Log + Custom Fields
1:1RedEye behavioural events (website actions, email opens, purchase triggers) migrate as Odoo mail.message records linked to the parent res.partner Contact. Event type, timestamp, and source channel are stored in custom fields on the message record. Event volume can be significant for high-frequency senders, so we chunk the event migration into batches of 1,000 records per API call and validate record counts against the source export. Events without a resolved parent contact are flagged in the reconciliation report and held for manual resolution.
RedEye
Product
Odoo CRM
Product (product.product)
1:1RedEye product catalogue records (SKU, name, pricing, category) migrate to Odoo product.product. ProductCode maps from RedEye's SKU field. Pricing migrates to lst_price (sales price) and standard_price (cost). Category maps to Odoo product.category via a name-match lookup. Unlimited product records migrate on both RedEye tiers; Odoo has no product count ceiling.
RedEye
Custom Fields
Odoo CRM
IrModelField custom fields
lossyRedEye custom contact fields and custom event fields require explicit field-to-field mapping during scoping. We extract the full field schema from RedEye and match it against Odoo's field type model (char, integer, float, selection, many2one, etc.) before destination schema creation. Custom fields are deployed as Odoo IrModelField records via the XML-RPC API before any data import begins. Fields without a direct Odoo type equivalent (e.g., multi-value arrays) are stored as char fields with delimiter-separated values or as Odoo tag associations.
RedEye
Segment
Odoo CRM
CRM Tag + Domain Filter
lossyRedEye dynamic segments (behavioural rules and demographic criteria) migrate as Odoo CRM tags on the Contact record plus an Odoo domain filter stored as a custom char field describing the segment logic. The domain filter describes the rule rather than re-executing it, since Odoo CRM does not have a native dynamic segment engine. We document every segment definition in a segmentation inventory with its criteria, logic, and recommended Odoo equivalent (static tag, sales team filter, or campaign audience).
RedEye
Tags
Odoo CRM
CRM Tag
1:1Contact and campaign tags from RedEye migrate as Odoo crm.lead.tag records. We map tag names exactly and flag any tag characters (special characters, spaces, non-ASCII) that are unsupported by Odoo's tag schema. Tags are linked to both Contact and Lead records post-migration, depending on whether the contact was mapped to a Contact or an Account.
RedEye
Attachments
Odoo CRM
IrAttachment
1:1Campaign assets (images, documents) attached to RedEye campaigns or emails migrate via file export and re-upload to Odoo's ir_attachment table. We preserve the file hierarchy and naming conventions to minimise manual re-linking in Odoo's document management view. Odoo's document management module (documents app) can be enabled if the customer requires a more structured asset library post-migration.
RedEye
Reports and Dashboards
Odoo CRM
Documented (no migration)
lossyRedEye native reporting dashboards do not export because the visualisation components are platform-specific. We migrate all underlying data (contact attributes, event logs, campaign performance metrics) to Odoo so reports can be rebuilt from scratch. We flag this during scoping so the customer allocates time for the reporting rebuild phase in Odoo Reporting or in a connected BI tool. A reporting inventory document listing every source metric and its Odoo equivalent is included in the migration deliverables.
RedEye
Owner
Odoo CRM
User
1:1RedEye owners (sales and marketing team members with campaign access) map to Odoo res.users records. We resolve owners by email match. Any RedEye owner without a matching Odoo User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Odoo users are created for historical owners who are no longer active so that owner attribution on historical records is preserved.
| RedEye | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact + Account (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Campaign | CRM Tag + Stage Configurationlossy | Fully supported | |
| Customer Journey | Documented (no native equivalent)lossy | Fully supported | |
| Events | CRM Activity Log + Custom Fields1:1 | Fully supported | |
| Product | Product (product.product)1:1 | Fully supported | |
| Custom Fields | IrModelField custom fieldslossy | Mapping required | |
| Segment | CRM Tag + Domain Filterlossy | Fully supported | |
| Tags | CRM Tag1:1 | Fully supported | |
| Attachments | IrAttachment1:1 | Fully supported | |
| Reports and Dashboards | Documented (no migration)lossy | Not supported | |
| Owner | User1: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.
RedEye gotchas
Contact database size limits differ by pricing tier
Campaign journey logic does not export as a portable schema
Reports and dashboards are not exportable
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 scoping
We audit the source RedEye account across Essentials or Elevate tier, total contact count, campaign count, journey definitions, event volume, custom field schema, segment definitions, and tag taxonomy. We pair this with a scoping call to understand the target Odoo configuration: CRM-only or CRM plus additional modules (Sales, Accounting, Inventory, Project), Odoo edition (Community or Enterprise), user count, and channel requirements. The discovery output is a written migration scope document with object inventory, record counts per object, and a decision gate on the Account inference strategy for contact-centric RedEye data.
Destination schema design and Account inference strategy
We design the Odoo CRM destination schema before any data moves. This includes creating custom fields on res.partner (contact) and crm.lead (opportunity) via Odoo's XML-RPC API or CSV import, configuring CRM tags for campaign and segment migration, and deploying the schema to the customer's Odoo instance via a test run. The critical design decision is the Account inference strategy: for each RedEye contact without an explicit company association, we decide whether to create a linked Odoo Account from the contact's email domain or to store the contact without a parent Account. This decision affects Opportunity lookups and pipeline reporting downstream, so it requires sign-off from the customer's CRM admin before production migration.
Data extraction and transformation from RedEye
We export all source objects from RedEye via its API or CSV export capability: contacts (with all custom properties), companies, campaigns, events, products, custom fields, segments, tags, and attachments. Event logs are exported as a flat event table with contact_id, event_type, event_timestamp, and channel fields. We run a data quality check at this stage: duplicate contacts, missing required fields, inconsistent date formats, and contacts exceeding the RedEye Essentials 150,000 cap are flagged in a pre-flight report. Data cleansing (deduplication, format standardisation, missing value handling) happens in this phase, not in production.
Sandbox migration and reconciliation
We run a full migration into the customer's Odoo test environment using production-like data volume. The customer's Odoo admin reconciles record counts (Contacts in, Accounts in, Events in, Products in), spot-checks 25-50 random records against the RedEye source, and validates that custom fields are correctly populated and that the Account-Contact relationships are resolved as designed. Any mapping corrections happen here, not in production. Owner reconciliation also happens at this stage: any RedEye owner without a matching Odoo User is flagged for the admin to provision before the production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: custom fields and tag taxonomy first (schema deployment), then Accounts (from RedEye companies), then Contacts (with AccountId resolved from domain inference or explicit company linkage), then Products, then Events in chunked batches with rate-limit handling, then Tags and Segments as post-import metadata. Campaign structures are delivered as a tagging inventory spreadsheet rather than a native Odoo object import. Each phase emits a row-count reconciliation report before the next phase begins. We run a delta pass at cutover for any records modified during the migration window.
Cutover, validation, and workflow rebuild handoff
We freeze RedEye writes during cutover, run the final delta migration, then enable Odoo CRM as the system of record. We deliver the Customer Journey inventory document (journey tree with trigger conditions, branches, and recommended Odoo equivalents), the Reporting inventory document (source metrics and Odoo field locations for dashboard rebuild), and the Automation inventory (workflow logic requiring rebuild in Odoo Studio or a marketing automation module). We support a one-week hypercare window for reconciliation issues raised by the customer's team. We do not rebuild RedEye journeys, automations, or reports as Odoo configurations inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
RedEye
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 RedEye 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
RedEye: Not publicly documented.
Data volume sensitivity
RedEye 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 RedEye to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your RedEye 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 RedEye
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.