CRM migration

Migrate from Dr.DENTES to Odoo CRM

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

Dr.DENTES logo

Dr.DENTES

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between Dr.DENTES and Odoo CRM.

Complexity

BStandard

Timeline

3–5 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Dr.DENTES is a dental-practice management platform centered on patient records, appointments, treatment plans, insurance carriers, and billing. It has no native concept of CRM pipelines or opportunity management. Odoo CRM uses crm.lead for leads and opportunities, res.partner for contacts and companies, and ir_attachment for document storage. These are structurally different models — the migration is a schema translation from a practice-management data model into a sales-cycle data model. We extract patient records, appointment history, treatment procedure codes, and insurance carrier data from Dr.DENTES via their API using scoped read access. Patient records map to Odoo res.partner (as contacts). Treatment histories, insurance fields, and practice-specific metadata become custom fields on the res.partner record. Appointment records convert to Odoo CRM activities (mail.message and calendar.event) linked to each contact with original timestamps preserved. Invoice data maps to custom fields since Odoo's native fields target sales orders rather than practice billing. Dr.DENTES workflows, appointment reminder automations, and billing-rule logic do not have an equivalent in Odoo CRM and must be rebuilt manually using Odoo's Studio automation tools or the Odoo Business Rules engine after migration. We export your workflow definitions as a rebuild reference. A delta-pickup window of 24–48 hours captures any new patients or appointments created in Dr.DENTES during the cutover window.

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

Dr.DENTES logo

Dr.DENTES

What's pushing teams away

  • Geographic focus is Turkey first; the compliance integrations (USS/e-Nabız, e-Reçete) are irrelevant outside Turkey, and English-speaking dental practices typically need different e-prescribing connectors.
  • Very thin public review footprint — G2, Capterra, Software Advice, and GetApp list the product but with minimal reviewer feedback, so prospective buyers cannot easily compare against Curve, Open Dental, or Dentrix.
  • No documented public API or developer portal limits integration with practice analytics, marketing platforms, or imaging hardware vendors.
  • Single-vendor lock-in for the e-Nabız/USS bridge means migrations off Dr.DENTES require rebuilding the Turkish compliance integration in whatever dental PM replaces it.
  • Lightweight reporting and analytics versus enterprise-tier dental PMs; reviewers and the vendor's own feature page describe analytics as 'detailed reporting' rather than a configurable BI layer.

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 Dr.DENTES objects map to Odoo CRM

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

Dr.DENTES

Patient Record

maps to

Odoo CRM

res.partner (type=contact)

1:1
Fully supported

Dr.DENTES patient records are the primary entity, storing name, date of birth, contact details, and address. These map directly to Odoo res.partner records with partner_type='contact'. Email addresses become the email field; phone and mobile map to phone and mobile fields respectively. Dr.DENTES patient IDs are preserved as a custom field (x_dr_dentes_patient_id) for reconciliation and delta-run de-duplication.

Dr.DENTES

Appointment

maps to

Odoo CRM

calendar.event + mail.message

1:1
Fully supported

Dr.DENTES appointment records contain procedure codes, provider assignments, chair time, and appointment status (scheduled, completed, cancelled). Each appointment converts to an Odoo calendar.event for scheduled activities and a mail.message log entry on the patient contact's record. Original appointment dates and provider names are preserved as event fields and custom columns.

Dr.DENTES

Insurance Carrier

maps to

Odoo CRM

res.partner (type=company) + custom fields

many:1
Fully supported

Dr.DENTES stores insurance carrier name and policy details against each patient. The carrier name maps to a separate res.partner record with partner_type='company' (so the insurance entity can be reused across multiple patient contacts). Policy number, group number, and coverage type become custom fields on the patient contact record. We create the carrier partner first, then link patient contacts via a custom insurance_carrier_id Many2one field.

Dr.DENTES

Treatment Procedure Record

maps to

Odoo CRM

mail.message (logged on res.partner)

1:1
Fully supported

Dr.DENTES treatment procedure codes and descriptions have no native equivalent in Odoo CRM's sales model. We store treatment history as mail.message records with a custom x_treatment_code and x_procedure_description field on each patient contact. For practices with high treatment volume, we evaluate whether a custom crm.treatment model is warranted on the Odoo side.

Dr.DENTES

Invoice / Billing Record

maps to

Odoo CRM

Custom fields on res.partner

1:1
Fully supported

