CRM migration

Migrate from Bp Premier to Twenty CRM

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

Bp Premier logo

Bp Premier

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Bp Premier and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours of active migration work

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Bp Premier is a medical practice management system built for Australasian healthcare providers — it stores patient demographics, clinical measurements, prescription records, appointment histories, and My Health Record integration. Twenty CRM is an open-source CRM built on TypeScript, NestJS, and PostgreSQL with standard People, Companies, and Opportunities objects plus custom object support on Professional and Organization tiers. The two data models diverge significantly: Twenty has no native clinical field types, so blood pressure readings, BMI values, prescription dates, and MySL prescription identifiers must be created as custom fields in Twenty before migration. We export patient records and associated clinical data from Bp Premier via its built-in export function, transform the schema to Twenty's object structure, and load via Twenty's CSV importer or API using the Companies → People → Opportunities sequence to respect foreign-key dependencies. Workflows, automations, and clinical templates in Bp Premier do not migrate — FlitStack provides a workflow audit export as a rebuild reference for Twenty's workflow builder. Delta-pickup captures any records modified during cutover, and one-click rollback is available if reconciliation fails.

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

Bp Premier logo

Bp Premier

What's pushing teams away

  • The Windows server-based architecture requires dedicated IT infrastructure and manual patching, which smaller practices find burdensome compared to cloud-native alternatives.
  • Known issues in certain Bp Premier versions, including MySL date-created quirks and callstack alerts, cause frustration when support cannot resolve them quickly.
  • No publicly documented REST API limits external integrations, making Bp Premier difficult to connect with modern healthcare analytics, patient portals, or automated workflows.
  • Transitioning between Bp Premier versions (e.g., moving to Orchid) requires a full reinstall and data migration, creating significant downtime risk for practices.
  • Practices migrating to cloud-first platforms like Epic or ModMed report that the absence of a modern API makes automated data portability difficult and vendor-dependent.

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

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

Bp Premier

Patient Record

maps to

Twenty CRM

People

1:1
Fully supported

Bp Premier patient records map directly to Twenty's People object. Name, date of birth, gender, contact details, and address fields transfer as standard Twenty fields. Clinical measurement fields (blood pressure, pulse, BMI) require custom fields on the People object since Twenty has no native clinical field types. The original Bp Premier record creation date is preserved as a custom datetime field in Twenty.

Bp Premier

Patient Clinical Notes

maps to

Twenty CRM

People (custom field)

1:1
Fully supported

Bp Premier clinical notes from the patient record map to a long-text custom field (Clinical_Notes__c) on the Twenty People record. Notes are appended as a single concatenated text block with timestamps to preserve context. If notes contain structured data (e.g., SOAP format), individual components may be extracted into separate custom fields per your specification.

Bp Premier

Prescription Record (MySL)

maps to

Twenty CRM

People (custom fields)

1:1
Fully supported

Bp Premier's MySL module tracks prescriptions with drug name, dosage, directions, and date prescribed. These map to a set of custom fields on the Twenty People record: Prescription_Drug__c, Prescription_Directions__c, and Prescription_Date__c. Each prescription becomes a separate related record if Twenty's custom object model is extended for prescriptions.

Bp Premier

Allergy Record

maps to

Twenty CRM

People (custom field)

1:1
Fully supported

Allergy data stored in Bp Premier patient records transfers as a custom text or multi-select field (Allergies__c) on the Twenty People object. Multi-select format is used if Bp Premier stores allergies as discrete values; free-text if stored as a single notes field.

Bp Premier

Appointment Book Entry

maps to

Twenty CRM

Tasks (custom field link)

1:1
Fully supported

Bp Premier appointment records do not map to a native Twenty object. We create a custom task record linked to the corresponding People record, storing appointment date, type, duration, and practitioner as custom fields. This preserves appointment history in Twenty's task model without requiring a separate custom object.

Bp Premier

Document Attachment

maps to

Twenty CRM

Notes / File Attachments

1:1
Fully supported

Bp Premier file attachments stored against patient records (e.g., scanned referral letters, imaging reports) are downloaded and re-uploaded as Twenty Notes or file attachments linked to the corresponding People record. File size limits are respected; inline images in clinical notes are extracted and rehosted.

Bp Premier

User / Practitioner

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Bp Premier staff and practitioner records are mapped to Twenty Workspace Members by email match. Unmatched practitioners are flagged before migration — your team either creates their Twenty user account first or assigns their records to a fallback workspace member. Practitioner specialty and provider numbers are preserved in custom fields on the Workspace Member record.

