CRM migration

Migrate from DentAdmin to Odoo CRM

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

DentAdmin logo

DentAdmin

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between DentAdmin and Odoo CRM.

Complexity

BStandard

Timeline

5–15 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

DentAdmin stores dental-patient relationships, treatment plans, RIZIV/invoice codes, and appointment histories in a flat-practice data model built for Belgian dental compliance. Odoo CRM uses a modular object graph — res.partner for contacts, crm.lead for leads and opportunities, calendar.event for appointments, and product.product for treatments — linked by Odoo's relational model and accessed via XML-RPC API. We map DentAdmin patients directly to Odoo res.partner records, DentAdmin appointment slots to crm.lead entries with scheduled activities, and DentAdmin treatment codes to product.product records. RIZIV/invoice reference codes and insurance-plan data have no native Odoo equivalent — we create custom fields (x_riziv_code, x_insurance_plan, x_treatment_history) on res.partner and preserve the original values. Email templates, SMS workflows, and appointment-reminder sequences built in DentAdmin's communication module do not migrate — we export their definitions as a rebuild reference for Odoo's mail templates and automation rules. DentAdmin's API access is scoped; FlitStack uses DentAdmin's built-in CSV export as the primary extraction mechanism with supplemental XML-RPC calls where available, sequencing partner records first so foreign-key dependencies resolve correctly in Odoo.

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

DentAdmin logo

DentAdmin

What's pushing teams away

  • Limited transparency around subscription pricing makes it difficult for practices to compare cost against alternatives before committing to a contract term.
  • The product appears to have a small market footprint outside Belgium, which limits access to peer reviews, third-party integrations, and specialist support talent.
  • Practices report that the software lacks a well-documented public API, making it difficult to connect with modern third-party tools or automate data workflows.

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

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

DentAdmin

Patient

maps to

Odoo CRM

res.partner

1:1
Fully supported

DentAdmin patient records map 1:1 to Odoo res.partner. Name, address, phone, email, date of birth, and create date all transfer directly. RIZIV/invoice codes, insurance plan names, and medical-alert flags become custom fields on the partner record. DentAdmin's patient number maps to a custom external_id field for traceability.

DentAdmin

Appointment / Agenda

maps to

Odoo CRM

crm.lead + calendar.event

1:1
Fully supported

DentAdmin appointments become Odoo crm.lead records representing the visit or procedure, with calendar.event entries for the time slot. Appointment status (confirmed, completed, no-show) maps to crm.lead stage values. Past appointments with treatment notes become crm.lead activity history rather than active pipeline entries.

DentAdmin

Treatment / Procedure

maps to

Odoo CRM

product.product

1:1
Fully supported

DentAdmin treatment codes and descriptions map to Odoo product.product records. RIZIV tariff codes attach as a custom Char field on the product so pricing rules in Odoo Accounting can reference them. Product type is set to service for procedures. Each treatment record links to the patient partner as an order line if invoiced via Odoo.

DentAdmin

Provider / Dentist

maps to

Odoo CRM

res.users

1:1
Fully supported

DentAdmin dentist and hygienist profiles map to Odoo res.users. Email matching resolves ownership of patient records and appointments. Multi-provider practices require FlitStack to coordinate DentAdmin practitioner IDs to Odoo user IDs before records land so the correct user owns each appointment.

DentAdmin

Insurance / Coverage Plan

maps to

Odoo CRM

Custom field on res.partner

1:1
Fully supported

DentAdmin insurance coverage data (insurer name, policy number, coverage percentage) has no native Odoo CRM equivalent. We create a dedicated insurance object or store the data as structured custom fields on res.partner — insurer name, policy reference, coverage tier — so front-desk staff can see coverage details without leaving the partner form.

DentAdmin

Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

DentAdmin exported documents (treatment plans, informed-consent forms, clinical images) upload to Odoo's ir.attachment model linked to the corresponding res.partner record. File size limits in Odoo (default 25MB per file) apply; larger imaging files require chunked upload or external storage integration.

DentAdmin

SMS / Email Communication Log

maps to

Odoo CRM

mail.message

