CRM migration
Field-level mapping, validation, and rollback between Denticon and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Denticon
Source
Twenty CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Denticon and Twenty CRM.
Complexity
BStandard
Timeline
2–4 weeks
Overview
Denticon stores dental-practice data in a clinical schema built around patients, providers, appointments, treatment plans, insurance claims, and multi-location offices. Twenty CRM uses a generic CRM model with People, Companies, Opportunities, Notes, and Tasks as standard objects plus a fully customizable data model for custom objects and fields. The migration translates Denticon's patient demographics and contact details into Twenty People records, practice-office entities into Twenty Companies, and appointment-revenue history into Twenty Opportunities — with provider assignments resolved by email match against Twenty workspace members. Clinical data (treatment plans, clinical notes, insurance records) has no native equivalent in Twenty's CRM schema and is preserved as custom fields or Notes attachments. Twenty's import tooling (Settings → Data Model) requires all custom fields to exist before CSV import; FlitStack AI creates those fields first, then sequences the import in dependency order (Companies → People → Opportunities → Custom objects) to satisfy foreign-key requirements. Workflows, automation rules, and sequence logic do not migrate — those are rebuilt using Twenty's workflow builder or the REST/GraphQL API. A delta-pickup window of 24–48 hours captures any records modified in Denticon during cutover, and the full operation runs without disrupting active Denticon users.
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 Denticon 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.
Denticon
Patient
Twenty CRM
People
1:1Denticon patient records map directly to Twenty People records. The patient's full name, email address, phone number, and postal address transfer as standard Twenty People fields. A custom field (Patient_ID__c) stores the original Denticon patient ID for traceability and delta-run de-duplication.
Denticon
Patient (with guarantor relationship)
Twenty CRM
People + Custom Guarantor Field
many:1Denticon patients may have a guarantor who is a separate person (parent, spouse, or third-party) responsible for billing. FlitStack AI creates the primary patient as a Twenty People record and stores the guarantor's name and relationship as a custom text field (Guarantor_Name__c) on that record. If the guarantor is also a tracked contact, they receive a separate People record linked via a relation field.
Denticon
Practice Office (OID)
Twenty CRM
Company
1:1Each Denticon Office ID (OID) — representing a physical practice location — maps to a Twenty Company record. The office name, address, and phone become Company fields. For multi-location DSOs, all OIDs are exported separately and loaded as individual Company records, with a custom pick-list field (Location_Type__c) set to 'Dental Practice' to distinguish them from referring provider offices.
Denticon
Referring Provider / External Referral Source
Twenty CRM
Company
1:1Denticon's incoming and outgoing referral sources (external dental offices, specialists) are represented as Company records in Twenty. A custom pick-list field (Referral_Source_Type__c) is created to distinguish referring providers from internal practice locations, preserving the referral relationship without requiring a separate junction object.
Denticon
Provider (Dentist / Hygienist)
Twenty CRM
WorkspaceMember (People record)
1:1Denticon providers (dentists, hygienists, specialists) are mapped to Twenty Workspace Members. A People record is created for each provider with a custom pick-list field (Provider_Role__c) storing their Denticon provider type. Their email address is used to match against invited Twenty workspace members; unmatched providers are flagged before migration for the team to invite first, per Twenty's warning that user references must exist before import.
Denticon
Appointment
Twenty CRM
Opportunity
1:1Each completed or open dental appointment is treated as a line-item in a Twenty Opportunity representing that patient visit or treatment series. The Opportunity Name is constructed from the patient name and appointment date (e.g., 'Smith J - New Patient Exam 2025-03-15'). Custom fields capture the treatment type (Cleaning, Restorative, Surgical, etc.), provider assigned, and appointment status. Open vs. completed status maps to Opportunity Stage values created during Twenty setup.
Denticon
Treatment Plan / Procedure Record
Twenty CRM
Note + Custom Fields
1:1Denticon treatment plans and individual procedure codes (ADA codes) have no direct equivalent in Twenty's standard schema. FlitStack AI exports each treatment plan as a Twenty Note attached to the patient People record, with a structured text format listing procedure codes, tooth numbers, surfaces, and fees. For practices that need searchable procedure data, custom fields (Last_Treatment_Code__c, Last_Treatment_Date__c) are created on the People object.
Denticon
Insurance Claim / RCM Record
Twenty CRM
Custom Object + Note
1:1Denticon's RCM (Revenue Cycle Management) module — including insurance claims, claim status, adjustments, and payments — has no CRM equivalent in Twenty. FlitStack AI exports claim summaries as Notes on the patient record. For practices with complex billing histories, a custom object (Insurance_Claim__c) is created with fields for claim number, carrier, status, amount billed, and amount paid — this requires the team to configure the object in Settings → Data Model before migration runs.
Denticon
Patient Communication / Message Log
Twenty CRM
Task
1:1Denticon's 2-way texting log and automated campaign delivery records map to Twenty Tasks. Each outbound or inbound patient message is created as a Task with Type='Message', linked to the patient People record. Original timestamps, message content, and delivery status are preserved in the Task description field.
Denticon
Custom Field (Patient-Level)
Twenty CRM
Custom Field on People
1:1Denticon allows two alphanumeric custom fields per patient record (each up to 25 characters) accessible in Office Setup screens. FlitStack AI creates matching custom fields on the Twenty People object (up to 2 custom fields per migration scope) and populates them from the Denticon export. Practices using the API-based custom field extension pattern store values in custom text fields named to match their Denticon field labels.
Denticon
Recall / Re-Care Schedule
Twenty CRM
Task + Custom Date Field
1:1Denticon recall appointments (hygiene re-care, annual exam reminders) map to Twenty Tasks with a due date set to the recall date. A custom datetime field (Next_Recall_Date__c) is added to the People record so the recall window is visible directly on the contact without opening the task. Completed recalls are linked to the patient as a closed Task.
Denticon
Patient Attachments / Files
Twenty CRM
Note attachments or external URL field
1:1Denticon file attachments (treatment plan PDFs, insurance cards, signed consent forms) cannot be re-hosted inside Twenty's standard attachment model. FlitStack AI downloads all attachments, stores them in the customer's designated cloud storage, and creates a Note on the patient record with a link to the file. The customer configures their own storage bucket; FlitStack does not host files long-term.
| Denticon | Twenty CRM | Compatibility | |
|---|---|---|---|
| Patient | People1:1 | Fully supported | |
| Patient (with guarantor relationship) | People + Custom Guarantor Fieldmany:1 | Fully supported | |
| Practice Office (OID) | Company1:1 | Fully supported | |
| Referring Provider / External Referral Source | Company1:1 | Fully supported | |
| Provider (Dentist / Hygienist) | WorkspaceMember (People record)1:1 | Fully supported | |
| Appointment | Opportunity1:1 | Fully supported | |
| Treatment Plan / Procedure Record | Note + Custom Fields1:1 | Fully supported | |
| Insurance Claim / RCM Record | Custom Object + Note1:1 | Fully supported | |
| Patient Communication / Message Log | Task1:1 | Fully supported | |
| Custom Field (Patient-Level) | Custom Field on People1:1 | Fully supported | |
| Recall / Re-Care Schedule | Task + Custom Date Field1:1 | Fully supported | |
| Patient Attachments / Files | Note attachments or external URL field1: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.
Denticon gotchas
PGID Split requires signed agreements and coordination between buyer and seller
Chrome cache and bad shortcuts corrupt patient context between sessions
Custom fields are severely limited to two fields of 25 characters
API writeback scope is limited to specific endpoints
Automated campaign quiet hours restrict message delivery timing
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 Denticon data export and build Twenty field schema
FlitStack AI exports a full snapshot from Denticon via its REST API (Patients, Providers, Appointments, Practice Offices, Referrals) and CSV admin exports. We audit record counts, identify custom field values, and flag any records with missing email addresses or provider assignments. Simultaneously, we deliver a Twenty field-creation checklist: a list of every custom field and custom object required (DOB__c, Provider_Role__c, Next_Recall_Date__c, Treatment_Record__c, etc.) with field types, select options, and the Settings → Data Model path where each is created. Your Twenty admin builds these fields before the import runs — this is the only manual pre-work required.
Invite all workspace members and resolve provider-to-user email matches
Twenty requires all users to exist in the workspace before import can map relation fields. FlitStack AI exports the provider list from Denticon and cross-references it against the Twenty workspace member list. Unmatched providers are flagged with their Denticon email (or 'no email in Denticon' label) so the team can either invite them to Twenty or assign a fallback owner. This step prevents the 'relation cannot be mapped' error that Twenty throws when a referenced user does not exist at import time.
Sequence import in dependency order: Companies → People → Opportunities → Custom Objects
Twenty enforces import order because foreign-key relations must resolve before they are referenced. FlitStack AI imports in this sequence: (1) Practice Offices as Twenty Companies, (2) Referring Providers as Companies, (3) Patients as Twenty People (linked to their primary office Company), (4) Providers as Twenty People with Provider_Role__c set, (5) Appointments as Opportunities (linked to patient People and provider People), (6) Treatment Records as Notes or Custom Objects. Each step includes a field-level diff against the source export so you can verify record counts and field values before the next step starts.
Run sample migration with field-level diff and root-cause any mismatches
A representative slice of records — typically 200–500 patients spanning multiple offices, plus associated appointments and providers — migrates first. FlitStack AI generates a side-by-side field-level diff showing every source Denticon value and its corresponding Twenty field value. We verify that DOB fields populated, provider relations resolved, opportunity amounts matched, and recall dates transferred correctly. Any mapping errors are corrected in the migration configuration before the full run commits. This step typically takes 1–2 days and is the last chance to adjust field mappings before bulk data lands.
Execute full migration with delta-pickup window and one-click rollback
The full Denticon export is processed through the validated migration pipeline. During the cutover window (24–48 hours), your team continues working in Denticon — FlitStack AI uses scoped read access only. A delta export captures any records created or modified after the initial snapshot. After the delta is applied, a reconciliation report compares record counts by object between the final Denticon snapshot and the Twenty target. If reconciliation fails, one-click rollback reverts the Twenty workspace to its pre-migration state. An audit log documents every record created, updated, or skipped.
Platform deep dives
Denticon
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Denticon and Twenty CRM.
Object compatibility
2 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
Denticon: Not publicly documented in either the legacy reference (api.denticon.com) or the new developer portal pages indexable without authentication. Confirm at partner onboarding..
Data volume sensitivity
Denticon 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 Denticon to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Denticon 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 Denticon
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.