CRM migration

Migrate from Open Dental to Nutshell

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

Open Dental logo

Open Dental

Source

Nutshell

Destination

Nutshell logo

Compatibility

100%

10 of 10

objects map 1:1 between Open Dental and Nutshell.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Open Dental is a dental practice management system built around the patient record (PatNum), with family groupings tied to a guarantor, comprehensive scheduling, clinical procedure logging, and insurance billing modules. Nutshell is a general-purpose CRM that models business relationships as People (contacts) linked to Accounts (companies), with leads, deals, tasks, and activities. The two platforms share almost no schema overlap — Open Dental's clinical, insurance, and billing modules have no native Nutshell equivalents — so every migration requires custom field creation and careful mapping of the family-guarantor model to Nutshell's flat contact hierarchy. FlitStack AI extracts patient records from Open Dental via its REST API (pagination at 100 records per request, rate-limited to approximately one request per five seconds under ApiReadAll permissions). We map patients to Nutshell People, preserve guarantor relationships using Nutshell's parent-contact structure, surface appointment history as activities with original timestamps, and store clinical data — procedure codes, tooth numbers, treatment dates — in Nutshell custom fields. Insurance carrier and plan data also map to custom fields. Open Dental workflows and automated recall systems have no migration path and must be rebuilt in Nutshell using its automation tools; we export workflow definitions as a reference document for your team to review during the rebuild phase.

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

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Open Dental objects map to Nutshell

Each row shows how a Open Dental object lands in Nutshell, 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

Nutshell

Person

1:1
Fully supported

Open Dental patient records map directly to Nutshell People. The PatNum is stored as Source_System_ID__c for traceability and delta-run reconciliation. First name, last name, email, phone, and address fields map 1:1. Standard demographic fields translate without transformation. Patients without an email receive a placeholder email flagging incomplete data for follow-up during the migration review phase.

Open Dental

Patient.Guarantor

maps to

Nutshell

Person.parent_id

1:1
Fully supported

Open Dental's guarantor field identifies the family head responsible for billing. We map the guarantor relationship by creating a parent-contact link in Nutshell. Non-guarantor family members become Nutshell People linked to the guarantor as parent. This preserves family grouping without requiring a separate junction object.

Open Dental

Appointment

maps to

Nutshell

Activity (Task / Event)

1:1
Fully supported

Open Dental appointment records become Nutshell Activities. The appointment date/time, status, provider, and procedure description migrate as a Task with original timestamp preserved. Completed appointments map as completed Tasks with completion dates set to the original appointment time; scheduled appointments map as open Tasks with due dates reflecting the upcoming appointment slot.

Open Dental

ProcedureLog

maps to

Nutshell

Custom Fields on Person

1:1
Fully supported

Open Dental procedure logs (treatment codes, tooth numbers, procedure dates, surface notations) have no native Nutshell equivalent. We create custom fields on the Nutshell Person record — Procedure_Date__c, Procedure_Code__c, Tooth_Number__c — and store the most recent procedure summary for reference. Full clinical history is preserved in a JSON blob in a long-text custom field for audit purposes.

Open Dental

InsPlan / PatPlan

maps to

Nutshell

Custom Fields on Person

1:1
Fully supported

Insurance plan carrier name, subscriber ID, effective date, and coverage percentage have no Nutshell equivalent since Nutshell lacks a native insurance module. We create Insurance_Carrier__c, Subscriber_ID__c, Insurance_Effective_Date__c, and Coverage_Percent__c custom fields on the Nutshell Person record. Subscriber relationship (self, spouse, child) maps to a dropdown custom field for clarity.

Open Dental

PatField

maps to

Nutshell

Custom Fields on Person

1:1
Fully supported

Open Dental custom patient fields (defined in Setup > Family/Insurance > Patient Field Defs) map to Nutshell custom fields on the Person entity. Field type is preserved — pick-list becomes Nutshell dropdown, checkbox stays checkbox, date stays date. New Nutshell custom fields are created during the pre-migration schema setup phase.

Open Dental

Payment

maps to

Nutshell

Custom Fields on Person

1:1
Fully supported

Open Dental payment records (payment date, amount, split allocation) cannot map to a native Nutshell object since Nutshell has no billing module. We create Last_Payment_Date__c and Last_Payment_Amount__c custom fields on the Person record to surface the most recent payment activity for reference during the transition period.

Open Dental

Provider

maps to

Nutshell

Custom Field on Activity

1:1
Fully supported

Open Dental provider names are extracted from appointment and procedure logs and stored as a Provider__c custom field on Nutshell Activities. Nutshell does not have a native provider object, so provider name is appended to the activity description rather than creating a separate provider directory.

Open Dental

Recall

maps to

Nutshell

Custom Field on Person

1:1
Fully supported

Open Dental recall entries (next cleaning date, recall type) have no Nutshell equivalent. We create Recall_Date__c and Recall_Type__c custom fields on the Person record. Open Dental's automated recall workflow does not migrate — it must be rebuilt in Nutshell using its task automation or exported as a rebuild reference.

Open Dental

Document

maps to

Nutshell

Attachment on Person

1:1
Fully supported

