CRM migration

Migrate from Pearl Dental Software to Odoo CRM

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

Pearl Dental Software logo

Pearl Dental Software

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Pearl Dental Software and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Pearl Dental Software organizes its data around the patient record: demographics, clinical notes, treatment plans, appointments, and document attachments all link to a single patient entity. Odoo CRM takes a contact-centric model using res.partner for patients and contacts, crm.lead for opportunities, and calendar.event for time-based records. The migration challenge is threefold: converting Pearl's flat patient record into Odoo's relational structure, preserving dental-specific fields that have no native Odoo equivalent, and mapping appointments to Odoo calendar events with operator and assistant links. FlitStack sequences the migration by loading res.partner records first, then linking calendar.event appointments by contact_id, then attaching documents via ir.attachment. Any Pearl custom fields that cannot map to a standard Odoo field are created as custom fields on res.partner before the migration runs. Workflows, automated recalls, and appointment reminders in Pearl are not migrated — those must be rebuilt using Odoo's server actions and automated activities. All original create dates, clinical note timestamps, and operator names are preserved as custom datetime or char fields for continuity in Odoo reporting.

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

Pearl Dental Software logo

Pearl Dental Software

What's pushing teams away

  • Very limited public API documentation — practices with custom integration needs or automated workflows find themselves unable to extend the platform without vendor involvement.
  • Small review sample (2 verified Capterra reviews, limited G2 presence) makes independent due diligence difficult and raises concerns about enterprise-grade support depth.
  • No published pricing for third-party integrations or onboarding fees — the absence of a public price for these components creates ambiguity during procurement.
  • Pearl is designed for independent practices and small groups; multi-practice brands and DSOs are explicitly told to wait for a next-generation product that has no announced release date.
  • Practices requiring advanced analytics or AI-assisted diagnostics built into the PMS layer may need to layer on third-party tools since Pearl's feature set is primarily operational.

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 Pearl Dental Software objects map to Odoo CRM

Each row shows how a Pearl Dental Software 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.

Pearl Dental Software

Patient Record

maps to

Odoo CRM

res.partner

1:1
Fully supported

Pearl patient records contain the primary patient name, postal address, phone numbers, email, and date of birth. These map directly to Odoo res.partner fields: name, street/city/zip/country, phone, mobile, email, and date fields. Pearl custom dental properties (NHS number, medical alerts) become custom fields on res.partner.

Pearl Dental Software

Treatment Plan

maps to

Odoo CRM

res.partner (custom fields)

1:1
Fully supported

Pearl treatment plans store procedure codes, tooth numbers, clinical notes, fees, and completion status linked to a patient. Odoo CRM has no native dental treatment model. Each treatment plan field (procedure, tooth number, clinical note, fee, status) requires a custom field on res.partner before migration. The treatment plan identifier links to the patient via x_treatment_plan_id custom char field.

Pearl Dental Software

Appointment

maps to

Odoo CRM

calendar.event + res.partner

1:1
Fully supported

Pearl appointments contain date, time, duration, operator, assistant, type, status, and notes linked to a patient. Odoo calendar.event stores start/datetime, duration, and description. contact_id on calendar.event links to res.partner. Operator and assistant resolve to res.users by name match; unresolved names are stored as x_operator_name and x_assistant_name char fields on the event.

Pearl Dental Software

Clinical Note

maps to

Odoo CRM

mail.message

1:1
Fully supported

Pearl clinical notes capture observations, diagnoses, and treatment details with a date and an associated operator. In Odoo, each note becomes a mail.message record attached to the patient’s res.partner (model='res.partner', res_id=partner_id). The note text is stored in the body field, the creating operator is saved via x_operator_name fallback, and the original timestamp is preserved in create_date, ensuring continuity for reporting and audit trails.

Pearl Dental Software

Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Pearl stores X-ray images, clinical forms, and consent documents linked to patient records. Odoo ir.attachment stores files with res_model='res.partner' and res_id pointing to the contact id. Binary files are re-uploaded to Odoo's filestore during migration. Inline images in clinical notes are extracted and stored as separate ir.attachment records.

Pearl Dental Software

Custom Dental Property

maps to

Odoo CRM

res.partner (x_* custom fields)

1:1
Fully supported

Pearl supports custom properties beyond standard fields. Any Pearl custom property that has no Odoo equivalent (e.g. recall interval, referring practitioner, medical alert, insurance provider) is created as a custom field on res.partner with the appropriate type (char, text, date, float, selection) during the setup phase.

