CRM migration

Migrate from BenchmarkONE to Odoo CRM

Field-level mapping, validation, and rollback between BenchmarkONE and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

BenchmarkONE logo

BenchmarkONE

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

69%

9 of 13

objects map 1:1 between BenchmarkONE and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

BenchmarkONE organizes records around Contacts with Temperature (lead scoring), Tags, and a built-in Deal Pipeline; Odoo CRM uses a Lead-to-Opportunity pipeline model where Leads convert into Opportunities attached to a Partner (the Odoo Account equivalent). We map BenchmarkONE Contacts directly to Odoo Partners, preserve the Temperature score as a custom field, and split the BenchmarkONE Deal Pipeline into Odoo CRM crm.lead records with a corresponding Pipeline and Stage configuration. Tags migrate to Odoo Tags or a many2many tag field on the partner model. Email campaign metadata and aggregate stats migrate to Odoo crm.activity.history. BenchmarkONE automations (triggered by form submissions, website visits, tag changes, or purchases) do not export as data; we deliver a written inventory of each active automation with a recommended Odoo ir.actions.server or base.automation equivalent so the customer's admin can rebuild them post-migration. The Odoo.sh migration service is not used for cross-platform data moves; we load directly via Odoo's XML-RPC or JSON-RPC API.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

BenchmarkONE logo

BenchmarkONE

What's pushing teams away

  • Reporting features are consistently described as limited or underpowered compared to competitors, frustrating data-driven teams.
  • No native mobile app — field sales teams and road warriors must use the mobile web app, which users note as a significant gap.
  • Product development pace has lagged behind newer CRM entrants, leaving BenchmarkONE behind on modern features and integrations.
  • Contact resync and database refresh workflows are clunky, with users noting difficulty updating records after an initial import.
  • Outgrowing the platform's feature set — specifically around advanced automation, pipeline customization, and multi-channel marketing beyond email.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How BenchmarkONE objects map to Odoo CRM

Each row shows how a BenchmarkONE 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.

BenchmarkONE

Contact

maps to

Odoo CRM

Partner (res.partner)

1:1
Fully supported

BenchmarkONE Contact records map to Odoo res.partner with type='contact'. Standard fields (name, email, phone, website, street, city, state, zip, country) map 1:1 to their Odoo counterparts. The BenchmarkONE Temperature field (Cold/Warm/Hot) maps to a custom integer field temperature_score__c where 0=Cold, 1=Warm, 2=Hot. Contact Status maps to partner.state_id (custom stage field). Assigned Sales Rep maps to Odoo User (user_id) via email lookup. Tags stored as a comma-separated list in BenchmarkONE become Odoo Tags (mailing.mailing contact) or a many2many tag field on res.partner, depending on how the customer intends to use them post-migration.

BenchmarkONE

Company

maps to

Odoo CRM

Partner (res.partner, type=company)

1:1
Fully supported

BenchmarkONE Company records map to Odoo res.partner with type='company' and is_company=True. The company record is created first, then BenchmarkONE Contacts linked to that company receive the parent_id pointing to the company Partner record. Website, Industry, and custom company fields migrate as fields on the company Partner record. Address fields on Company migrate as address fields on the company Partner, and contact addresses on related Contact records reference the company as parent_id.

BenchmarkONE

Deal

maps to

Odoo CRM

Opportunity (crm.lead)

1:1
Fully supported

BenchmarkONE Deals map to Odoo crm.lead records of type='opportunity'. The Deal name becomes the Opportunity subject, the deal amount maps to Odoo's expected_revenue or amount_currency fields, and the deal probability maps to probability (with stage-based defaults). We configure an Odoo crm.team pipeline with stages that match the BenchmarkONE pipeline stages before migration, so stage names and probabilities are pre-aligned. Deal custom fields migrate as custom fields on crm.lead via Odoo Studio.

BenchmarkONE

Deal Pipeline Stage

maps to

Odoo CRM

Pipeline Stage (crm.stage)

lossy
Fully supported

Each BenchmarkONE Deal Pipeline stage becomes an Odoo crm.stage record within the crm.lead model. Stage order, name, and probability percentage migrate directly. The Odoo pipeline uses crm.team to scope which stages are visible to which sales team, which allows multi-team setups that BenchmarkONE's single pipeline model does not support.

BenchmarkONE

Task

maps to

Odoo CRM

Task (project.task)

1:1
Fully supported

