CRM migration

Migrate from AeronaClinic to Twenty CRM

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

AeronaClinic logo

AeronaClinic

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between AeronaClinic and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

AeronaClinic and Twenty CRM share a relational data model — both use objects, fields, and associations — but their domain focus creates structural divergence that migration planning must address. AeronaClinic is built for dental and health clinic workflows: it combines patient demographics, NHS/SDS identifiers, appointment scheduling, clinical notes, tooth charting, treatment plans, and billing in a single clinical schema. Twenty CRM is a general-purpose open-source CRM that models data around People, Companies, Opportunities, Tasks, and Notes with a custom field extension layer. When you migrate, patient records map directly to Twenty People, clinics and practices map to Companies, appointments and treatment plans map to Opportunities, and invoice records map to custom field extensions on Opportunities. The complications arise with healthcare-specific fields: NHS numbers, SDS numbers, medical history, consent dates, and clinical tooth-charting data have no native equivalent in Twenty — these require custom field creation before data lands. We handle the data layer: extracting from AeronaClinic via API, transforming field formats, resolving owner assignments by email, and bulk-loading into Twenty through its import API. Views, automations, permissions, and payment-processing integrations must be rebuilt manually in Twenty after migration. The delta-pickup window (24–48 hours) captures records modified during cutover so your Twenty workspace reflects the final state of AeronaClinic at go-live.

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

AeronaClinic logo

AeronaClinic

What's pushing teams away

  • Some practices find the feature set narrower than larger platforms like Dentrix Ascend or CareStack, reporting that advanced clinical workflows or specialist modules require third-party workarounds.
  • The lack of a mobile application means practitioners who want to chart or check schedules from a phone or tablet report friction compared to mobile-first alternatives.
  • Clinics with multiple locations or complex multi-practitioner setups report that reporting and analytics tools, while functional, are less flexible than what spreadsheet-based analysis can deliver.
  • Users occasionally cite the learning curve for staff unfamiliar with cloud-based interfaces, particularly for features like KPI dashboards and automated reporting that replace legacy paper or spreadsheet workflows.

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 AeronaClinic objects map to Twenty CRM

Each row shows how a AeronaClinic 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.

AeronaClinic

Patient / Client

maps to

Twenty CRM

People

1:1
Fully supported

AeronaClinic patient records map 1:1 to Twenty People. Every demographic field (name, DOB, contact details, address) translates directly. NHS number and SDS number migrate as custom fields on the People record — Twenty has no native healthcare identifier fields, so these are pre-created in Settings → Data Model before the import.

AeronaClinic

Patient Consent Record

maps to

Twenty CRM

People (custom fields)

1:1
Fully supported

GDPR consent flags, opt-in dates, and e-signature timestamps stored in AeronaClinic's consent module have no native equivalent in Twenty. These map to custom select and datetime fields on the People object. Consent type (treatment, marketing, data retention) requires a separate custom pick-list created in Twenty Data Model before migration.

AeronaClinic

Medical History / Clinical Notes

maps to

Twenty CRM

People (custom fields) + Notes

1:1
Fully supported

AeronaClinic stores structured medical history fields (allergies, conditions, medications, medical alerts) alongside free-text clinical notes. Structured fields migrate as custom fields on People. Free-text clinical notes attach as Twenty Notes linked to the People record. Tooth-charting data (quadrant, tooth number, surface condition) requires custom fields since Twenty Notes does not support structured dental charting notation.

AeronaClinic

Clinic / Practice

maps to

Twenty CRM

Company

1:1
Fully supported

AeronaClinic's clinic or practice entity maps directly to Twenty Companies. Practice name, address, phone, and website translate to Twenty's standard Company fields. Multi-location clinic groups (parent practice with satellite clinics) map to Twenty Company hierarchy using the parentId field. Each location must be exported as a separate Company record.

AeronaClinic

Appointment

maps to

Twenty CRM

Opportunity

1:1
Fully supported

