CRM migration
Field-level mapping, validation, and rollback between Henry Schein One and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Henry Schein One
Source
Twenty CRM
Destination
Compatibility
9 of 10
objects map 1:1 between Henry Schein One and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Henry Schein One — encompassing Dentrix, Dentrix Ascend, and Dentally — is a dental-practice-management platform built around patient records, appointments, treatment plans, and insurance billing. Twenty CRM is a general-purpose open-source CRM built on People, Companies, Opportunities, Tasks, and Notes with a CSV-based import system and a 20,000-record-per-export limit. We extract data from Henry Schein One via its API Exchange (700+ endpoints, 6B annual requests) or direct export, transform patient demographics into Twenty People records, store insurance carriers as Twenty Companies with custom fields for plan names and group numbers, and convert appointment history into Twenty Tasks. Clinical treatment data — procedure codes, tooth numbers, X-ray counts — has no native equivalent in Twenty and migrates as custom fields on the People record. Insurance EDI clearinghouse settings, imaging files, and claim clearinghouse configurations cannot migrate and require re-enrollment post-migration. We run a sample migration of 50–100 patient records before committing the full load, using delta pickup to capture in-flight changes during the cutover window.
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 Henry Schein One 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.
Henry Schein One
Patient
Twenty CRM
People
1:1Henry Schein One patient records map directly to Twenty People. Fields like first name, last name, date of birth, phone, email, address, and SSN transfer as direct mappings or custom fields. The original patient account number from Henry Schein One is stored as a custom field on the People record for reconciliation and delta-run de-duplication.
Henry Schein One
Insurance Carrier
Twenty CRM
Company
1:1Insurance carriers in Henry Schein One (payer name, plan type, group number, subscriber ID, employer info, subscriber relationship) have no direct equivalent in Twenty. We store each carrier as a Company record with custom fields — Insurance_Plan_Name__c, Insurance_Group_Number__c, Insurance_Subscriber_ID__c, and Insurance_Relationship__c — to preserve the full payer relationship.
Henry Schein One
Appointment
Twenty CRM
Task
1:1Henry Schein One appointment records — appointment date, time, type, length, provider, operatory, and status — convert to Twenty Task records. Task.name carries the appointment type; Task.body carries the full notes; Task.dueDate maps from the appointment date. Original appointment IDs are preserved as Custom_Appointment_ID__c on the Task for traceability.
Henry Schein One
Provider / Doctor
Twenty CRM
People
1:1Referring doctors and hygiene providers from Henry Schein One become Twenty People records with a Provider_Type__c custom field to distinguish them from patient contacts. The provider's state license number, DEA number, and NPI are stored as text custom fields on the People record since Twenty has no native license tracking object.
Henry Schein One
Guarantor
Twenty CRM
People
1:1The guarantor on a Henry Schein One patient record — the person responsible for billing — migrates as a separate Twenty People record. The primary patient's record links to the guarantor via a people-to-people relationship field. If the guarantor is also a patient, both records are created and the relationship is explicitly linked.
Henry Schein One
Treatment Plan / Procedure
Twenty CRM
Custom fields on People + Notes
1:1Treatment plans in Henry Schein One (CDT codes, tooth numbers, surfaces, procedure descriptions, fees, provider, treatment status) have no native equivalent in Twenty. We migrate active treatment plan data as structured custom fields on the People record — Procedure_Codes__c, Tooth_Numbers__c, Treatment_Fees__c — and append full clinical notes to the People record as a Note with original timestamps and provider attribution.
Henry Schein One
Referral Source
Twenty CRM
Custom field on People
1:1Referral source data in Henry Schein One (referring doctor name, practice, referral date, referral type) migrates as a Referral_Source__c custom text field on the Twenty People record. If referral tracking becomes a business priority in Twenty, a custom Referral object can be created post-migration to replace the flat field.
Henry Schein One
Insurance Claim / Ledger
Twenty CRM
Custom fields on People
1:1Insurance claim status (submitted, pending, paid, denied) and outstanding balance from Henry Schein One ledger records migrate as custom fields — Claim_Status__c and Outstanding_Balance__c — on the corresponding People record. Full claim history requires a custom Claim object in Twenty if the volume warrants it.
Henry Schein One
Document / Attachment
Twenty CRM
Note + File attachment
1:1Attachments stored in Henry Schein One — treatment consent forms, insurance cards, referral letters — are extracted from the source system and re-uploaded as files linked to the corresponding Twenty People record. The original file name and source system path are preserved in the file's description metadata. Note: inline images in clinical notes are extracted and rehosted as Twenty attachments.
Henry Schein One
Multi-Location Practice
Twenty CRM
Multiple Company records
1:manyGroup practices or Dental Service Organizations (DSOs) running multiple locations in Henry Schein One require each location to be a separate Company record in Twenty. Location name, address, phone, and a Location_Code__c custom field distinguish each practice. Patient records are then linked to the appropriate location Company via the companyId relationship on the People record.
| Henry Schein One | Twenty CRM | Compatibility | |
|---|---|---|---|
| Patient | People1:1 | Fully supported | |
| Insurance Carrier | Company1:1 | Fully supported | |
| Appointment | Task1:1 | Fully supported | |
| Provider / Doctor | People1:1 | Fully supported | |
| Guarantor | People1:1 | Fully supported | |
| Treatment Plan / Procedure | Custom fields on People + Notes1:1 | Fully supported | |
| Referral Source | Custom field on People1:1 | Fully supported | |
| Insurance Claim / Ledger | Custom fields on People1:1 | Fully supported | |
| Document / Attachment | Note + File attachment1:1 | Fully supported | |
| Multi-Location Practice | Multiple Company records1:many | 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.
Henry Schein One gotchas
Proprietary image encoding breaks image links post-migration
Insurance EDI re-enrollment required with every payer
API Exchange restrictions limit third-party data access
PCI compliance does not transfer between systems
Jarvis Analytics generates derived data that does not export
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
Discover Henry Schein One data structure and export scope
We audit your Henry Schein One setup to identify all patient records, insurance carriers, appointment history, treatment plan fields, and custom properties. If you use Dentrix, Dentrix Ascend, or Dentally, we note the specific data export paths available (API Exchange vs. direct database export) and confirm record counts per object. We deliver a data inventory document listing every field to migrate, every custom field to create in Twenty, and the import order required to satisfy Twenty's foreign-key constraints (Companies → People → Tasks → Notes).
Create Twenty CRM schema — custom fields and objects first
Before any data moves, your Twenty admin (or our team) creates all required custom fields in Settings → Data Model. We provide the exact field name, type (text, number, select, multi-select, date, currency), and option values for every Henry Schein One property that lacks a direct Twenty equivalent. For multi-location practices, we also map each practice location to a separate Company record. We do not run the import until all custom fields are confirmed present in Twenty — importing into a missing field silently drops that column.
Migrate insurance carriers as Companies, then patients as People
We run the migration in the sequence Twenty requires: first, all insurance carrier Company records (with Insurance_Plan_Name__c, Insurance_Group_Number__c, Insurance_Subscriber_ID__c, Insurance_Relationship__c custom fields populated). Second, all patient People records — with name, email, phone, address, date of birth, patient account number, guarantor relation, and custom clinical fields (CDT codes, tooth numbers, X-ray count, treatment plan notes) filled. Third, guarantor People records for patients where the guarantor is a separate individual. This sequence ensures companyId lookups resolve correctly on every People record.
Convert appointment history to Tasks with provider resolution
We pull appointment records in date-range batches (per the 20,000-record export limit), map each to a Twenty Task with appointment type as name, original notes as body, and appointment date as dueDate. Provider names resolve by email match to existing Twenty users — any provider without a Twenty account is flagged for your team to either invite or assign to a fallback owner before the full migration commits. Original appointment IDs are preserved as Original_Appointment_ID__c on each Task for traceability and delta de-duplication.
Run sample migration with field-level diff, then full cutover
A representative slice of 50–200 records — spanning patients across age ranges, appointments with different providers, and cases with active treatment plans — migrates first. We generate a field-level diff showing every mapped value side-by-side in source and destination so you can verify custom field completeness, insurance carrier linking, and guarantor relationship construction before the full run. Once approved, the full migration commits. A 24–48 hour delta window captures any patient records or appointments created or modified in Henry Schein One during the cutover. Audit log records every operation; rollback is available if reconciliation reveals unexpected data gaps.
Platform deep dives
Henry Schein One
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 Henry Schein One 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
Henry Schein One: Not publicly documented per-org limits; enterprise customers receive dedicated API capacity.
Data volume sensitivity
Henry Schein One exposes a bulk API — large-volume migrations stream efficiently.
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 Henry Schein One to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Henry Schein One 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 Henry Schein One
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.