CRM migration

Migrate from Henry Schein One to Odoo CRM

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

Henry Schein One logo

Henry Schein One

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Henry Schein One and Odoo CRM.

Complexity

BStandard

Timeline

72–120 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Henry Schein One is a dental-vertical practice management platform spanning Dentrix (on-premise), Dentrix Ascend (cloud), Dentally (UK/Australia), and OMSVision (oral surgery). Its data model centers on patient records, treatment plans, appointment schedules, insurance ledgers, and clinical notes — all organized around a provider-centric schema. Odoo CRM uses a flat res.partner (contact/company) model for patients and providers, a crm.lead model for leads and opportunities, and stores pipeline stages in crm.stage tied to crm.team. The core migration challenge is translating Henry Schein One's multi-table dental schema — with its provider assignments, insurance plan relationships, and perio-chart history — into Odoo's relational partner-plus-opportunity structure. We extract via the Henry Schein One API Exchange (700+ endpoints, SOC 2 Type II compliant), transform records to Odoo's xmlrpc/jsonrpc import format, create custom fields for insurance plan IDs and provider license numbers, and sequence the load so foreign keys resolve correctly. Workflows, automated recalls, and e-prescribing rules do not migrate — we export them as rebuild-reference CSVs for your Odoo administrator. The delta-pickup window captures any records modified between the extraction snapshot and the final go-live sync.

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

Henry Schein One logo

Henry Schein One

What's pushing teams away

  • Legacy on-premise Dentrix installations accumulate database bloat over time, causing sluggishness that drives practices toward cloud alternatives like Dentrix Ascend or competing platforms.
  • Henry Schein One has tightened integration restrictions — third-party vendors like Vyne Dental report missing API data elements for claims workflows and requirements to discontinue existing integration methods.
  • Practices report difficulty extracting complete data from Dentrix when evaluating a switch, with the migration path treated as a competitive moat rather than an open standard.
  • Annual subscription costs for cloud tiers ($800–$1,400/month) plus module add-ons create budget pressure for small solo practices comparing total cost of ownership.
  • Internal staffing complaints on Glassdoor and Indeed — unattainable targets, finance team issues — reflect onto customer perception of account management and support quality.

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 Henry Schein One objects map to Odoo CRM

Each row shows how a Henry Schein One 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.

Henry Schein One

Patient Record (Dentrix)

maps to

Odoo CRM

res.partner

1:1
Fully supported

Henry Schein One patient records map directly to Odoo res.partner. Patient name, date of birth, contact information, address, and emergency contact map as-is. Provider assignment is stored as a custom partner field (x_provider_id) pointing to the treating provider's partner record. Multi-location patients get a single partner record with branch stored in a custom field.

Henry Schein One

Provider / Staff Record (Dentrix)

maps to

Odoo CRM

res.partner (with contact_type = 'contact' and x_is_provider = True)

1:1
Fully supported

Dentrix provider records (dentist, hygienist, office manager) migrate as Odoo res.partner records with a boolean custom field x_is_provider set to True. Provider license numbers (state-specific, e.g., NPI in the US) are stored as x_npi_number custom char fields. Provider specialty maps to res.partner function (e.g., 'Dentist', 'Hygienist').

Henry Schein One

Appointment / Schedule

maps to

Odoo CRM

crm.lead (type = 'opportunity') + calendar.event

1:1
Fully supported

Scheduled appointments in Dentrix Ascend become Odoo calendar.event records linked to the patient res.partner. The appointment status (confirmed, completed, no-show, cancelled) maps to a custom selection field x_appointment_status on the event. Future confirmed appointments also generate a crm.lead opportunity record with stage set to 'New' and a note referencing the appointment date, so the pipeline reflects upcoming patient activity.

Henry Schein One

Treatment Plan

maps to

Odoo CRM

sale.order + custom x_treatment_plan_note field

1:1
Fully supported

Dentrix treatment plans — which list proposed procedures with CDT codes, surfaces, teeth involved, and fee estimates — map to Odoo sale.order (quotation) records. Each line item in the treatment plan becomes a sale.order.line with the CDT code stored in x_cdt_code and surfaces/tooth data in x_surface and x_tooth_number custom fields on the line. Treatment plan status (proposed, accepted, completed) maps to sale.order state.

Henry Schein One

Insurance Plan / Ledger (Patient-Level)

maps to

Odoo CRM