BenchmarkONE Tasks map to Odoo project.task records linked via project_id (a shared Project record serving as the task container). Standard fields (subject, date_deadline, user_id, stage_id, priority, description) map directly. Tasks associated with a specific Contact or Deal receive a res_model='crm.lead' and res_id pointing to the migrated Opportunity record. Tasks without a parent record are attached to the default project container.

BenchmarkONE

Tag

maps to

Odoo CRM

Tag (mailing.mailing contact) or many2many field

lossy
Fully supported

BenchmarkONE tags are free-form string labels applied to contacts for segmentation. We implement them as Odoo mailing.contact tags (mailing.mailing contact model) if the customer intends to use Odoo's Email Marketing app for campaign audience segmentation. Alternatively, we create a custom many2many tag field (benchmarkone_tags) on res.partner. The customer chooses during scoping; tags used primarily for CRM segmentation (not email marketing) typically use the custom field approach to avoid unintended mailing list inclusion.

BenchmarkONE

Custom Fields

maps to

Odoo CRM

Custom Fields (ir.model.fields via Odoo Studio)

lossy
Mapping required

BenchmarkONE custom fields on Contact, Company, and Deal records map to Odoo custom fields on res.partner and crm.lead via Odoo Studio. We audit field types during scoping (text, number, date, dropdown) and create matching field types in Odoo before migration begins. Dropdown fields in BenchmarkONE become Odoo selection fields; multi-select fields become many2many fields pointing to a dedicated tag model. Date and datetime fields require timezone normalization to UTC before Odoo import. This is the highest-risk schema step because mismatched field types silently reject or corrupt imported values.

BenchmarkONE

Email Campaign

maps to

Odoo CRM

Activity History (crm.activity + mail.mail.statistics)

1:1
Fully supported

BenchmarkONE stores email campaign metadata (name, send date, audience count, template name) and aggregate stats (opens, clicks, bounces, unsubscribes). We map these to Odoo crm.activity records linked to the target Partner records, and aggregate stats migrate as mail.mail.statistics records on the Partner. Individual email event logs (per-recipient open and click timestamps) require separate extraction from BenchmarkONE and are stored as notes or activity descriptions in Odoo because Odoo's standard CRM does not include a per-event email analytics table.

BenchmarkONE

Email Activity

maps to

Odoo CRM

Mail Message (mail.message)

1:1
Fully supported

BenchmarkONE stores individual email interactions logged against contacts as email activity records. These migrate as Odoo mail.message records with model='res.partner' and res_id pointing to the target Partner. Body content, timestamp, and direction (inbound/outbound) migrate directly. Odoo's Discuss app surfaces these as conversation threads on the Partner record.

BenchmarkONE

Social Profiles

maps to

Odoo CRM

Partner Social Fields (res.partner)

1:1
Fully supported

BenchmarkONE stores social profile URLs (LinkedIn, Twitter, Facebook, Instagram) as fields on the Contact record. These map to Odoo res.partner social fields (social_twitter, social_linkedin, social_facebook, social_instagram). Odoo surfaces these in the Partner form view under a Social Media section.

BenchmarkONE

Lead Source

maps to

Odoo CRM

Source Tag or Char Field (crm.lead)

1:1
Fully supported

BenchmarkONE Lead Source (website, referral, event, paid ad, organic search, other) maps to a selection field or char field source_id on Odoo crm.lead. We preserve the original label so that pipeline reports can be filtered by acquisition channel at destination. If the customer uses UTM-based attribution, we map the utm.source, utm.medium, and utm.campaign from BenchmarkONE to Odoo's utm.lead.mixin fields.

BenchmarkONE

Owner / Sales Rep

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

BenchmarkONE assigns users (sales reps) as owners to Contacts, Companies, Deals, and Tasks via an Assigned Sales Rep field. We resolve each distinct owner by email against the Odoo res.users table. Any BenchmarkONE Owner without a matching Odoo User is placed in a reconciliation queue for the customer's admin to provision before record import resumes. Owner ID resolution is a blocking dependency for Contacts and Deals because Odoo requires a valid user_id on crm.lead and res.partner.

BenchmarkONE

Automations / Workflows

maps to

Odoo CRM

Server Actions (ir.actions.server)

lossy
Mapping required