1:1
Fully supported

DentAdmin SMS and email history transfers as Odoo mail.message records attached to res.partner. Original timestamps and sender/recipient information are preserved. DentAdmin's automated appointment-reminder sequences do not migrate — we export the sequence definitions as a text reference for rebuilding in Odoo's mail template system.

DentAdmin

Multi-Site Account

maps to

Odoo CRM

crm.team + res.company

1:many
Fully supported

DentAdmin multi-site accounts (one license covering N practice locations) split into separate Odoo crm.team records scoped by location. If Odoo Enterprise multi-company is in use, each site maps to a distinct res.company so accounting and inventory are isolated per location. Access rights are rebuilt from scratch in Odoo's security model.

DentAdmin

Invoice / RZIV Billing Record

maps to

Odoo CRM

account.move (via Odoo Accounting)

1:1
Fully supported

DentAdmin's automatic RZIV-code invoicing and Belgian dental tariff calculations are a purpose-built billing feature with no Odoo CRM equivalent. Patient invoice history migrates as a custom reference field on res.partner linking to the Odoo Accounting module where the actual invoices are reconstructed. Odoo Accounting must be active to complete this object.

DentAdmin

Practice Settings / Office Config

maps to

Odoo CRM

res.config.settings

1:1
Fully supported

DentAdmin practice-level settings (operating hours, SMS sender ID, default appointment duration, RIZIV tariff table) have no direct Odoo equivalent. We document the current DentAdmin configuration as a rebuild checklist so your Odoo administrator can configure res.config.settings and accounting tax grids accordingly.

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.

DentAdmin logo

DentAdmin gotchas

High

No publicly documented REST API for DentAdmin

Medium

Pricing is opaque and requires direct contact

Medium

RIZIV code version drift between systems

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

  • RIZIV invoicing codes have no native Odoo counterpart and must be preserved as custom fields

    DentAdmin calculates RIZIV invoice codes automatically based on Belgian dental tariff tables — a purpose-built compliance feature. Odoo CRM has no RIZIV field on any standard object. FlitStack preserves the calculated codes as x_riziv_code on res.partner and x_riziv_tariff on product.product so your Odoo administrator can reference them when rebuilding invoicing in Odoo Accounting with the correct Belgian tax grid and account codes. Without this step, historical invoice amounts may not reconcile.

  • DentAdmin's built-in CSV export is the primary extraction path; there is no documented public REST API

    The source research found no public REST API for DentAdmin — DentAdmin's integration ecosystem relies on its own export function and third-party tools like CLICKDOC. FlitStack uses DentAdmin's native export-to-CSV capability as the primary data extraction mechanism, falling back to XML-RPC calls where DentAdmin's API permits them. Practices with large patient databases (10,000+ records) should budget extra time for multi-batch CSV exports and cross-reference row counts against the destination record count after each batch lands in Odoo.

  • Appointment-to-opportunity mapping requires deciding whether past visits become CRM leads or notes

    DentAdmin stores every appointment as a calendar event with a clinical note attached. Odoo separates crm.lead (for pipeline opportunities) from calendar.event (for time blocks) and mail.message (for communication logs). Migrating all historical appointments as crm.lead records creates noise in your Odoo sales pipeline. FlitStack surfaces the choice before migration: archive past appointments as mail.message notes linked to the patient partner, and only migrate future or active appointment slots as crm.lead records. This decision changes the record count and the field-mapping complexity for the appointment object.

  • SMS and email templates from DentAdmin's communication module do not transfer

    DentAdmin's SMS appointment reminders and email confirmations are built within its own communication module — they are not standard HTML templates that can be exported and re-imported. Odoo CRM uses mail.template records for email and has a separate sms.template model. FlitStack exports DentAdmin's template content (text, variable placeholders, send triggers) as a structured document so your Odoo administrator can rebuild them in Odoo's template editor. The rebuild is a manual configuration step not included in the data-migration scope.

  • Multi-site DentAdmin setups require Odoo security model redesign

    DentAdmin manages multiple dental practice locations under a single account with per-site data isolation built into its permission model. Odoo CRM's access control is record-based and configured through ir.model.data and record rules on res.partner and crm.lead. A DentAdmin multi-site account does not map to a single Odoo CRM team — it requires either Odoo Enterprise multi-company structure or careful record-rule scoping per crm.team. We flag this as a configuration requirement and deliver a security design document before the migration runs.

