CRM migration

Migrate from Open Dental to Zoho CRM

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

Open Dental logo

Open Dental

Source

Zoho CRM

Destination

Zoho CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Open Dental and Zoho CRM.

Complexity

BStandard

Timeline

7–14 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Open Dental is a practice-management platform centered on patients, appointments, procedures, insurance claims, and billing — not a CRM. Zoho CRM has Leads, Contacts, Accounts, Deals, Tasks, Events, and custom modules but no native concept of patients, procedures, insurance carriers, or treatment plans. FlitStack AI bridges this by pulling records directly from the Open Dental MySQL database (or from Open Dental's export tools), mapping patient demographics to Zoho Contacts with name and address fields, routing unconverted prospects to Zoho Leads, and storing procedure history, insurance plan data, and appointment records as Zoho custom modules and custom fields. Provider records map to Zoho Users. We preserve original PatNum and SecDateEntry timestamps for reconciliation. Custom PatFields defined in Open Dental become Zoho CRM custom fields on the Contact module. We surface the Open Dental workflow logic (recall reminders, appointment confirmations) as a rebuild reference for Zoho Blueprint and workflow rules so your team can re-implement the logic in Zoho without starting from scratch. The migration runs with scoped read access on Open Dental and captures any in-flight changes during the delta 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

Open Dental logo

Open Dental

What's pushing teams away

  • Open Dental runs on a local Windows server that the practice must maintain; offices without dedicated IT staff experience server crashes, slowdowns, and update failures as operational risk.
  • The interface and feature set have a dated UX that newer staff find unintuitive compared to cloud-first alternatives, leading to training overhead and reduced staff satisfaction.
  • Scaling beyond two or three locations requires significant configuration work (Replication, CEMT, Enterprise features) that demands technical expertise most solo or small-group practices lack.
  • Performance degrades with large patient bases and years of transaction history stored in the same database, causing slow queries and screen delays during peak hours.

Choosing

Zoho CRM logo

Zoho CRM

What's pulling them in

  • Free tier is genuinely usable for up to 3 users with leads, pipeline management, and email tracking — no credit card required, making it easy to evaluate before committing.
  • Pricing undercuts Salesforce by 80–90% at equivalent feature tiers, with Enterprise plans offering capabilities that cost 3–4× more on competing platforms.
  • Deep ecosystem of 45+ integrated apps (Books, Desk, Creator, Campaigns) means companies already in the Zoho suite get native integrations without third-party connectors.
  • Highly customizable: custom modules, custom fields, Canvas drag-and-drop layouts, and Blueprint workflow automation without requiring developer resources.
  • Small-business reviewers highlight real-time team visibility, daily time savings of 60–90 minutes, and the ability to mold the CRM to any industry vertical.

Object mapping

How Open Dental objects map to Zoho CRM

Each row shows how a Open Dental object lands in Zoho CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Open Dental

Patient

maps to

Zoho CRM

Contact

1:1
Fully supported

Open Dental Patient records map to Zoho CRM Contacts. Demographics (name, DOB, address, phone, email) transfer directly. Original PatNum is stored as Source_PatNum__c for reconciliation. Patients with active treatment plans or recent appointments land as Contacts; archived or inquiry-only records can be mapped to Leads based on appointment history.

Open Dental

Patient (inactive / inquiry-only)

maps to

Zoho CRM

Lead

1:many
Fully supported

Open Dental patients who have never booked an appointment or have no active treatment plan are routed to Zoho CRM Leads rather than Contacts. The split rule uses appointment history: if PatNum has zero completed appointments, the record creates a Zoho Lead. This keeps the Zoho pipeline clean for practices that use Open Dental for lead capture.

Open Dental

Provider

maps to

Zoho CRM

User

1:1
Fully supported

Open Dental Provider records (ProvNum, FName, LName, Specialty) map to Zoho CRM Users. Matching is done by email address. If a Provider has no email in Open Dental, the migration creates a placeholder Zoho User with the provider abbreviation; your admin assigns records to a real user before go-live.

Open Dental

Appointment

maps to

Zoho CRM

Event (custom module)

1:1
Fully supported

Open Dental appointments carry OpNum, ProvNum, AptStatus, Pattern (duration in 5-minute increments), and Confirmed status. Zoho CRM native Events store Subject, StartDateTime, EndDateTime, Location, and Description. We transform Open Dental appointments into Zoho Events, storing provider as the Event owner, operatory as Location, and appointment status in a custom Status field. Pattern-based duration is converted to end time in Zoho's datetime format.

Open Dental

ProcedureLog

maps to

Zoho CRM

Custom Module: Procedure_History__c

1:1
Fully supported

Open Dental ProcedureLog records (ProcCode, ToothNumber, Surf, Fee, InsPay, Copay, ClaimProcStatus) have no Zoho native equivalent. We create a custom module named Procedure_History__c with fields for procedure code, tooth surface, provider, fee, insurance payment, patient responsibility, and claim status. The parent Contact lookup ties each procedure to the patient record.

Open Dental

InsPlan

maps to

Zoho CRM

Custom Module: Insurance_Plan__c

1:1
Fully supported

Open Dental InsPlan stores CarrierName, SubscriberID, GroupName, GroupNum, and benefits (deductible, maximums, co-insurance percentages). Zoho CRM has no insurance module. We create a custom Insurance_Plan__c module linked to the Contact (subscriber) via a lookup relationship, storing carrier name, group number, subscriber ID, and a serialized benefits JSON or individual custom fields for key benefit limits.

Open Dental

PatPlan

maps to

Zoho CRM

Insurance_Plan__c (linked)

1:1
Fully supported

Open Dental PatPlan is the per-patient insurance enrollment record linking a Patient to an InsPlan. We link the Zoho Contact to the corresponding Insurance_Plan__c record using the Zoho lookup field. Coverage percentages and effective dates stored as custom fields on the Insurance_Plan__c record.

Open Dental

Claim

maps to

Zoho CRM

Custom Module: Claim__c

1:1
Fully supported

Open Dental Claim records track ClaimStatus, ClaimType, PriInsPaid, SecInsPaid, and associated ProcNums. We create a custom Claim__c module linked to the Contact and Insurance_Plan__c. Claim status (Sent, Received, Received as Exception, ClaimPay) migrates as a custom pick-list field; total paid amounts and procedure references are stored as currency and multi-line text fields.

Open Dental

PatField (custom fields)

maps to

Zoho CRM

Custom fields on Contact

1:1
Fully supported

Open Dental PatFields use FieldName and FieldValue with types Text, PickList, Date, Checkbox, and Currency. Zoho CRM custom fields support all these data types. We audit all PatFieldDef records, create matching Zoho CRM custom fields on the Contact module (e.g., Insurance_Status__c as picklist, Last_X-Ray__c as date), and migrate FieldValue data. PickList PatFields require value-by-value mapping if the Open Dental picklist values differ from Zoho picklist options.

Open Dental

Document / Image

maps to

Zoho CRM

Zoho CRM Attachments

1:1
Fully supported

Open Dental Document records (images, PDFs, scanned forms) linked to patients can be exported and re-uploaded to Zoho CRM as file attachments on the Contact record. Large imaging files (panoramic X-rays) are flagged for separate handling; per Open Dental's own docs, most X-ray systems are bridged rather than stored directly.

Open Dental

Family / Guarantor

maps to

Zoho CRM

Custom field on Contact

1:1
Fully supported

Open Dental family grouping uses a Guarantor relationship where the family head is responsible for billing. Zoho CRM has no family or guarantor model. We create a Guarantor_Name__c custom field on Contact and a Family_ID__c field to surface family grouping, so billing responsibility is visible on each family member's contact record even without a true parent-child relationship.

Open Dental

Payment

maps to

Zoho CRM

Custom Module: Payment__c

1:1
Fully supported

Open Dental Payment records (PayNum, PayType, PayAmt, PayDate, PaySource) and associated PaySplits tie payments to procedures and providers. Zoho CRM has no native payment or accounting module. We create a Payment__c custom module linked to the Contact and Procedure_History__c, storing payment type, amount, date, and provider as custom fields.

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.

Open Dental logo

Open Dental gotchas

High

X-ray images do not migrate between systems

Medium

Scanned documents require a separate image conversion with additional cost

High

Server must run MySQL with myISAM engine, not InnoDB

Medium

API pagination is limited to 100 records per request

Medium

Custom sheets use proprietary XML that only imports to Open Dental

Zoho CRM logo

Zoho CRM gotchas

High

API access requires Professional tier or above

High

Subform fields do not export cleanly via CSV

Medium

API credit consumption is non-linear

Medium

Export download links expire in 7 days

Medium

Owner (User) assignments require pre-mapped user IDs

Pair-specific challenges

  • Open Dental has no native CRM export tool — records must be pulled directly from MySQL

    Open Dental stores all data in a MySQL database (supported: MySQL 5.5 / MariaDB 10.5 with myISAM engine). There is no built-in CSV export that covers all tables simultaneously. FlitStack AI connects directly to the Open Dental database using scoped read credentials to extract Patients, Appointments, ProcedureLogs, InsPlans, Claims, and PatFields in the correct schema order. Practices running Open Dental in a hosted environment (e.g., via a dental IT provider) need to coordinate database read access with their host. If the host restricts direct DB access, the practice must export tables manually via Open Dental's limited export utilities and share CSVs, which adds time and risk of incomplete relationship data.

  • Family and Guarantor grouping has no Zoho CRM equivalent and requires custom field reconstruction

    Open Dental's family model links all household members to a single Guarantor (the financially responsible party) and shares insurance plans across family members via PatPlan records. Zoho CRM has no native family, household, or guarantor module — Contacts are standalone. FlitStack AI creates a Guarantor_Name__c text field and a Family_ID__c identifier on each Contact to preserve which family members belong together and who is financially responsible. Insurance plan sharing (same InsPlan linked to multiple PatPlans) requires a custom Insurance_Plan__c module with a many-to-one relationship to multiple Contact records. This reconstruction is functional but requires admin validation to confirm every family grouping was captured correctly.

  • Custom PatFields require per-field audit and manual Zoho custom field creation before import

    Open Dental PatFields are defined per-office in patFieldDef and store data in patField.FieldName/patField.FieldValue pairs with types Text, PickList, Date, Checkbox, or Currency. Zoho CRM custom fields must be created one at a time via the Zoho CRM API (POST /settings/fields?module=Contacts) or manually in the Zoho CRM layout editor before import data can land. Practices with 15+ PatFields should plan 1–2 hours per field for the admin to configure field type, picklist values, and layout assignment. FlitStack AI generates a PatField inventory and a corresponding Zoho custom field creation checklist so nothing is missed before the migration run.

  • Insurance plan and claim data require a custom Zoho module that does not exist in a standard Zoho CRM installation

    Open Dental stores InsPlan, PatPlan, Claim, ClaimProc, and Payment data in five separate tables with foreign-key relationships to Patient. Zoho CRM has no native insurance, benefits, claim, or payment module — these must be built as custom modules (Insurance_Plan__c, Claim__c, Payment__c) and linked back to Contact via lookup relationships. Custom modules consume Zoho field limits per edition and require the Professional tier or above. Practices using Zoho CRM Standard cannot create custom modules and must store insurance data as custom fields on Contact instead, which limits how many plans and claims can be stored per patient.

  • Open Dental appointment pattern-to-duration conversion can misalign Zoho Event end times for complex patterns

    Open Dental appointment Pattern field stores duration as a series of 5-minute time-unit characters (X = scheduled, / = available). A 60-minute appointment with a 10-minute buffer has Pattern 'XX////'. Zoho CRM Events store StartDateTime and EndDateTime as discrete datetime values with no native support for pattern strings. FlitStack AI converts Pattern to EndDateTime by counting X characters and adding minutes to AptDateTime, which works correctly for standard patterns. Complex patterns with mixed buffer units or operator-specific overrides may require manual review if the computed end time does not match the practice's expected slot duration. We flag appointments with non-standard patterns for review before the full migration runs.

Migration approach

Six steps for a successful Open Dental to Zoho CRM data migration

  1. Obtain Open Dental database read access and run pre-migration audit

    FlitStack AI requests scoped read-only MySQL credentials for the Open Dental database from the practice or their dental IT host. We run a schema audit across all tables (Patient, Appointment, ProcedureLog, InsPlan, PatPlan, Claim, Payment, Provider, PatField, PatFieldDef, Document) and produce a record-count summary and a PatField inventory listing each custom field name, type, and usage frequency. This audit confirms whether the Open Dental database is on a supported MySQL/MariaDB version and whether the host allows direct DB queries. If direct access is not available, we coordinate with the practice to export tables via Open Dental's available methods and verify relationship integrity in the exported files.

  2. Create Zoho CRM custom modules and custom fields before import

    Based on the PatField inventory, FlitStack AI creates all required Zoho CRM custom fields on the Contact module via the Zoho CRM API (POST /settings/fields?module=Contacts). We also create the three custom modules — Procedure_History__c, Insurance_Plan__c, and Claim__c — and define the lookup relationships to Contact. Provider records are matched to Zoho Users by email; any provider without an email gets a placeholder Zoho User flagged for admin completion. All custom field and module creation is documented in a Zoho setup checklist so your admin can verify the schema before data lands.

  3. Map and clean patient, appointment, and insurance data with relationship resolution

    We extract Patient, Provider, Appointment, ProcedureLog, InsPlan, PatPlan, Claim, and Payment records from the Open Dental MySQL database in dependency order. Family grouping (Guarantor relationships) is resolved first so each Contact record can carry the correct Guarantor_Name__c and Family_ID__c values. InsPlan records are created in the custom Insurance_Plan__c module and linked to Contact records via PatPlan. ProcedureLog records are created in Procedure_History__c with a lookup to Contact and a reference to the procedure code. We deduplicate by PatNum and flag records with missing required fields (no last name, no email) for manual review before the full run.

  4. Run sample migration with field-level diff on 100–300 records

    A representative slice of patients (including patients with complex insurance setups, multiple family members, and appointment history) migrates first. We validate that PatNum maps to Source_PatNum__c, guarantor names appear on family member contacts, procedure history links to the correct Contact, and insurance plan lookups resolve correctly. The field-level diff report shows source value vs. destination value for every mapped field so the practice manager or dentist can confirm the data looks correct before we proceed to the full migration run.

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

    Full migration runs against the Zoho CRM org. Accounts (from Open Dental Providers) are created first, then Contacts and Leads, then the three custom modules with their Contact lookups resolved. An audit log captures every operation (insert, update, skip) with source record ID and destination record ID. A delta-pickup window (24–48 hours) runs after the initial migration completes to capture any Open Dental records modified during the cutover period. Once delta records are confirmed, the audit log is delivered and one-click rollback is available if reconciliation identifies missing records or incorrect relationships.

Platform deep dives

Context on both ends of the pair

Open Dental logo

Open Dental

Source

Strengths

  • One-time license fee with no per-seat recurring cost after the first year, making it the lowest total cost of ownership for stable practices.
  • Open-source codebase means the database schema is publicly documented and independent developers can build integrations without vendor dependency.
  • Multi-location support through Clinics, Replication, and CEMT scales from a single practice to a DSO with 30+ locations on a single database.
  • API with REST endpoints for Patients, Appointments, Claims, Payments, PayPlans, Documents, and Setup gives third-party tools a reliable integration surface.
  • Strong practitioner community and independent trainer ecosystem produce extensive documentation, forum support, and video walkthroughs for self-service learning.

Weaknesses

  • Server-based deployment requires the practice to own or rent server infrastructure and maintain Windows Server, MySQL, and .NET dependencies locally.
  • No cloud-hosted SaaS option built and supported directly by Open Dental Software; third-party hosting providers add variable cost and support tiers.
  • Interface design reflects its 2003 origins and has not undergone the UX modernization that cloud competitors have invested in heavily.
  • Performance degrades noticeably as the database grows to hundreds of thousands of patients and millions of procedure rows, requiring periodic database maintenance.
Zoho CRM logo

Zoho CRM

Destination

Strengths

  • Generous free tier (3 users) with real CRM functionality — no artificial feature restrictions that prevent valid use cases.
  • Per-seat pricing is transparent and predictable; no contact-based billing surprises that inflate monthly invoices.
  • Blueprint visual workflow builder lets sales ops teams automate stage progressions without developer involvement.
  • Canvas drag-and-drop layout editor lets non-technical users customize module views and forms per role.
  • Active development cadence: API v8 is well-documented, supports bulk endpoints, and COQL queries handle complex filtering.

Weaknesses

  • Poor support quality and inconsistent SLA — Enterprise tier requires 50+ user minimum for Priority Phone support.
  • Daily export limits in the UI vary by plan tier, making large dataset extraction slow and planning-dependent.
  • Zia AI features are gated behind $40+/user Enterprise tier, not available to most SMB customers who chose Zoho for cost savings.
  • User-reported occasional UI inconsistencies and performance slowdowns on large datasets with many custom fields.
  • No EU-hosted option limits appeal for GDPR-sensitive companies; some competitors offer data residency guarantees Zoho does not.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Open Dental and Zoho CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Open Dental and Zoho CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Open Dental and Zoho 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

    Open Dental: Remote mode: 1,000 elements; Local/Service mode: 10,000 elements; Enterprise tier doubles Remote mode limits.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Open Dental to Zoho 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 Open Dental to Zoho CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Open Dental to Zoho CRM migrations complete in 7–14 days of working time for a single-location practice with under 25,000 records across all tables (Patients, Appointments, Procedures, Insurance Plans, Claims). Multi-location setups, practices with 20+ custom PatFields, or records exceeding 100,000 total rows extend the timeline to 3–6 weeks. The longest phase is usually the pre-migration audit and Zoho custom module setup — data extraction and import run on a predictable schedule once the schema is confirmed.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Open Dental.
Land in Zoho 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