BenchmarkONE automations are triggered by form submissions, link clicks, website visits, tag changes, or purchases. These are platform-specific workflow constructs that do not export as data. We audit each active automation during discovery (trigger type, conditions, actions) and deliver a written inventory mapping each automation to an Odoo ir.actions.server, base.module.record rule, or mail.activity.type configuration. The customer or an Odoo implementation partner rebuilds them in Odoo's automation framework post-migration. This is documented reconstruction, not a data migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

BenchmarkONE logo

BenchmarkONE gotchas

High

Admin-only database export locks down data access

High

Contact-tier pricing means record count directly impacts billing

Medium

Email sending limits are tied to plan tier, not contact count

Medium

API requires SSL and JSON media type with no documented rate limits

Medium

Automations are BenchmarkONE-native and require manual reconstruction at destination

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Admin-only database export blocks non-admin data access

    The full database export in BenchmarkONE (Account Settings > Data > Export Data) is restricted to System Administrator accounts. Non-admin users do not see the Export option in their account settings. We require proof of admin access during scoping. If the migrating team lacks an admin account, we help coordinate with the account owner to grant System Administrator role temporarily before extraction begins. This is a hard blocker that can delay the migration start date if not identified early in scoping.

  • Odoo Lead-to-Opportunity conversion does not carry all custom fields automatically

    When a BenchmarkONE Contact becomes an Odoo Lead that converts to an Opportunity, Odoo's standard Convert action copies only the fields mapped in the system defaults. Any custom fields on the crm.lead model require explicit mapping in the convert wizard via Odoo Studio. We pre-configure the convert wizard mappings before production migration so that custom field values are not silently dropped at conversion time. This gotcha is specific to Odoo CRM and affects every migration where BenchmarkONE Deals or Contacts use custom fields.

  • BenchmarkONE automations require manual Odoo rebuild

    BenchmarkONE automations are triggered by form submissions, website visits, tag changes, and purchases. These are not exportable as data and have no equivalent in Odoo's standard crm.lead model without custom configuration. We deliver a written automation inventory with each rule's trigger, conditions, and recommended Odoo equivalent (ir.actions.server, mail.activity.type, or base.automation). The customer's Odoo admin or a certified Odoo partner rebuilds them as Server Actions post-migration. Automations that depend on BenchmarkONE-specific events (like Temperature changes) require custom ir.actions.server domain logic.

  • BenchmarkONE contact-tier pricing does not map to Odoo per-user pricing

    BenchmarkONE prices by contact volume at tiers of 250, 500, and scaled counts. Odoo CRM prices by user seat ($31.10 Standard, $46.80 Custom per user per month) with no contact-volume cap. Small teams with fewer than 500 contacts may find Odoo per-user pricing higher than their BenchmarkONE Lite tier. Conversely, growing teams with large contact databases who are hitting BenchmarkONE pricing walls benefit significantly from Odoo's unlimited contact storage. We audit the contact count and user count during scoping and model both pricing curves to confirm Odoo is cost-positive at the customer's projected growth trajectory.

  • Odoo field type mismatches silently reject or corrupt imported values

    BenchmarkONE stores dates, numbers, and drop-down values with platform-native formatting. Odoo enforces strict field types at import time. A BenchmarkONE date field stored as MM/DD/YYYY must be normalized to YYYY-MM-DD before Odoo XML-RPC insert, or Odoo rejects the record with a validation error. Similarly, text fields with special characters, multi-line addresses, and HTML content in BenchmarkONE notes require sanitization before Odoo import. We run a pre-migration type audit and transformation layer to catch mismatches before they reach the production Odoo instance.

Migration approach

