CRM migration

Migrate from Sensei Cloud to Odoo CRM

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

Sensei Cloud logo

Sensei Cloud

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

85%

11 of 13

objects map 1:1 between Sensei Cloud and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Sensei Cloud stores patient records, clinical treatment plans, appointment schedules, and insurance billing data within a dental-practice management model designed for multi-location oral healthcare groups. Odoo CRM operates as a general-purpose CRM with a lead-to-opportunity pipeline model built on PostgreSQL, accessible via XML-RPC API for Community plan users. The migration extracts patient demographics and practice data from Sensei Cloud exports, translates dental-practice entities into Odoo leads and contacts, and handles unmatched dental fields as custom fields on the crm.lead model. Odoo workflow rules, automations, and pipeline stage configurations do not carry over and must be rebuilt in Odoo Studio or via the XML-RPC API. FlitStack AI sequences the migration so foreign-key relationships resolve correctly — patients become leads first, then contacts, then linked to Odoo opportunities if cross-sell activity is tracked post-migration. A delta-pickup window captures any records modified during the cutover window so Odoo reflects the final practice state at go-live.

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

Sensei Cloud logo

Sensei Cloud

What's pushing teams away

  • Conversion from SoftDent and other legacy systems is messy, generating duplicate charts, inconsistent ledger entries, and billing records that do not reconcile cleanly in the new environment.
  • Cloud performance issues including slowness, login problems, and unreliable data syncing frustrate high-volume practices that depend on constant uptime throughout the clinical day.
  • Surgical workflows for oral surgeons feel adapted rather than native, with gaps in medical billing, cross-coding, and referral management that require persistent workarounds.
  • Radiograph visualization is not natively built into the core software, forcing practices to purchase and integrate the separate Sensei Imaging addon to view digital images within the platform.
  • Billing ledger bugs cause completed and paid accounts to show outstanding balances, making collections tracking unreliable and creating reconciliation headaches for front-office staff.

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

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

Sensei Cloud

Patient Record

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Patient demographics (name, DOB, contact info) map directly to crm.lead fields. FlitStack resolves the patient record's primary contact fields into the lead's standard name and email fields. The lead type is set to 'lead' by default; contacts who already have active treatment cases can be flagged for opportunity creation.

Sensei Cloud

Patient Address

maps to

Odoo CRM

res.partner

1:1
Fully supported

Odoo stores addresses on the res.partner model, which is shared between CRM leads, contacts, and companies. Patient addresses migrate as partner records and linked to the crm.lead via partner_id. Multi-line addresses are parsed into street, street2, city, state_id, zip, country_id fields.

Sensei Cloud

Appointment / Scheduling

maps to

Odoo CRM

crm.lead activity / calendar.event

many:1
Fully supported

Appointment records from Sensei Cloud do not map to a single Odoo object. Past appointments migrate as crm.lead activities (mail.activity) with type 'appointment', subject containing the appointment type, and date preserved in activity_date_deadline. Upcoming scheduled appointments can generate calendar.event records if the Calendar module is installed in Odoo.

Sensei Cloud

Insurance Carrier / Payer

maps to

Odoo CRM

res.partner (type: insurance)

1:1
Fully supported

Odoo has no native insurance carrier entity. Insurance payer names migrate as res.partner records with a custom field insurance_carrier = True. Policy numbers and group IDs map to custom char fields on the patient lead record. The partner_is_company flag is set true for carrier records.

Sensei Cloud

Treatment Plan / Procedure Code

maps to

Odoo CRM

Custom field on crm.lead

1:1
Fully supported

CDT (Current Dental Terminology) procedure codes and treatment descriptions have no Odoo CRM equivalent. FlitStack creates a custom many2one field procedure_code_id pointing to a custom procedure_code model, and a char field treatment_description on crm.lead. Treatment case status (New, In Progress, Completed) maps to a custom picklist field.

Sensei Cloud

Clinical Notes / Tooth Chart

maps to

Odoo CRM

Custom field on crm.lead (HTML/text)

1:1
Fully supported

Tooth chart data and per-surface clinical notes are preserved as a custom HTML field (x_clinical_notes) on crm.lead for reference. These cannot render as structured data in Odoo's standard UI but are searchable and viewable in the lead form. If clinical notes are extensive, they can alternatively be stored as Odoo attachments.

Sensei Cloud

Provider / Treating Dentist

maps to

Odoo CRM

res.users / crm.team

1:1
Fully supported

Sensei Cloud provider names are resolved by email match against Odoo res.users records. Unmatched providers are flagged and can be set to a fallback user (practice admin) or invited to Odoo first. Provider assignment per patient record becomes a many2one user_id field on crm.lead.

Sensei Cloud

Referral Source

maps to

Odoo CRM

crm.lead / source_id

1:1
Fully supported

