CRM migration
Field-level mapping, validation, and rollback between Zedmed and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Zedmed
Source
Twenty CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Zedmed and Twenty CRM.
Complexity
BStandard
Timeline
3–5 days
Overview
Teams move from Zedmed to Twenty CRM when they need a modern open-source CRM with API access, transparent per-seat pricing, and self-hosting options — instead of Zedmed's on-premise infrastructure, per-user licensing, and limited extensibility. The migration is architecturally complex because Zedmed stores healthcare data (patient demographics, appointment bookings, Medicare/DVA billing items, clinical encounters, prescriptions, referrals, investigation results) that Twenty CRM's standard People, Companies, and Opportunities objects do not natively accommodate. FlitStack AI extracts Zedmed patient records and maps them to Twenty's People object with name, email, phone, address, and custom fields for Medicare/DVA numbers. Appointments become a custom PatientAppointments object linked to the patient People record, preserving appointment type, status, practitioner, date, time, and duration. Clinical encounters, prescriptions, referrals, and investigations migrate as custom objects. Zedmed billing items map to a custom BillingItems object. We preserve original create and update timestamps, practitioner attribution, and source system IDs for audit continuity. The migration runs via direct export from Zedmed's data layer, transforms to Twenty's CSV import format or API, and includes a 24–48 hour delta pickup window. Workflows, automations, and clinical rules do not transfer — we export Zedmed configuration as a rebuild reference for your team.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Zedmed 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.
Zedmed
Patient
Twenty CRM
People
1:1Zedmed patient records map directly to Twenty's People object. Name fields (firstname, lastname), email, phone, mobilephone, address fields, date of birth, and gender transfer as-is. Medicare/DVA number and healthcare identifier migrate to custom text fields on the People record. Active/inactive status preserved as a custom field.
Zedmed
Practitioner
Twenty CRM
People (with custom field)
1:1Zedmed practitioners (doctors, specialists, allied health) map to Twenty's People object with a custom Practitioner_Role__c field set to the practitioner's role type (GP, Specialist, Allied Health). Practitioners must be invited to Twenty as workspace members before import so the relation resolves correctly.
Zedmed
Practice Organization
Twenty CRM
Company
1:1Zedmed practice-level data — including clinic name, primary address, contact phone number, email address, and website URL — maps directly to Twenty's Company object. For multi-location practices operating across several sites, each physical location becomes a separate Company record in Twenty, allowing you to maintain clear associations between each site and its assigned practitioners, staff members, and patient cohorts.
Zedmed
Appointment
Twenty CRM
Custom Object: PatientAppointments
1:1Zedmed appointments have no native equivalent in Twenty CRM. We create a PatientAppointments custom object in Settings → Data Model with fields for appointment type, status, date, start/end time, duration, practitioner (linked to People), location, specialty, and notes. Each appointment links to the patient People record via a relation field.
Zedmed
Billing Item / Invoice
Twenty CRM
Custom Object: BillingItems
1:1Zedmed billing items (MBS item numbers, Medicare/DVA/private fees, payment status, claiming history) have no native equivalent in Twenty CRM. A BillingItems custom object stores invoice number, item number, fee type, Medicare amount, private amount, payment status, claim status, and payer type — all as custom fields on the object linked to the patient People record.
Zedmed
Clinical Encounter
Twenty CRM
Custom Object: ClinicalEncounters
1:1Zedmed clinical encounter records (consultation notes, date, type, practitioner, summary) require a ClinicalEncounters custom object in Twenty. Encounter type (New Patient, Standard, Care Plan, etc.), encounter date, practitioner (linked to People), and clinical notes transfer as custom fields. The object links to the patient People record.
Zedmed
Prescription
Twenty CRM
Custom Object: Prescriptions
1:1Zedmed e-prescriptions and prescribing records have no equivalent in Twenty CRM. A Prescriptions custom object captures medication name, dosage, route (oral, topical, etc.), frequency, start date, end date, prescriber (linked to People), status (active/ceased), and notes. The object links to the patient People record.
Zedmed
Referral
Twenty CRM
Custom Object: Referrals
1:1Zedmed referral records (referral type, status, referring practitioner, receiving practitioner/organisation, request date, review date, notes) map to a Referrals custom object in Twenty CRM. Referral type (GP to Specialist, Allied Health, etc.), status (Pending, Accepted, Declined), referring and receiving practitioner names, and clinical notes transfer as custom fields.
Zedmed
Investigation Result
Twenty CRM
Custom Object: InvestigationResults
1:1Zedmed pathology and imaging results (test type, status, date, results text, units, reference range, pathology lab) require an InvestigationResults custom object. Test type, status (Pending, Received, Reviewed), result date, results summary, and reference range become custom fields. Results link to the patient People record.
Zedmed
Payer / Health Fund
Twenty CRM
Custom Object: Payers (reference data)
1:1Zedmed payer records (Medicare, DVA, WorkCover, TAC, private health funds, fee schedules) have no CRM equivalent. We extract payer names and store them as values in a custom select field on BillingItems rather than as separate records. The payer fee schedules migrate as a lookup reference or are preserved as CSV export for reference.
| Zedmed | Twenty CRM | Compatibility | |
|---|---|---|---|
| Patient | People1:1 | Fully supported | |
| Practitioner | People (with custom field)1:1 | Fully supported | |
| Practice Organization | Company1:1 | Fully supported | |
| Appointment | Custom Object: PatientAppointments1:1 | Fully supported | |
| Billing Item / Invoice | Custom Object: BillingItems1:1 | Fully supported | |
| Clinical Encounter | Custom Object: ClinicalEncounters1:1 | Fully supported | |
| Prescription | Custom Object: Prescriptions1:1 | Fully supported | |
| Referral | Custom Object: Referrals1:1 | Fully supported | |
| Investigation Result | Custom Object: InvestigationResults1:1 | Fully supported | |
| Payer / Health Fund | Custom Object: Payers (reference data)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Zedmed gotchas
No public API — database extraction requires Zedmed support
v39 forces ZedSMS-only SMS after upgrade
Clinical WP Templates require RTF format and may be incompatible
Browser cloud restrictions affect document printing
P1/P2/P3 private fee levels require explicit mapping
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Discovery audit and extraction from Zedmed
FlitStack AI conducts a discovery phase against Zedmed: sample data extraction from the Zedmed database (for on-premise) or coordinated export (for cloud instances) to understand the data model in your specific practice setup. We identify all patient records, practitioner records, appointments, billing items, clinical encounters, prescriptions, referrals, and investigation results. We document field formats, value distributions, null rates, and duplicates. This produces a Zedmed-specific mapping document that names every source table and field alongside its Twenty CRM destination object and field — including which fields require custom objects and which require custom fields in Settings → Data Model.
Build Twenty CRM schema: custom objects and custom fields
Before any data loads, your Twenty CRM workspace requires the custom objects (PatientAppointments, BillingItems, ClinicalEncounters, Prescriptions, Referrals, InvestigationResults) and custom fields (Medicare_Number__c, DVA_Number__c, Provider_Number__c, Practitioner_Role__c, etc.) created in Settings → Data Model. FlitStack delivers a schema setup plan based on the discovery audit so your admin creates all required fields before validation runs. Practitioners must also be invited to Twenty as workspace members before the migration, otherwise practitioner-to-patient relations cannot resolve during import.
Run a test migration with field-level diff
A representative sample of records migrates first — typically 100–500 records spanning patients, practitioners, appointments, and billing items. We generate a field-level diff comparing source Zedmed values against the migrated Twenty records so you can verify Medicare number formatting, practitioner relations, appointment status values, and billing item accuracy. Custom object field types and relation mappings are validated at this stage. Any incorrect mappings are corrected before the full run.
Execute full migration with practitioner and patient relations
The full migration runs in the correct import order: Company records first (if multiple practice locations exist), then People records for patients and practitioners, then custom objects (ClinicalEncounters, Prescriptions, Referrals, InvestigationResults linked to patient People records), then PatientAppointments, then BillingItems. Practitioner-to-patient relations resolve by matching practitioner email or Zedmed practitioner ID to the practitioner People record created in step one. Each operation is logged in the audit trail.
Delta pickup for in-flight records and go-live
A delta-pickup window (24–48 hours) captures any appointments booked, billing items created, or patient records updated in Zedmed during the cutover period. FlitStack runs a final reconciliation comparing source record counts and a spot-check of field values against Twenty records. An audit log documents record counts per object and any records that required manual resolution. One-click rollback is available if reconciliation identifies unexpected discrepancies. Workflows, automations, prescribing rules, and clinical protocols do not migrate — FlitStack exports Zedmed configuration settings as a reference document for your team to rebuild in Twenty's workflow builder.
Platform deep dives
Zedmed
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Zedmed and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Zedmed: Not publicly documented.
Data volume sensitivity
Zedmed doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Zedmed to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Zedmed to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Zedmed
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.