CRM migration

Migrate from My Dental Clinic to Twenty CRM

Field-level mapping, validation, and rollback between My Dental Clinic and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

My Dental Clinic logo

My Dental Clinic

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between My Dental Clinic and Twenty CRM.

Complexity

BStandard

Timeline

48–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

My Dental Clinic stores patient records, treatment histories, insurance details, appointment ledgers, and clinical notes in a clinical-first practice-management model. Twenty CRM is a modern open-source CRM built on TypeScript, NestJS, React, and PostgreSQL — it uses People for contacts, Companies for accounts, Opportunities for deals, Notes for free-form text, and Tasks for action items. The two models differ significantly: My Dental Clinic treats appointments and clinical notes as first-class objects, while Twenty maps these to Notes and Tasks linked to People records. FlitStack AI extracts patient demographics, insurance fields, procedure codes, and treatment plan data from My Dental Clinic via its export API, transforms them into Twenty's People and Opportunities schema, creates custom fields for insurance policy numbers and tooth-chart references, and loads via Twenty's REST API or CSV import. Ledgers and appointment schedules — which My Dental Clinic stores in structured clinical tables — do not have native equivalents in Twenty and must be rebuilt as Tasks or handled as custom objects after migration. Workflows, appointment automations, and recall sequences do not migrate and require manual rebuild in Twenty's workflow builder.

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

My Dental Clinic logo

My Dental Clinic

What's pushing teams away

  • Customer service scores lag behind category leaders, with users reporting slow response times and difficulty reaching support during urgent issues.
  • Feature set feels limiting as practices grow beyond single-location operations, with fewer advanced reporting and multi-location management tools than competitors.
  • Lower value-for-money ratings compared to platforms offering broader feature bundles at similar price points.
  • Integration ecosystem is narrower than major dental platforms, making connectivity to specialized imaging or lab systems a friction point.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How My Dental Clinic objects map to Twenty CRM

Each row shows how a My Dental Clinic 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.

My Dental Clinic

Patient Record

maps to

Twenty CRM

People

1:1
Fully supported

My Dental Clinic patient records map to Twenty CRM's People object. Core contact fields (name, email, phone, address) migrate directly. Clinical fields such as insurance provider, policy number, and procedure codes require custom fields in Twenty's Data Model before the import runs.

My Dental Clinic

Practice / Clinic

maps to

Twenty CRM

Company

1:1
Fully supported

My Dental Clinic's practice or clinic entity maps to Twenty CRM's Company object. Practice name, address, phone, website, and industry fields transfer directly. When the source includes a billing address or tax ID, those become custom fields on the Company record. Multi-location practices generate separate Company records linked by a custom location-identifier field, and each location can be linked to its corresponding People records via the companyId lookup.

My Dental Clinic

Insurance Record

maps to

Twenty CRM

Custom Fields on People

1:1
Fully supported

Insurance provider, policy number, group number, and coverage type from My Dental Clinic's insurance module migrate as custom text and select fields on the People record. Coverage percentages and annual maximums become custom number fields. Insurance renewal dates become custom date fields.

My Dental Clinic

Treatment Plan

maps to

Twenty CRM

Opportunity

1:1
Fully supported

My Dental Clinic treatment plans — including procedure description, estimated cost, provider assignment, and completion status — map to Twenty CRM's Opportunity object. Procedure codes migrate as a custom field. Treatment plan stage (proposed, accepted, in-progress, completed) maps to Opportunity Stage via value mapping.

My Dental Clinic

Procedure History Line Item

maps to

Twenty CRM

Note or Custom Object

1:1
Fully supported

Individual procedure line items within a treatment plan — date, procedure code, tooth number, provider, fee — are too granular for standard Opportunity fields. We aggregate them into a Note attached to the Opportunity, or into a custom Procedure_History custom object with a relation to the People record.

My Dental Clinic

Recall / Appointment Reminder

maps to

Twenty CRM

Task

1:1
Fully supported

My Dental Clinic recall records (next appointment date, recall type, provider) map to Twenty CRM Tasks with a due date, linked to the People record. Recall type (hygiene, perio, restorative) becomes a custom select field on the Task. This preserves the recall mechanism in Twenty's task model.

My Dental Clinic

Clinical Note / SOAP Notes

maps to

Twenty CRM

Note

1:1
Fully supported

My Dental Clinic clinical notes (subjective, objective, assessment, plan) migrate as Twenty CRM Notes attached to the People record. SOAP sections are preserved as plain text within the Note body. Provider attribution and note date are retained on the Note record.

My Dental Clinic