Referral source (dentist referral, patient referral, marketing campaign) maps directly to Odoo's utm.source and utm.medium fields on crm.lead. If the source does not exist in Odoo, FlitStack creates it. The original referral name is preserved in a custom field for reporting continuity.

Sensei Cloud

Billing / Ledger Entry

maps to

Odoo CRM

account.move (via Accounting module)

1:many
Fully supported

Billing records from Sensei Cloud do not map to Odoo CRM records. Outstanding balances, payments, and adjustments migrate to Odoo Accounting (account.move) if the Accounting module is installed. Treatment ledger entries become invoice lines under account.move.line with product references mapped to Odoo product.product.

Sensei Cloud

Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

File attachments (treatment consents, insurance cards, imaging exports) migrate to Odoo's ir.attachment model linked to the crm.lead record. File size limits apply per Odoo configuration (default 25MB). Imaging exports from Sensei Imaging are re-uploaded as attachments with the original filename preserved.

Sensei Cloud

Location / Practice Office

maps to

Odoo CRM

stock.warehouse or res.company

1:1
Fully supported

Multi-location offices in Sensei Cloud map to res.company records in Odoo if the Multi-Company module is enabled (Custom plan). For single-company setups, location is stored as a custom char field on crm.lead. Warehouse records can also be used if the Inventory module is active and location-specific lead routing is needed.

Sensei Cloud

Marketing Opt-In / Consent

maps to

Odoo CRM

custom field on crm.lead

1:1
Fully supported

Patient marketing consent flags (SMS, email, postal) migrate as boolean custom fields on crm.lead (x_consent_sms, x_consent_email). Odoo does not have a native consent management model in the CRM module; these fields are used by Odoo's email marketing tools to enforce opt-in compliance.

Sensei Cloud

Custom Dental Property

maps to

Odoo CRM

ir.model.fields (x_ prefixed)

1:1
Fully supported

Sensei Cloud custom properties (per-practice fields created in the Sensei administration console) are inventoried during the assessment phase. Each custom property is evaluated for an Odoo standard equivalent; properties with no equivalent are created as x_ prefixed fields on crm.lead in Odoo Settings > Technical > Models.

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.

Sensei Cloud logo

Sensei Cloud gotchas

High

Legacy conversion leaves messy patient and chart duplicates

Medium

Chrome-only browser support affects migration workstation compatibility

Medium

Imaging data requires separate Carestream-format conversion pipeline

Low

Billing ledger errors cannot be corrected post-creation

Low

Provider assignments sometimes stored as text rather than foreign key

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

  • Sensei Cloud REST API access requires a separate Developer Program agreement

    Sensei Cloud does not expose a publicly documented REST API on all plan tiers. The Developer Program (gosensei.com/developer-program) provides API credentials via a separate agreement, and the API documentation is a separately distributed PDF. If your practice is on a standard Yellow Belt or Black Belt plan without a developer agreement, FlitStack AI works from CSV exports generated through Sensei Cloud's built-in export utility. CSV exports from the Sensei Cloud UI may truncate custom properties or omit historical appointment records beyond the most recent 12 months — we surface this during the assessment phase and request extended exports where needed.

  • Odoo Community edition API has no documented rate-limit ceiling but requires xmlrpc configuration

    Odoo Community edition exposes data via XML-RPC endpoints (xmlrpc/2/common, xmlrpc/2/object) without the per-request rate-limit documentation that the Odoo Custom plan documentation references. In practice, Community edition API calls are constrained by the Odoo server's worker configuration (default: 5 generic workers on Odoo Online). Large patient record sets (50,000+) may require batch-size tuning — FlitStack AI configures batch sizes per migration run and monitors server response times to stay within worker capacity. Odoo Enterprise customers on Custom plan have no such constraints and benefit from higher throughput.

  • Dental clinical notes cannot render as structured Odoo fields — they become static reference text

    Tooth chart data and per-surface clinical notes in Sensei Cloud use a proprietary structured format (surface-level charting per tooth: M, O, D, B, L, F) that has no equivalent in Odoo CRM's data model. Migrating these as plain-text HTML into a custom field on crm.lead preserves the content but it is not searchable by tooth number or surface in Odoo's standard interface. Practices that use clinical notes for treatment handoffs between providers should plan to either retain a Sensei Cloud read-only account for clinical reference or build a custom Odoo module that parses the HTML into a structured tooth-chart view.

  • Multi-location offices require Odoo Custom plan for proper company scoping

    Sensei Cloud treats practice locations as first-class entities with per-location provider assignments, appointment books, and billing configurations. Odoo's multi-company architecture (res.company) is only available on the Custom plan. Practices migrating from Sensei Cloud with three or more locations on an Odoo Standard plan will have all leads land in a single company, and the practice_location custom field will be required to route and filter records. Odoo does not support cross-company record visibility on Standard — your admin must decide whether to consolidate to one company or upgrade to Custom.

  • Odoo workflow rules and automations require full rebuild in Odoo Studio or via XML-RPC

    Sensei Cloud automations (appointment reminders, recall workflows, insurance verification triggers) do not migrate to Odoo. Odoo workflow rules are stored in the base.action.rule model and server actions in base.action; there is no import utility for these. FlitStack AI can export the Sensei Cloud automation definitions as a written specification document describing each rule's trigger, condition, and action — your Odoo admin then recreates these in Odoo Studio or via the XML-RPC API. Automated recall reminders (e.g., '6-month hygiene recall') are the highest-friction rebuild item for dental practices and typically require a custom Odoo module or a third-party recall management app from the Odoo Apps store.

