CRM migration

Migrate from DGL Practice Manager to Odoo CRM

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

DGL Practice Manager logo

DGL Practice Manager

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between DGL Practice Manager and Odoo CRM.

Complexity

BStandard

Timeline

7–14 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

DGL Practice Manager is a specialist medical practice management suite used by UK and Irish consultants, practice managers, and medical secretaries. It stores patient demographics, appointment bookings, practitioner schedules, clinical document metadata, EDI insurance claims, and UK/NHS billing codes in a tightly coupled medical-workflow model. Odoo CRM is a general-purpose open-source ERP whose CRM module is built around crm.lead, crm.lead, and res.partner — it has no native concept of appointment slots, EDI claims, NHS billing codes, or insurer policy references. These healthcare-specific structures require custom field creation in Odoo before any data can land correctly. We map patient demographics directly to Odoo res.partner (with address fields on res.partner.address), appointment slots to calendar.event with custom fields for practitioner and slot type, practitioner records to res.users, and invoices to account.move. EDI insurance submissions and NHS billing codes have no native Odoo equivalent — we preserve them as a custom object (x_dgl_edi_claim) with XML reference data exported for your Odoo developer to rebuild EDI automation. DGL workflows, EDI triggers, and billing automation do not migrate and must be rebuilt in Odoo's studio.workflow or ir.actions.server. Our migration uses sequenced API reads against DGL, type-aware field mapping, custom field pre-creation in Odoo, and a 24–48 hour delta-pickup window after cutover to capture in-flight appointments and invoice submissions. An audit log tracks every record migrated, and one-click rollback is available if reconciliation surfaces unexpected gaps.

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

DGL Practice Manager logo

DGL Practice Manager

What's pushing teams away

  • Frequent reliability failures including application crashes, inability to access the patient database, and Word integration breaking without warning erode trust in day-to-day use.
  • Outdated interface and non-intuitive feature placement make routine tasks feel laborious compared to modern browser-based alternatives.
  • Extortionate per-invoice charges for insurer submissions add up significantly for high-volume billing practices and create an ongoing cost burden.
  • Prohibitive data extraction fees charged when leaving make switching away financially punishing and function as a de facto lock-in mechanism.
  • Absence of a patient-facing portal, native dictation integration, and modern workflow automation leaves DGL behind competitors offering these features as standard.

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 DGL Practice Manager objects map to Odoo CRM

Each row shows how a DGL Practice Manager 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.

DGL Practice Manager

Patient

maps to

Odoo CRM

res.partner

1:1
Fully supported

DGL patient demographics (name, date of birth, contact details, address) map directly to Odoo res.partner. We store the patient's NHS number or private health membership as a custom Char field since Odoo has no native NHS reference field. DGL's patient photo, if stored, is re-uploaded as an ir.attachment linked to the partner record.

DGL Practice Manager

Appointment / Slot

maps to

Odoo CRM

calendar.event

1:1
Fully supported

DGL appointment slots have a practitioner, patient, slot type (initial, follow-up, procedure), start/end time, and booked/free status. We map to Odoo calendar.event with user_id = practitioner (resolved by email), partner_ids = patient, start/datetime from DGL slot times, and custom fields for slot_type and appointment_status. Odoo's kanban stage for calendar events is not used — the event records carry all slot metadata in custom fields.

DGL Practice Manager

Practitioner / User

maps to

Odoo CRM

res.users

1:1
Fully supported

DGL practitioners (consultants, secretaries, admin staff) map to Odoo res.users. Name, email, role, and specialty migrate. DGL's practitioner diary configuration is noted as a setup reference for Odoo calendar access rights — your Odoo admin assigns calendar visibility per user based on this mapping. Inactive practitioners become inactive Odoo users.

DGL Practice Manager

Invoice

maps to

Odoo CRM

account.move

1:1
Fully supported

DGL invoices (patient invoices, insurer bills, NHS submissions) map to Odoo account.move with type='out_invoice'. Invoice number, date, amount, tax, and line items migrate. DGL's EDI submission reference attaches as a custom Char field on the account.move record. Status mapping: DGL submitted → Odoo posted; DGL paid → Odoo paid; DGL rejected → Odoo open with a note.

DGL Practice Manager

Insurer / Payer

maps to

Odoo CRM

res.partner (company)

1:1
Fully supported

DGL insurer records map to Odoo res.partner with partner_type='company' and a custom insurer_reference field. The insurer's billing contact (email, address) migrates to the partner's contact records. Multiple insurer contacts per company map to multiple res.partner.contact records linked to the same parent company partner.

DGL Practice Manager

Document / Letter

maps to

Odoo CRM

documents.document + ir.attachment

1:1
Fully supported