Appointment Ledger Entry

maps to

Twenty CRM

Custom Object or Note

1:1
Fully supported

My Dental Clinic appointment ledgers (date, provider, procedure, fee, payment status, write-offs) have no direct Twenty CRM equivalent. We migrate them as a custom Ledger_Entry object with relations to People and Opportunity, or as Notes with structured text. Practices that rely heavily on ledger reporting should plan for a separate financial reconciliation step.

My Dental Clinic

Consent Form / Document

maps to

Twenty CRM

File Attachment on People

1:1
Fully supported

Consent forms and supporting documents stored in My Dental Clinic re-upload as file attachments to the corresponding People record in Twenty CRM. Inline images within documents are extracted and re-hosted. Large X-ray files or DICOM images are referenced via URL custom fields pointing to the original storage location.

My Dental Clinic

Provider / Staff

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

My Dental Clinic provider and staff records map to Twenty CRM's WorkspaceMember (user) records. Provider specialty, license number, and NPI migrate as custom fields on the WorkspaceMember. Owner assignment on migrated records resolves via email match to the corresponding Twenty user.

My Dental Clinic

Referral Source

maps to

Twenty CRM

Custom Field on People or Note

1:1
Fully supported

My Dental Clinic referral source tracking (referring dentist, marketing channel, internal referral) migrates as a custom select field on the People record called Referral_Source__c. The field can store a primary source and can be updated manually after import. Attribution notes—such as referral date, source details, or campaign tag—migrate as Note records linked to the People record for full auditability and future reporting.

My Dental Clinic

Custom Dental Field (Tooth Chart, X-Ray Reference)

maps to

Twenty CRM

Custom Field on People

1:1
Fully supported

Tooth-chart diagrams and X-ray file references stored in My Dental Clinic's clinical notes cannot be represented as standard Twenty CRM fields. We create a long-text custom field (Tooth_Chart_Reference__c) and a URL custom field (X_Ray_Link__c) on the People record to preserve these references. The actual chart data or image files must be re-hosted separately.

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.

My Dental Clinic logo

My Dental Clinic gotchas

High

Dental ledgers are structurally complex to migrate accurately

Medium

Tooth-numbering systems differ between dental platforms

Medium

Insurance carrier IDs must be re-mapped post-migration

Medium

Custom clinical note templates may not map directly

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Appointment ledger entries have no native equivalent in Twenty CRM

    My Dental Clinic stores appointment ledger entries — procedure date, ADA code, provider, fee, payment, write-off — in a structured clinical ledger table. Twenty CRM has no appointment ledger entity. The ledger data cannot map field-for-field to any standard Twenty object. We handle this by creating a custom Ledger_Entry object with a relation to People, or by migrating the data as structured Notes. Practices that depend on ledger reports for production tracking or insurance reconciliation should plan a separate financial reporting step in coordination with their billing team after go-live.

  • Insurance fields require custom field creation in Twenty before data lands

    My Dental Clinic's insurance module stores provider name, policy number, group number, coverage percentage, and annual maximum per patient. Twenty CRM's standard People object has no insurance fields. Custom fields (Insurance_Provider__c, Insurance_Policy_Number__c, Insurance_Group_Number__c, Insurance_Coverage_Pct__c, Insurance_Annual_Max__c) must be created in Twenty's Settings → Data Model before the migration import runs. If the import CSV is uploaded before these fields exist, the insurance data is dropped silently. We create the schema before any import step and validate field presence in the test migration.

  • Twenty CSV import requires records in a strict load order: Companies → People → Opportunities → Custom Objects

    Twenty CRM's import system enforces referential integrity: a Company record must exist before a People record can reference it via the companyId field, and a People record must exist before an Opportunity can reference it as the contact. My Dental Clinic's export typically produces a flat list of patients and treatment plans without this dependency order. We sequence the migration export: Companies first, then People (resolving the companyId), then Opportunities (resolving the peopleId and accountId), then custom objects. Circular references or orphaned records are flagged in the test migration and corrected before the full run.

  • Recall and appointment scheduling workflows must be rebuilt in Twenty's workflow builder

    My Dental Clinic automates recall reminders, appointment confirmation texts, and post-procedure follow-up sequences within its native workflow engine. Twenty CRM's workflow builder (available on Pro and Organization tiers) supports CRM-level automation — task creation, field updates, and email triggers — but lacks a native appointment calendar or recall-sequence construct. Automated recall sequences cannot be migrated as data; they must be rebuilt using Twenty's workflow builder with manual trigger conditions and task-due-date logic. We provide an export of the current recall workflow rules as a rebuild reference for the Twenty admin.

  • X-ray and imaging file references cannot be migrated as inline images

    My Dental Clinic stores X-ray images, tooth-chart scans, and intraoral photos as file attachments on patient records. Twenty CRM supports file attachments via its UI, but large imaging files (DICOM, JPEG, PNG) cannot be imported in bulk via CSV. We extract file URLs or references from My Dental Clinic, re-host them in cloud storage, and store the URLs as a custom URL field (X_Ray_Link__c) on the People record. DICOM files specifically require a DICOM viewer or PACS system and are not viewable within Twenty — we document the file location for reference.

