CRM migration

Migrate from PracticeHub to Microsoft Dynamics 365 Sales

Field-level mapping, validation, and rollback between PracticeHub and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .

PracticeHub logo

PracticeHub

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

92%

11 of 12

objects map 1:1 between PracticeHub and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

1–2 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

PracticeHub organizes clinic data around patients, appointments, staff, prescriptions, and compliance policies — a flat, clinic-centric model. Dynamics 365 Sales uses a relational hierarchy of Account, Contact, Lead, and Opportunity entities with custom-field extensibility on the Dataverse table model. The migration carries PracticeHub patients as Contacts linked to an Account representing the clinic, appointment history as Activity records, staff as Users or Contact records, and any patient-specific custom properties as custom fields on the Contact entity. Compliance workflows, policy documents, and training records have no CRM equivalent and must be rebuilt in Dynamics via Power Automate or exported as reference archives. The migration is constrained by PracticeHub's API rate limit of 1 request per second, which determines batch sizing and overall timeline. FlitStack AI sequences the load so foreign-key relationships (Account before Contact, Contact before Activity) resolve correctly in Dataverse. Additionally, all timestamps and ownership assignments from PracticeHub are preserved as custom datetime fields to maintain historical accuracy in the target system.

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

PracticeHub logo

PracticeHub

What's pushing teams away

  • The 1 request per second API rate limit makes bulk data extraction painfully slow for practices with thousands of patient records to migrate.
  • Limited public pricing transparency and vague enterprise sales process frustrate small practices seeking quick cost comparisons.
  • Some users report that advanced billing and insurance claim workflows are less mature than dedicated EHR platforms.
  • Support responsiveness varies; smaller customer accounts report slower ticket resolution times.
  • The platform's breadth across compliance, scheduling, and patient engagement means no single feature set is as deep as purpose-built alternatives.

Choosing

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

What's pulling them in

  • Deep Microsoft 365, Teams, and Outlook integration makes Microsoft Dynamics 365 Sales a natural fit for Microsoft-first organizations already invested in that ecosystem
  • Sales Enterprise and Premium tiers offer unlimited custom tables and advanced AI-driven forecasting and predictive analytics not available in lower tiers
  • Professional tier pricing at $65 per user per month offers a lower entry cost than Salesforce for SMB teams with straightforward CRM needs
  • Flexible customization options allow businesses to build bespoke apps, tailor forms and views, and integrate with other Dynamics 365 modules
  • Microsoft Copilot AI tools are embedded directly into the sales workflow on Enterprise and Premium, automating routine tasks and providing deal intelligence

Object mapping

How PracticeHub objects map to Microsoft Dynamics 365 Sales

Each row shows how a PracticeHub object lands in Microsoft Dynamics 365 Sales , including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

PracticeHub

Patient

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

PracticeHub patients map 1:1 to Dynamics 365 Sales Contact records. The patient's primary clinic is set as the Contact's AccountId lookup. For patients with multiple prior clinics in PracticeHub, the most-recently-modified clinic assignment becomes the primary Account; others surface as Account Contact Relationships.

PracticeHub

Clinic

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Each PracticeHub clinic becomes a Dynamics Account record. Clinic name maps to Account.Name, address fields map to Address composites, phone maps to Telephone1, and website maps to WebsiteUrl. Multi-location practices produce multiple Account records linked via ParentAccountId. For practices operating under a parent organization, the top-level clinic becomes the primary Account with subsidiary locations as child Accounts.

PracticeHub

Appointment

maps to

Microsoft Dynamics 365 Sales

Activity (Appointment)

1:1
Fully supported

PracticeHub appointments become Dynamics 365 Sales Appointment activity records. The appointment start time maps to ScheduledStart, end time to ScheduledEnd, status to StateCode/StatusCode composites, and patient to RegardingObjectId lookup on Contact. Practitioner assignment maps to OwnerId resolved by email match against Dynamics Users.

PracticeHub

Prescription

maps to

Microsoft Dynamics 365 Sales

Note

1:1
Fully supported

Prescription records — medication name, dosage, prescriber, and date — migrate as Salesforce Notes attached to the Contact. Each Note's Title carries the medication name and RegardingObjectId points to the patient Contact. For practices with prescription volume exceeding standard Note retention, a custom Prescription__c Dataverse table is recommended.

