CRM migration

Migrate from Gensolve Practice Manager to Twenty CRM

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

Gensolve Practice Manager logo

Gensolve Practice Manager

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Gensolve Practice Manager and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Gensolve Practice Manager structures its universe around the client record — a flat entity that carries personal details, Medicare and health-fund numbers, practitioner assignments, appointment history, clinical notes, referral source data, and custom form responses all in one place. There is no native Gensolve API export; data extraction requires a managed export through Gensolve support or a third-party migration tool, which produces CSV files that FlitStack AI ingests and restructures. Twenty CRM uses a relational object model: People, Companies, Opportunities, Tasks, Notes, and custom objects linked by foreign keys. The migration therefore has to decompose Gensolve's flat client rows into normalized Twenty records — splitting address components into Twenty's address fields, routing practitioner email addresses to Workspace Members that must exist before import, separating referral entities into Companies with a referrer type tag, and linking appointment and clinical-note rows back to their parent People records via Twenty's peopleId. Gensolve custom form fields (configured via GPM Custom Fields) require Twenty custom fields created in Settings → Data Model before the CSV import runs. Gensolve workflows, appointment reminders, and SMS/email templates do not migrate — those live in Gensolve's scheduling engine and must be rebuilt in Twenty's workflow builder or via a third-party sequencing tool. The migration runs with scoped read access on Gensolve, a sample-diff pass on a representative record slice, then a full bulk import with a 24–48 hour delta-pickup window for in-flight changes 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

Gensolve Practice Manager logo

Gensolve Practice Manager

What's pushing teams away

  • Patient communication via SMS and email is described as clunky and difficult to interact with, requiring workarounds for routine outreach.
  • Finance staff find Gensolve's accounting module confusing and cumbersome compared to standalone bookkeeping tools.
  • The platform lacks customization in reporting—some data requires running two separate reports to assemble a complete picture.
  • Marketing functionality is poor, with limited tools for patient acquisition campaigns and campaign tracking.
  • A steep learning curve means new staff require significant training time before becoming productive.

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 Gensolve Practice Manager objects map to Twenty CRM

Each row shows how a Gensolve Practice Manager 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.

Gensolve Practice Manager

Client

maps to

Twenty CRM

People

1:1
Fully supported

Gensolve client records map directly to Twenty People. The client name splits into FirstName + LastName where available; single-field client names land in FirstName with LastName blank and a display-name note. All standard contact fields (phone, email, address) map 1:1; practitioner assignment, Medicare number, and health-fund data migrate as custom fields on the People record.

Gensolve Practice Manager

Client.Address (flattened)

maps to

Twenty CRM

People (address fields)

1:1
Fully supported

Gensolve stores address as separate columns (address1, suburb, state, postcode, country). These decompose into Twenty's address1, address2, city, state, and country fields. Postcode requires no transformation; country defaults to the Gensolve deployment region (AU or NZ) if not explicitly populated.

Gensolve Practice Manager

Referrer

maps to

Twenty CRM

Company (type=Referrer)

1:1
Fully supported

Gensolve referrers (GPs, specialists, allied health referral sources) become Twenty Companies tagged with type=Referrer. Contact name, email, phone, fax, and address map to the equivalent Company fields. The referrer's unique Gensolve ID is preserved as Source_Referrer_ID__c for traceability. When multiple clients reference the same referrer, they all point to the single Company record, maintaining a normalised referrer entity.

Gensolve Practice Manager

Clinic

maps to

Twenty CRM

Company (type=Clinic)

1:1
Fully supported

Gensolve clinic locations become Twenty Companies tagged with type=Clinic. Clinic name, address, phone, and contact person map to Company name, address, phone, and a custom point-of-contact field. Multi-site practices generate multiple Company records, each with a distinct address. The Gensolve clinic ID is preserved as Source_Clinic_ID__c, and appointment data linked to specific clinics reconciles through the clinic reference on associated client records.

Gensolve Practice Manager

Appointment

maps to

Twenty CRM

Task

1:1
Fully supported

Gensolve appointment records migrate as Twenty Tasks. The appointment date maps to Task.dueAt, appointment time is merged into the datetime value. Appointment type (Initial Consultation, Follow-up, etc.) stores as a custom pick-list field. Practitioner assignment resolves to Task.assigneeId via email match against Twenty Workspace Members.

Gensolve Practice Manager

Appointment.Status

maps to

Twenty CRM

Task.status

1:1
Fully supported

Gensolve appointment statuses (Scheduled, Attended, Cancelled, No-Show, DNA) map to Twenty Task status values. 'Attended' and 'Completed' map to Done; 'Scheduled' maps to Todo; 'Cancelled' and 'No-Show'/'DNA' map to a custom cancelled pick-list value. Probability of attendance is not modeled in Twenty Tasks — this data is preserved in a custom field for reporting.

Gensolve Practice Manager