Six steps for a successful BenchmarkONE to Odoo CRM data migration

  1. Discovery and Odoo edition selection

    We audit the BenchmarkONE portal across tier (Free/Lite/Pro), contact count, company count, deal count, tag inventory, custom field definitions, active automations, and engagement volume. We pair this with an Odoo edition assessment: Standard ($31.10/user/month) covers most CRM migrations; Custom ($46.80/user/month) is required if the customer needs custom modules, advanced automation, or multi-company support. We also confirm whether the customer plans to use Odoo.sh (cloud-hosted) or an on-premise Odoo deployment, as this determines the API access method (XML-RPC vs direct database). The discovery output is a written migration scope document and an Odoo edition recommendation.

  2. Schema design and Odoo Studio configuration

    We design the destination schema in Odoo before any data moves. This includes creating custom fields on res.partner and crm.lead via Odoo Studio (matching BenchmarkONE custom field types and names), configuring crm.lead stage pipeline with stages mapped to BenchmarkONE Deal stages, setting up crm.team for multi-sales-team scoping, creating the temperature_score custom field with selection values Cold/Warm/Hot, and mapping the Odoo Lead-to-Opportunity convert wizard to preserve all custom fields during conversion. Schema is validated in an Odoo staging database before production deployment.

  3. Staging migration and reconciliation

    We run a full migration into an Odoo staging environment (test database or Sandbox equivalent) using production-like data volume. The customer reconciles record counts across all objects (Contacts in, Partners out; Companies in, company Partners out; Deals in, Opportunities out; Tasks in), spot-checks 25-50 random records against the BenchmarkONE source, and validates that Temperature scores, tags, and custom field values are present and correct in Odoo. Mapping corrections happen at this stage. Any Odoo ir.model.field or stage configuration issues are resolved before production migration begins.

  4. Owner reconciliation and Odoo user provisioning

    We extract every distinct BenchmarkONE user assigned as owner to Contact, Company, Deal, or Task and match by email against the Odoo res.users table. Any BenchmarkONE Owner without a matching Odoo User is placed in a reconciliation queue. The customer's Odoo admin provisions missing Users (with active=True or active=False depending on whether the rep is still employed and will use the system). OwnerId resolution is required before Contact and Deal migration can proceed because Odoo enforces a valid user_id on crm.lead records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Partners (company type from BenchmarkONE Companies first, then contact type), crm.lead records (from BenchmarkONE Deals, with stage_id and team_id pre-configured), project.task (from BenchmarkONE Tasks, with parent_id linking to crm.lead), mail.message records (from BenchmarkONE email activity), Tags (mailing contacts or many2many field per scoping choice), Custom field values (validated against Odoo field type), and Lead Source / UTM attribution. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC or JSON-RPC API with batch chunking and exponential backoff on 403/429 responses.

  6. Cutover, validation, and automation rebuild handoff

    We freeze BenchmarkONE 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 a sample of records post-cutover (record counts, custom field presence, owner assignment). We deliver the BenchmarkONE automation inventory document with Odoo ir.actions.server recommendations to the customer's Odoo admin team. We offer a one-week hypercare window to resolve any data issues surfaced by the sales team. We do not rebuild BenchmarkONE automations as Odoo Server Actions inside the migration scope; that is a separate Odoo implementation engagement.

Platform deep dives

Context on both ends of the pair

BenchmarkONE logo

BenchmarkONE

Source

Strengths

  • Unlimited user seats across all paid tiers, enabling full team access without per-seat cost scaling.
  • Combined CRM, email marketing, and automation in a single platform reduces tool sprawl for small teams.
  • Lead scoring via Temperature field and tag-based segmentation built in without add-ons.
  • Full database export available to admin users, covering contacts, companies, deals, tasks, tags, and custom fields.
  • G2 ratings of 4.5/5 with 187 reviews reflect consistent user satisfaction, particularly for ease of use and customer support.

Weaknesses

  • No native mobile app — only a mobile web app, which reviewers flag as a significant limitation for field teams.
  • Reporting is consistently described as limited or underpowered, especially compared to HubSpot, Pipedrive, and Zoho.
  • Pricing scales by contact tier, so growing databases incur increasing costs even if other features remain the same.
  • Product roadmap has not kept pace with competitors; users report feeling the platform has fallen behind on modern integrations and automation depth.
  • Deals and Tasks are considered somewhat redundant by some users, creating confusion in pipeline management workflows.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across BenchmarkONE and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    BenchmarkONE: Not publicly documented.

  • Data volume sensitivity

    B

    BenchmarkONE doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your BenchmarkONE to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about BenchmarkONE to Odoo CRM data migrations

Answers to the questions buyers ask most during BenchmarkONE to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your BenchmarkONE to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and six weeks for accounts under 15,000 Contacts and 3,000 Deals with no custom objects and straightforward pipeline structures. Migrations with custom objects, multi-pipeline Deal structures, large engagement histories (over 200,000 activity records), or complex custom field schemas requiring extensive Odoo Studio configuration move to eight to fourteen weeks because of schema design time, Odoo Studio field creation, and the Lead-to-Opportunity convert-wizard mapping work. Discovery alone takes one to two weeks regardless of size.

Adjacent paths

Related migrations to explore

Ready when you are

Move from BenchmarkONE.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day