CRM migration

Migrate from CompanyHub CRM to Odoo CRM

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

CompanyHub CRM logo

CompanyHub CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between CompanyHub CRM and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from CompanyHub CRM to Odoo CRM is a migration from a purpose-built SMB sales CRM into a modular ERP with a CRM module. CompanyHub organizes data around Contacts, Companies, Deals with drag-and-drop pipelines, and Custom Tables for domain-specific objects; Odoo uses crm.lead for both Leads and Opportunities, res.partner for Contacts and Companies, and project.task for tasks. We resolve the structural split: CompanyHub Deals map to Odoo crm.lead with type=opportunity, CompanyHub Companies map to res.partner with address_type=contact, and CompanyHub Contacts attach as contact_id on the partner record. Custom Tables require pre-provisioning of Odoo custom fields or a custom module before row migration. UTrons automation flowcharts, email automation sequences, and reporting dashboards do not migrate; we deliver a written inventory of each requiring rebuild in Odoo's Action Automations and Studio reporting.

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

CompanyHub CRM logo

CompanyHub CRM

What's pushing teams away

  • No built-in calling or SMS means sales teams requiring phone workflows must purchase and integrate a separate telephony stack.
  • Custom tables and UTrons automations do not export cleanly—teams with heavy custom data models face significant re-implementation effort when leaving.
  • Reporting provides only surface-level visualizations and lacks weighted deal values, pipeline velocity, or activity-based conversion metrics.
  • Goals and targets tracking is buried in the interface and not surfaced prominently enough for sales managers running weekly reviews.
  • The product is unable to be uninstalled from integrations once connected, creating lock-in friction for teams evaluating a switch.

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 CompanyHub CRM objects map to Odoo CRM

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

CompanyHub CRM

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

CompanyHub Contacts map to Odoo res.partner records with partner_type set to contact. The CompanyHub Contact's linked Company becomes the partner's parent_id, establishing the hierarchical relationship Odoo uses for address and billing grouping. Custom fields on the Contact transfer to custom res.partner fields, which we provision before import. Email, phone, title, and address fields map by API name. We use the partner's email as the dedupe key to prevent duplicate creation on re-runs.

CompanyHub CRM

Company

maps to

Odoo CRM

res.partner

1:1
Fully supported

CompanyHub Companies map to Odoo res.partner with partner_type set to company. The company record is created before any linked Contact import so that the parent_id relationship is satisfied at Contact insert time. CompanyHub's company domain and industry fields map to website and industry_id respectively. Custom fields on the Company transfer to the company-type partner record. If both a Company and Contact share the same name during migration, we create a single partner record and attach the contact as a child.

CompanyHub CRM

Deal

maps to

Odoo CRM

crm.lead (type=opportunity)

1:1
Fully supported

CompanyHub Deals map to Odoo crm.lead with type set to opportunity. The Deal's pipeline stage maps to a crm.stage that we configure in Odoo before migration. Deal amount transfers to planned_revenue, expected_revenue, and probability fields. The Deal's linked Contact becomes the lead's partner_id contact_id reference, and the linked Company becomes the partner_id. Closed-won and closed-lost status from CompanyHub sets the lead stage to won or lost and the active flag to False.

CompanyHub CRM

Pipeline Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

CompanyHub pipeline stages are user-defined text values. We capture the full stage list during discovery and provision matching crm.stage records in Odoo in the same sequence order. Each stage gets the same sequence number, and probability values map to stage_default_probability on each crm.stage. If the customer has multiple pipelines in CompanyHub, we create separate stage categories in Odoo or use tags to distinguish pipeline membership since Odoo's standard CRM does not support multiple named pipelines without custom development.

CompanyHub CRM

Task

maps to

Odoo CRM

project.task

1:1
Fully supported

CompanyHub Tasks map to Odoo project.task records. The task's linked Contact and Deal become the task's partner_id and project_id references. Due date, priority, and assigned user transfer to date_deadline, priority, and user_ids respectively. Tasks created by UTrons are included in the migration but the triggering automation logic does not transfer. We note the Utron that created each task in a custom description field for the admin to review during post-migration rebuild.

CompanyHub CRM

Custom Table

maps to

Odoo CRM

Custom fields or custom.res.model

lossy
Fully supported

CompanyHub Custom Tables (domain-specific objects like Properties, Courses, Payments) require pre-provisioning in Odoo. We request the customer provide Custom Table field layouts during discovery because the CompanyHub API does not expose table schemas programmatically in all cases. For simple tables (5-10 fields, no lookups to other objects), we provision custom fields on the relevant Odoo model (res.partner, crm.lead) using Odoo Studio. For complex tables with cross-object relationships, we create a custom Odoo model via a module that we provision alongside the migration data.

CompanyHub CRM

Custom Fields (on Contacts, Companies, Deals)

maps to

Odoo CRM

Custom fields on res.partner and crm.lead

lossy
Fully supported