DGL clinical letters, reports, and dictated documents store file metadata (filename, author, date, patient link) but not the actual file binary in most DGL API exports. We migrate the metadata as documents.document records in Odoo with the original filename and author preserved. Your team re-uploads the actual document files to Odoo Documents post-migration using the metadata list as a reference guide.

DGL Practice Manager

EDI Claim / Submission

maps to

Odoo CRM

Custom Object (x_dgl_edi_claim)

1:1
Fully supported

DGL EDI insurance submissions (insurer ID, policy number, claim amount, status, submission date) have no Odoo native equivalent. We create x_dgl_edi_claim as a custom model in Odoo with fields mirroring DGL's EDI record: insurer_id, policy_number, claim_amount, claim_status, submission_date, and original_xml (stored as text for reference). Odoo's ir.actions.server can be configured to regenerate EDI submissions from this data.

DGL Practice Manager

NHS / Billing Code

maps to

Odoo CRM

Custom Char / Selection field

1:1
Fully supported

DGL stores NHS service codes and billing codes per appointment or invoice. Odoo has no native NHS code field. We create a custom Char field (nhs_billing_code) on calendar.event and a selection field on account.move.line (billing_code_type) with the relevant code values. Your Odoo admin populates the pick-list values based on the NHS code set used in your DGL configuration.

DGL Practice Manager

Clinical Note / Dictation Reference

maps to

Odoo CRM

mail.message / Note

1:1
Fully supported

DGL clinical notes and dictation references (author, date, patient, content snippet) migrate as Odoo mail.message records linked to the patient res.partner for audit trail continuity. The full dictated content, if exportable, stores as plain text in the message body. DGL's Microsoft Word letter template outputs are not portable — we provide a document mapping guide for your admin to recreate them in Odoo's report designer.

DGL Practice Manager

Insurance Policy

maps to

Odoo CRM

Custom Object (x_dgl_insurance_policy)

1:1
Fully supported

DGL stores insurer policy details per patient (policy number, coverage type, expiry, excess amount). Odoo has no native insurance policy object. We create x_dgl_insurance_policy as a custom model linked to res.partner (patient) with fields: policy_number, insurer_id, coverage_type, excess_amount, renewal_date, and status. This provides the audit trail for insurance billing even though EDI submissions are rebuilt separately.

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.

DGL Practice Manager logo

DGL Practice Manager gotchas

High

Per-invoice insurer submission charges inflate costs silently

High

Extortionate data extraction fee creates lock-in barrier

High

No public API means migration relies on DGL's goodwill

Medium

SQL infrastructure update in progress may alter the schema

Medium

Document generation depends on Microsoft Word on the local machine

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

  • EDI insurance claims and NHS billing codes have no Odoo native equivalent

    DGL Practice Manager tracks EDI insurance submissions with insurer references, policy numbers, and NHS billing codes per appointment and invoice. Odoo has no native EDI module, no NHS billing code field, and no insurer policy object. We preserve EDI records as a custom model (x_dgl_edi_claim) with all reference fields intact and the original XML submission stored as text for rebuild. Your Odoo developer must configure ir.actions.server rules or an EDI connector to regenerate submissions from this data. EDI automation does not migrate automatically.

  • DGL appointment slots do not map 1:1 to Odoo calendar events

    DGL models appointments as named slots with a practitioner, patient, slot type, and booked/free status. Odoo calendar.event uses user_id for the owner (practitioner), partner_ids for attendees (patient), and start/stop for time. Slot type, appointment status, and NHS billing codes must be added as custom fields on calendar.event. Practitioners without an active Odoo user account cannot be assigned to calendar.events — owner resolution by email is required before the appointment migration phase runs.

  • Clinical document files must be re-uploaded after migration

    DGL's integrated document management system stores clinical letters, dictated reports, and Word output with patient and practitioner links. Odoo's ir.attachment and documents.document model can hold these files, but DGL's export mechanism in most configurations provides metadata (filename, author, date, patient reference) without the binary file. We migrate the metadata completely. Your team must re-upload the actual document files post-migration using the metadata list as a filing guide, or use DGL's built-in export to generate ZIP archives of files for bulk re-upload to Odoo Documents.

  • DGL workflows, EDI triggers, and billing automations do not migrate

    DGL Practice Manager automations — appointment reminder emails, EDI submission triggers, billing workflow routing, and patient communication sequences — are built on DGL's own workflow engine. Odoo Studio, ir.actions.server, and base.automation provide equivalent capabilities but require manual rebuild. FlitStack AI exports DGL's workflow definitions as a reference document so your Odoo admin can map each automation to its Odoo equivalent. The billing automation rebuild is the most complex step for practices with heavy EDI volume.

  • DGL's per-invoice billing model creates a cost surprise on exit

    DGL Practice Manager charges per invoice submitted to insurers, and exiting customers report an extortionate fee for full data export on top of their ongoing per-transaction billing charges. This dual-layer cost structure can significantly inflate the total cost of switching platforms, catching practices off guard when they budget for migration. Practices budgeting for migration should account for these potential DGL exit fees alongside their migration project costs. Odoo Enterprise's per-user annual pricing and Odoo Community's free self-hosted model offer full data portability with no per-record or per-transaction fees, eliminating future exit cost concerns and providing complete financial transparency.

