CRM migration

Migrate from Regal.io to Odoo CRM

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

Regal.io logo

Regal.io

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

86%

12 of 14

objects map 1:1 between Regal.io and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Regal.io to Odoo CRM is a structural migration: Regal.io is a voice-AI and event-stream platform where Contacts and their behavioral Events are the primary data model; Odoo CRM uses a traditional Lead-to-Opportunity pipeline with Notes and Activities for history. We extract all Contact records with their Contact Attributes, full Event history, SMS and email threads, Campaign membership, and call transcripts from Regal's single /events endpoint at 300 req/sec. We map Contacts to Odoo Leads (or Contacts attached to a Company depending on qualification status), Events to Odoo Activity records or Notes, and we flag that Journey automations and AI Agent scripts have no Odoo equivalent and must be reconstructed in Odoo Action Rules or a third-party telephony add-on. We do not migrate AI Agent configurations, Journey builders, branded caller ID registrations, or third-party CDP/CRM integration endpoints — these are documented for manual rebuild.

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

Regal.io logo

Regal.io

What's pushing teams away

  • Pricing opacity frustrates teams during renewal negotiations — Regal does not publish public pricing tiers, and quotes vary significantly based on call volume commitments.
  • Teams requiring deep telephony analytics report that Regal's reporting dashboard lacks the drill-down granularity needed for per-agent or per-campaign revenue attribution.
  • Scaling to multi-region inbound operations exposes limitations in Regal's agent desktop compared to full CCaaS platforms that offer broader workforce management features.

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 Regal.io objects map to Odoo CRM

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

Regal.io

Contact

maps to

Odoo CRM

Lead (primary) or Contact attached to Company (secondary)

1:many
Fully supported

Regal Contacts map to Odoo Lead by default, with an optional split to Contact+Company for contacts that represent established accounts. The split decision is based on whether the Regal Contact has a company_name attribute or domain-based Company affiliation. We set the Odoo Lead email and phone from Regal's contact attributes, using phone as the primary contact field (Regal requires a phone number for contactability; Odoo tolerates email-only Leads). A custom field regal_contact_id__c preserves the Regal source ID for audit.

Regal.io

Contact Attributes (custom fields)

maps to

Odoo CRM

Lead/Contact custom fields

1:1
Fully supported

Regal's tenant-specific Contact Attributes (profile fields beyond name, email, phone) are extracted from Regal's API attribute schema before migration. Each attribute is mapped to an Odoo Lead custom field created during schema configuration. Multi-value attributes (arrays, tags) map to Odoo Char or text fields with pipe-delimited values. Date, Boolean, and numeric attribute types map to the equivalent Odoo field types. We note any attributes that have no Odoo equivalent and document them for manual enrichment post-migration.

Regal.io

Event (all types)

maps to

Odoo CRM

Activity (mail.message or crm.activity)

1:1
Fully supported

Regal Events (call_initiated, call_completed, sms_sent, email_opened, journey_entered, custom event types) map to Odoo mail.message records linked to the Lead via res_id and model fields. The event type becomes a custom field event_type__c; the event timestamp maps to mail.message.date; event properties (duration, disposition, transcript excerpt) map to additional custom fields on the message record. This preserves the behavioral timeline within Odoo's chatter-like activity view. We batch event writes using Odoo's mail.message batch API to handle high-volume event streams.

Regal.io

Campaign

maps to

Odoo CRM

CRM Campaign

1:1
Fully supported

Regal Campaigns (outbound programs with list selection, cadence, and goal) map to Odoo CRM Campaign records. Campaign membership (which contacts were assigned to which campaign) migrates as Campaign lines or a linked tag on the Lead. Goal metrics (calls attempted, calls answered, conversion rate) are stored as custom fields on the Odoo Campaign. Cadence and list-refresh logic is platform-specific and documented for manual configuration in Odoo's Campaign follow-up rules.

Regal.io

Journey (workflow logic)

maps to

Odoo CRM

Action Rules / Server Actions (rebuild required)

1:1
Fully supported

Regal Journeys (event-triggered sequences of voice, SMS, and email steps) have no direct Odoo equivalent. We extract Journey logic as a step-by-step conditional rule document during discovery, including trigger conditions, step order, channel (voice/SMS/email), and exit criteria. The document is delivered to the customer's admin for reconstruction in Odoo Action Rules or via a third-party marketing automation integration (such as Mautic or Brevo). Journey-trigger conditions that reference Regal Events map to Odoo mail.message domain filters on the equivalent Activity records.