Dr.DENTES invoice amounts, payment status, and outstanding balances map to custom fields (x_last_invoice_date, x_outstanding_balance, x_payment_status) on the patient contact record. Odoo has no native billing object in the CRM module — if the practice uses Odoo Accounting alongside CRM, invoice data can be linked via the sale.order and account.move models instead.

Dr.DENTES

Provider / Staff Member

maps to

Odoo CRM

res.users

1:1
Fully supported

Dr.DENTES staff and provider records include name, role (dentist, hygienist, admin), and credentials. Providers map to Odoo res.users by email match. Unmatched providers are flagged before migration — the practice either creates the Odoo user first or assigns their patient records to an existing fallback user.

Dr.DENTES

Practice Location

maps to

Odoo CRM

res.partner (type=company)

1:1
Fully supported

Dr.DENTES practice location data (name, address, phone) maps to a res.partner record with partner_type='company' representing the dental practice itself. For multi-location practices, each location becomes its own company-type partner, and patient contacts are linked to their primary location via a custom location_id Many2one field.

Dr.DENTES

Treatment Plan

maps to

Odoo CRM

mail.message + custom fields

1:1
Fully supported

Dr.DENTES treatment plan records store planned procedures, estimated dates, and treatment status. These map as mail.message logs with custom fields x_planned_procedure and x_treatment_plan_status on the patient contact. Completed plan items are logged as historical entries; pending items remain as scheduled future activities.

Dr.DENTES

Patient Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Dr.DENTES stores patient documents (X-rays, consent forms, insurance cards) as file attachments. These are downloaded and re-uploaded to Odoo as ir.attachment records linked to the corresponding res.partner. Odoo file size limits apply per attachment — large imaging files may need to be hosted externally with a link stored in Odoo.

Dr.DENTES

Practice Workflow / Automation

maps to

Odoo CRM

None — rebuild required

1:1
Fully supported

Dr.DENTES appointment reminder automations, recall workflows, and billing-rule logic do not migrate. These are platform-specific automation constructs with no Odoo CRM equivalent. We export Dr.DENTES workflow definitions as a structured document so the practice admin can rebuild them using Odoo Studio automation, server actions, or base.automation rules post-migration.

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.

Dr.DENTES logo

Dr.DENTES gotchas

High

Turkish-compliance integrations are not portable

High

No published API

Medium

AI radiograph analysis is configuration, not patient data

Low

Voice-capture metadata may not transfer

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

  • Appointment-to-activity mapping creates Odoo calendar events rather than CRM pipeline entries

    Dr.DENTES appointments have no equivalent in Odoo CRM's pipeline model — they are not leads or opportunities. We convert each appointment to a calendar.event linked to the patient contact, with provider, procedure code, and status stored as custom fields on the event. Practices expecting to see appointments inside an Odoo pipeline view will need to create a custom Kanban based on calendar.event or build a dashboard that pulls from calendar.event records alongside res.partner data. This is a structural difference between practice-management scheduling and CRM pipeline management that cannot be resolved by field mapping alone.

  • Insurance carrier data requires a custom Many2one relationship in Odoo

    Dr.DENTES stores insurance carrier information directly on the patient record (carrier name, policy number, group number). Odoo CRM has no native insurance object on res.partner. We resolve this by creating a separate res.partner record with partner_type='company' for each unique carrier name, then linking patient contacts to their carrier via a custom Many2one field (x_insurance_carrier_id). This requires the Odoo admin to enable the Contacts module's ability to create company-type partners for carriers. If Dr.DENTES stores multiple active insurance plans per patient, additional custom fields or a one2many relationship on res.partner are needed.

  • Dr.DENTES API requires pre-authenticated access — credential setup is a migration prerequisite

    Unlike standard CRM platforms with documented public APIs, Dr.DENTES grants API access only to existing customers who contact support directly. Before migration begins, the practice must obtain API credentials and confirm their Dr.DENTES endpoint URL. If API access is unavailable or the data export is restricted, FlitStack falls back to CSV export — but CSV exports from Dr.DENTES may not include appointment history, treatment codes, or insurance fields in a single coherent export. This affects the migration scope and timeline estimate.

  • Odoo major version upgrades can break custom field references in migration scripts

    Odoo has a history of view, model, and API changes between major versions (e.g., Odoo 17 to Odoo 18 view inheritance patterns shifted from <tree> to <list> syntax and some inherited-view XPath expressions broke). If the Odoo instance is not on a stable LTS-compatible version at migration time, custom field names referenced in migration scripts may need updating. We pin migration scripts to the confirmed Odoo version and recommend the practice runs Odoo Community or Enterprise on a version with Long Term Support before migration begins.

  • Dr.DENTES billing and invoice data maps to custom fields only — not to Odoo Accounting

    Dr.DENTES invoice amounts, payment history, and outstanding balances have no direct equivalent in Odoo CRM's contact model. We store these as custom Monetary fields on the res.partner record. If the practice also intends to use Odoo Accounting, invoice data should migrate into account.move records rather than CRM custom fields — this requires a separate migration scope and may involve account.account code mapping that is outside standard CRM migration. Practices relying on Dr.DENTES billing reports should confirm whether they are migrating to Odoo CRM only or also to Odoo Accounting.