CompanyHub custom fields on standard objects map to Odoo custom fields on res.partner and crm.lead. We read the field definitions from the CompanyHub API (field name, type, options) and create matching fields in Odoo via Studio before import. Picklist options in CompanyHub become selection fields or relational fields in Odoo depending on whether the options represent a fixed set or references to other records.

CompanyHub CRM

Quote

maps to

Odoo CRM

sale.order

1:1
Fully supported

CompanyHub Quotes map to Odoo sale.order records. Line items transfer to sale.order.line with product_id resolved by SKU match, quantity, and price. Quote totals and tax calculations are preserved. The linked Deal becomes the sale.order's opportunity_id. Signed quote PDFs and attachments migrate as ir.attachment records linked to the sale.order. Quote templates from CompanyHub do not migrate; we document the template structure for the customer to rebuild in Odoo's sale.quote template system.

CompanyHub CRM

Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

CompanyHub users (owners) map to Odoo res.users. We match by email address. Any CompanyHub Owner without a matching Odoo User goes into a reconciliation queue for the customer's admin to provision before record import resumes. Active and inactive status transfers from CompanyHub to Odoo. Owner-level field visibility rules in CompanyHub do not transfer; Odoo's record rules are configured post-migration based on the customer's access requirements.

CompanyHub CRM

Activities: Emails

maps to

Odoo CRM

mail.message

1:1
Fully supported

CompanyHub email activity records map to Odoo mail.message with message_type=email. The linked Contact or Deal becomes the res_id and model reference on the message. Email body content migrates as the message body; we note that CompanyHub may truncate email content in API responses, and we flag any records with missing body text in the reconciliation report. Open tracking metadata transfers to mail.message tracking values if the destination Odoo instance has the email tracking addon enabled.

CompanyHub CRM

Activities: Notes

maps to

Odoo CRM

mail.message

1:1
Fully supported

CompanyHub Notes map to Odoo mail.message with message_type=comment. The note body becomes the message body, and the linked Contact or Deal becomes the res_id reference. Notes created by UTrons retain a reference in the message body indicating the automation that generated them.

CompanyHub CRM

Users/Owners (field-level visibility)

maps to

Odoo CRM

res.users and record rules

lossy
Fully supported

CompanyHub field-level and record-level visibility settings (Enterprise tier) do not migrate programmatically. We document the visibility matrix during discovery and provide a written specification for Odoo record rules and field groups to configure post-migration. The customer's Odoo admin applies these rules based on the organizational structure.

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.

CompanyHub CRM logo

CompanyHub CRM gotchas

High

Admin-only export gate blocks non-admin migration scoping

Medium

Custom Table schema is not self-describing in the API

Medium

UTrons workflow logic does not survive migration

Low

API key cap of 5 limits concurrent migration jobs

Low

Email body content may be truncated in activity API responses

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

  • CompanyHub Custom Tables lack API-exportable schema definitions

    CompanyHub Custom Tables are user-defined objects with dynamic schemas. The v1 API returns row data but does not expose field names, types, or constraints in all cases. During migration scoping, we request the customer provide screenshots or documentation of each Custom Table layout. Without this, we risk misaligned column mappings when importing into Odoo. We provision the destination schema in Odoo before importing any rows, and we flag any Custom Tables with circular or cross-object lookup references that require custom model development rather than standard custom fields.

  • UTrons workflow automation does not export from CompanyHub

    CompanyHub's UTrons automation engine encodes logic as flowchart nodes with no API export available. Every task-creation rule, stage-change trigger, scheduled alert, and duplicate disallowance policy must be rebuilt in Odoo. We document each Utron during discovery, capture the trigger conditions and actions, and deliver a rebuild specification mapped to Odoo's Automated Actions and Server Actions. The customer's admin or an Odoo implementation partner rebuilds the automations post-migration. We do not rebuild them as part of the migration scope.

  • Odoo Lead-to-Opportunity requires manual convert action

    CompanyHub has no separate Lead object; all prospects enter as Deals. Odoo distinguishes crm.lead with type=lead from type=opportunity, and the conversion from Lead to Opportunity is a manual action in Odoo CRM. If the customer uses CompanyHub Deals for both unqualified and qualified pipeline records, we map unqualified records to type=lead and qualified records to type=opportunity. The customer should expect to review the lead queue in Odoo after migration and manually convert each to an Opportunity, or we apply a conversion rule during migration based on a CompanyHub stage threshold the customer defines.

  • CompanyHub API key cap of 5 limits parallel read streams

    CompanyHub allows a maximum of 5 API keys per account. For migrations exceeding 10,000 records across multiple object types, parallel read streams can exhaust the key pool quickly. We coordinate key allocation during migration planning, staggering object reads to stay within the 5-key ceiling, or requesting the customer to temporarily provision additional keys if the account supports it. Large migration jobs without this coordination risk API lockout mid-migration.

  • Email body content may be truncated in CompanyHub API responses

    CompanyHub's activity API may return only metadata for email records (timestamp, recipient, open status) without full message body text. We inform customers before migration that email body fidelity depends on the API response payload. If body text is absent, we flag the gap in the reconciliation report and offer to supplement with an IMAP export if the customer's email accounts are accessible. Full email content migration is best-effort when CompanyHub truncates at the source.

