CRM migration

Migrate from Dent-O-Soft to Twenty CRM

Field-level mapping, validation, and rollback between Dent-O-Soft and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

Dent-O-Soft logo

Dent-O-Soft

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Dent-O-Soft and Twenty CRM.

Complexity

BStandard

Timeline

24–48 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Dent-O-Soft organizes data around a dental practice model: patient records, appointments, treatment plans, procedure codes, insurance claims, and lab prescriptions. Twenty CRM uses a standard CRM object model with People, Companies, Opportunities, Tasks, and Notes — plus unlimited custom objects. There is no structural equivalence between the two, so the migration is a schema redesign, not a field-for-field rename. We audit your Dent-O-Soft data and identify which records map directly to Twenty standard objects versus which require custom object creation. Patient records become People with a link to an insurance carrier Company record; treatment plans become Opportunities; appointments become Tasks; insurance claims and lab prescriptions need custom objects. We use Twenty's CSV import (up to 20,000 records per batch) or REST/GraphQL API calls (100 calls/minute on Pro, 200 on Organization) for the load. Views, workflows, and permissions in Dent-O-Soft do not migrate — we export definitions as a rebuild reference for your Twenty admin. The 24–48 hour delta-pickup window captures in-flight appointments and treatment updates during cutover.

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

Dent-O-Soft logo

Dent-O-Soft

What's pushing teams away

  • When practices grow to multiple locations or add specialists, Dent-O-Soft does not appear to have published multi-site management or role-based access controls that large dental groups typically require.
  • Integration options with third-party imaging systems, e-prescribing platforms, and clearinghouses are not clearly documented, leading some practices to switch to platforms with more active marketplace ecosystems.
  • Support responsiveness and the availability of certified implementation consultants appear inconsistent compared to larger dental software vendors with formal channel partner networks.
  • Pricing structure is not transparently published, making it difficult for practices to compare total cost of ownership including modules for patient communication, insurance eligibility, and analytics.

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 Dent-O-Soft objects map to Twenty CRM

Each row shows how a Dent-O-Soft 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.

Dent-O-Soft

Patient

maps to

Twenty CRM

People

1:1
Fully supported

Patient records map to Twenty's People object. Name, email, phone, address, and date of birth migrate directly. Insurance carrier is stored as a link to a Company record (created or matched first). Original patient ID is preserved in Source_System_ID__c custom field for traceability and delta-run deduplication.

Dent-O-Soft

Insurance Carrier

maps to

Twenty CRM

Company

1:1
Fully supported

Dental insurance carriers are organizations, not people, so they migrate to Twenty's Companies object. Carrier name becomes the Company name; address and phone map directly. A custom field (Carrier_Type__c) is set to 'Insurance Carrier' to distinguish from practice or lab Company records.

Dent-O-Soft

Treatment Plan

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Treatment plans migrate to Twenty Opportunities with planned treatment amount mapped to Amount, plan status mapped to Opportunity stage via value mapping (Proposed → 'Initial Exam', Approved → 'Treatment Plan', Completed → 'Closed Won'), and provider as the Opportunity owner resolved by email match to Twenty workspace members.

Dent-O-Soft

Procedure

maps to

Twenty CRM

Opportunity / Custom Object

1:many
Fully supported

Individual procedures attached to a treatment plan split into two paths: procedure fee and tooth code are custom fields on the parent Opportunity (linked by opportunityId); procedure history (dates, surfaces, materials) migrates as a custom Procedure custom object linked to the People record. Tooth number and surface use custom fields; ADA procedure codes require value mapping against Twenty custom select options.

Dent-O-Soft

Appointment

maps to

Twenty CRM

Task

1:1
Fully supported

Appointments map to Twenty Tasks. Appointment date and time become Task dueDate and startTime; provider becomes the Task assignee matched by email to Twenty workspace members; appointment type is stored in a custom Task_Type__c field; notes and clinical instructions become the Task body or an attached Note.

Dent-O-Soft

Clinical Note / Chart Note

maps to

Twenty CRM

Note

1:1
Fully supported

Clinical notes, progress notes, and periodontal chart entries migrate to Twenty Notes attached to the relevant People record. The note subject is set from the note type or date; the body contains the full clinical text. Per-tooth charting data is stored as a custom Note or custom object depending on structure complexity.

Dent-O-Soft

Insurance Claim

maps to

Twenty CRM

Custom Object: InsuranceClaim

1:1
Fully supported

Twenty has no native insurance claim object. We create a custom InsuranceClaim object with fields for claim number, carrier (lookup to Company), patient (lookup to People), service date, billed amount, paid amount, adjustment, adjustment reason, and claim status. Claim status uses a custom select with values matching the source (Pending, Submitted, Paid, Denied, Appeal).