Migration approach

Six steps for a successful DentAdmin to Odoo CRM data migration

  1. Audit DentAdmin data export and quality

    FlitStack runs a scoping engagement against your DentAdmin instance: we enumerate all patient records, appointment histories, treatment codes, provider profiles, and insurance plan definitions. We produce a data-quality report identifying duplicates, missing required fields (name, date of birth), and records with incomplete RIZIV codes. We also verify whether your DentAdmin version supports batched CSV export or if manual per-record export is required. This step sets the record-count baseline that drives pricing and timeline.

  2. Create Odoo custom fields and CRM structure

    Before any records migrate, FlitStack provisions the custom fields on res.partner — x_riziv_code, x_insurance_plan, x_medical_alert, x_treatment_history, x_date_of_birth, x_patient_number, x_original_create_date — and on product.product for x_riziv_tariff. We also create the crm.stages needed to represent appointment statuses (Scheduled, Confirmed, Completed, No-Show, Cancelled). If you are running Odoo multi-site, we deliver the crm.team and record-rule design document at this stage so your admin can apply security scoping before data lands.

  3. Migrate providers, then patients, then appointments

    We sequence the migration so foreign-key dependencies resolve correctly: res.users (providers) migrate first so practitioner IDs are available for owner resolution. res.partner (patients) migrate second, with x_patient_number serving as the external ID. Treatment codes (product.product) migrate third so procedure links on appointments can reference them. Appointments (crm.lead + calendar.event) migrate last. Each batch is validated against source row counts before the next batch begins, and we run a field-level diff on the first 100 partner records to confirm custom-field values are populated correctly.

  4. Run sample migration and field-level diff

    A representative slice — typically 200–500 patient records spanning multiple providers and appointment types — migrates first. We generate a field-level comparison report showing source values against destination field contents for every mapped column. You review the diff to confirm RIZIV codes landed in x_riziv_code, medical alerts are readable, and appointment status mapping matches your expectations. Any mapping adjustments are made before the full run commits.

  5. Full migration with delta-pickup and rollback

    The full dataset migrates against your Odoo instance via XML-RPC. A delta-pickup window of 24–48 hours runs concurrently with cutover, capturing any patient records or appointments added in DentAdmin during the migration window. An audit log records every insert, update, and skip operation. One-click rollback reverts all FlitStack operations if reconciliation against the DentAdmin source count reveals discrepancies. After rollback confirmation, you go live in Odoo CRM.

Platform deep dives

Context on both ends of the pair

DentAdmin logo

DentAdmin

Source

Strengths

  • Native Belgian RIZIV-code and health-insurance billing automation reduces administrative overhead for domestic practices.
  • Managed migration service from CGM Belgium handles database import from any prior dental system at onboarding.
  • Explicit GDPR-conformity statement addresses data-privacy compliance requirements for European dental practices.
  • Multi-provider support within a single database accommodates group practices and multi-dentist clinics.

Weaknesses

  • No publicly documented REST API, limiting automated integrations and making programmatic migration more complex.
  • Subscription pricing is not published publicly, requiring direct contact to obtain a quote.
  • Small international footprint outside Belgium reduces availability of peer reviews, community support, and third-party integration plugins.
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 DentAdmin 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

    DentAdmin: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

A typical dental practice with fewer than 5,000 patient records completes in 5–15 business days of FlitStack clock time. Multi-site practices or those with large treatment histories spanning multiple providers extend to 3–5 weeks. The longest planning step is custom-field design and Odoo security scoping for multi-location setups — the actual data transfer runs in hours for standard volumes. The initial audit and schema preparation typically consume the first two days, while the actual data load for up to 5,000 records can finish within a single business day, depending on network latency and Odoo instance responsiveness.

Adjacent paths

Related migrations to explore

Ready when you are

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