CRM migration

Migrate from Rubi CRM to Odoo CRM

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

Rubi CRM logo

Rubi CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Rubi CRM and Odoo CRM serve different data models that require explicit transformation at migration time. Rubi CRM uses distinct Member and Membership record types tied to a membership module, with Events and Training bookings linked to Contacts or Members. Odoo CRM uses a unified Contact model (res.partner) with a partner_categories tag system for membership segmentation, and a separate event.event module for registrations. We resolve the Member-to-Contact mapping during scoping, preserve membership tier names and renewal dates as custom fields, and map Events with their booking registrations as Odoo event.registration records. Sales Pipeline stages in Rubi CRM are stored as user-defined custom fields against deal records rather than a native pipeline object; we extract the stage values during the scoping call and deliver them as a stage-configuration worksheet for Odoo CRM pipeline setup. Workflows, automations, and the Outlook email plugin configuration do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Odoo.

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

Rubi CRM logo

Rubi CRM

What's pushing teams away

  • Concentrated UK membership/training focus limits fit for non-UK organizations or businesses outside membership/event verticals.
  • Public technical/API documentation is limited — the Developer Hub is gated and endpoint references are not indexed publicly, complicating custom integrations.
  • Reports module exports flat snapshots rather than relational data, making it less useful as a long-term BI source or migration extract.
  • Outlook plugin handles inbound email logging only — outbound automation, sequencing, and marketing workflows are not bundled and require separate tools.
  • Smaller global community and review footprint compared to HubSpot, Salesforce, or membership-specific competitors like Wild Apricot or MemberClicks.

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

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

Rubi CRM

Contact

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

Rubi CRM Contacts map directly to Odoo res.partner records with partner_type set to contact. Standard fields (name, email, phone, street, city, country) migrate 1:1. Custom contact properties discovered during scoping are created as ir.model.fields on res.partner before import. The Contact-Company relationship in Rubi CRM maps to the parent_id reference on res.partner, which Odoo uses to build the company-contact hierarchy.

Rubi CRM

Company

maps to

Odoo CRM

Company (res.partner with is_company=True)

1:1
Fully supported

Rubi CRM Company records map to Odoo res.partner with is_company=True. Company name becomes the partner name, and associated Contacts are linked via parent_id to the newly created company partner. We run company deduplication by name and domain before import to prevent duplicate Odoo partners. Company-level custom fields migrate as custom fields on the is_company partner record.

Rubi CRM

Member

maps to

Odoo CRM

Contact (res.partner) with custom fields

1:1
Fully supported

Rubi CRM Member records are distinct from Contacts and store membership-specific identifiers and status. We map Member ID to a custom field rubi_member_id__c on res.partner, and membership status (Active, Expired, Cancelled) to a selection field rubi_membership_status__c. The original Member record is matched to an existing Contact by email where a correspondence exists, or created as a new res.partner if no Contact link is found.

Rubi CRM

Membership

maps to

Odoo CRM

Custom fields on res.partner + partner_tags

lossy
Fully supported

Membership records in Rubi CRM track individual subscriptions against Member profiles, including start dates, end dates, and tier names. We map start_date to rubi_membership_start__c, end_date to rubi_membership_end__c, and tier_name to both a selection field rubi_membership_tier__c and a partner_tag in Odoo's tag system (res.partner.category). The tag system allows Odoo to filter members by tier in list views and kanban without requiring a custom object. Rubi CRM does not export full subscription history in a single pass; multi-period subscription records require a separate export run from the membership module.

Rubi CRM

Events and Training

maps to

Odoo CRM

Events (event.event) + Registrations (event.registration)

1:many
Mapping required

Rubi CRM Events are objects with bookings tied to Contacts or Members. We map event name, start_date, end_date, and location to Odoo event.event. Each Rubi CRM booking (Attendee) becomes an event.registration record linked to the Odoo event.event via event_id and to the corresponding res.partner via partner_id. Booking status (Confirmed, Waitlist, Cancelled) maps to Odoo's registration state field. Multi-session training courses are mapped to Odoo event.event with is recurring=True and session lines.

Rubi CRM

Sales Pipeline (Kanban stages)

maps to

Odoo CRM

CRM Pipeline (crm.lead with stage_id)

lossy
Fully supported

Rubi CRM's Kanban pipeline is a view with stage names stored as user-defined custom field values against deal records rather than a native pipeline object. We extract the distinct stage values from Rubi CRM deal records during the scoping call and deliver a stage-configuration worksheet mapping each Rubi CRM stage name to an Odoo CRM stage in the default sales team pipeline. Stage probability percentages are documented for entry into Odoo's stage configuration. This is a configuration handoff, not a data migration; the customer's Odoo admin applies the stage names post-migration.

Rubi CRM

Deal

maps to

Odoo CRM

Opportunity (crm.lead with type=opportunity)

1:1
Fully supported

