CRM migration

Migrate from Denticon to Odoo CRM

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

Denticon logo

Denticon

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

11 of 11

objects map 1:1 between Denticon and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Denticon organizes dental practice data around patients, providers, appointments, and referrals within a single-tenant PGID structure. Odoo CRM uses crm.lead for leads and opportunities and res.partner for contacts and companies, with a separate hr.employee model for staff. The migration carries Denticon patient records (name, contact, address, date of birth) into Odoo res.partner, maps appointment histories to CRM activities, translates referral sources into Odoo's utm.source and utm.medium fields, and resolves provider email addresses to Odoo user accounts. Dental-specialty data — insurance policy numbers, treatment plans, clinical notes, imaging attachments — requires custom field creation in Odoo or is flagged for manual review. We pull from Denticon's REST API (Patients API v0, Appointments API v0, Practices API v0) and write via Odoo's XML-RPC external API. Automations, insurance eligibility rules, and recall workflows are not migratable — we export Denticon workflow definitions as a rebuild reference for your Odoo admin.

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

Denticon logo

Denticon

What's pushing teams away

  • Recurring complaints about expensive pricing increases and poor customer service responsiveness, with users noting errors that require calling to reset and long resolution times.
  • Steep learning curve and unintuitive UI make staff onboarding slow, especially for practices switching from simpler legacy systems.
  • Performance and reliability concerns including message delays and intermittent system errors that disrupt front-office operations.
  • Limited custom field capacity — only two alphanumeric fields of up to 25 characters — frustrates practices needing tailored data capture beyond standard properties.
  • Support quality inconsistency drives churn, with some users reporting they cannot reach a live representative to resolve issues in a timely manner.

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

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

Denticon

Patient

maps to

Odoo CRM

res.partner

1:1
Fully supported

Denticon patient records map 1:1 to Odoo res.partner contacts. Name, email, phone, address, and date of birth transfer directly. Partner type (patient vs. company) is set via res.partner.customer_rank. Dentists and referring providers also land as res.partner but are flagged separately.

Denticon

Patient

maps to

Odoo CRM

res.partner + custom fields

1:1
Fully supported

Dental-specific patient data — insurance carrier, policy number, group number, subscriber ID, treatment plan codes — has no Odoo CRM equivalent. These transfer to custom Char/Selection fields on res.partner (Insurance_Carrier__c, Policy_Number__c) for reference and must be validated against Odoo's Contacts Insurance module if used.

Denticon

Appointment

maps to

Odoo CRM

crm.lead + mail.message

1:1
Fully supported

Denticon appointment records do not map to a native Odoo CRM object. We translate each appointment into a crm.lead activity log entry (mail.message with date, provider, production type) and attach it to the corresponding res.partner lead. Appointment status (scheduled, completed, cancelled) maps to Odoo's activity state.

Denticon

Provider

maps to

Odoo CRM

res.users

1:1
Fully supported

Denticon provider records (dentists, hygienists, office staff) resolve by email match to Odoo res.users accounts. Providers without email addresses are flagged for Odoo user account creation before migration. Odoo hr.employee records are also created for provider records that lack user access.

Denticon

Provider

maps to

Odoo CRM

res.partner

1:1
Fully supported

Denticon provider contact details (name, email, phone, specialty) also land in res.partner as type='contact' records. The provider_id reference on patient records maps to the corresponding res.partner.id in Odoo, maintaining the relationship between patients and their care providers.

Denticon

Practice / Office (OID)

maps to

Odoo CRM

res.company

1:1
Fully supported

Each Denticon office (OID) within a PGID maps to a separate res.company in Odoo. This requires multi-company configuration in Odoo settings. Companies are created first so res.partner and crm.lead records can reference the correct company_id foreign key during import.

Denticon

Referral (Incoming)

maps to

Odoo CRM

utm.source + custom field on crm.lead

1:1
Fully supported

Denticon referral sources (external incoming referrals with cost data) map to Odoo utm.source records. The referral cost field transfers to a custom Decimal field on crm.lead (Referral_Cost__c). Referring provider names link to the corresponding res.partner record if one exists.