Dent-O-Soft

Lab Prescription

maps to

Twenty CRM

Custom Object: LabPrescription

1:1
Fully supported

Lab work orders migrate to a custom LabPrescription object with lab name (lookup to Company), prescription date, due date, status, tooth number, shade, material, design instructions, and patient link. Lab vendor records are created as Companies with type 'Dental Lab' before prescriptions are imported.

Dent-O-Soft

Recall / Re-care Entry

maps to

Twenty CRM

Task

1:1
Fully supported

Dent-O-Soft recall intervals (6-month cleaning, annual exam) become Tasks with a due date calculated from the last appointment date plus the recall interval. A custom field Recall_Type__c stores the recall category (prophy, perio maintenance, exam). The Task is linked to the People record and assigned to the practice's default owner.

Dent-O-Soft

Referring Provider

maps to

Twenty CRM

People / Company

1:many
Fully supported

Referring dentists and specialists split based on Dent-O-Soft type: if stored as an organization, they become Companies with type 'Referral Source'; if as an individual, they become People records linked to a referring Company. A custom field Referral_Source__c marks the relationship.

Dent-O-Soft

Document / Attachment

maps to

Twenty CRM

Note / File

1:1
Fully supported

Treatment consent forms, insurance cards, and clinical documents migrate as Twenty Notes attached to the relevant People record. For image files, we note the file type and size; images are re-uploaded to Twenty's file storage and linked. File size limits per Twenty storage configuration apply.

Dent-O-Soft

Payment / Ledger Entry

maps to

Twenty CRM

Custom Object: Payment

1:1
Fully supported

Patient payment history and ledger entries migrate to a custom Payment object linked to People and Opportunity. Fields include payment date, amount, payment method, applied-to procedure, and balance. Payment totals are not automatically rolled up — a custom rollup field or report is built post-migration.

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.

Dent-O-Soft logo

Dent-O-Soft gotchas

High

No API and no documented bulk export path

Medium

On-premises deployment with limited remote access

Medium

No free trial and no published pricing

Low

Single-language support (English) and small distribution footprint

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

  • No documented public API forces manual or semi-automated export from Dent-O-Soft

    Search results did not surface a public REST or GraphQL API for Dent-O-Soft. If Dent-O-Soft exposes no bulk export endpoint, data extraction requires CSV dumps from the practice management interface, database access (if self-hosted), or manual record-by-record export. We audit export options in the discovery phase and adjust the migration method accordingly — if only manual export is available, record counts above 5,000 may require phased extraction or a scripted scrape against Dent-O-Soft's internal data model.

  • Insurance carrier as both Company and People creates a dual-entity mapping conflict

    Dent-O-Soft stores insurance carriers as organization entities, but Twenty's data model separates People (individuals) from Companies (organizations). The complication arises when a carrier contact within Dent-O-Soft is stored as a Person record — in Twenty that individual must become a People record linked to the carrier Company via a custom lookup field (Carrier_Company__c). We add this custom field to the People object during schema setup; without it, carrier contacts land as orphan People records with no organizational anchor.

  • Per-tooth charting and intraoral imaging have no native Twenty CRM equivalent

    Dent-O-Soft periodontal charts, tooth diagrams, and intraoral images are clinical data objects with no structural parallel in Twenty's standard object model. Twenty's Notes object can hold text descriptions but cannot render a tooth chart or store per-tooth conditions as structured fields. We migrate chart data as structured custom fields on a custom PerToothRecord object or as detailed Note attachments, and we flag images for re-upload to Twenty's file storage. This is a known limitation — practices requiring clinical charting continuity should plan custom object configuration in Twenty before the migration runs.

  • Twenty's CSV import enforces a strict record-order dependency that dental data breaks

    Twenty's documentation explicitly states that import order matters: Companies must be created before People (since People links to Company via companyId), and Opportunities must be created after both. Dent-O-Soft data is patient-centric with appointments, treatment plans, and claims nested under the patient record rather than organized by organizational entity. If carrier Company records do not exist when patient People records are imported, the companyId lookup fails and patients land without an insurance link. We enforce the Company → People → Opportunity → Custom object sequence and flag any orphaned records for manual resolution before the full run.

  • ADA procedure codes and insurance claim statuses require value-mapping tables not present in Twenty

    Twenty has no pre-built ADA procedure code list and no insurance claim status taxonomy. Procedure codes (D0120, D2750, etc.) and claim statuses (Pending, Submitted, Paid, Denied, Appeal) are custom select fields in Twenty that must be populated with the exact values present in Dent-O-Soft. If Dent-O-Soft uses non-standard or custom procedure codes, those must be enumerated and added to Twenty's Settings → Data Model field options before data lands. Value-mapping errors at this step result in empty or mismatched select fields in Twenty that require post-migration correction.