Regal.io

AI Agent (scripts, decision trees, persona)

maps to

Odoo CRM

None (flagged for rebuild)

1:1
Fully supported

Regal AI Agent configurations — voice scripts, decision trees, persona settings, and handoff logic — are tied to a proprietary runtime that cannot be exported via API or UI. We do not migrate Agent configurations. We deliver a written inventory of every configured AI Agent with its trigger conditions, branching logic, persona description, and handoff rules. If the customer requires AI agent capabilities in Odoo, they select a compatible VoIP telephony add-on (such as a native Asterisk integration or a third-party CCaaS connector) and rebuild agent logic there.

Regal.io

SMS Thread

maps to

Odoo CRM

mail.message (SMS subtype)

1:1
Fully supported

Regal SMS conversations (sent and received messages linked to a Contact) map to Odoo mail.message records with a custom SMS channel indicator. We preserve the message direction (inbound/outbound), timestamp, content, and delivery status. Thread continuity in Odoo depends on the mail gateway configuration; we document the required incoming SMS gateway setup so that future SMS flows through Odoo's messaging channel rather than reverting to Regal.

Regal.io

Email Thread

maps to

Odoo CRM

mail.message (email subtype)

1:1
Fully supported

Regal email thread history attached to Contacts maps to Odoo mail.message records linked to the Lead. Message direction, subject, body, timestamp, and any attachments migrate. Email thread threading (in-reply-to references) is preserved as mail.message parent_id where available. Note that thread continuity in Odoo requires configuring the incoming email gateway (alias domain) post-migration; we document the required configuration steps.

Regal.io

Call Transcript and Recording

maps to

Odoo CRM

ir.attachment (transcript) + mail.message (activity note)

1:1
Fully supported