AeronaClinic appointments become Twenty Opportunities. The appointment date maps to the Opportunity closeDate field. Appointment status (Booked, Arrived, In Treatment, Completed, No Show, Cancelled) maps via value_mapping to a custom pick-list field (Appointment_Status__c) since Twenty Opportunity StageName is a sales-stage pick-list and not semantically aligned with clinical appointment states.

AeronaClinic

Treatment Plan

maps to

Twenty CRM

Opportunity (custom fields)

1:1
Fully supported

AeronaClinic treatment plans contain treatment type, prescribed procedures, estimated cost, and clinical notes. These map to a linked Opportunity record with custom fields: Treatment_Type__c (pick-list), Procedures__c (multi-select), Estimated_Cost__c (currency), Treatment_Notes__c (text), and Tooth_Number__c (text for charting notation). Treatment plan status (Proposed, Accepted, In Progress, Completed) maps to the Opportunity StageName with value_mapping.

AeronaClinic

Invoice / Billing Record

maps to

Twenty CRM

Opportunity (custom fields)

1:1
Fully supported

AeronaClinic invoice records map to Opportunities with custom fields for billing details: Invoice_Number__c, Invoice_Amount__c, Amount_Paid__c, Payment_Method__c (card, cash, direct debit via GoCardless/Stripe), Payment_Status__c (Paid, Partial, Overdue), and Invoice_Date__c. The Opportunity Amount field holds the outstanding balance. Payment integrations must be rebuilt in Twenty.

AeronaClinic

Treatment Record

maps to

Twenty CRM

Custom Object + Notes

1:many
Fully supported

AeronaClinic treatment records contain detailed clinical data (procedure performed, tooth number/surface, materials used, clinician, duration, clinical notes). This maps as a custom Treatment_Record object in Twenty linked to the parent Opportunity (appointment). Free-text clinical notes attach as Twenty Notes on the treatment record. Tooth-charting notation (FDI or Palmer) is stored in a custom Tooth_Chart__c field on the treatment record.

AeronaClinic

User / Team Member / Clinician

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

AeronaClinic staff and clinician accounts map to Twenty Workspace Members. Owner resolution happens by email match — each AeronaClinic owner email is matched against invited Twenty workspace members. Unmatched owners are flagged and assigned to a fallback Workspace Member before migration so no record lands without an owner.

AeronaClinic

Attachment / Document

maps to

Twenty CRM

Notes (with attachments)

1:1
Fully supported

AeronaClinic file attachments (consent forms, treatment plans, X-rays) re-upload as Twenty Notes with file attachments linked to the parent record (People, Opportunity, or custom Treatment_Record object). File size limits apply (Twenty default 25MB per file). Inline images in clinical notes are downloaded and rehosted.

AeronaClinic

Automated Recall / Appointment Reminder

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

AeronaClinic recall sequences and automated appointment reminders have no direct equivalent in Twenty. These automations must be rebuilt in Twenty Workflows (Settings → Workflows) after migration. FlitStack exports the recall rule definitions as a structured JSON reference document for your Twenty admin to use during the rebuild phase.

AeronaClinic

Payment Integration (GoCardless, Stripe)

maps to

Twenty CRM

No Equivalent

1:1
Fully supported

AeronaClinic's native GoCardless and Stripe integrations reconcile payments directly within the platform. Twenty has no native payment gateway — this must be rebuilt using a third-party integration (Stripe Connect, GoCardless API) after migration. Payment transaction history and reconciliation records do migrate as custom fields on the relevant Opportunity.

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.

AeronaClinic logo

AeronaClinic gotchas

High

Password-protected API limits export options

Medium

Large historical record volumes in dental practices

Medium