Denticon

Account / AR

maps to

Odoo CRM

account.move

1:1
Fully supported

Denticon accounts receivable, billing records, and payment history are accounting data outside Odoo CRM's scope. These migrate to Odoo Accounting (account.move) only if the Odoo Accounting module is active. FlitStack flags this as a separate migration scope requiring Odoo Finance configuration.

Denticon

External Referral Link

maps to

Odoo CRM

crm.lead + ir.attachment

1:1
Fully supported

Denticon external referral form data and attachments map to crm.lead notes and ir.attachment records. The referral form URL and form-submission metadata transfer as custom fields on the lead. Any attachments included in the referral are downloaded and re-uploaded to Odoo's ir_attachment table.

Denticon

Custom Fields (User Setup)

maps to

Odoo CRM

ir.model.fields

1:1
Fully supported

Denticon's two alphanumeric custom fields on User Setup screens (Setup → Office, Provider, Referral, Account) migrate as custom Char fields on the corresponding Odoo models. These require Odoo Studio (Enterprise) or direct model XML modification (Community) to create before data import.

Denticon

PGID / Organization

maps to

Odoo CRM

res.company + parent_id

1:1
Fully supported

The Denticon PGID organization name maps to a top-level res.company in Odoo. If the Denticon setup uses the PGID Split feature to separate offices, each split office becomes a child res.company via parent_id. The top-level company holds global settings; child companies hold location-specific configurations.

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.

Denticon logo

Denticon gotchas

High

PGID Split requires signed agreements and coordination between buyer and seller

Medium

Chrome cache and bad shortcuts corrupt patient context between sessions

Medium

Custom fields are severely limited to two fields of 25 characters

Low

API writeback scope is limited to specific endpoints

Low

Automated campaign quiet hours restrict message delivery timing

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

  • PGID-to-company multi-office mapping requires Odoo multi-company configuration

    Denticon's PGID Split feature copies patient, provider, and appointment data into new practice group IDs when offices are sold or separated. Odoo CRM has no equivalent — each office must be configured as a separate res.company with multi-company access rights set in Odoo settings before partners and leads can reference company_id. If your Denticon account holds multiple offices (OIDs) under one PGID, all three must be migrated together or split manually post-import. We deliver a company-hierarchy setup plan before data lands so each OID resolves to the correct res.company.

  • Insurance policy data has no native home in Odoo CRM

    Denticon stores insurance carrier, policy number, group number, and subscriber ID as standard patient record fields. Odoo CRM has no insurance fields on res.partner — the closest Odoo module is Contacts Insurance (Enterprise), which tracks policies per contact but requires module activation and configuration. We map these to custom Char fields (x_studio_insurance_carrier, x_studio_policy_number) as a fallback. If you need eligibility verification or claim integration, you will need Odoo Contacts Insurance or a third-party dental insurance app from the Odoo App Store.

  • Provider-to-user resolution can orphan appointment activity logs

    Denticon provider records carry an email address that should match a Denticon user account, but not all providers have active system login. Odoo requires a res.users account for activity ownership. When a Denticon provider has no matching Odoo user (no email or inactive account), appointment activity logs migrate with an empty user_id field — Odoo will display the activity but show 'Undefined' as the owner. We flag all unmatched providers before migration and recommend pre-creating Odoo user accounts for any provider who should own historical activities.

  • Referral cost data requires custom field creation before import

    Denticon's referral setup includes a Cost field on referral sources. Odoo utm.source has no cost field — the standard model tracks name, medium, campaign, and channel only. We create a custom Decimal field (Referral_Cost__c) on crm.lead to preserve cost-per-referral data for ROI reporting. This requires Odoo Studio access (Enterprise) or direct XML model editing (Community) before the migration import runs. We include the field definition in the pre-migration schema plan.

  • Clinical notes and imaging attachments are not CRM records

    Denticon clinical notes, periodontal chart data, and imaging attachments are clinical records stored in the Denticon clinical module, not the Patient API. Odoo CRM does not have a clinical charting equivalent. These records do not migrate via the standard API path. We can export clinical data as PDF attachments linked to res.partner if requested, but this is a separate engagement requiring Denticon's Clinical API access and Odoo document management configuration.

