CRM migration
Field-level mapping, validation, and rollback between Curve Dental and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Curve Dental
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Curve Dental and Twenty CRM.
Complexity
BStandard
Timeline
72–96 hours
Overview
Curve Dental stores dental-practice data: patient demographics, insurance breakdowns, treatment plan line items, clinical notes, provider assignments, and file attachments. Twenty CRM is built around a generic People-Companies-Opportunities model with support for custom objects, custom fields, Tasks, and Notes. The two data models have very little native overlap, which makes this migration more of a domain translation than a straightforward object remap. FlitStack AI maps patient first name, last name, email, phone, address, and date of birth to Twenty's People object fields directly. Insurance carrier names and addresses land in Twenty's Companies object. Treatment plan codes, clinical note content, and provider license numbers become custom fields on People or custom objects that your Twenty admin pre-creates via Settings → Data Model. Provider-to-user resolution happens by email match against Twenty workspace members. Attachments and X-ray file references migrate as Notes attachments. Workflows, appointment reminder sequences, and billing-rule automations do not migrate — Twenty's workflow builder uses a different event model than Curve's clinical scheduling triggers. The migration runs via CSV export from Curve's data extraction layer, transformed against the Twenty import template (People first, then Companies, then custom objects), with a delta-pickup window capturing any records created or modified during cutover. The audit log records every operation, and rollback is available if the reconciliation diff shows unexpected gaps.
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 Curve Dental 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.
Curve Dental
Patient
Twenty CRM
People
1:1Patient first name, last name, date of birth, email address, phone number, and home address map directly to Twenty People object fields. The Patient record is the primary unit of migration — all other dental records (insurance, treatment plans, appointments) link back to a People record.
Curve Dental
Patient Insurance Breakdown
Twenty CRM
People + custom fields
1:1Insurance carrier name, group number, subscriber ID, and coverage percentage become custom fields on the People record (InsuranceCarrier__c, GroupNumber__c, SubscriberID__c, CoveragePercent__c). Each insurance carrier name also spawns a unique Company record in Twenty for cross-referencing, with the patient's relationship to that carrier maintained via the People-Company link. This dual mapping ensures insurance details are searchable both by patient and by carrier entity.
Curve Dental
Insurance Carrier
Twenty CRM
Companies
1:1Unique insurance carrier names extracted from patient insurance breakdowns become Twenty Companies records. Carrier address and phone map to the standard Company address and phone fields. This deduplication step is critical — N patients referencing the same carrier collapse to one Company record with a count of linked People.
Curve Dental
Treatment Plan
Twenty CRM
Custom Object (TreatmentPlan) + custom fields on People
1:1Treatment plan code, description, estimated cost, and status (proposed, accepted, completed) require a custom TreatmentPlan object in Twenty. Created via Settings → Data Model → Create Custom Object before import. Each treatment plan links to a People record via a relation field. Completed treatment history becomes a custom field on People (LastTreatmentDate__c, TreatmentSummary__c).
Curve Dental
Clinical Note / Chart Note
Twenty CRM
Notes
1:1Chart notes and clinical observations export as free-text Notes attached to the corresponding People record. Original provider name and note date are preserved as Note metadata. Rich-text formatting is stripped to plain text for Twenty Notes compatibility. Historical clinical context remains accessible within the patient's timeline for future reference by the care team.
Curve Dental
Appointment / Schedule
Twenty CRM
Tasks
1:1Curve appointments (date, time, provider, procedure type, status) map to Twenty Tasks with due date, assignee (provider-matched to Twenty workspace member by email), and a custom description field capturing the procedure type and status. Completed appointments become historical Tasks; future appointments become open Tasks.
Curve Dental
Provider / Staff Record
Twenty CRM
Workspace Members
1:1Curve provider records (dentist, hygienist, office manager) are matched to Twenty workspace members by email address. Providers without a Twenty user account are flagged and assigned to a fallback owner. Provider specialty and license number migrate as custom fields on the matched Workspace Member record.
Curve Dental
Practice / Location
Twenty CRM
Companies
1:1For multi-location Curve setups, each physical practice location becomes a Twenty Companies record with address, phone, and a custom PracticeLocation__c flag. Patient records link to their primary location via companyId relation. This allows location-level pipeline and task reporting in Twenty.
Curve Dental
Referral Source
Twenty CRM
Custom field on People (ReferralSource__c)
1:1Referral source names—such as referring dentists, marketing channels, or patient referrals—become custom pick-list values on the People object. Each unique referral source is enumerated in Twenty's Settings → Data Model before import to maintain consistency across all patient records. The field stores the original source identifier for reporting on patient acquisition trends.
Curve Dental
Custom Form Fields
Twenty CRM
Custom fields on relevant objects
1:1Curve custom form fields (e.g., fluoride preference, osteopath flag, patient preference flags) must be pre-created in Twenty Settings → Data Model for the relevant object (People, Companies, or TreatmentPlan). Each custom field in Curve requires a corresponding Twenty field created before CSV import — import creates records, not fields.
Curve Dental
Document / Attachment (images, X-rays)
Twenty CRM
Notes with file attachments
1:1Curve file attachments (X-rays, scanned documents, referral letters) re-upload as Twenty Notes attachments. File size limits and supported formats apply (Twenty supports common image formats and PDF). Clinical X-ray images are preserved as Notes attachments linked to the People record for historical access.
Curve Dental
Billing / Accounts Receivable
Twenty CRM
Custom fields on People + Notes
1:1Outstanding balance, last payment date, and billing status migrate as custom fields on People. Full A/R history (individual charge entries, payments, adjustments) exports as Notes entries since Twenty has no native A/R ledger. A separate accounting system handles ongoing billing post-migration.
| Curve Dental | Twenty CRM | Compatibility | |
|---|---|---|---|
| Patient | People1:1 | Fully supported | |
| Patient Insurance Breakdown | People + custom fields1:1 | Fully supported | |
| Insurance Carrier | Companies1:1 | Fully supported | |
| Treatment Plan | Custom Object (TreatmentPlan) + custom fields on People1:1 | Fully supported | |
| Clinical Note / Chart Note | Notes1:1 | Fully supported | |
| Appointment / Schedule | Tasks1:1 | Fully supported | |
| Provider / Staff Record | Workspace Members1:1 | Fully supported | |
| Practice / Location | Companies1:1 | Fully supported | |
| Referral Source | Custom field on People (ReferralSource__c)1:1 | Fully supported | |
| Custom Form Fields | Custom fields on relevant objects1:1 | Fully supported | |
| Document / Attachment (images, X-rays) | Notes with file attachments1:1 | Fully supported | |
| Billing / Accounts Receivable | Custom fields on People + Notes1: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.
Curve Dental gotchas
Reporting timeout on large databases
Image and x-ray migration requires chunked transfer and post-migration validation
Accounts receivable balances drift after payment ledger migration
Custom form structure and Smart Forms do not export
Curve Pay dispute fee of $25 per chargeback
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 Curve data inventory and build field-mapping plan
FlitStack AI exports a full data inventory from Curve Dental — patient records, insurance breakdowns, treatment plans, chart notes, appointments, provider roster, and custom form fields. We compare this inventory against Twenty's standard field list and document every field that requires a custom object or custom field in Twenty Settings → Data Model. The output is a field-mapping worksheet with source field names, target Twenty objects and field names, transformation notes, and a pre-migration checklist your admin uses to pre-create all custom fields before the import file is loaded.
Invite all active providers to Twenty workspace
Before any data moves, your team creates Twenty workspace member accounts for every active Curve provider (dentist, hygienist, office manager). FlitStack AI runs an owner-resolution pass — each Curve provider email is matched against the Twenty workspace member list. Unmatched providers are flagged in a pre-flight report with email addresses so your team can send invites before migration. No Task or Note can be assigned to a provider without an active Twenty user account — this step must complete 24 hours before the migration window opens.
Create custom objects and fields in Twenty
Using the field-mapping worksheet from Step 1, your admin creates all required custom objects (TreatmentPlan) and custom fields on People, Companies, and Tasks in Twenty Settings → Data Model. This includes: insurance fields (InsuranceCarrier__c, GroupNumber__c, SubscriberID__c, CoveragePercent__c), A/R fields (OutstandingBalance__c, LastPaymentDate__c), provider fields (LicenseNumber__c, Specialty__c), and the TreatmentPlan custom object with its relation to People. FlitStack delivers a named-field creation script so the setup takes minutes rather than hours. Custom fields must exist before the CSV import runs.
Run sample migration with field-level diff
A representative slice of patient records (typically 200–500 across multiple providers and locations) migrates first. Insurance carrier deduplication runs, treatment plans link to People records, chart notes attach to the correct contacts, and appointments become Tasks with assignees. FlitStack generates a field-level diff showing every source field value alongside its Twenty destination — you can verify that insurance group numbers, treatment plan statuses, and provider assignments arrived correctly before the full run commits. Any mapping errors are corrected before the delta window opens.
Execute full migration with delta-pickup window
The full Curve dataset migrates in sequence: Companies first (insurance carriers and practice locations), then People with custom field values, then custom TreatmentPlan records with People relations, then Tasks (appointments) and Notes (chart entries) with provider assignees. A 24–48 hour delta-pickup window captures any records created or modified in Curve during the cutover. Every operation is logged to the audit trail. One-click rollback reverts all migrated records if the reconciliation check fails. The final deliverable includes a record-count verification report comparing Curve source totals to Twenty destination totals by object type.
Platform deep dives
Curve Dental
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 Curve Dental 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
Curve Dental: Not publicly documented.
Data volume sensitivity
Curve Dental 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 Curve Dental to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Curve Dental 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 Curve Dental
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.