PracticeHub

Staff

maps to

Microsoft Dynamics 365 Sales

User / Contact

1:many
Fully supported

Staff members with Dynamics 365 user licenses become User records matched by email. Staff without Dynamics CRM licenses — such as administrative roles — become Contact records so their information is preserved even without a full user seat. Role and specialization fields migrate as custom fields on the User or Contact record.

PracticeHub

Insurance record

maps to

Microsoft Dynamics 365 Sales

Custom fields on Contact

1:1
Fully supported

PracticeHub insurance carrier, policy number, and group number map to custom text fields on the Contact entity (Insurance_Carrier__c, Insurance_Policy_Number__c, Insurance_Group__c). Billing responsibility and coverage type become custom pick-list fields. This requires Sales Enterprise licensing if more than 15 custom fields are needed on any single entity.

PracticeHub

Appointment note / clinical note

maps to

Microsoft Dynamics 365 Sales

Note

1:1
Fully supported

Free-text clinical notes attached to appointments migrate as Dynamics Notes with RegardingObjectId pointing to the Appointment activity. Original create date is preserved as a custom datetime field since Notes' CreatedOn is set at migration time. For notes exceeding Dynamics 32,768-character body limit, we split and flag the truncation.

PracticeHub

Payment record

maps to

Microsoft Dynamics 365 Sales

Custom fields on Activity / Note

1:1
Fully supported

Appointment-level payment status (paid, pending, failed) migrates as a custom pick-list field on the Appointment activity record (Payment_Status__c). Detailed billing transaction history migrates as Notes or a custom Payment_History__c table with a lookup to the associated Appointment — the approach is chosen during the sample migration review.

PracticeHub

Referral source

maps to

Microsoft Dynamics 365 Sales

Custom field on Contact

1:1
Fully supported

Referral source — referring physician, external clinic, marketing channel — maps to a custom pick-list field on Contact (Referral_Source__c). Original referral date maps to Referral_Date__c as a custom datetime field. If the referral source points to an external organization not in Dynamics, we create a stub Account record and link it.

PracticeHub

Custom patient property

maps to

Microsoft Dynamics 365 Sales

Custom field on Contact

1:1
Fully supported

Any PracticeHub custom patient properties — allergy flags, care-plan status, preferred contact method — migrate as custom fields on the Contact entity. Type-aware mapping applies: boolean flags become TwoOption fields, date fields become DateOnly fields, and multi-value selections become either custom pick-lists or delimited text fields depending on the source data cardinality.

PracticeHub

Policy document

maps to

Microsoft Dynamics 365 Sales

SharePoint / Document Management

1:1
Fully supported

Compliance policy documents, procedure manuals, and training records have no CRM equivalent in Dynamics 365 Sales. We export these as a structured document archive and recommend storing them in the associated SharePoint location or Microsoft Purview compliance library. The Contact record receives a custom field pointing to the archive URL.

PracticeHub

Training record

maps to

Microsoft Dynamics 365 Sales

Custom field / external system

1:1
Fully supported

Staff training completion records and certification dates stored in PracticeHub are not supported as native Dynamics objects. We map the most recent training date and certification status as custom fields on the Staff Contact record, and export the full training log as a CSV reference archive linked from the record.

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.

PracticeHub logo

PracticeHub gotchas

High

1 req/sec API rate limit severely restricts bulk migration speed

Medium

Region-specific API base URLs must be resolved before extraction

Medium

Patient Library assets export as separate binary blobs

Low

Prescription records may reference external Chewy pharmacy integration

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales gotchas

High

Professional tier 15-table custom table limit blocks migrations

High

October 2024 pricing increase applies at renewal for all customers

Medium

Custom fields must be created in the UI before API writes

Medium

Power Platform request limits apply to bulk migrations

Medium

Activity records orphaned to inactive owners fail silently