Clinical Note

maps to

Twenty CRM

Note

1:1
Fully supported

Gensolve clinical notes (attached to client sessions) migrate as Twenty Notes linked to the corresponding People record via peopleId. Note body carries the clinical text; note type (Subjective, Objective, Assessment, Plan) stores as a custom pick-list field. CreatedAt timestamps and practitioner author are preserved.

Gensolve Practice Manager

Attachment / File

maps to

Twenty CRM

External storage with link in Note

1:1
Fully supported

Gensolve file attachments (letters, consent forms, imaging files) have no native equivalent in Twenty's current object model. FlitStack AI downloads attachments, uploads them to the Twenty workspace's connected storage (S3-compatible), and creates a Note record with a link to the file URL and original metadata.

Gensolve Practice Manager

Gensolve Custom Form fields

maps to

Twenty CRM

Twenty Custom Field (per object)

1:1
Fully supported

Gensolve custom form fields (e.g., health-fund number, NDIS plan reference, emergency contact details) require pre-created Twenty custom fields in Settings → Data Model before import. Each custom field's data type (text, number, date, pick-list) maps to the equivalent Twenty field type. The Gensolve custom field label becomes the Twenty field label.

Gensolve Practice Manager

Practitioner / Staff user

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Gensolve practitioner and staff accounts map to Twenty Workspace Members. User resolution is by email match — the Gensolve user export must include email addresses. Unmatched practitioners are flagged before migration so the Twenty workspace can be populated first. Role and permission levels require manual configuration in Twenty's Settings → Members.

Gensolve Practice Manager

Client.ReferralSource (lookup)

maps to

Twenty CRM

People.companyId

1:1
Fully supported

Gensolve clients carry a referral source lookup pointing to a Referrer record. After referrers migrate as Companies (step 30), the referral link is reconstructed as People.companyId pointing to the matching Company record. This gives sales-referral attribution reporting in Twenty. Orphaned referral sources — where the Referrer record was not included in the export — are flagged in a validation report for you to either create a placeholder Company or remove the reference.

Gensolve Practice Manager

Deal / Invoice line (if applicable)

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Gensolve practices that track service agreements or billed amounts as Deals map those to Twenty Opportunities. Opportunity.name is the service description, Amount is the fee, StageName is set to Closed Won by default (historical record), and CloseDate is the service date. Pipeline mapping is not applicable for historical data — new opportunities use the default pipeline.

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.

Gensolve Practice Manager logo

Gensolve Practice Manager gotchas

High

Gensolve requires direct support coordination for data exports

High

Xero-linked invoices risk duplication without deduplication flags

Medium

Custom field registry is per-practice and requires enumeration before mapping

Low

SMS and email template content is not stored as standalone records

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

  • Gensolve has no self-service API export — data must be requested through their managed export process

    Gensolve does not expose a public REST or GraphQL API for self-service data extraction. Practices must contact Gensolve support or their account manager to request a managed data export, which produces CSV files for each entity type. This introduces a planning dependency: the export must be requested and scheduled before migration scoping can finalise. FlitStack AI coordinates the export request as part of the discovery phase and receives the files via secure transfer. If Gensolve's export timeline extends beyond the project window, a temporary hold on the migration schedule may be required.

  • Twenty CSV import requires all Workspace Members to exist before importing assigned records

    Twenty's import system enforces referential integrity: practitioner and staff assignments on People records and Tasks require a matching Workspace Member ID in Twenty. Gensolve exports do not always include external IDs that map directly to Twenty users. FlitStack AI requires a Gensolve user list with email addresses before migration day; these must be invited to the Twenty workspace and must accept their invitations before the import runs. Any Gensolve practitioner without an email address requires a fallback assignee rule to be agreed upon before migration.

  • Gensolve custom form fields must be enumerated and pre-created in Twenty before the CSV import

    Gensolve practices frequently have 20–80 custom fields across client intake forms, clinical notes, and referral forms. Twenty's CSV import creates records, not fields — the entire Gensolve custom field inventory must be reviewed in the GPM Custom Forms admin panel and manually replicated in Twenty's Settings → Data Model before import. Fields with pick-list constraints must be created with matching value options; missing options cause import errors that block the affected records. FlitStack AI delivers a custom-field creation checklist as part of the pre-migration schema plan so the Twenty workspace is ready before data lands.

  • Gensolve flat client records require disambiguation before importing into Twenty's relational model

    Gensolve stores practitioner assignment, referral source, and clinic location all on the client record. Twenty uses a relational model where People link to Companies via companyId and to WorkspaceMembers via assignee. If a Gensolve client has an assigned practitioner AND a referral source AND a primary clinic, those three entities must exist as separate Twenty records (WorkspaceMember, Company with type=Referrer, Company with type=Clinic) before the client import can resolve the foreign keys. Circular or missing referrer links — where Gensolve referrals point to records that were excluded from the export — are flagged and reported before the import commits.

  • Twenty CSV import is capped at 20,000 records per operation — large appointment histories require batched loading

    Twenty's documentation specifies a 20,000-record ceiling per CSV import operation. Practices with multi-year appointment histories can accumulate 50,000–200,000+ appointment rows across all clients. These must be chunked into batches of 20,000 or fewer records and imported sequentially, with each batch validated before the next begins. FlitStack AI generates a batch plan as part of the migration schedule; batches are typically segmented by date range (e.g., last 12 months, then 12–24 months, then historical) so the most relevant data lands first.