Rubi CRM Deals map to Odoo crm.lead records with type=opportunity. The deal name becomes the lead name, amount maps to planned_revenue, and expected_close_date maps to date_deadline. Stage name from the custom field maps to stage_id via the stage-configuration worksheet. Partner_id is resolved via Contact-Company matching. We create crm.lead records before linking them to event registrations if any Deals are tied to event bookings.

Rubi CRM

Activities (Outlook email logs)

maps to

Odoo CRM

Mail Messages (mail.message)

1:1
Fully supported

Email interactions logged via Rubi CRM's Outlook plugin are stored as Activities linked to Contacts. We export activity timestamps, subject, and body text to Odoo mail.message records linked to the corresponding res.partner via model=res.partner and res_id. Thread-level threading from the original email is not preserved; messages land as individual entries rather than a threaded conversation view. This is a known limitation of the Rubi CRM export format.

Rubi CRM

Tasks

maps to

Odoo CRM

Project Tasks (project.task) or CRM Tasks (mail.activity)

1:1
Fully supported

Rubi CRM Tasks map to Odoo project.task if the customer uses the Odoo Project module, or to mail.activity if tasks are scoped to CRM-only. Task owner resolves via email match to Odoo res.users. Due date and status map directly. We confirm the target model during scoping based on whether the customer intends to use Odoo Project alongside CRM or keep task management within the CRM module.

Rubi CRM

Custom Fields

maps to

Odoo CRM

Custom Fields (ir.model.fields)

lossy
Mapping required

Rubi CRM allows custom fields per record type but does not expose a schema endpoint. We discover custom field names and types during the export scoping phase by inspecting a sample export. We create matching fields in Odoo via ir.model.fields before any data import begins. Field types are mapped: text to char, number to float or integer, date to date, checkbox to boolean, dropdown to selection. Custom fields on Rubi CRM custom objects are handled as additional custom fields on the mapped Odoo object.

Rubi CRM

Reports and Audit Logs

maps to

Odoo CRM

Not migrated

1:1
Not supported

Rubi CRM's Report Builder exports data snapshots and its Audit log tracks user actions. Neither contains transactional CRM records. We do not migrate these objects as they are point-in-time exports not suitable as migration sources. We recommend exporting any reports the customer relies on as CSV from Rubi CRM before decommissioning and rebuilding them as Odoo custom reports or Excel imports post-migration.

Rubi CRM

Saved Reports

maps to

Odoo CRM

Not migrated

1:1
Fully supported

Rubi CRM Saved Reports are flat snapshot exports and do not contain relational data suitable for Odoo import. We audit the customer's saved reports during scoping and flag those that contain operational data (pipeline summaries, membership renewal lists) for recreation as Odoo custom searches, saved filters, or Excel exports from the migrated data. Odoo Reporting (Flectra) or a BI tool like Metabase can rebuild historical analytics if the customer requires it.

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.

Rubi CRM logo

Rubi CRM gotchas

Medium

Pipeline stages are stored as user-defined custom field values, not a native pipeline object

Medium

Outlook plugin does not preserve email thread continuity

Medium

Memberships and Events require separate export passes

Low

Acquisition by Sapling Multi Ventures introduces roadmap uncertainty

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

  • Membership tier data requires custom field configuration in Odoo

    Rubi CRM's membership module stores tier names and renewal dates as native fields on Member and Membership records. Odoo CRM does not ship a native membership module; membership segmentation is handled through custom fields on res.partner (rubi_membership_tier, rubi_membership_start, rubi_membership_end) and Odoo's partner_tags. We pre-create these custom fields before migration and document the mapping. If the customer relies on automated renewal reminders or membership expiry workflows in Rubi CRM, those automations must be rebuilt as Odoo server actions or scheduled actions post-migration.

  • Rubi CRM pipeline stages are custom fields, not a native object

    Rubi CRM's Kanban pipeline stores stage names as user-defined custom field values against deal records, not as a native pipeline object with an API-accessible stage list. We extract the distinct stage values from deal records during the scoping call by inspecting a sample export. The stage names are delivered as a configuration worksheet for the customer's Odoo admin to enter into CRM Settings under Pipeline Stages before the Opportunity import runs. If stage values change between scoping and migration, the mapping must be updated before Opportunity records are imported, otherwise Odoo will reject stage_id values that do not match its configured stage names.

  • Rubi CRM API documentation is not publicly accessible

    Rubi CRM's API documentation is behind a Developer Hub login gate. Public rate-limit values, endpoint lists, and authentication documentation are not indexed for automated discovery. We extract data from Rubi CRM via the UI export function (CSV/Excel) for scoping, and negotiate direct API access with Rubi CRM support for the production migration if available. If the API remains inaccessible, we fall back to CSV export with manual field mapping, which requires the customer's Rubi CRM admin to run exports per object type. This adds a manual step and extends the timeline by one to two weeks compared to API-driven extraction.

  • Event registrations require a separate export run from Rubi CRM

    Rubi CRM does not export event bookings in a single pass with event records; we must run a separate export from the Events module to capture booking registrations linked to Contacts or Members. We coordinate the export order during scoping: event details export first, then registrations export with the event ID reference. If the customer's Rubi CRM instance uses multi-session training courses, each session must be exported separately and mapped to Odoo event.event with is_recurring=True and session lines. The customer's Rubi CRM admin must ensure the Events module export includes the registration status field.

  • Outlook plugin email logs do not preserve thread structure in Odoo

    Rubi CRM's Outlook plugin logs inbound emails as Activities against Contacts, capturing subject, timestamp, and body text. When these migrate to Odoo mail.message, they land as individual message records rather than a threaded conversation view because Rubi CRM does not export the parent-message reference needed to reconstruct threading. Email body content migrates correctly; thread grouping does not. Customer teams that rely on email thread context for deal history should be advised to review the email body text directly on the res.partner timeline rather than expecting the threaded view that Outlook provides.