Migration approach

Six steps for a successful DGL Practice Manager to Odoo CRM data migration

  1. Map DGL objects and pre-create Odoo custom fields

    We audit every DGL object that will migrate — patient records, appointment slots, practitioners, invoices, insurers, insurance policies, EDI claims, and document metadata. For each object, we identify the Odoo destination model and flag any custom fields Odoo needs before data can land: x_nhs_number on res.partner, x_slot_type on calendar.event, x_edi_reference on account.move, and the x_dgl_edi_claim and x_dgl_insurance_policy custom models. We deliver a custom field setup checklist your Odoo admin runs before migration begins. We also extract DGL's EDI code list and NHS billing code values for populating Odoo Selection field options.

  2. Resolve practitioners by email and set up Odoo user accounts

    DGL practitioner records map to Odoo res.users. We match each DGL practitioner by email address against existing Odoo users. Unmatched practitioners are flagged — your team creates Odoo user accounts for them or assigns their calendar.events to a fallback practitioner before the appointment migration phase. Practitioner specialties and GMC numbers are stored as custom fields on res.users for scheduling reference. Inactive DGL practitioners become inactive Odoo users.

  3. Migrate in dependency order: patients → practitioners → appointments → invoices → EDI

    We sequence the migration so foreign keys resolve correctly: res.partner records (patients and insurers) are created first, res.users (practitioners) second, then calendar.event records with practitioner user_id and patient partner_ids resolved from the first two phases. account.move invoices land next with the patient res.partner linked. x_dgl_edi_claim and x_dgl_insurance_policy records are created last since they reference both patients and invoices. DGL document metadata migrates as documents.document records throughout this sequence.

  4. Run sample migration with field-level diff and appointment slot validation

    A representative slice — typically 50–200 records across patients, appointments, practitioners, invoices, and EDI claims — migrates first. We generate a field-level diff comparing source values against destination field values so you can verify practitioner email resolution, NHS billing code mapping, appointment slot time accuracy, and EDI reference attachment to account.move records. Appointment slot validation is the highest-priority check for medical practices: we confirm that each calendar.event start/stop time and x_slot_type value matches the source DGL slot.

  5. Execute full migration with delta-pickup window and audit log

    The full migration runs against your Odoo instance with every record operation logged. A delta-pickup window of 24–48 hours after cutover captures any appointments booked, invoices raised, or patient records modified in DGL during the migration run. Audit log records every migrated record with source ID and destination ID for full traceability. One-click rollback reverts all migrated records if reconciliation surfaces unexpected gaps — particularly important for EDI claim continuity where partial data could disrupt insurer submissions.

Platform deep dives

Context on both ends of the pair

DGL Practice Manager logo

DGL Practice Manager

Source

Strengths

  • Integrated clinical records, diary, billing, and document creation in a single cloud-hosted platform.
  • EDI-enabled insurer billing with automatic shortfall detection for insurance-heavy practices.
  • Multi-consultant, multi-diary configuration supports clinic and LLP structures at a single practice level.
  • Microsoft Word integration for letter drafting with customizable letterhead templates.
  • Automatic cloud updates eliminate local installation and maintenance overhead for practices.

Weaknesses

  • No documented public API limits programmatic access and complicates automated migration scoping.
  • No native patient self-service portal forces practices to manage inbound administrative contact manually.
  • Dictation requires a separate Dragon Medical integration rather than being built into the clinical workflow.
  • Ongoing per-invoice charges for insurer submissions add material cost for high-volume billing practices.
  • Frequent reliability issues including crashes and database access failures reported across multiple review sources.
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 manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across DGL Practice Manager and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a manual workaround.

  • 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

    DGL Practice Manager: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your DGL Practice Manager 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 DGL Practice Manager to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most DGL to Odoo migrations complete in 7–14 days of working time for under 5,000 records. Larger practices with complex EDI billing setups, multiple practitioners, or high appointment volumes (over 5,000 slots) extend to 14–21 days. The longest planning step is pre-creating Odoo custom fields for NHS codes, insurer references, and EDI claim data before any data can be validated against the destination schema.

Adjacent paths

Related migrations to explore

Ready when you are

Move from DGL Practice Manager.
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