Migration approach

Six steps for a successful Sensei Cloud to Odoo CRM data migration

  1. Assess Sensei Cloud export feasibility and scope the data extract

    FlitStack AI determines whether your Sensei Cloud plan includes API access via the Developer Program or whether we work from CSV exports. We inventory all standard objects (patient records, appointments, treatment plans, insurance entries) and custom properties from your Sensei Cloud configuration. We also check the export history for any truncation on historical appointments and request extended-range exports from Sensei support if needed. This assessment produces the migration scope document that drives the rest of the process.

  2. Configure Odoo CRM custom fields and company structure

    Before data loads, FlitStack AI creates all required custom fields on the crm.lead and res.partner models: date_of_birth, insurance_policy_number, treatment_case_status, clinical_notes, consent flags, and procedure_code fields. If you have multiple practice locations and an Odoo Custom plan, we help configure the res.company records per location. For Standard plan setups, we configure the practice_location custom field for routing. Custom activity types for appointments are registered in the Odoo mail.activity.type table via xmlrpc before the migration run.

  3. Resolve provider and contact owners by email match

    Odoo requires a user_id on each crm.lead record. FlitStack AI matches treating provider emails from Sensei Cloud against existing Odoo res.users records. Unmatched providers are flagged in a pre-migration report — your team either invites them to Odoo first or assigns their patient records to a fallback owner. Insurance carrier names are resolved or created as res.partner company records with the insurance_carrier flag set. No crm.lead lands without an assigned user_id after this step.

  4. Run sample migration with field-level diff

    A representative slice of patient records (typically 100–500 across a mix of appointment types, insurance scenarios, and clinical note lengths) migrates first. FlitStack AI generates a field-level diff comparing source values against destination values for every mapped field, including custom fields. You verify that patient names, appointment dates, procedure codes, insurance policy numbers, and provider assignments landed correctly. This sample run also validates that Odoo's xmlrpc batch processing handles your record volume without worker timeouts.

  5. Execute full migration with delta-pickup window

    The full patient record set loads into Odoo crm.lead with all custom fields populated. A delta-pickup window (24–48 hours) runs concurrently — any patient records modified, new appointments added, or insurance changes made in Sensei Cloud during the cutover are captured and applied to Odoo. All operations are logged in the FlitStack audit trail. If reconciliation identifies missing records, the rollback function reverts Odoo to the pre-migration state so the delta can be re-applied cleanly.

Platform deep dives

Context on both ends of the pair

Sensei Cloud logo

Sensei Cloud

Source

Strengths

  • Cloud-native access means teams schedule, chart, and collect payments from any location or device with a browser login.
  • Carestream imaging integration brings digital radiography, CBCT, and intraoral scans directly into the patient record within the same platform.
  • Centralized multi-location management gives group practices and DSOs a single dashboard for operations and performance across every office.
  • Practice management data including scheduling, treatment planning, billing, and EHR lives in one platform rather than across disconnected legacy systems.

Weaknesses

  • Conversion from legacy Carestream products like SoftDent and Windent consistently generates messy data with duplicate records and reconciliation gaps.
  • Radiograph visualization requires the separate Sensei Imaging addon; the core platform does not display digital images natively.
  • Duplicate charts cannot be merged or deleted within the software, forcing staff to work around or ignore redundant patient records.
  • Ledger entries are difficult to delete or alter after creation, making it hard to correct billing errors post-commitment.
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 Sensei Cloud and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Sensei Cloud 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

    Sensei Cloud: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Sensei Cloud to Odoo CRM migrations complete in 48–72 hours of clock time for practices with fewer than 50,000 patient records. The longest planning step is configuring Odoo's custom fields and ensuring Sensei Cloud exports capture the full historical appointment range. Multi-location setups with 100,000+ records or heavy custom property use extend to 5–10 days, primarily because Odoo's xmlrpc batch configuration needs tuning per record volume and the custom field setup on crm.lead must be validated before each load run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Sensei Cloud.
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