Migration approach

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

  1. Scoped data discovery and Rubi CRM export

    We audit the Rubi CRM instance across Contacts, Companies, Members, Memberships, Events, Training bookings, Sales Pipeline records, Tasks, and any custom fields or custom objects in use. We run sample exports per object type to verify field coverage and identify any records without an email match (orphaned Members with no linked Contact). We document the full object inventory, record counts per object, and any export limitations (multi-period subscription exports, event registration export separation). We also extract the Kanban stage names from deal records during this phase for the stage-configuration worksheet.

  2. Odoo instance preparation

    We confirm the Odoo plan tier (Standard at $24.90/user/month covers CRM, Sales, and Accounting; Enterprise adds support and advanced features) and provision the Odoo instance if not already active. We create all required custom fields on res.partner (rubi_member_id, rubi_membership_status, rubi_membership_tier, rubi_membership_start, rubi_membership_end) via Settings > Technical > Custom Fields before any data import. We configure CRM pipeline stages using the Rubi CRM stage names delivered from scoping and set probability percentages per stage. We enable the Events module if the customer has event data and verify that partner_tags (res.partner.category) are available for membership tier tagging.

  3. Sandbox migration and reconciliation

    We run a full migration into an Odoo test database using production-like data volume. The customer's operations lead reconciles record counts across all objects, spot-checks 25-50 records per object type against the Rubi CRM source, and verifies that membership tier tags appear correctly on Contact records. Any field mapping corrections, custom field type adjustments, or stage name updates are applied here before production migration. This step typically takes one to two weeks depending on the customer's review capacity.

  4. Partner deduplication and company-contact linking

    Before importing Contacts and Members, we run a deduplication pass on email addresses to prevent duplicate res.partner records. Rubi CRM Company records are imported as is_company=True partners first, then Contact records are imported with parent_id resolved to the matching Company partner. Member records without an existing Contact correspondence are imported as new res.partner records with the membership custom fields populated. This ordering satisfies Odoo's partner hierarchy requirements and prevents orphaned Contact records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies (is_company=True partners), Contacts (with parent_id resolved), Members (matched to Contacts by email or created as new partners), Events (event.event records), Event Registrations (event.registration linked to event and partner), Deals (crm.lead with stage_id resolved from the configuration worksheet), Tasks (project.task or mail.activity), and custom field data. Each phase emits a row-count reconciliation report. Activities from the Outlook plugin import as mail.message records in a separate pass after Contacts are confirmed in Odoo.

  6. Cutover, validation, and automation inventory handoff

    We freeze Rubi CRM 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 validate that membership tier tags appear on the correct Contact records, that event registrations match booking counts, and that pipeline stage names match the Rubi CRM Kanban view. We deliver the automation inventory document listing any Rubi CRM workflows or automations that require rebuild in Odoo (server actions, scheduled actions, or mail templates). We do not rebuild automations as part of the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

Rubi CRM logo

Rubi CRM

Source

Strengths

  • Specialises in membership, training, event, and recurring-booking workflows that general-purpose CRMs handle poorly
  • Native bolt-on integrations with Sage, QuickBooks, and Xero for UK-accountancy parity
  • Microsoft Outlook plugin logs email interactions directly against CRM records without leaving the inbox
  • UK-based Leeds team since 2010 with direct support access
  • Small-team focused pricing and onboarding for organisations under 50 users

Weaknesses

  • Platform acquired by Sapling Multi Ventures — product roadmap and support continuity are uncertain
  • No public pricing page found in research — tier structure and per-user costs require direct inquiry
  • API documentation is behind a Developer Hub gate; public rate-limit and endpoint documentation not indexed
  • Reports module exports flat snapshots rather than relational data — not suitable as a migration source
  • Microsoft Outlook plugin only works for inbound email logging; outbound sequences and automation are not supported
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. 2 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 Rubi CRM and Odoo CRM.

  • Object compatibility

    B

    2 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

    Rubi CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 10,000 Contacts, 2,000 Members, and 500 Events land between three and five weeks. Migrations with large membership histories, multi-tier subscription records, bulk event registrations, or complex custom field schemas move to six to ten weeks because of membership-tier field provisioning, event registration resolution, and the Kanban stage configuration work. Timeline assumes API access to Rubi CRM; UI-based CSV exports add one to two weeks to the extraction phase.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Rubi 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