custom x_insurance_plan_id, x_group_number, x_subscriber_id fields on res.partner

1:1
Fully supported

Henry Schein One stores insurance plan name, group number, subscriber ID, and employer information per patient ledger. These have no native Odoo equivalent — we create four custom char fields on res.partner: x_insurance_plan_id, x_group_number, x_subscriber_id, x_employer_name. EDI eligibility status (active/inactive/pending) maps to a selection field x_edi_eligibility_status. Insurance EDI re-enrollment must be completed post-migration with your EDI clearinghouse.

Henry Schein One

Clinical Note / Progress Note

maps to

Odoo CRM

crm.lead.description (longtext) + ir.attachment

1:1
Fully supported

Progress notes and clinical observations stored in Dentrix (free-text, per-visit) migrate as ir.attachment records linked to the patient res.partner, with the note body stored as the attachment description. We extract structured fields (chief complaint, diagnosis, treatment rendered) into custom char fields x_chief_complaint and x_diagnosis_code on the partner record. Plain-text notes are attached as .txt files. Rich-text formatting may not survive the round-trip.

Henry Schein One

Perio Chart / Clinical Measurement

maps to

Odoo CRM

custom x_perio_chart_summary field on res.partner + ir.attachment

1:1
Fully supported

Periodontal chart data — probing depths, recession measurements, BOP flags per tooth — has no Odoo native equivalent. We extract the most recent perio chart summary (e.g., 'Generalized Stage II Periodontitis') as a custom selection field x_perio_summary on res.partner and attach the full perio chart export as a PDF ir.attachment. Historical perio data is preserved but not queryable in Odoo's standard search.

Henry Schein One

Office / Location Record

maps to

Odoo CRM

res.company

1:1
Fully supported

Multi-location Dentrix setups store practice locations as separate databases or location codes. We map each location to an Odoo res.company record with the practice name, address, and phone. Provider assignments to locations are preserved via x_location_id custom field on the provider's res.partner record. For Odoo Community (no multi-company), we use a single company with x_location_id as a selection field on partners.

Henry Schein One

Inventory / Supply Item (if applicable)

maps to

Odoo CRM

product.product

1:1
Fully supported

If the Henry Schein One setup includes supply inventory or in-office product records (used in OmsVision or DSO configurations), these map to Odoo product.product with type='product'. Unit of measure, SKU, and unit cost map directly. Restocking thresholds and reorder rules map as Odoo product_rule records.

Henry Schein One

Billing Ledger / Ledger Entry

maps to

Odoo CRM

account.move + x_ledger_balance custom field on res.partner

1:1
Fully supported

Historical ledger balances (patient account balance in Dentrix) do not map to Odoo accounting (which is invoice-centric). We set the patient's opening balance as a custom decimal field x_account_balance on res.partner. The balance is for reference only — actual accounting records (invoices, payments) migrate separately under the Odoo Accounting app if included in scope. Open ledger items are flagged for manual reconciliation post-migration.

Henry Schein One

Lab Case / Referral (OMSVision)

maps to

Odoo CRM

crm.lead + project.task

1:1
Fully supported