Open Dental patient documents (uploaded files, scanned forms, images) are downloaded from Open Dental's document storage and re-uploaded as attachments on the corresponding Nutshell Person record. File size limits and supported formats are validated against Nutshell's attachment constraints before upload.

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

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Family-guarantor model collapses to parent-contact hierarchy

    Open Dental organizes patients into families with a single guarantor responsible for billing — the guarantor flag determines account ownership. Nutshell People do not have an native family model; contacts are flat within an account or standalone. We map the guarantor to a parent contact in Nutshell and link family members under it, but this requires deciding which family member is the primary contact. Practices with complex family coverage (multiple guarantors, non-standard subscriber relationships) need a mapping rule defined before migration runs, or some relationships surface as incomplete in Nutshell.

  • Clinical procedure data has no native Nutshell representation

    Open Dental stores ADA procedure codes, tooth numbers, surface notations, and treatment dates in the ProcedureLog table — this is the clinical backbone of the dental record. Nutshell is a general CRM and has no native fields for procedure codes or tooth numbers. We store the most recent procedure as a set of custom fields on the Nutshell Person, and the full history as a JSON blob in a long-text field, but this clinical context will not appear in Nutshell's native activity feeds, reports, or search. Practices that rely on Open Dental's clinical reporting will need to rebuild those reports using exported data.

  • Open Dental API rate limits extend extraction timelines

    Open Dental's REST API enforces rate limiting: with ApiReadAll permission, you are limited to one request every five seconds. Paginating through a practice with 20,000 patient records requires approximately 200 requests — at five seconds each, that is roughly 17 minutes per field being extracted. Large multi-location practices with appointment history, procedure logs, and insurance records can accumulate extraction times of 8–12 hours just to pull data, before any mapping or import begins. We run parallel extraction threads where possible to stay within the per-key limit while maximizing throughput.

  • Recall and automated reminder workflows must be rebuilt in Nutshell

    Open Dental's recall system tracks when patients are due for cleanings, exams, and periodontal maintenance, with configurable reminder intervals and automated notifications. Nutshell has no native recall or automated patient-reminder module. We export the recall schedule as a reference dataset (patient name, recall date, recall type), but the automation itself — which is the core value of the recall system — must be rebuilt using Nutshell's task automation or an integrated tool. Practices that rely heavily on recall for patient retention should plan the rebuild phase before the migration cutover.

  • Insurance data in Open Dental spans three related tables

    Open Dental stores insurance across InsPlan (carrier and plan details), PatPlan (patient-plan association with effective dates), and Benefit (coverage percentages, deductibles) tables. Nutshell has no insurance entity — carrier names, plan types, subscriber IDs, and coverage percentages all become custom fields on the Nutshell Person. If a patient has multiple insurance plans (primary, secondary), each plan requires its own set of custom fields or a custom object. Practices with high dual-coverage rates should expect more custom field creation during schema setup.

Migration approach

Six steps for a successful Open Dental to Nutshell data migration

  1. Schema setup and mapping plan

    Before extracting any data, we review the Open Dental database schema for the target practice and generate a Nutshell custom field creation plan. We create all required custom fields on the Nutshell Person entity — procedure fields, insurance fields, recall fields, PatField equivalents — and define the mapping rules for guarantor-to-parent-contact relationships. This schema plan is delivered as a checklist for your Nutshell admin to approve before we proceed to extraction. Typical setup involves 15–30 custom fields depending on Open Dental PatField count and insurance complexity.

  2. Data extraction with API pagination and rate limiting

    We connect to the Open Dental REST API using the practice's developer and customer keys. Extraction runs in paginated batches of 100 records per request, respecting the one-request-per-five-second rate limit under ApiReadAll permission. We extract patients first (with PatNum, guarantor, demographics), then appointments, procedure logs, insurance plans, and PatFields. Family relationships are resolved by fetching guarantor PatNum values and matching them to parent patient records. Each extraction run produces a staged CSV with source IDs preserved for linkage during import.

  3. Sample migration with field-level verification

    A representative slice — typically 100–300 patient records spanning several families, with appointments and insurance — is imported into Nutshell as a test run. We verify that guarantor relationships map correctly, custom fields populate with the right values, appointment history appears as activities on the correct Person record, and insurance data lands in the intended custom fields. You review the test set in Nutshell before we commit to the full migration. Any mapping corrections are applied to the import configuration before the full run.

  4. Full migration with delta pickup window

    The full patient record set is imported into Nutshell using the verified mapping configuration. A delta-pickup window of 24–48 hours runs concurrently with the import, capturing any new patients, appointments, or record edits that occur in Open Dental during the cutover. All imported records are reconciled against the source record count to confirm zero loss. After the delta window closes, we run a final de-duplication check using the Source_System_ID__c field and generate a migration report showing record counts by object, any records that failed import, and the reason for each failure.

  5. Post-migration handoff and rebuild reference export

    We deliver the completed migration report, a full export of Open Dental workflow definitions and recall schedules in a structured format, and a field-mapping reference document showing every Open Dental table column and its Nutshell destination. Your team uses these exports to rebuild Open Dental recall automations in Nutshell's task automation system. FlitStack AI retains no data from your migration; all source files are deleted after the handoff confirmation. One-click rollback to the pre-migration state is available for 48 hours after go-live if reconciliation reveals unexpected gaps.

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.
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

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 Open Dental and Nutshell.

  • 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

    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 Nutshell 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 Nutshell data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Open Dental to Nutshell migrations complete in 48–72 hours for practices with fewer than 5,000 patient records. The extraction phase — pulling data from Open Dental's API with its five-second rate limit — is the longest single step for large databases. Practices with 50,000+ patient records, complex multi-location setups, and high-volume appointment history extend to 5–7 days. Nutshell's API import is not rate-limited for add/edit operations, so the import phase typically runs faster than the extraction phase.

Adjacent paths

Related migrations to explore

Ready when you are

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