Migration approach

Six steps for a successful My Dental Clinic to Twenty CRM data migration

  1. Audit My Dental Clinic data export and design Twenty schema

    FlitStack AI extracts the complete data inventory from My Dental Clinic — patients, insurance records, treatment plans, clinical notes, recall schedules, providers, and practice information. We identify all active records, flag duplicates, and document any fields that require custom creation in Twenty's Data Model. We deliver a schema setup plan specifying which custom fields to create (Insurance_Provider__c, Procedure_Code__c, Recall_Type__c, etc.), their types, and the import order. This step typically runs 3–5 business days.

  2. Create Twenty CRM custom fields and prepare workspace

    Before any data is loaded, your Twenty admin (or our team) creates the custom fields and any custom objects identified in the audit. For insurance fields, procedure codes, recall types, and source system IDs, we provide the exact field names, types, and pick-list values to configure. Workspace members must be invited and active in Twenty before the migration runs, because owner resolution relies on email matching between My Dental Clinic provider records and Twenty WorkspaceMember records.

  3. Resolve relationships and sequence the export load order

    Twenty CRM enforces referential integrity during import: Companies must load before People, and People must load before Opportunities. FlitStack AI restructures the My Dental Clinic export into the correct load order, maps provider IDs to Twenty WorkspaceMember email addresses, and links treatment plans to the correct People records via peopleId. Any orphaned records (patients without a mapped practice, treatment plans without a patient) are flagged with a resolution plan before the full run proceeds.

  4. Run sample migration with field-level diff

    A representative slice — typically 100–500 records spanning patients across different insurance plans, treatment plans at various stages, and a sample of clinical notes — migrates first. We generate a field-level diff comparing source values against the imported Twenty records so you can verify insurance field mapping, treatment plan stage values, recall date logic, and owner resolution before the full migration commits. Any mapping corrections are applied to the full migration configuration before cutover.

  5. Full migration with delta-pickup window and post-migration validation

    The full migration loads Companies, then People (with insurance fields and original create dates preserved), then Opportunities (with procedure codes and stage mapping), then Notes, Tasks (recalls), and custom objects. A delta-pickup window of 24–48 hours captures any My Dental Clinic records modified during cutover. An audit log records every imported record. One-click rollback is available if reconciliation against the My Dental Clinic backup reveals discrepancies exceeding your defined tolerance threshold.

Platform deep dives

Context on both ends of the pair

My Dental Clinic logo

My Dental Clinic

Source

Strengths

  • Web-based, browser-accessible interface requiring no local server installation or maintenance overhead.
  • Automated patient communication tools including appointment reminders and intake form collection reduce front-desk workload.
  • Specialized dental workflow features including tooth charting and perio charting built into the core product rather than add-ons.

Weaknesses

  • Narrower third-party integration ecosystem compared to major dental platforms, limiting connectivity with specialized imaging and lab vendors.
  • Per-feature pricing model can become unpredictable in cost as practices add modules over time.
  • Customer service responsiveness scores trail category competitors, creating risk for practices that need timely support during transitions.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

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 My Dental Clinic and Twenty CRM.

  • 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

    My Dental Clinic: Not publicly documented..

  • Data volume sensitivity

    B

    My Dental Clinic doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your My Dental Clinic to Twenty CRM 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 My Dental Clinic to Twenty CRM data migrations

Answers to the questions buyers ask most during My Dental Clinic to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your My Dental Clinic to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most My Dental Clinic to Twenty CRM migrations complete in 48–96 hours of clock time for practices with under 10,000 patient records. Larger practices with 100,000+ records, multi-location setups, or extensive insurance histories extend to 5–10 days. The longest planning step is designing the custom field schema in Twenty's Data Model and sequencing the export load order so referential integrity holds during import. We provide a timeline estimate after the data audit phase.

Adjacent paths

Related migrations to explore

Ready when you are

Move from My Dental Clinic.
Land in Twenty CRM, 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