CRM migration
Field-level mapping, validation, and rollback between FIVE CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
FIVE CRM
Source
Odoo CRM
Destination
Compatibility
8 of 12
objects map 1:1 between FIVE CRM and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from FIVE CRM to Odoo CRM is a migration from a purpose-built telemarketing platform into an open-source ERP suite with an integrated CRM module. FIVE CRM stores its most critical telemarketing data in custom fields that vary by tenant and are not documented in a public API schema, requiring an explicit pre-migration field mapping session for every migration. Odoo CRM consolidates Leads and Opportunities into a single pipeline view with a Convert action, unlike FIVE CRM's separate Lead and Contact objects, and we resolve that model during scoping. Email campaign membership migrates as Odoo Campaign lines; granular engagement events (opens, clicks, replies) do not migrate via bulk export and require a separate export from FIVE CRM followed by a manual import into Odoo Marketing. Odoo workflows and server actions do not migrate; we deliver a written inventory of every active automation for the customer's admin to rebuild in Odoo Studio or via Python modules post-migration.
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 FIVE 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.
FIVE CRM
Contact
Odoo CRM
Contact
1:1FIVE CRM Contacts map directly to Odoo CRM Contacts. The email address is the primary dedupe key during import. We resolve the parent Company reference before Contact import so that the partner_id foreign key is satisfied on insert. FIVE CRM owner assignments map to Odoo User records by email match, with unresolvable owners held in a reconciliation queue for admin provisioning before the contact phase begins.
FIVE CRM
Company
Odoo CRM
Contact (company_type = company)
1:1FIVE CRM Companies map to Odoo Contact records with company_type set to company. The company name becomes the Contact name field, and the domain becomes the website field. Contact is created before any child Contact import so that the parent partner_id lookup resolves at insert time. This ordering is enforced in every phase sequence.
FIVE CRM
Lead
Odoo CRM
Lead
1:1FIVE CRM Leads map to Odoo CRM Lead records. The original FIVE CRM lead_source value migrates as a custom field or tag so that sourcing attribution is preserved. Any FIVE CRM lead_score or telemarketing qualification flags map to custom integer fields on Odoo Lead. Odoo Lead kanban stage names are configured during scoping to match the customer's existing FIVE CRM lead pipeline stage labels.
FIVE CRM
Pipeline (custom stages)
Odoo CRM
Stage
lossyFIVE CRM pipeline configurations with custom stage names map to Odoo CRM Stage records within a single pipeline. Each FIVE CRM pipeline becomes a Stage sequence; if the customer uses multiple named pipelines in FIVE CRM, we document the mapping and configure separate kanban views in Odoo via custom kanban view XML rather than as separate pipeline objects, since Odoo's native CRM uses a single pipeline per sales team.
FIVE CRM
Campaign
Odoo CRM
Campaign
1:1FIVE CRM Campaigns map to Odoo Marketing Campaign records with campaign_membership records linking individual Contacts to the campaign. Campaign name, type, and status migrate as Odoo Campaign fields. Individual email event data (opens, clicks, replies) does not migrate via bulk export; we migrate campaign membership (which contacts are in which campaigns and their current status) and flag granular engagement event logs for a separate FIVE CRM export followed by Odoo manual import.
FIVE CRM
Task
Odoo CRM
Task
1:1FIVE CRM Tasks map to Odoo CRM Task records or Project Task records depending on whether the customer has the Project app installed. Due date, assignee, priority, and completion status transfer directly. FIVE CRM task types that do not map to Odoo's default task stages are resolved during scoping and consolidated into the nearest Odoo stage.
FIVE CRM
Attachment
Odoo CRM
Attachment
1:1File attachments associated with Contacts, Companies, or Leads in FIVE CRM migrate as Odoo IrAttachment records linked via the res_model and res_id fields to the parent Contact or Lead record. Attachments over 10MB are flagged for separate file-transfer handling due to API payload limits.
FIVE CRM
Tag
Odoo CRM
Tag
lossyFIVE CRM tags migrate to Odoo CRM tags (stored in the crm.tag model). Multi-select tag fields in FIVE CRM custom properties split into individual tag assignments during migration. We agree on tag normalization rules during scoping to prevent tag proliferation in Odoo.
FIVE CRM
User (Owner)
Odoo CRM
User
1:1FIVE CRM Owner records map to Odoo ResUsers by email address. Any Owner without a matching Odoo User is placed in a reconciliation queue. The customer's Odoo admin provisions the missing user before record import resumes, because OwnerId references are required on Contact, Company, and Lead records.
FIVE CRM
Custom Field (telemarketing)
Odoo CRM
Custom Field (Odoo CRM)
lossyFIVE CRM telemarketing custom fields (lead scoring matrices, dialer session flags, campaign targeting fields, warm-up status fields) require explicit field-level mapping during a pre-migration field mapping session. We enumerate every custom field in use, confirm its data type against the FIVE CRM schema, and agree on a destination Odoo field before any data moves. Odoo custom fields are created via Studio or Python before migration begins. This step is mandatory for every FIVE CRM migration because the platform does not expose a complete schema document via its public API.
FIVE CRM
Lead Score
Odoo CRM
Custom Integer Field on Lead
lossyFIVE CRM lead scoring values stored in custom numeric fields migrate to Odoo custom integer fields on the Lead model (crm.lead). We preserve the field name as a suffix on the Odoo custom field for admin readability. Score thresholds used for routing in FIVE CRM are documented separately for Odoo automated action rebuild.
FIVE CRM
Campaign Membership
Odoo CRM
Campaign Subscription Line
1:1FIVE CRM campaign membership (which Contacts are subscribed to which Campaigns, with subscription status flags) maps to Odoo Campaign lines via the mail.mass_mailing.contact model linked to the Odoo Campaign. This preserves segmentation for re-running campaigns in Odoo Marketing after migration.
| FIVE CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Contact (company_type = company)1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Pipeline (custom stages) | Stagelossy | Fully supported | |
| Campaign | Campaign1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Tag | Taglossy | Fully supported | |
| User (Owner) | User1:1 | Fully supported | |
| Custom Field (telemarketing) | Custom Field (Odoo CRM)lossy | Fully supported | |
| Lead Score | Custom Integer Field on Leadlossy | Fully supported | |
| Campaign Membership | Campaign Subscription Line1: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.
FIVE CRM gotchas
System failure errors give no explanation
Custom fields require explicit manual mapping
Campaign engagement history may not transfer completely
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 session
We audit the source FIVE CRM instance across every object in scope: Contacts, Companies, Leads, Campaigns, Tasks, Tags, and all custom fields. We enumerate every telemarketing-specific custom field, confirm its data type against known FIVE CRM schemas, and count active pipeline stages, active campaigns, and campaign membership records. We also identify integration points (VoIP connectors, email marketing tools, third-party dialers) that will require reconfiguration post-migration. The discovery output is a written migration scope, a custom field mapping table for Odoo Studio or Python, and a campaign migration decision document covering membership versus granular engagement event handling.
Odoo schema design and custom field creation
We design the destination Odoo CRM schema in a staging database. This includes creating every custom field identified in FIVE CRM (lead score fields, dialer session fields, campaign targeting fields, warm-up status fields) using Odoo Studio or Python field definitions, configuring CRM stage names to match the customer's existing FIVE CRM pipeline stage labels, setting up Odoo Tags matching the customer's FIVE CRM tag taxonomy, and configuring campaign structure to match the customer's existing FIVE CRM campaign types. The schema is validated in an Odoo staging environment before any production data moves.
Staging migration and reconciliation
We run a full migration into the Odoo staging database using production-like data volume. The customer reconciles record counts (Contacts in, Companies in, Leads in, Campaign memberships in, Tasks in), spot-checks 25-50 random records against the FIVE CRM source, and reviews the Odoo kanban view and contact list to confirm stage labels and data layout. Any field mapping corrections, stage name adjustments, or tag normalization changes happen at this stage. The customer signs off on the staging result before production migration is scheduled.
Owner and user provisioning
We extract every distinct FIVE CRM Owner referenced on Contact, Company, Lead, and Task records and match by email address against the destination Odoo User table. Owners without a matching Odoo User are placed in a reconciliation queue. The customer's Odoo admin provisions the missing users (active or inactive depending on whether the original FIVE CRM owner is still active in the organization) before production migration begins. Migration cannot proceed past this step because OwnerId references are required on Contact, Company, and Lead records.
Production migration in dependency order
We run production migration in record-dependency order: Companies (as parent Contact records), Contacts (with partner_id resolved to the parent Company), Leads (with stage assignments resolved to Odoo CRM stages), Campaign membership lines (linked to Odoo Campaign and Contact records), Tasks (with user_id resolved to Odoo User records), Attachments (linked to parent Contact or Lead via ir_attachment), Tags (applied via crm.tag records), and Custom Field values (populated via SQL after the standard field import completes). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation rebuild handoff
We freeze FIVE CRM writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We validate record counts, spot-check 20-30 records for field-level accuracy, confirm campaign memberships are visible in the Odoo Campaign kanban view, and confirm task assignments appear in the correct user's Odoo CRM activity feed. We deliver the FIVE CRM automation inventory document (triggers, conditions, actions, and Odoo equivalents) to the customer's admin team. We do not rebuild FIVE CRM automations as Odoo Automated Actions inside the migration scope; that is a separate engagement.
Platform deep dives
FIVE 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 FIVE 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
FIVE CRM: Not publicly documented.
Data volume sensitivity
FIVE 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 FIVE CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your FIVE 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 FIVE 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.