Oral surgery and specialty practices using OMSVision track lab cases and specialist referrals. Each lab case becomes a crm.lead with a linked project.task (created via Odoo's crm_project module). Case status (pending, in-lab, returned, referred) maps to the task stage. Referring provider information migrates as a separate res.partner contact with x_is_referring_provider set to True.

Henry Schein One

Automated Recall / Patient Outreach Workflow

maps to

Odoo CRM

Odoo CRM automation rules (rebuild required)

1:1
Fully supported

Henry Schein One automated recall workflows (hygiene recall, treatment follow-up, appointment reminder sequences) are platform-native automation logic that cannot be extracted as data. We export a CSV listing every active recall rule — trigger conditions, intervals, message templates — as a rebuild reference for Odoo's CRM automation studio. The rebuild is a separate engagement; we do not migrate the automation logic itself.

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.

Henry Schein One logo

Henry Schein One gotchas

High

Proprietary image encoding breaks image links post-migration

High

Insurance EDI re-enrollment required with every payer

Medium

API Exchange restrictions limit third-party data access

Medium

PCI compliance does not transfer between systems

Low

Jarvis Analytics generates derived data that does not export

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

  • Henry Schein One API Exchange omits EDI eligibility fields required for claims workflows

    The Vyne Dental integration notice from March 2025 publicly documented that the Henry Schein One API Exchange lacks the data elements needed to support claims submission and eligibility verification workflows. If your practice relies on real-time insurance eligibility checks via API (Eligibility Pro, real-time portal lookups), the exported patient record will contain the insurance plan name and group number but not the EDI eligibility status flags that Odoo's dental EDI connector requires. We flag every patient with incomplete insurance metadata before the migration runs and surface a re-enrollment checklist. Practices must re-complete EDI eligibility verification with their clearinghouse post-migration to restore real-time eligibility checks in Odoo or connected EDI tools.

  • Imaging metadata (X-rays, perio charts, CBCT scans) requires separate export handling

    Henry Schein One uses proprietary encoding for image file names in Dentrix — a broken image link is the most commonly reported post-migration issue in dental software transitions (PracticeSignal, 2026 guide). Odoo CRM has no native imaging viewer; images attach as ir.attachment records linked to the patient partner. We extract the full image file set via the Dentrix file export (not the API), rename files to a predictable schema (PatientID_Date_ImageType), and re-attach them in Odoo. CBCT volumetric data (.DICOM) cannot be displayed in Odoo and is attached as binary blobs with a note directing users to a DICOM viewer. We strongly recommend a separate imaging migration verification pass with your imaging hardware vendor before declaring the migration complete.

  • Odoo External API requires the Custom (Enterprise) plan — Community edition has no API

    Odoo's External API (xmlrpc/jsonrpc) is available only on the Custom plan (starting at $37.40/user/month). The Community edition (free) and Standard plan ($24.90/user/month) do not expose external API access for data import. If your Odoo instance is Community, we import via direct PostgreSQL INSERT statements using the Odoo import-compatible CSV format — which is slower and requires PostgreSQL credentials and direct database access. For practices that intend to use Odoo.sh cloud hosting, API access is included. We confirm the Odoo edition and hosting type before selecting the import method; if Community is confirmed, we add a PostgreSQL access step to the migration plan.

  • Automated recall workflows and e-prescribing rules cannot be extracted as data

    Henry Schein One recall sequences (hygiene recall intervals, treatment follow-up alerts, appointment reminder SMS/email) and e-prescribing rule configurations are stored as platform-native automation logic, not as exportable records. FlitStack AI does not migrate this logic. We provide a CSV export of every active recall rule — trigger conditions (e.g., '6 months post-prophy'), interval settings, and contact template references — so your Odoo administrator can rebuild them in Odoo CRM Automation Studio. The rebuild is typically a 2–4 hour exercise for a single-location practice; multi-location DSO recall logic may require OdooDiscuss or a custom Python module and should be scoped separately.

  • Insurance EDI re-enrollment must be restarted post-migration

    When you switch practice management systems, every insurance payer requires re-enrollment of your practice's EDI submitter ID and billing NPI under the new system identifier. This is the step that catches more dental offices off guard than any other (PracticeSignal, 2026 Dentrix migration guide). FlitStack AI migrates your insurance plan records and payer IDs, but the EDI clearinghouse re-enrollment process — submitting your Odoo instance as the new submitter — must be completed with each payer independently. We provide a payer-by-payer re-enrollment checklist with your migrated payer list. This process typically takes 2–6 weeks depending on payer responsiveness and cannot be accelerated by the data migration itself.

Migration approach

Six steps for a successful Henry Schein One to Odoo CRM data migration

  1. Audit Henry Schein One API Exchange data model and identify extraction endpoints

    FlitStack AI connects to your Henry Schein One API Exchange credentials (OAuth 2.0, SOC 2 Type II compliant) and inventories every available endpoint for your account. We map patient records, provider records, appointment schedules, treatment plans, and insurance ledgers to the corresponding API response schemas. Any custom properties (perio-chart fields, provider-specific clinical note types, OMSVision lab case fields) are catalogued separately. We also perform a pre-extraction data quality check: duplicate patients, orphaned provider references, and records with missing required fields are flagged and reported before any data moves. This step produces the migration scope document and a field-mapping matrix for Odoo.

  2. Stand up Odoo custom fields and company/location structure

    Before patient data lands, FlitStack AI creates all required custom fields on res.partner, sale.order, and calendar.event — including x_insurance_plan_id, x_npi_number, x_cdt_code, x_appointment_status, x_perio_summary, and 15 others identified in the scope document. For multi-location practices, we configure res.company records and x_location_id selection values. We configure crm_stage records matching your practice's case-stage taxonomy (e.g., 'Exam Scheduled', 'Treatment Proposed', 'Case Accepted', 'In Progress', 'Completed'). If your target is Odoo Community, we also prepare the PostgreSQL import schema and credentials for direct INSERT — this is coordinated with your Odoo administrator.

  3. Extract and transform data with foreign-key sequencing

    We extract data in dependency order: (1) res.partner records for providers — because patient records and appointments reference provider IDs; (2) res.partner records for patients — which reference location IDs and responsible party data; (3) res.company and location records if not already present; (4) calendar.event records for appointments linked to patient and provider partner IDs; (5) sale.order records for treatment plans linked to patient partners. Transformation scripts convert Henry Schein One field names to Odoo field names, apply value mappings for state codes and insurance status selections, and store original system IDs in x_source_system_id for traceability. Insurance ledger balances are stored as x_account_balance on patient partners.

  4. Run a sample migration with field-level diff before full commit

    A representative slice migrates first — typically 200–500 patient records across multiple providers and locations, spanning appointments, treatment plans, and insurance records. We generate a field-level diff comparing the source Henry Schein One API response against the destination Odoo record, flagging any field that did not map cleanly. You review the diff, verify recall date mapping, insurance field completeness, and provider linkage before we commit to the full run. Imaging files (X-rays, perio charts, DICOM files) are extracted in parallel and attached to the sample patient records for verification. Any mapping gaps discovered in the sample are corrected before the full migration begins.

  5. Execute full migration with delta-pickup and post-migration audit

    The full record set loads into Odoo via the External API (Custom plan) or PostgreSQL direct import (Community). A delta-pickup window — typically 24–48 hours — captures any new appointments, patient updates, or treatment plan changes that occurred in Henry Schein One during the cutover window. We run a post-migration audit comparing record counts, account balance totals, and appointment date ranges against the pre-migration snapshot. The audit log captures every insert and update operation; a one-click rollback script is available if reconciliation reveals discrepancies. We deliver the recall-rule export CSV, the EDI re-enrollment checklist, and a handoff call with your Odoo administrator to review the rebuilt automation plan.

Platform deep dives

Context on both ends of the pair

Henry Schein One logo

Henry Schein One

Source

Strengths

  • Widest installed base of any dental PMS in North America, making integrations and staff familiarity a practical advantage.
  • Integrated ecosystem covering PMS, billing, analytics, marketing, and specialty workflows under one vendor umbrella.
  • API Exchange with SOC 2 Type II compliance and 700 endpoints — meaningful for practices that depend on third-party integrations.
  • Dentrix Ascend eliminates on-premise server hardware and remote desktop dependencies for cloud-oriented practices.
  • OMSVision offers purpose-built surgical scheduling and AAOMS-aligned workflows unavailable in general-purpose dental PMS products.

Weaknesses

  • On-premise Dentrix requires server maintenance, backups, and IT staff that many small practices lack internal capacity to manage.
  • Henry Schein One has restricted third-party API access — Vyne Dental and others cite missing claims workflow data elements and integration discontinuation requirements.
  • Image migration from Dentrix is technically complex due to proprietary file naming, making it the most common source of post-migration data integrity failures.
  • Insurance EDI re-enrollment with payers is required when switching PMS systems, adding 4–8 weeks of administrative work that is not always disclosed upfront.
  • Pricing is opaque and subscription-based ($800–$1,400/month for cloud tiers), with modules priced individually, making total cost unpredictable for small practices.
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 Henry Schein One and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Henry Schein One and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Henry Schein One 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

    Henry Schein One: Not publicly documented per-org limits; enterprise customers receive dedicated API capacity.

  • Data volume sensitivity

    A

    Henry Schein One exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Henry Schein One 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 Henry Schein One to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Henry Schein One to Odoo CRM migrations complete within 72–120 hours of clock time for under 50,000 patient records. The planning and schema setup phase (steps 1–2) takes 3–5 business days. Full data extraction, transformation, and load runs over 24–48 hours. Delta-pickup and post-migration audit add another 24–48 hours. Multi-location setups (Dentrix + Dentally or OMSVision), practices with over 100,000 records, or DSO configurations with separate company structures extend the timeline to 7–14 days. Imaging metadata export and verification is the longest single data-handling step.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Henry Schein One.
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