Payment plan instalment schedules require manual sign-off

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

  • NHS/SDS numbers and consent records require custom field pre-creation in Twenty

    Twenty has no native healthcare identifier fields — NHS numbers, SDS numbers, consent dates, consent types, and medical alerts are not part of its standard People schema. These fields must be created in Twenty Settings → Data Model before the import CSV can validate. If you skip this step, the migration plan flags every affected field as a pre-requisite and the import pauses until the custom fields exist. This is a hard dependency: you cannot import NHS numbers into a field that has not been defined in Twenty's Data Model. We surface the complete custom field manifest before the migration runs so your Twenty admin can pre-create everything in the correct order.

  • Twenty's 20,000-record CSV export limit requires batched exports for large practices

    Twenty's CSV export function caps at 20,000 records per export operation. Practices with more than 20,000 combined patient, appointment, and treatment records must run multiple exports split by object type or date range. This means Companies, People, and Opportunities must each be exported separately and in the correct load order (Companies first, then People, then Opportunities) with cross-reference IDs maintained across batches. If your AeronaClinic dataset exceeds 20,000 records, we generate a batch-split export plan that preserves referential integrity across all three export files. Failure to batch correctly orphans Opportunity-to-Company and People-to-Company relationships.

  • AeronaClinic appointment status has no native mapping to Twenty Opportunity StageName

    AeronaClinic tracks appointment lifecycle states — Booked, Arrived, In Treatment, Completed, No Show, Cancelled — using a dedicated status field. Twenty Opportunities use StageName for pipeline progression, which is designed for sales-stage semantics (Prospecting, Qualification, Proposal, Negotiation, Closed Won). These two models are not interchangeable. We map appointment status to a custom pick-list field (Appointment_Status__c) on the Opportunity rather than reusing StageName. This keeps your Twenty pipeline report clean for sales deals while preserving the full clinical appointment state history. Your Twenty admin must create this custom field in Settings → Data Model before the migration validates.

  • Treatment plan and tooth-charting data cannot use Twenty Notes for structured clinical records

    AeronaClinic stores treatment plans with structured fields: procedure type, tooth number, surface, materials used, and clinical notes. Twenty Notes are free-text only — they do not support structured data fields or dental notation formats (FDI, Palmer). Migrating tooth-charting data as plain-text notes loses the structured relationship between tooth number, surface, and procedure. We solve this by creating a custom Treatment_Record object in Twenty Data Model with dedicated fields for Tooth_Number__c (text), Surface__c (multi-select), Procedure__c (pick-list), and Materials_Used__c (text). Clinical notes attach as Twenty Notes on the treatment record. This approach requires your Twenty admin to create the custom object and its fields before the migration runs.

  • Automations, recall sequences, and GoCardless/Stripe integrations do not migrate

    AeronaClinic appointment reminders, recall sequences, and patient communication automations are platform-native constructs that have no equivalent in Twenty's data model. Similarly, native GoCardless and Stripe payment integrations reconcile transactions inside AeronaClinic — these cannot be recreated in Twenty without rebuilding the connection via the payment gateway APIs. FlitStack AI migrates data and schema only. We export your recall rule definitions as a structured JSON document so your Twenty admin can rebuild appointment reminders in Settings → Workflows. Payment reconciliation requires a separate integration project using Stripe Connect or GoCardless developer credentials after go-live.

Migration approach