Pair-specific challenges

  • PracticeHub API rate limit of 1 request per second constrains migration throughput

    PracticeHub's developer documentation confirms a hard rate limit of 1 API request per second per account. This is not a suggestion — exceeding it produces 429 errors that retry on backoff, extending timelines significantly for practices with large datasets. For a dataset of 50,000 records (patients, appointments, staff), a naive sequential export takes over 13 hours before any transformation or loading. FlitStack AI uses a staged export strategy: bulk fetches with field-level projection to minimize total requests, plus a delta-pass pipeline that closes the window as quickly as PracticeHub's rate allows. Practices should budget the migration window accordingly and avoid peak-hour API usage that could compound backoff delays.

  • Dynamics 365 Sales Professional caps custom fields at 15 per entity — a hard limit that affects healthcare data mapping

    Microsoft's licensing documentation confirms that Dynamics 365 Sales Professional limits custom fields to 15 per entity. PracticeHub practices with patient-level insurance metadata, allergy flags, care-plan status, and referral information commonly exceed this. If the migration encounters more than 15 custom fields on the Contact entity, FlitStack surfaces a planning decision: consolidate related fields into delimited text, map only the 15 highest-priority fields and archive the rest as a linked document, or upgrade to Sales Enterprise which removes the custom-field ceiling. This constraint is a licensing issue, not a technical one — it cannot be worked around with API configuration.

  • Patient health information requires PHI handling review before migration to a non-HIPAA-native CRM

    Dynamics 365 Sales is not marketed as a HIPAA-covered entity by default. PracticeHub stores patient records that likely contain protected health information (diagnosis references, allergy flags, prescription history). Migrating these fields to Contact custom fields means the data lands in a Dataverse table that your organization must independently configure for HIPAA compliance — including encryption at rest, audit logging, and access controls. FlitStack flags all fields identified as PHI before migration and provides a data-handling plan: either mask or omit the PHI fields, migrate them to a separate compliance-configured Dataverse table, or archive them externally with a reference link on the Contact. Legal and compliance review is required before the migration run commits.

  • Appointment history volume can exceed Dynamics Activities' intended retention model

    Dynamics 365 Sales Activities are designed for recent, actionable interaction records — not multi-year medical appointment histories with hundreds of entries per patient. Practices with 5+ years of appointment data produce thousands of Activity records that can degrade list-view performance and inflate the activity timeline on Contact records. FlitStack recommends scoping the Activity migration to the most recent 12–24 months of appointments as the standard approach, with the full historical archive exported as a structured CSV linked from the Contact record. An alternative — a custom Appointment_History__c table with a lookup to Contact — provides a cleaner contact record at the cost of requiring Sales Enterprise licensing.

  • Workflows, compliance rules, and policy automations do not migrate and cannot be auto-translated to Power Automate

    PracticeHub's core value is its compliance workflow engine — appointment reminder sequences, policy-update triggers, training assignment rules, and document-signature workflows. Dynamics 365 Sales has no equivalent native compliance workflow module; these must be rebuilt in Power Automate or the Dynamics workflow designer after migration. FlitStack provides a Workflow Audit Export: a structured JSON + markdown document describing every active PracticeHub workflow — its trigger conditions, actions, and field dependencies — that your Power Automate or Dynamics admin uses as a rebuild specification. The rebuild is billable separately and scoped based on workflow count and complexity.

Migration approach

Six steps for a successful PracticeHub to Microsoft Dynamics 365 Sales data migration

  1. Conduct data audit and field inventory against PracticeHub API

    FlitStack pulls a full object inventory from the PracticeHub API using a field-projected bulk request to minimize API calls under the 1-req/sec rate limit. We identify all active patient records, appointment histories, staff accounts, and custom properties. The audit report lists each object, field count, estimated record volume, and data types — which drives the custom-field planning session and determines whether Sales Professional's 15-field limit will be exceeded. The audit also flags any fields containing PHI so compliance review can begin before the migration plan is finalized.

  2. Configure Dynamics 365 Sales schema: custom fields, tables, and security roles

    Before any data loads, FlitStack delivers a Dynamics schema setup plan based on the audit findings. This includes every custom field to create on Contact (insurance metadata, referral data, allergy flags), the Appointment activity custom field for appointment type and payment status, and any custom Dataverse tables required for prescription history or full appointment archives. If the plan exceeds 15 custom fields on any entity, we raise the Sales Professional vs Enterprise licensing question before proceeding. Security roles are reviewed to ensure migrated staff receive appropriate access to their records.

  3. Resolve practitioners to Dynamics Users; validate contact-to-account relationships

    Staff email addresses are matched against existing Dynamics 365 Users. Matched practitioners receive the appointment OwnerId assignment. Staff without Dynamics user licenses are converted to Contact records with a Role__c custom field. Simultaneously, patient records are linked to their primary clinic Account via AccountId lookups — the clinic assignment in PracticeHub determines which Account each Contact points to. Any circular references (patient assigned to a clinic that itself has a patient-as-contact loop) are flagged and resolved manually before the load sequence begins.

  4. Run sample migration with field-level diff on 100–200 records

    A representative slice — typically 100–200 patients spanning different appointment histories, a range of insurance configurations, and both practitioner types — migrates first. FlitStack generates a field-level diff comparing source PracticeHub values against the resulting Dynamics Contact, Account, and Activity records. The diff is reviewed jointly with your team to verify that appointment status value mappings, practitioner ownership resolution, insurance field truncation, and date field conversions all meet expectations before the full run is authorized.

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

    The full dataset runs against Dynamics 365 Sales using a rate-limited export pipeline from PracticeHub. Accounts and Contacts load first to satisfy foreign-key constraints, followed by Activities with owner and regarding lookups resolved. A delta-pickup window — typically 24–48 hours after the initial run completes — captures any patient records or appointments created or modified during the cutover. FlitStack produces an audit log of every record operation, and a one-click rollback is available if reconciliation against the PracticeHub source reveals discrepancies above the agreed tolerance threshold.

