CRM migration
Field-level mapping, validation, and rollback between Dentrix and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Dentrix
Source
Twenty CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Dentrix and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Dentrix stores dental practice data in a domain-specific model built around patients, providers, appointments, treatment plans, insurance carriers, and clinical notes. Twenty CRM operates as a generic business CRM with standard objects for People, Companies, Opportunities, Notes, and Tasks, plus support for custom objects and custom fields per workspace. The migration challenge is translating Dentrix's clinical and billing constructs into Twenty's commercial CRM schema without losing patient context or appointment history. We extract Dentrix data via the platform's export tools and API where available, transform patient records into Twenty People objects, referring providers into Companies, open treatment cases into Opportunities, and appointment/clinical history into Tasks and Notes. Insurance information and billing ledger data require custom fields or custom objects in Twenty since the platform has no native insurance or accounts-receivable model. Custom dental properties (procedure codes, clinical flags, insurance plan types) migrate as custom fields on the relevant objects. What does not transfer: Dentrix workflows, clinical imaging files (X-rays, CBCT scans), integration configurations with imaging hardware, and practice-specific automation rules. These must be rebuilt in Twenty's Settings → Data Model and Settings → Workflows sections. The migration uses a staged CSV import approach with Twenty's documented import order (Companies → People → Opportunities → Custom objects) to maintain referential integrity.
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 Dentrix object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Dentrix
Patient
Twenty CRM
People
1:1Dentrix Patient record maps directly to Twenty People. The patient name, date of birth, contact information, address, and medical alerts translate as direct fields or custom fields on the People object. Medical alerts (allergies, conditions) require a custom Alert__c multi-select field in Twenty since the platform has no native clinical-alert mechanism.
Dentrix
Referring Provider / Doctor
Twenty CRM
Company
1:1Referring dentists, oral surgeons, and specialist offices stored as referring providers in Dentrix map to Twenty Company records. Company name, practice name, address, phone, and NPI number transfer as standard Company fields. Referring provider type (oral surgeon, endodontist, etc.) maps as a custom Type__c pick-list on the Company object.
Dentrix
Insurance Carrier
Twenty CRM
Company (secondary)
many:1Insurance carriers from Dentrix (Delta Dental, Cigna Dental, MetLife, etc.) merge into a separate Company record type in Twenty, distinguished from referring providers via a custom Company_Type__c field set to 'Insurance Carrier'. This allows linking patients to their insurance plan Company record while keeping the insurer separate from referral sources.
Dentrix
Appointment / Visit
Twenty CRM
Task
1:1Dentrix appointments map to Twenty Tasks linked to the People record. Each appointment task captures the appointment date, provider assigned, procedure codes performed, and status (completed, no-show, cancelled). Recurring recall appointments become recurring Tasks in Twenty — the platform supports due date-based recurring tasks on the Task object.
Dentrix
Treatment Plan
Twenty CRM
Opportunity
1:1Open treatment plans in Dentrix map to Twenty Opportunities representing the remaining treatment value. The Opportunity Stage maps to treatment plan status (Proposed, Scheduled, In Progress, Completed, Cancelled). Treatment plan procedure codes and estimated fees transfer as line items using Twenty's Opportunity model or as custom fields if the practice uses a simplified single-value approach.
Dentrix
Clinical Note / Progress Note
Twenty CRM
Note
1:1Dentrix clinical progress notes attach to the Patient record and map to Twenty Notes linked to the People record. We preserve the original note date, provider author, and full note body. Clinical notes use Twenty's rich-text Note capability, but per Twenty's documentation, Notes are free-form and not searchable via the standard filter — they appear in the record timeline.
Dentrix
Insurance Plan (per patient)
Twenty CRM
Custom Object or Custom Fields on People
1:1Patient-specific insurance details (carrier, group number, subscriber ID, eligibility dates, coordination of benefits) require custom fields on the People object: Insurance_Carrier__c (lookup to Company), Group_Number__c, Subscriber_ID__c, Eligibility_Start__c, Eligibility_End__c, and Subscriber_Relationship__c. These fields must be created in Twenty Settings → Data Model before the People import runs.
Dentrix
Ledger / Billing Record
Twenty CRM
Custom Object: Ledger_Entry__c
1:1Dentrix billing ledger entries (charges, payments, adjustments, insurance payments, write-offs) do not map to any standard Twenty object. We create a custom Ledger_Entry__c object with fields for Entry_Date__c, Type__c (charge/payment/adjustment/writeoff), Amount__c, Description__c, Provider__c (relation to Company), and Patient__c (relation to People). Each entry links to the People record. This requires Twenty Organization-tier or a self-hosted instance to create multiple custom objects.
Dentrix
Procedure Code (CDT codes)
Twenty CRM
Custom Field on Task or Custom Object: Procedure_Code__c
1:1CDT (Current Dental Terminology) procedure codes performed at each appointment do not have a native equivalent in Twenty. We map them as a custom Procedure_Code__c text field on the Task object, storing the CDT code (e.g., D0120, D2750) and description. Practices using procedure codes for production tracking may prefer a separate Procedure__c custom object linked to Task for more granular reporting.
Dentrix
Document / Attachment (non-imaging)
Twenty CRM
File (Twenty native)
1:1Dentrix documents attached to patient charts (consent forms, insurance cards, referral letters in PDF/Word format) export from Dentrix and re-upload to Twenty as native file attachments on the People record. We download the files from Dentrix's document management path and attach them to the corresponding People record during migration. PDF and image files re-host directly; Word documents may require format conversion.
Dentrix
User / Provider (Staff member)
Twenty CRM
WorkspaceMember
1:1Dentrix provider and staff accounts (dentists, hygienists, office managers, billing staff) resolve against Twenty WorkspaceMembers by email match. If a provider email exists in Dentrix and a matching email invite is sent to Twenty before migration, records assign to the correct owner. Unmatched providers flag as 'Unassigned Provider' and must be resolved post-migration.
Dentrix
Imaging (X-rays, photos, CBCT)
Twenty CRM
No equivalent
1:1Dentrix imaging files (bitewing X-rays, panoramic radiographs, intraoral photos, CBCT scans in proprietary or DICOM format) have no migration path to Twenty CRM. The imaging viewer in Twenty is not designed for clinical radiology. We export a manifest of imaging file names and dates linked to the patient People record, but the actual image files must remain in Dentrix or be exported separately to a dedicated dental imaging PACS system.
| Dentrix | Twenty CRM | Compatibility | |
|---|---|---|---|
| Patient | People1:1 | Fully supported | |
| Referring Provider / Doctor | Company1:1 | Fully supported | |
| Insurance Carrier | Company (secondary)many:1 | Fully supported | |
| Appointment / Visit | Task1:1 | Fully supported | |
| Treatment Plan | Opportunity1:1 | Fully supported | |
| Clinical Note / Progress Note | Note1:1 | Fully supported | |
| Insurance Plan (per patient) | Custom Object or Custom Fields on People1:1 | Fully supported | |
| Ledger / Billing Record | Custom Object: Ledger_Entry__c1:1 | Fully supported | |
| Procedure Code (CDT codes) | Custom Field on Task or Custom Object: Procedure_Code__c1:1 | Fully supported | |
| Document / Attachment (non-imaging) | File (Twenty native)1:1 | Fully supported | |
| User / Provider (Staff member) | WorkspaceMember1:1 | Fully supported | |
| Imaging (X-rays, photos, CBCT) | No equivalent1: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.
Dentrix gotchas
No public API for Dentrix G data extraction
Imaging files stored separately from patient records
Balance-forward billing ledger requires explicit handling
In-flight insurance claims must clear before cutover
Custom fields vary per practice with no standard schema
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Audit Dentrix data export and define the Twenty schema plan
We run a data audit against the Dentrix export (cloud API or on-premise database export) to inventory patient records, insurance entries, treatment plans, ledger transactions, provider records, and documents. We identify data quality issues (duplicate patients, missing email addresses, incomplete insurance records) and surface them before migration. Simultaneously, we deliver a Twenty schema plan: a list of custom fields and custom objects to create in Settings → Data Model, their types, and which Twenty tier (Pro vs Organization) is required. This step produces the migration blueprint and a data-cleanse checklist for the practice team.
Create Twenty custom fields and custom objects before import
Per Twenty's documentation, fields must exist before CSV import — the import creates records, not fields. We (or the practice admin) create all required custom fields in Settings → Data Model: Medical_Alert__c, Insurance_Carrier__c (lookup to Company), Group_Number__c, Subscriber_ID__c, Eligibility_Start__c, Eligibility_End__c, Subscriber_Relationship__c on People; and if the Organization tier is chosen, Ledger_Entry__c and its fields. We also configure the Opportunity pipeline stages to match the practice's treatment plan statuses (Proposed, Scheduled, In Progress, Completed, Cancelled). The Twenty workspace must be ready before any data lands.
Export, transform, and load data in Twenty's required import order
We export Dentrix data in CSV format using the platform's export tools. Data transforms according to the field mapping document: insurance carriers generate Company records, patients generate People records, appointments generate Tasks, open treatment plans generate Opportunities, and ledger entries generate Ledger_Entry__c records. We load data into Twenty in the documented order: Companies first, then People (linked via companyId), then Opportunities (linked to People and Company), then Custom objects last. Owner resolution matches Dentrix provider email addresses to Twenty WorkspaceMember emails — unmatched owners flag in a pre-migration report.
Run a sample migration with field-level diff before full commit
A representative slice of records — typically 100–500 patients spanning different appointment histories, insurance configurations, and treatment plan statuses — migrates first. We generate a field-level diff between the Dentrix source values and the Twenty destination values for every mapped field. The practice team reviews the diff to verify medical alert migration, insurance carrier linking, treatment plan-to-Opportunity mapping, and owner resolution. Any field mapping errors or data quality issues surface here before the full run commits. This step typically runs over 24–48 hours.
Full migration with delta-pickup window and one-click rollback
The full dataset migrates against Twenty. A delta-pickup window (24–48 hours after the primary run) captures any new appointments, ledger entries, or patient updates made in Dentrix during the migration window. All operations are logged in an audit log. If reconciliation fails — a record count mismatch, a critical field that failed to map, or a custom object that didn't create correctly — one-click rollback reverts the Twenty workspace to its pre-migration state so the team can re-run without data residue.
Platform deep dives
Dentrix
Source
Strengths
Weaknesses
Twenty 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 Dentrix and Twenty 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
Dentrix: Not publicly documented for Dentrix Ascend API Exchange.
Data volume sensitivity
Dentrix 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 Dentrix to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Dentrix to Twenty 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 Dentrix
Other ways to arrive at Twenty 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.