Migration approach

Six steps for a successful Denticon to Odoo CRM data migration

  1. Inventory Denticon data via API and map to Odoo schema

    We connect to Denticon using your API credentials (Patients API v0, Appointments API v0, Practices API v0) and pull a full export of patient records, appointment histories, provider profiles, and referral sources. We cross-reference the Denticon office list (OIDs) against your intended Odoo multi-company structure and identify any provider records without email addresses. The output is a data map document showing every Denticon object, its Odoo destination model, and any custom fields that need pre-creation in Odoo Studio or via XML.

  2. Configure Odoo companies, users, and custom fields

    Before data moves, your Odoo admin (or our team) creates res.company records for each Denticon office, sets the multi-company parent hierarchy, and creates the custom fields identified in the data map (insurance fields, referral cost, production type, NPI, original create date). Providers without existing Odoo user accounts are flagged for account creation so appointment activities have an owner. This step is completed before any import runs to ensure foreign keys resolve on first pass.

  3. Run sample migration on 200–500 patient records

    A representative slice of patient records — spanning multiple offices, patients with and without insurance data, and records linked to referred appointments — migrates first. We generate a field-level diff showing every mapped field value in Denticon and the corresponding Odoo res.partner field value. You verify patient name formatting, address parsing, insurance field population, and referral source linkage before the full run commits. Adjustments to transformation rules are made at this stage.

  4. Execute full migration with delta-pickup window

    All patient records, providers, appointments, and referrals import into Odoo via XML-RPC in dependency order: res.company first, then res.partner (providers), then res.partner (patients), then crm.lead (referrals), then mail.message activity logs. A 24–48 hour delta-pickup window captures any patient or appointment records modified in Denticon during the cutover. FlitStack generates an audit log of every import operation, and one-click rollback reverts all changes if reconciliation against the Denticon source data fails.

  5. Deliver reconciliation report and rebuild reference export

    Post-migration, we generate a row-by-row reconciliation report comparing total patient count, appointment count, and referral count between Denticon and Odoo. Any records that failed import or landed with null required fields are listed with error reasons. We also export your Denticon automation rule definitions (recalls, reminders, eligibility checks) as a documented reference file so your Odoo admin can rebuild equivalent automation rules using Odoo Studio or server actions.

Platform deep dives

Context on both ends of the pair

Denticon logo

Denticon

Source

Strengths

  • Consolidates patient portal, online scheduling, imaging, billing, and RCM into a single cloud subscription.
  • Multi-location architecture with office-level assignment of providers, users, and production types.
  • Integrated revenue cycle management with Denticon Pay for streamlined AR and payment processing.
  • Enterprise reporting and analytics across clinical, operational, and financial dimensions.
  • HIPAA-compliant cloud hosting with data backups and managed security included.

Weaknesses

  • Only two custom fields of up to 25 characters each on major objects — severely limits practice-specific data capture.
  • Customer support quality is inconsistent; users report long resolution times and difficulty reaching live representatives.
  • Steep learning curve for staff accustomed to simpler legacy dental software systems.
  • Performance and reliability issues including message delivery delays and intermittent system errors.
  • Pricing increases over time generate significant negative feedback on review platforms.
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. 1 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 Denticon and Odoo CRM.

  • Object compatibility

    B

    1 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

    Denticon: Not publicly documented in either the legacy reference (api.denticon.com) or the new developer portal pages indexable without authentication. Confirm at partner onboarding..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Denticon-to-Odoo CRM migrations complete in 2–5 days of clock time for up to 100,000 patient records. The longest step is Odoo multi-company and custom field configuration (Step 2), which takes 4–8 hours depending on office count. API export from Denticon runs in 2–6 hours; XML-RPC import into Odoo runs in 4–12 hours. A 48-hour delta-pickup window is added for cutover captures.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Denticon.
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