Bp Premier

My Health Record Identifier (HPI-O / HPI-I)

maps to

Twenty CRM

People (custom field)

1:1
Fully supported

Bp Premier stores each patient's HPI-O (Healthcare Provider Identifier - Organisation) and each practitioner's HPI-I. These are Australian My Health Record identifiers with no equivalent in Twenty. We preserve both as custom text fields on the People record (My_Health_Record_HPIO__c and My_Health_Record_HPII__c) so the identifiers are searchable post-migration even though Twenty has no native My Health Record integration.

Bp Premier

Custom Field / User-Defined Property

maps to

Twenty CRM

Custom Field (same type)

1:1
Fully supported

Any Bp Premier custom fields your practice has configured map directly to identically typed custom fields created in Twenty before migration. Text fields to text, date fields to date, pick-list values to select fields. The field name in Twenty may need sanitization (spaces removed, special characters stripped) to comply with Twenty's field-naming constraints.

Bp Premier

Insurance / Billing Details

maps to

Twenty CRM

People (custom fields) or Companies

1:1
Fully supported

Bp Premier insurance provider and billing reference fields map to custom fields on the People record (Insurance_Provider__c, Insurance_Reference__c). If Bp Premier stores insurance company details as a separate entity, that maps to a Twenty Companies record linked to the People record via companyId.

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.

Bp Premier logo

Bp Premier gotchas

High

MySL prescription date-created has inconsistent behavior

High

My Health Record uploads are immutable and non-extractable

High

No REST API — migration relies entirely on export tools

Medium

Server-to-server migration requires full reinstall

Low

Legacy version data format differences

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

  • Database migrations run after each version upgrade can leave a blank CRM on self-hosted Twenty

    Twenty's self-hosted deployment runs database migrations automatically when the Docker image is updated, but teams have reported that in some version-to-version jumps (e.g., 1.3.0 to 1.6.7), the workspace appears blank after the server restarts. This is a Twenty-level upgrade issue unrelated to migration but directly affects self-hosted teams who need a stable CRM environment before migration data can be validated. FlitStack confirms the Twenty workspace is fully accessible and the database migrations have completed without errors before beginning data import — if the CRM is blank post-upgrade, we flag this to your admin before migration runs.

  • Bp Premier clinical fields have no native Twenty equivalent and require pre-created custom fields

    Blood pressure (systolic/diastolic), pulse rate, BMI, prescription identifiers (MySL), and HPI-O/HPI-I healthcare identifiers stored in Bp Premier have no corresponding field type in Twenty's standard People object. Twenty's data model supports custom fields on all standard objects, but these must be created in Twenty before migration begins — the field type must be chosen correctly (Number for BP/pulse/BMI, Text for prescription IDs and HPI values) and the field names must follow Twenty's naming conventions (alphanumeric, no spaces). We deliver a custom field creation plan based on your Bp Premier schema before the migration runs so Twenty is schema-ready when data arrives.

  • Bp Premier's My Health Record integration cannot migrate — HPI-O and HPI-I are orphaned identifiers post-migration

    Bp Premier integrates with Australia's My Health Record system via the HI Service, requiring an HPI-O for the practice and HPI-I for each practitioner, plus a NASH certificate. Twenty has no native My Health Record integration and no equivalent identifier model — your migrated patient records will carry the HPI-O and HPI-I values as custom text fields (My_Health_Record_HPIO__c and My_Health_Record_HPII__c) for reference, but the integration itself must be re-established by reconfiguring PRODA, HPOS, and the NASH certificate in whatever system handles My Health Record after migration. We surface this as a non-migratable dependency in the migration plan.

  • Workflows, automations, and clinical task routing in Bp Premier do not migrate to Twenty's workflow builder

    Bp Premier's built-in workflow engine handles appointment reminders, prescribing alerts, clinical task routing, and practice management automations. Twenty's workflow builder supports internal automations (field updates, task creation, notification triggers) but does not have a native equivalent for Bp Premier's clinical workflow model. Sequence-based sales cadences and follow-up flows in Twenty also require either the workflow builder or a third-party sequencing tool. We export your Bp Premier workflow definitions as a structured reference document for your Twenty admin to use when rebuilding automations in Twenty's workflow builder.

  • Bp Premier's built-in export function produces per-patient files — not a full relational database dump

    Bp Premier's export function allows exporting individual patient records, patient sets, or the full patient database, but the output is structured around the patient record as the primary unit, not as a set of relational tables. Clinical measurements, prescriptions, and appointment history are exported within or alongside the patient record rather than as separate related tables. This means the export must be deconstructed before mapping to Twenty's relational object model (People → Tasks for appointments, People → custom fields for clinical data). We handle this deconstruction during the transform phase and validate that all related records are correctly linked in Twenty after import.

