CRM migration
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
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between PracticeHub and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
1–2 weeks
Overview
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.
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.
Source platform
PracticeHub platform overview
Scorecard, SWOT, gotchas, and pricing for PracticeHub.
Destination platform
Microsoft Dynamics 365 Sales platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Sales .
Data migration guide
The complete Microsoft Dynamics 365 Sales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Microsoft Dynamics 365 Sales migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Sales .
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Microsoft Dynamics 365 Sales
Contact
1:1PracticeHub 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
Microsoft Dynamics 365 Sales
Account
1:1Each 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
Microsoft Dynamics 365 Sales
Activity (Appointment)
1:1PracticeHub 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
Microsoft Dynamics 365 Sales
Note
1:1Prescription 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
Microsoft Dynamics 365 Sales
User / Contact
1:manyStaff 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
Microsoft Dynamics 365 Sales
Custom fields on Contact
1:1PracticeHub 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
Microsoft Dynamics 365 Sales
Note
1:1Free-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
Microsoft Dynamics 365 Sales
Custom fields on Activity / Note
1:1Appointment-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
Microsoft Dynamics 365 Sales
Custom field on Contact
1:1Referral 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
Microsoft Dynamics 365 Sales
Custom field on Contact
1:1Any 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
Microsoft Dynamics 365 Sales
SharePoint / Document Management
1:1Compliance 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
Microsoft Dynamics 365 Sales
Custom field / external system
1:1Staff 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.
| PracticeHub | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Clinic | Account1:1 | Fully supported | |
| Appointment | Activity (Appointment)1:1 | Fully supported | |
| Prescription | Note1:1 | Fully supported | |
| Staff | User / Contact1:many | Fully supported | |
| Insurance record | Custom fields on Contact1:1 | Fully supported | |
| Appointment note / clinical note | Note1:1 | Fully supported | |
| Payment record | Custom fields on Activity / Note1:1 | Fully supported | |
| Referral source | Custom field on Contact1:1 | Fully supported | |
| Custom patient property | Custom field on Contact1:1 | Fully supported | |
| Policy document | SharePoint / Document Management1:1 | Fully supported | |
| Training record | Custom field / external system1: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.
PracticeHub gotchas
1 req/sec API rate limit severely restricts bulk migration speed
Region-specific API base URLs must be resolved before extraction
Patient Library assets export as separate binary blobs
Prescription records may reference external Chewy pharmacy integration
Microsoft Dynamics 365 Sales gotchas
Professional tier 15-table custom table limit blocks migrations
October 2024 pricing increase applies at renewal for all customers
Custom fields must be created in the UI before API writes
Power Platform request limits apply to bulk migrations
Activity records orphaned to inactive owners fail silently
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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
PracticeHub
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
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 PracticeHub and Microsoft Dynamics 365 Sales .
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
PracticeHub: 1 request per second per account.
Data volume sensitivity
PracticeHub 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 PracticeHub to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave PracticeHub
Other ways to arrive at Microsoft Dynamics 365 Sales
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.