Migration approach

Six steps for a successful Dr.DENTES to Odoo CRM data migration

  1. Confirm Dr.DENTES API access and extract data model

    FlitStack initiates access by requesting Dr.DENTES API credentials from the practice's Dr.DENTES account manager. Once credentials are received, we map the available endpoints, enumerate custom fields on the patient record, and confirm which objects (appointments, treatment records, insurance data, documents) are accessible via API versus requiring manual export. We generate a Dr.DENTES data inventory document that becomes the baseline for all field mapping decisions.

  2. Configure Odoo CRM schema with custom fields and carrier partners

    Before data moves, we create all custom fields on res.partner (x_dr_dentes_patient_id, x_insurance_carrier_id, x_insurance_policy_number, x_outstanding_balance, x_last_visit_date, x_next_recare_date, x_patient_status, and others identified in the data inventory). We also pre-create insurance carrier partner records by extracting unique carrier names from Dr.DENTES. Provider staff members are matched to Odoo res.users by email — unmatched providers are flagged for the practice admin to create Odoo user accounts before migration.

  3. Run sample migration with field-level validation

    A representative slice of 50–200 patient records migrates first, including a cross-section of patients with appointments, treatment history, and insurance data. We generate a field-level diff report comparing source Dr.DENTES values against the resulting Odoo res.partner records and calendar.event entries. The practice reviews the diff and confirms that insurance carrier linking, appointment status mapping, and custom field values are correct before the full migration proceeds.

  4. Execute full migration with delta-pickup window

    The full migration runs using scoped read access on Dr.DENTES — practice staff continue working in Dr.DENTES throughout the migration window. A delta-pickup window of 24–48 hours after the initial migration captures any new patients, appointments, or treatment records created during cutover. FlitStack reconciles delta records against the initial migration run and upserts them into Odoo without duplication. All operations are logged to an audit trail; a one-click rollback reverts Odoo to its pre-migration state if reconciliation reveals data integrity issues.

  5. Deliver migration report and workflow-rebuild reference

    FlitStack delivers a migration completion report showing record counts per object, any unlinked or flagged records, and the delta capture summary. We also provide a structured export of Dr.DENTES workflow definitions (appointment reminders, recall sequences, billing rules) formatted as a rebuild reference for the practice admin to recreate in Odoo Studio or via server actions. Post-migration support is available for 30 days to address any contact-activity linkage issues or custom field corrections.

Platform deep dives

Context on both ends of the pair

Dr.DENTES logo

Dr.DENTES

Source

Strengths

  • Cloud-based, multi-device (phone, tablet, PC, smart TV) access with unlimited users, devices, and patients.
  • Long product tenure since 1992 inside Sanal Software, giving a stable feature catalogue.
  • Built-in Turkish-compliance integrations (USS/e-Nabız, e-Reçete, e-Invoice).
  • AI-based radiograph analysis, voice-driven photo capture, and multi-language UI (9 languages) included.
  • Subscription pricing from $120/year with a no-credit-card free trial.

Weaknesses

  • Geography- and compliance-tied to Turkey; less relevant for clinics outside that market.
  • Minimal public review footprint compared with Western dental PMs.
  • No documented public API or developer portal; integrations rely on the vendor.
  • Reporting is descriptive rather than a configurable BI layer.
  • Turkish-compliance bridges are non-portable and must be rebuilt in the destination during migration.
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 Dr.DENTES and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Dr.DENTES and Odoo CRM.

  • Object compatibility

    A

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

    Dr.DENTES: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Dr.DENTES to Odoo CRM migrations complete in 3–5 business days for practices with fewer than 10,000 patient records. Larger practices with complex appointment histories, multiple providers, or extensive insurance carrier data extend to 7–14 days. The longest phase is typically the data inventory and custom field setup in Odoo before any records move. If Dr.DENTES API access requires opening a support ticket to obtain credentials, add 1–3 business days to the estimate.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dr.DENTES.
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