Pearl Dental Software

Call / Email Activity

maps to

Odoo CRM

mail.activity

1:1
Fully supported

Pearl call logs and email records linked to patients map to Odoo mail.activity records on res.partner. Subject, description, date, and duration map as fields on the activity. The activity type_id resolves to 'Call' or 'Email' based on the Pearl engagement type. Unresolved users default to the Odoo system user.

Pearl Dental Software

Recall / Re-care Date

maps to

Odoo CRM

res.partner (x_recall_date)

1:1
Fully supported

Pearl tracks NHS recall intervals and re-care appointment dates as date fields on the patient record, often with system-generated reminders. Odoo CRM has no native recall model. The recall date migrates as x_recall_date custom date field on res.partner. Recalls for ongoing patient management must be rebuilt as Odoo automated activities or calendar alarms post-migration.

Pearl Dental Software

Referral Source

maps to

Odoo CRM

res.partner (x_referral_source)

1:1
Fully supported

Pearl may record how a patient was referred (e.g. NHS referral, self-referred, dentist-to-dentist). Odoo CRM has a standard source_id field on crm.lead but not on res.partner. For patient-level referral tracking, a custom char field x_referral_source is created on res.partner and populated from Pearl's referral source field.

Pearl Dental Software

Insurance / Payment Plan

maps to

Odoo CRM

res.partner (custom fields) + account.move

1:1
Fully supported

Pearl may store insurance provider names, policy numbers, and payment plan details linked to patients. Odoo accounting module (account.move, account.payment) handles invoicing and payments. Insurance details migrate as custom char fields on res.partner; payment records require separate mapping to Odoo account.move if payment history is needed.

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.

Pearl Dental Software logo

Pearl Dental Software gotchas

High

No public API means migration is file-based, not API-based

Medium

Charges per surgery, not per user — capacity planning matters

Medium

X-ray and image files require separate handling from demographic data

Medium

Custom fields and legacy data variants need explicit review

Low

Onboarding is required and charged separately

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

  • Pearl does not publish a public API — export format drives migration method

    Pearl Dental Software does not expose a documented public API for automated data extraction. Migration relies on Pearl's built-in CSV or XML export function, which produces files that vary in structure depending on the Pearl version and which modules are active. Some export configurations bundle clinical notes inline with patient records while others produce separate files. This variance means the data extraction step requires a format review before field mapping can finalize — teams should request a trial export during planning to confirm the structure. FlitStack inspects the Pearl export format during the assessment phase and adjusts field mapping accordingly before any records move.

  • Odoo CRM has no native dental clinical data model

    Odoo CRM's standard objects (res.partner, crm.lead, calendar.event, mail.activity) are designed for sales and general business CRM, not dental clinical workflows. Fields like NHS number, medical alerts, tooth numbers, FDI procedure codes, treatment plan status, and recall intervals have no native Odoo equivalents. These must be designed and created as custom fields on res.partner before migration data can land. If the Odoo custom field design is not finalized before migration, records can still be loaded into staging tables but cannot be committed to production. FlitStack delivers a custom field specification document during the planning phase so Odoo administrators can pre-create the required schema.

  • Odoo external API requires Custom or Enterprise plan — not available on Community

    Odoo Community edition does not include the external XML-RPC or REST API. API access is gated behind the Odoo Custom plan (~$37/user/month) or Enterprise. Migration tooling that uses Odoo's API cannot operate against a Community instance. If the destination Odoo is running Community edition, the migration must either upgrade to Custom before data moves, or use Odoo's manual CSV import interface (which is more limited for relational data like appointments-to-contacts). FlitStack confirms the destination Odoo plan during scoping and adjusts the migration method accordingly.

  • Appointment-to-contact linking requires pre-existing Odoo partner records

    Pearl appointments are linked to patients by patient ID. Odoo calendar.event links to contacts via the contact_id field, which requires the res.partner record to exist first. Because appointments have a date field, they are typically loaded after patient records. If a Pearl appointment references a patient that failed to migrate (e.g. duplicate email collision), the appointment loads as an orphan event without a contact link. FlitStack runs a referential integrity check after loading patient records and before loading appointments, flagging any broken patient references so they can be resolved before the appointment import runs.

  • Workflows, recall automations, and appointment reminders do not migrate

    Pearl's automated recall campaigns, appointment reminder rules, and task-assignment workflows are not part of the export data and cannot be migrated to Odoo. Any active automated recalls tracking patient re-care intervals must be rebuilt in Odoo using server actions, scheduled automated activities, or the Odoo CRM's lead scoring rules. The rebuild requires a functional Odoo environment with custom dental fields in place. FlitStack exports Pearl workflow definitions as a plain-text rebuild reference document so Odoo administrators have a list of rules to recreate.