Migration approach

Six steps for a successful Bp Premier to Twenty CRM data migration

  1. Profile Bp Premier data and create Twenty custom fields

    FlitStack audits your Bp Premier schema — patient record fields, clinical measurements, MySL prescription identifiers, appointment structures, and any custom fields your practice has configured. We identify all fields that have no native Twenty equivalent (blood pressure, BMI, HPI-O, HPI-I, prescription data) and deliver a custom field creation plan for Twenty. Your admin (or our team) pre-creates these fields in Twenty before migration begins so the schema is ready when data arrives.

  2. Resolve practitioners and staff by email

    Bp Premier practitioner and staff user IDs are matched against Twenty Workspace Members by email lookup. We perform an exact match on email addresses to link Bp Premier practitioners to their corresponding Twenty user accounts. Any practitioners without matching Twenty accounts are flagged in a pre-migration report with clear instructions: either create the Twenty user account beforehand or designate a fallback Workspace Member to own those records. This step ensures that appointment tasks, clinical notes, and prescription records in Twenty are correctly attributed to the responsible practitioner — no record enters Twenty without an assignee confirmed.

  3. Export, transform, and sequence the import by dependency order

    We pull patient records and clinical data from Bp Premier via its built-in export function, deconstruct the per-patient export into relational rows, and transform them to match Twenty's object structure. The import follows Twenty's documented dependency chain: Companies first (if insurance providers are stored as separate entities), then People with companyId links resolved, then Tasks for appointment history, and finally custom object rows for prescription records if a custom prescription object is created. Foreign-key dependencies are validated before each batch commits.

  4. Run sample migration with field-level diff

    A representative slice of patient records (typically 50–200 spanning different record ages and clinical complexity) migrates first. We generate a field-level diff between the Bp Premier source fields and the corresponding Twenty records so you can verify that blood pressure values, prescription dates, MySL IDs, and HPI-O/HPI-I identifiers landed correctly. Clinical note completeness and appointment linkage are spot-checked before the full run commits.

  5. Cut over with delta-pickup and rollback available

    The full migration runs against Twenty. A delta-pickup window (typically 24–48 hours) captures any patient records modified or newly created in Bp Premier during the cutover so Twenty reflects Bp Premier's final state at go-live. Audit log captures every operation, and one-click rollback is available if reconciliation fails. Bp Premier remains accessible and read-only during this window — your team can continue using it until you confirm Twenty is the live system.

Platform deep dives

Context on both ends of the pair

Bp Premier logo

Bp Premier

Source

Strengths

  • Purpose-built for Australian and New Zealand healthcare regulation with Medicare and NASH certificate support.
  • On-premise data residency gives practices direct control over patient data compliance.
  • Strong customer support reputation with a dedicated team based in Australia and New Zealand.
  • Integrated My Health Record, eRx, and PRODA connections without third-party middleware.
  • AI scribe integration (Lyrebird) directly embedded in the clinical workflow.

Weaknesses

  • No publicly documented REST API for programmatic data access or automated migration.
  • Windows server-based deployment requires dedicated infrastructure, IT management, and manual software updates.
  • Data portability is entirely dependent on vendor-provided export tools or direct database access.
  • Known version-specific bugs (e.g., MySL date-created behavior) require workarounds during data extraction.
  • No native cloud sync or SaaS delivery model limits remote access and multi-location support.
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 Bp Premier 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

    Bp Premier: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Bp Premier to Twenty migrations complete within 48–72 hours of active work for under 50,000 patient records. Larger setups with 100,000+ records, extensive clinical measurement fields, and MySL prescription history extend to 5–10 days. The primary time driver is the custom field creation step in Twenty — every clinical property (blood pressure, BMI, prescription dates) needs a matching custom field created before the Bp Premier schema can map cleanly. Data profiling and sequencing (Companies → People → Tasks) adds 1–2 days regardless of record volume.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Bp Premier.
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