CRM migration
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
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Pearl Dental Software and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Odoo CRM
res.partner
1:1Pearl 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
Odoo CRM
res.partner (custom fields)
1:1Pearl 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
Odoo CRM
calendar.event + res.partner
1:1Pearl 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
Odoo CRM
mail.message
1:1Pearl 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
Odoo CRM
ir.attachment
1:1Pearl 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
Odoo CRM
res.partner (x_* custom fields)
1:1Pearl 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
Odoo CRM
mail.activity
1:1Pearl 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
Odoo CRM
res.partner (x_recall_date)
1:1Pearl 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
Odoo CRM
res.partner (x_referral_source)
1:1Pearl 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
Odoo CRM
res.partner (custom fields) + account.move
1:1Pearl 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.
| Pearl Dental Software | Odoo CRM | Compatibility | |
|---|---|---|---|
| Patient Record | res.partner1:1 | Fully supported | |
| Treatment Plan | res.partner (custom fields)1:1 | Fully supported | |
| Appointment | calendar.event + res.partner1:1 | Fully supported | |
| Clinical Note | mail.message1:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Custom Dental Property | res.partner (x_* custom fields)1:1 | Fully supported | |
| Call / Email Activity | mail.activity1:1 | Fully supported | |
| Recall / Re-care Date | res.partner (x_recall_date)1:1 | Fully supported | |
| Referral Source | res.partner (x_referral_source)1:1 | Fully supported | |
| Insurance / Payment Plan | res.partner (custom fields) + account.move1:1 | Fully supported |
Gotchas + challenges
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 gotchas
No public API means migration is file-based, not API-based
Charges per surgery, not per user — capacity planning matters
X-ray and image files require separate handling from demographic data
Custom fields and legacy data variants need explicit review
Onboarding is required and charged separately
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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
Pearl Dental Software
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Pearl Dental Software and Odoo CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Pearl Dental Software: Not publicly documented.
Data volume sensitivity
Pearl Dental Software doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Pearl Dental Software to Odoo CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Pearl Dental Software
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.