Migration approach

Six steps for a successful Pearl Dental Software to Odoo CRM data migration

  1. Confirm Pearl export format and Odoo plan tier

    Before mapping begins, FlitStack requests a trial export from Pearl Dental Software to inspect the output structure (CSV column layout, XML schema if available, file count). Simultaneously, the destination Odoo instance is verified to confirm it is on a Custom or Enterprise plan with API access enabled. If the Odoo instance is Community edition, the migration plan switches to CSV-based import with manual relation stitching. The output of this step is a confirmed export format specification and an Odoo API connectivity confirmation.

  2. Design Odoo custom field schema for dental data

    FlitStack generates a custom field specification document listing every Pearl field with no native Odoo equivalent (NHS number, medical alert, recall date, tooth number, procedure code, treatment status, etc.). Each field gets a recommended Odoo type (char, text, date, float, selection), and a suggested field label. The Odoo administrator creates these fields via Settings > Technical > Models before migration data is loaded. FlitStack validates the custom field creation against the specification before proceeding.

  3. Migrate patient records (res.partner) as primary load

    Patient records load first since appointments, activities, and attachments all link back to them. FlitStack maps Pearl patient demographics to res.partner fields directly, and dental-specific properties to the newly created custom fields. A de-duplication check runs against existing Odoo res.partner records by email and NHS number. The sample migration slice (typically 100–500 records) runs first, generating a field-level diff for review. Any unmapped fields or truncation issues surface here for correction before the full load.

  4. Link appointments, activities, and attachments by contact_id

    With res.partner records confirmed, FlitStack loads Pearl appointments as Odoo calendar.event records with contact_id resolved by partner email or NHS number match. Call and email activities load as mail.activity records on the matching res.partner. Document attachments (X-rays, clinical forms, consent documents) load as ir.attachment records linked to the patient contact. Any records with unresolved contact references are flagged in the migration report with the Pearl patient identifier for manual resolution.

  5. Run delta pickup and deliver migration audit log

    The full migration commits to Odoo. A delta pickup window (typically 24–48 hours) captures any Pearl records created or modified during the cutover period. FlitStack produces a complete audit log listing every record loaded, its Odoo id, the source Pearl id, and the timestamp. If reconciliation identifies missing or incorrectly mapped records, one-click rollback reverts the Odoo load so corrections can be applied and the migration re-run without data duplication.

Platform deep dives

Context on both ends of the pair

Pearl Dental Software logo

Pearl Dental Software

Source

Strengths

  • Charges by surgery count, not user count — unlimited staff can access the system under a single surgery subscription.
  • Includes Patient Portal, PearlPad, touchscreen check-in, and kiosk modes on every paid tier with no feature gating.
  • Subscription model with no annual contract — practices can exit without penalty if the product no longer meets their needs.
  • UK-based support team with direct access, no automated switchboard, and consistent 5-star ratings for customer service responsiveness.
  • 2GB of online backup storage per surgery included for patient documents and X-ray images.

Weaknesses

  • No documented public API — third-party integrations and custom automation require vendor involvement rather than self-service.
  • Small company (8 employees) with limited published security certifications or enterprise SLA documentation.
  • No published pricing for onboarding, third-party integrations, or additional data storage beyond the included 2GB per surgery.
  • Target market is independent practices only; multi-location or DSO practices are not yet supported and must wait for an unannounced product iteration.
  • Limited independent review volume makes it difficult to benchmark long-term reliability against larger competitors.
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 Pearl Dental Software 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

    Pearl Dental Software: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Pearl Dental Software 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 Pearl Dental Software to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Pearl to Odoo CRM migrations complete in 48–72 hours of clock time for under 50,000 records. Larger setups with 500k+ records or extensive custom dental field configurations extend to 5–7 days. The planning phase — designing Odoo custom fields and confirming the Pearl export format — adds 1–2 weeks before data moves. The primary timeline variable is how many Pearl custom dental fields require Odoo custom field creation before the import can run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Pearl Dental Software.
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