Migration approach

Six steps for a successful CompanyHub CRM to Odoo CRM data migration

  1. Discovery and Custom Table documentation

    We audit the source CompanyHub account across pricing tier, custom fields on all standard objects, Custom Table list with row counts, UTrons automation list with trigger-action summaries, pipeline stage list, user list, and activity volume estimates. We specifically request the customer provide Custom Table schema documentation because the CompanyHub API does not export it. The discovery output is a written migration scope with record counts per object, a Custom Table layout form for the customer to complete, and a Utrons inventory form capturing each automation for rebuild documentation.

  2. Destination schema provisioning in Odoo

    We configure the Odoo CRM module before any data arrives. This includes creating crm.stage records matching the CompanyHub pipeline stages in sequence order, provisioning custom fields on res.partner and crm.lead via Odoo Studio, and creating custom Odoo models for complex Custom Tables that cannot be represented as custom fields alone. We deploy schema changes into the customer's Odoo environment (Online or Odoo.sh) and confirm the fields appear correctly before proceeding. This step prevents import errors caused by missing destination fields.

  3. Owner reconciliation and user provisioning

    We extract every distinct CompanyHub Owner referenced on Contact, Company, Deal, and Task record and match by email against the Odoo destination's res.users table. Owners without a matching Odoo User go to a reconciliation queue. The customer's Odoo admin provisions any missing Users before record import begins. This step is required because OwnerId references are mandatory on crm.lead and project.task records in Odoo. We do not create Odoo Users on behalf of the customer; that requires admin-level access the customer controls.

  4. Sandbox migration and reconciliation

    We run a full migration into an Odoo staging environment using production-like data volume. The customer reconciles record counts (Contacts in, Companies in, Deals in, Tasks in, Custom Table rows in), spot-checks 20-40 random records against the CompanyHub source, and signs off the schema and mapping before production migration begins. Any field mapping corrections, custom field additions, or stage name adjustments happen here. Odoo.sh customers use a duplicate database as staging; Odoo Online customers use a demo company environment.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.partner (companies first), res.partner (contacts with parent_id resolved to company partner), crm.lead (opportunities with partner_id and user_id resolved), project.task (tasks with partner_id and user_id resolved), mail.message (email and note history linked to the correct res_id and model), sale.order (quotes linked to opportunity_id), and Custom Table rows (linked to their parent object). Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC or JSON-RPC API with rate-limit handling and batch chunking for large record sets.

  6. Cutover, validation, and automation rebuild handoff

    We freeze CompanyHub writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Utrons inventory document specifying each automation's trigger, conditions, and actions mapped to Odoo Automated Actions equivalents. We deliver the Custom Table schema summary for the customer to review against the provisioned Odoo fields. We support a one-week hypercare window for reconciliation issues. We do not rebuild Utrons as Odoo automations inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

CompanyHub CRM logo

CompanyHub CRM

Source

Strengths

  • Per-user pricing capped at $42/month makes it the most affordable option among feature-rich SMB CRMs.
  • Drag-and-drop pipeline and task follow-up reminders keep low-touch sales teams from losing deals.
  • UTrons workflow engine uses a flowchart interface to automate any business logic without code.
  • Field-level and record-level security controls allow granular visibility settings across roles and territories.
  • Custom Tables and Custom Apps extend the data model to verticals beyond standard sales (real estate, education, services).

Weaknesses

  • No native calling, SMS, or voice features—phone-centric sales teams need third-party integrations.
  • API is limited to v1 with no public rate limit documentation and a maximum of 5 API keys per account.
  • Only admin users can export data from the product UI, which complicates migration scoping for non-admin account holders.
  • Custom Table migrations require pre-provisioning the destination schema, adding a planning step not needed for standard objects.
  • Activity logs and email bodies may be truncated in API responses, limiting the fidelity of historical communication data migration.
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. All 8 core objects map 1:1 between CompanyHub CRM and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between CompanyHub CRM and Odoo CRM.

  • 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

    CompanyHub CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your CompanyHub CRM 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 CompanyHub CRM to Odoo CRM data migrations

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

Can't find your answer?

Walk through your CompanyHub CRM 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 three and five weeks for accounts under 15,000 Contacts, 3,000 Deals, and fewer than five Custom Tables with straightforward schemas. Migrations with complex Custom Tables, multiple pipeline views, large activity histories (over 100,000 email and note records), or Odoo.sh self-hosted deployments move to seven to twelve weeks because of Custom Table schema provisioning, custom field configuration, and the Utrons rebuild documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CompanyHub CRM.
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