Six steps for a successful AeronaClinic to Twenty CRM data migration

  1. Audit AeronaClinic data export and create Twenty custom field manifest

    We connect to AeronaClinic via API or direct database export and inventory every object: patient records, medical history fields, consent dates, appointments, treatment plans, invoices, clinic accounts, and staff accounts. Simultaneously, we generate a custom field manifest listing every NHS number field, SDS number field, consent field, medical alert field, appointment status value, and treatment type pick-list that requires a custom field in Twenty Settings → Data Model. Your Twenty admin pre-creates these fields before any validation runs. We also identify records that exceed Twenty's 20,000-record export limit and generate a batch-split export plan.

  2. Resolve AeronaClinic staff accounts to Twenty Workspace Members

    Every owner and clinician in AeronaClinic must have a corresponding Twenty Workspace Member account for record ownership to map correctly. We extract the AeronaClinic user list, match each owner email against invited Twenty workspace members, and flag any AeronaClinic staff without a Twenty account. Your team either invites them to Twenty before migration or designates a fallback Workspace Member to own their records. No record migrates without a resolved owner — this prevents orphaned opportunities that are invisible to pipeline reports in Twenty.

  3. Migrate Companies, then People, then Opportunities in correct load order

    Twenty enforces referential integrity: Company records must exist before People can reference them via companyId, and People records must exist before Opportunities can reference them. We sequence the migration as a strict three-pass ETL: (1) Companies — practice names, addresses, phone, website, parentId for multi-location hierarchies; (2) People — patient demographics, NHS/SDS numbers, consent dates, medical alerts, linked to the correct Company via companyId; (3) Opportunities — appointments, treatment plans, invoices linked to the correct People and Company. Custom Treatment_Record objects load last since they reference both People and Opportunities. Every pass preserves original AeronaClinic creation timestamps as custom datetime fields.

  4. Run sample migration with field-level diff and validate custom field mapping

    We run a representative sample migration — typically 200–500 records spanning patients, appointments, treatment plans, and invoices across multiple clinics — before committing the full dataset. The field-level diff compares source AeronaClinic values against the corresponding Twenty fields for every mapped record. We verify that NHS numbers and SDS numbers land in the correct custom fields, that appointment status values map to the Appointment_Status__c pick-list without truncation, that tooth-charting data is structured in the Treatment_Record custom object, and that owner assignment resolves by email match. You review the diff before the full migration proceeds.

  5. Execute full migration with delta-pickup window and audit log

    The full migration runs against Twenty using batched API calls that respect the 100 calls/min limit (Pro tier). A delta-pickup window — typically 24–48 hours from the start of cutover — captures any records created or modified in AeronaClinic during the migration run. FlitStack generates a complete audit log covering every record written, every field transformed, every owner resolved, and every value mapped. If reconciliation fails, one-click rollback reverts the Twenty workspace to its pre-migration state. After validation, your team is ready to go live in Twenty with the full AeronaClinic dataset — minus workflows, recall sequences, and payment integrations, which require manual rebuild in Twenty Settings → Workflows and a separate payment gateway integration project.

Platform deep dives

Context on both ends of the pair

AeronaClinic logo

AeronaClinic

Source

Strengths

  • Fully cloud-based with no local server dependency, accessible from any browser on any device.
  • Integrated payment processing via GoCardless and Stripe with automatic reconciliation.
  • Patient Portal enables 24/7 appointment booking, form completion, and treatment plan viewing by patients.
  • Strong customer service reputation with 5.0/5.0 score for support on Capterra.
  • Built-in GDPR consent recording and e-signature features for UK/EU regulatory compliance.

Weaknesses

  • No native mobile application, limiting access for practitioners who prefer tablet or phone workflows.
  • Narrower feature set compared to enterprise dental platforms like Dentrix Ascend or CareStack, potentially requiring third-party integrations for specialist workflows.
  • The API documentation is password-protected and not publicly accessible, complicating third-party migration tooling and data export.
  • Limited published pricing information beyond the £45/month starting rate, with no public tier comparison.
  • Analytics and reporting dashboards are functional but lack the customisation depth that power users and multi-location practices require.
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 AeronaClinic 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

    AeronaClinic: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your AeronaClinic 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 AeronaClinic to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most AeronaClinic to Twenty migrations complete in 48–72 hours of clock time for under 20,000 total records. The longest planning step is pre-creating the custom fields (NHS_Number__c, SDS_Number__c, Consent_Date__c, Appointment_Status__c, Treatment_Type__c, Tooth_Number__c) in Twenty Settings → Data Model — this typically takes 1–3 days depending on how many healthcare-specific fields your AeronaClinic schema contains. Larger practices exceeding Twenty's 20,000-record CSV export limit need batched exports, extending the timeline to 7–14 days. The delta-pickup window (24–48 hours) is included in the overall timeline.

Adjacent paths

Related migrations to explore

Ready when you are

Move from AeronaClinic.
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