Migration approach

Six steps for a successful Gensolve Practice Manager to Twenty CRM data migration

  1. Request Gensolve managed data export and enumerate the full schema

    FlitStack AI initiates the Gensolve managed export request on your behalf. While the export is being prepared, we audit your Gensolve admin panel for custom form field lists, user accounts, referrer and clinic entity counts, and appointment date ranges. This gives us the full field inventory needed to plan Twenty custom field creation and import sequencing. We do not touch production Gensolve data at this stage — we use read access and export files only.

  2. Create Twenty custom fields, Workspace Members, and Company records for referrers and clinics

    Before any People or Task records import, the Twenty workspace must have its schema in place. FlitStack AI delivers a custom-field creation checklist mapped from Gensolve's custom form fields — you or your Twenty admin create these in Settings → Data Model. All Gensolve practitioners and staff are invited as Twenty Workspace Members and must accept invitations. Referrers and clinics from the Gensolve export are imported as Companies (tagged by type) so they exist before client records need to link to them via companyId.

  3. Resolve practitioner and staff assignments by email match

    Gensolve practitioner assignments on clients, appointments, and clinical notes are resolved by matching practitioner email addresses from the Gensolve user export against Twenty Workspace Members. Any practitioner without a Twenty account is flagged; you decide whether to invite them to Twenty or assign their records to a fallback Workspace Member. This step runs before any People or Task records are created so that assigneeId foreign keys resolve cleanly on import.

  4. Run a sample migration with field-level diff on a representative record slice

    A sample of 100–500 Gensolve records (spanning clients with appointments, clinical notes, referrer links, and custom fields) migrates into Twenty first. FlitStack AI generates a field-level diff report showing every mapped field, the source value, the destination value, and any null or truncated results. You verify appointment-status value mapping, practitioner assignment resolution, referrer link reconstruction, and custom field population before the full migration commits.

  5. Execute full migration with delta-pickup window for in-flight records

    The full Gensolve dataset loads into Twenty in the correct import order: Companies (referrers and clinics), then People, then Tasks (appointments), then Notes (clinical notes). A delta-pickup window of 24–48 hours runs concurrently with your team's final Gensolve use before go-live, capturing any records created or modified during the cutover period. FlitStack AI provides a reconciliation report comparing Gensolve final state to Twenty state, flags any records that require manual review, and supports one-click rollback if the reconciliation reveals unexpected gaps.

Platform deep dives

Context on both ends of the pair

Gensolve Practice Manager logo

Gensolve Practice Manager

Source

Strengths

  • Specialized Allied Health focus with built-in ACC electronic billing for New Zealand physiotherapy and accident compensation workflows.
  • All-in-one platform consolidates appointments, clinical notes, billing, reporting, and inventory without third-party gaps.
  • Cloud-first architecture with 2-minute incremental backups, AES-256 encryption, and GDPR-compliant AWS hosting.
  • Multi-practitioner diary sharing provides instant visibility across all locations and practitioners in a single view.
  • Established platform since 2001 with stable market presence in Australia and New Zealand Allied Health sectors.

Weaknesses

  • No self-service data export—requires coordinating directly with Gensolve support to initiate a database export.
  • Public API access is limited and documentation is sparse; most integrations rely on partner arrangements rather than open endpoints.
  • Reporting requires running multiple separate reports to assemble complete operational or financial views.
  • Marketing tools lag behind modern SaaS standards, with no built-in campaign management or patient acquisition workflows.
  • Steep feature depth creates a significant learning curve for new staff during onboarding.
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. 2 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 Gensolve Practice Manager and Twenty CRM.

  • Object compatibility

    B

    2 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

    Gensolve Practice Manager: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Gensolve Practice Manager 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 Gensolve Practice Manager to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Gensolve-to-Twenty migrations complete in 48–72 hours of migration-engine time for practices under 20,000 client records. The Gensolve managed export request is the critical path item — it can take 3–10 business days depending on Gensolve support availability. FlitStack AI pipelines the export coordination so the two tracks run in parallel. Practices exceeding 20,000 records or with extensive appointment histories (50,000+ rows) extend to 5–10 days because Twenty's CSV import ceiling of 20,000 records per operation requires batched loading with validation between batches.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Gensolve Practice Manager.
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