Call transcripts from Regal (available depending on Regal's retention settings at time of export) migrate as ir.attachment records linked to the corresponding mail.message activity. The transcript text is also embedded in the mail.message body for immediate visibility in the activity timeline. Call recording files migrate as ir.attachment records linked to the mail.message; audio file availability depends on Regal's media retention policy and is flagged before migration begins.

Regal.io

Branded Caller ID (CNAM)

maps to

Odoo CRM

None (flagged for re-registration)

1:1
Fully supported

Regal branded caller ID carrier registration details and CNAM configuration per campaign are exported as a configuration document. There is no Odoo-native equivalent for caller ID management because Odoo does not include native telephony. We deliver the registration details (carrier account IDs, number assignments, CNAM text) and recommend a VoIP provider (such as Twilio, Asterisk, or a regional carrier) for re-registration post-migration.

Regal.io

Integrations (CDP/CRM connections)

maps to

Odoo CRM

None (reconfiguration required)

1:1
Mapping required

Regal's live integrations with Segment, HubSpot, Salesforce, Braze, and Iterable define which contacts are synced and how. We document each active integration endpoint, sync direction, and field mapping during discovery. Post-migration, the customer must reconfigure Odoo's API or webhook integrations with these platforms. If HubSpot or Salesforce is the intended system of record post-migration, we configure Odoo's native bidirectional sync with the relevant platform during the post-migration integration phase.

Regal.io

Custom Object (Regal tenant-defined)

maps to

Odoo CRM

Custom Model (ir.model + ir.model.fields)

1:1
Fully supported

Regal Custom Objects (tenant-defined schemas beyond standard Contacts, Campaigns, and Events) migrate to Odoo custom models created via the Settings > Technical > Database Structure > Models menu or via data migration scripts. We pre-create the Odoo model with the equivalent field types (Char, Integer, Float, Date, Many2one, One2many) and lookup relationships before data import. Multi-table custom object relationships are resolved using Odoo's Many2one reference fields. Any Custom Object that has a lookup to Regal's native Contact object maps to the corresponding Odoo Lead or Contact record via the regal_contact_id__c source key.

Regal.io

Owner (agent/user in Regal)

maps to

Odoo CRM

Res.users

1:1
Fully supported

Regal Owners (agents assigned to Contacts and Campaigns) are resolved by email against Odoo's res.users table. Any Regal Owner without a matching Odoo User is held in a reconciliation queue for the customer's admin to provision before record import. Owner assignments on Leads migrate as the Lead's user_id field. This step gates the production migration because OwnerId references are required on most Odoo CRM records.

Regal.io

Contact contactability status

maps to

Odoo CRM

Lead stage or active flag

lossy
Fully supported

Regal Contactability requires a phone number; contacts without a phone are non-contactable and excluded from Journey triggers. We flag these records during the pre-migration audit and include them in the migration with a custom field contactable__c set to False. In Odoo, these records land as Leads with no phone, which is valid but they will not be reachable by outbound telephony flows unless enriched manually or via a third-party enrichment tool.

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.

Regal.io logo

Regal.io gotchas

High

Regal API is a single-events endpoint

High

AI Agent scripts and decision trees are non-exportable

Medium

No public pricing or documented tier limits

Medium

Contact contactability status is phone-number-dependent

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

  • Regal API exports through one endpoint with 300 req/sec ceiling

    All Contact creation, updates, and event ingestion in Regal flow through a single POST endpoint at events.regalvoice.com/events. We chunk our export reads to respect the 300 req/sec rate limit and sequence Contact creates before Events to prevent duplicate Contact records from creating orphaned Events. If the source export contains high-velocity event bursts (common in high-volume outbound campaigns), we batch and throttle to avoid HTTP 429 rejections that would stall the migration. Odoo's XML-RPC and JSON-RPC APIs impose their own rate constraints depending on the hosting method (Odoo Online vs Odoo.sh vs self-hosted), and we adjust chunk sizes accordingly per environment.

  • Journey automations and AI Agent scripts cannot be exported

    Regal's AI Agent configurations and Journey decision trees are stored in a proprietary runtime with no API or UI export path. We explicitly exclude them from migration scope and flag them for manual rebuild. The consequence for Odoo is significant: without an equivalent native telephony module, the customer's outbound AI agent logic must be rebuilt in a third-party CCaaS layer or abandoned. We deliver a complete Journey inventory document (step-by-step rules, trigger conditions, channel assignments, exit criteria) and an AI Agent configuration summary to guide the rebuild. This is the largest functional gap in the migration.

  • Phone-number requirement mismatch between platforms

    Regal requires a phone number for a Contact to be marked contactable and eligible for Journey triggers. Odoo Leads and Contacts accept records without a phone number. During migration, contacts imported without a phone number land as Odoo Leads with no phone, which is valid in Odoo but means those records cannot participate in outbound telephony flows without manual enrichment. We validate phone number presence in the source export, flag records missing this field, and document the enrichment step in the handoff checklist. Customers who relied on Regal's contactability model should plan for a phone-enrichment step (via Clearbit, Apollo, or manual entry) before activating Odoo telephony.

  • Odoo CRM has no native event-stream or behavioral tracking model

    Regal's core value is its event-stream data model — every call, SMS, email open, and behavioral trigger is a typed Event with a full property payload and timestamp. Odoo CRM has Activities (calls, emails, meetings, tasks) and Notes, but not a structured behavioral event log with arbitrary property schemas. We map Regal Events to mail.message records as a best-effort structural equivalent, but the result loses the typed event hierarchy (event_type, sub-events, property payloads) that powers Regal's Journey engine. Customers who rely on behavioral event analysis for reporting should plan to export Regal Event data to a separate analytics layer (warehouse, BI tool) before migration.

  • Odoo Community vs Enterprise migration scope differs materially

    Odoo offers a Community (open-source, self-hosted) and Enterprise (SaaS or on-premise with proprietary apps) edition. CRM functionality differs in subtle ways: Enterprise includes a visual pipeline kanban view with extra reporting and automated actions; Community includes the same CRM core but without the kanban dashboard enhancements and some reporting types. If the source Regal account uses advanced features (custom objects, API access at scale, specific integrations), we need to confirm the Odoo edition and hosting method (Online, Odoo.sh, or self-hosted) during discovery because it affects the available API endpoints, rate limits, and the custom field creation workflow.

Migration approach

Six steps for a successful Regal.io to Odoo CRM data migration

  1. Discovery and data audit

    We audit the Regal.io account: Contact volume, Contact Attribute schema, Event types and volume per type, Campaign count and membership, active Journeys and AI Agent configurations, SMS/email thread volume, call transcript availability, and active third-party integrations. We run a parallel Odoo discovery — edition (Community vs Enterprise), hosting method (Online vs Odoo.sh vs self-hosted), existing Odoo modules, and current User count. The discovery output is a written migration scope covering record counts per object, attribute schema, and an explicit list of what is in scope and out of scope (AI Agents, Journeys, branded caller ID, integrations). We flag the Odoo edition and hosting method as a gating decision before proceeding.

  2. Schema design in Odoo

    We configure the Odoo destination schema before any data import. For Community Edition, we create custom fields via CSV import through Settings > Import. For Enterprise, we use Settings > Technical > Database Structure > Models to create custom fields and configure field types. We create custom fields on res.partner (the base contact model Odoo CRM uses internally) to hold the Regal source ID (regal_contact_id__c), original contactability status, and any non-standard Contact Attributes that have no Odoo default equivalent. We configure Lead tags and stage values to mirror Regal's Campaign structure where applicable.

  3. Sandbox migration and reconciliation

    We run a full migration into an Odoo test environment (Odoo Online sandbox database or a duplicated Odoo.sh environment) with production-like data volume. The customer's operations lead reconciles record counts: Contacts imported vs Leads in Odoo, Events mapped vs mail.message records created, SMS threads re-associated correctly, call transcripts accessible. We spot-check 25-50 random Contact-to-Lead mappings against the Regal source. The customer signs off on schema, field mapping, and activity ordering before production migration begins.

  4. Regal export through /events endpoint with sequencing

    We export from Regal's single POST /events endpoint using chunked reads at 300 req/sec. We sequence the export as: (1) Contacts with full attribute payloads, (2) Campaigns and membership, (3) Events in chronological order by Contact, (4) SMS and email threads, (5) Call transcripts. For each Contact, we write the regal_contact_id__c as a custom field to enable downstream Event resolution. We run deduplication checks at this stage — Regal's single-endpoint model can produce duplicate Contact records on retry, and we eliminate them before Odoo import.

  5. Production migration in dependency order

    We run production migration in strict order: Users (provisioned, validated), Leads (with regal_contact_id__c set, phone validated), Activities (mail.message records linked to Leads via res_id and model), SMS/Email threads (linked to the correct Lead), Call transcripts (as ir.attachment + mail.message body), Custom Objects (last, after Lead lookups are resolved), and Campaign membership (as Lead tags or CRM Campaign lines). Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's batch import API (CSV or JSON-RPC depending on volume) with exponential backoff on rate-limit responses.

  6. Cutover, validation, and automation handoff

    We freeze Regal writes during cutover, run a final delta migration for any records modified during the migration window, then set Odoo CRM as the system of record. We deliver the Journey inventory document, AI Agent configuration summary, branded caller ID registration details, and integration reconfiguration checklist to the customer's admin team. We support a one-week hypercare window to resolve reconciliation issues. We do not rebuild Journeys in Odoo Action Rules or AI Agents in a third-party CCaaS layer — those are separate engagements scoped after migration.

Platform deep dives

Context on both ends of the pair

Regal.io logo

Regal.io

Source

Strengths

  • Event-based contact model with 300 req/sec API throughput for real-time, high-volume data streaming.
  • Native AI Agent runtime with smooth handoff to human agents, eliminating power-dialer spam issues.
  • CDP-native integrations with Segment, HubSpot, Salesforce, Braze, and Iterable for same-day onboarding.
  • Journey builder with no-code AI tools for marketers to design event-triggered voice, SMS, and email workflows.
  • 97% containment rate and 80% cost-to-serve reduction cited in enterprise case studies.

Weaknesses

  • No public pricing tiers — requires sales consultation and volume commitments for quotes.
  • AI Agent configurations and scripts are not exportable, requiring full rebuild at destination.
  • Full CCaaS feature set (WFM, multi-region inbound queuing) is narrower than platforms like RingCentral.
  • Call recording and transcript retention is governed by Regal's internal policy, not customer-configurable.
  • Rate limits are generous but undocumented for burst scenarios beyond 300 req/sec.
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 Regal.io and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Regal.io 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

    Regal.io: 300 requests per second.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Regal.io 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 Regal.io to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 20,000 Contacts with clean phone-number fields and no custom objects land between three and five weeks. Migrations with high-volume event histories (over 200,000 Events), multiple custom attribute schemas, SMS and email thread continuity requirements, or Odoo multi-app targets (CRM plus accounting or inventory) move to eight to fourteen weeks because of event sequencing time, thread re-association work, Odoo schema configuration, and sandbox reconciliation. Discovery and data audit add one to two weeks before execution begins regardless of size.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Regal.io.
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