Migration approach

Six steps for a successful Dent-O-Soft to Twenty CRM data migration

  1. Audit Dent-O-Soft data structure and export options

    We begin by identifying every data object in your Dent-O-Soft instance: patient records, appointments, treatment plans, procedures, insurance claims, lab prescriptions, recall entries, clinical notes, and documents. We determine the export mechanism available — CSV export from the Dent-O-Soft admin interface, direct database query if self-hosted, or manual extraction. We inventory record counts per object, identify custom fields and pick-list values, and document relationships between records. This audit produces the mapping document that drives every subsequent step.

  2. Configure Twenty workspace: custom objects, fields, and value mappings

    Before data is moved, we create all custom objects and fields in Twenty that Dent-O-Soft uses but Twenty does not have natively: InsuranceClaim, LabPrescription, Procedure, PerToothRecord; custom fields on People (Gender__c, Insurance_Group__c, Carrier_Company__c, Source_System_ID__c); custom fields on Task (Task_Type__c, Recall_Type__c); custom fields on Opportunity (Procedure_Code__c, Tooth_Number__c, Surface__c, Procedure_Fee__c). We also build value-mapping tables for appointment status, treatment plan stage, claim status, procedure code, and recall type. All custom fields and select options are live in Twenty before any import begins.

  3. Import sequence: Companies → People → Opportunities → Custom objects

    We execute the migration in Twenty's required import order. First, all unique insurance carriers, labs, and referring providers are created as Company records. Second, patient People records are imported with carrier links resolved to existing Company IDs. Third, treatment plan Opportunities are imported linked to patient People IDs and provider workspace members. Fourth, appointments are imported as Tasks linked to the patient People record. Fifth, insurance claims, lab prescriptions, and procedure records are imported as custom objects with their respective lookups. Each batch is validated before the next begins.

  4. Run sample migration with field-level diff and owner resolution

    A representative slice — typically 100–300 records spanning patients, appointments, treatment plans, and one or two custom objects — migrates first. We generate a field-level diff showing every source value and its destination counterpart so you can verify procedure code mapping, carrier lookup resolution, appointment status translation, and owner email matching to Twenty workspace members. Unmatched owners, duplicate Company records, and failed lookups are flagged and corrected before the full run. No record type or page layout configuration is needed in Twenty since Twenty does not use Salesforce-style record types.

  5. Full migration run with delta-pickup and audit log

    The full dataset migrates against Twenty using CSV import batches (up to 20,000 records per batch) or API calls at the rate limit for your plan. A delta-pickup window of 24–48 hours runs in parallel, capturing any new appointments, treatment plan changes, or patient records created or updated in Dent-O-Soft during the cutover period. Every operation is logged in an audit trail. If reconciliation fails — a batch fails validation, a custom field mapping breaks, or record counts do not match — one-click rollback reverts the Twenty workspace to its pre-migration state so the issue can be diagnosed and the run re-attempted.

Platform deep dives

Context on both ends of the pair

Dent-O-Soft logo

Dent-O-Soft

Source

Strengths

  • Covers scheduling, clinical charting, patient billing, and lab/vendor management in one database.
  • Per-tooth graphical charting with linked treatment history gives clinicians a visual clinical record.
  • Integrated charge and payment posting against patient accounts.
  • Supplier and dental technician records maintained alongside patient data.
  • Designed for small-to-mid-size single-location dental practices.

Weaknesses

  • No publicly documented API for bulk data export or integration with external systems.
  • Multi-location and DSO-scale role management capabilities are not described.
  • Integration marketplace for imaging, e-prescribing, and clearinghouses is not publicly documented.
  • Pricing tiers and module-level costs are not transparently published on the vendor website.
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 manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Dent-O-Soft and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a manual workaround.

  • 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

    Dent-O-Soft: N/A.

  • Data volume sensitivity

    B

    Dent-O-Soft doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Dent-O-Soft 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 Dent-O-Soft to Twenty CRM data migrations

Answers to the questions buyers ask most during Dent-O-Soft to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Dent-O-Soft to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Dent-O-Soft to Twenty migrations complete within 24–48 hours for under 25,000 records. Complex setups with 25,000+ records or five or more custom objects (insurance claims, lab prescriptions, procedure records) extend to 3–5 days. The longest step is schema configuration — creating custom objects and populating ADA procedure code value-mapping tables in Twenty Settings — which runs in parallel with Dent-O-Soft data audit before any data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dent-O-Soft.
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