Platform deep dives

Context on both ends of the pair

PracticeHub logo

PracticeHub

Source

Strengths

  • No setup fees and no minimum contract terms reduce upfront commitment for small practices.
  • Multi-region API infrastructure supports UK (Neptune/London) and ANZ (Sydney) deployments with region-specific base URLs.
  • Patient mobile app handles appointment management, reminders, check-in, and payments as a bundled feature.
  • Built-in policy and compliance management reduces third-party tooling for accreditation workflows.
  • Publicly documented migration guide for Cliniko switchers signals active competitive positioning.

Weaknesses

  • API rate limit of 1 request per second is extremely restrictive for bulk data migration of large patient bases.
  • No publicly documented bulk export endpoint; all extraction relies on paginated REST API calls.
  • Limited pricing transparency with no self-serve pricing page found in research.
  • Patient Library binary assets (images, documents) may require separate handling from structured record exports.
  • Region-based URL architecture requires account-domain and region identification before any API calls can be made.
Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

Destination

Strengths

  • Native integration with Microsoft 365, Teams, Outlook, and SharePoint for unified productivity workflow
  • Unlimited custom tables and complex workflows on Enterprise tier enable deep customization for complex sales processes
  • AI-driven predictive analytics and deal intelligence on Enterprise and Premium tiers help sales teams prioritize pipeline
  • Dataverse unified data layer provides a consistent API and data model across all Dynamics 365 and Power Platform apps
  • Strong security model with Field-Level Security and Record Ownership rules for governance-conscious enterprises

Weaknesses

  • Sales Professional tier caps custom tables at 15, creating a migration ceiling for highly customized SMB environments
  • October 2024 pricing increases of $15 per user across all tiers apply to existing customers upon renewal
  • Implementation typically requires costly certified partners, adding 30–50% to total project cost
  • Updates and platform releases can disrupt customizations and plugins, requiring regression testing after each wave
  • Non-Microsoft integrations require additional configuration or middleware, limiting flexibility for heterogeneous tech stacks

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 PracticeHub and Microsoft Dynamics 365 Sales .

  • 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

    PracticeHub: 1 request per second per account.

  • Data volume sensitivity

    B

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

Estimator

Estimate your PracticeHub to Microsoft Dynamics 365 Sales 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 PracticeHub to Microsoft Dynamics 365 Sales data migrations

Answers to the questions buyers ask most during PracticeHub to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your PracticeHub to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most PracticeHub-to-Dynamics 365 Sales migrations complete in 1–2 weeks of clock time for practices with fewer than 25,000 combined records across patients, appointments, and staff. The primary timeline driver is PracticeHub's API rate limit of 1 request per second — a constraint that determines how fast bulk exports can run regardless of Dynamics' higher ingestion throughput. Practices with large multi-year appointment histories or more than 15 custom patient properties should budget 4–6 weeks, which includes the compliance review, custom-field planning, and sample migration validation before the full run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from PracticeHub.
Land in Microsoft Dynamics 365 Sales , 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