CRM migration

Migrate from My Practice Now to Microsoft Dynamics 365 Sales

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

My Practice Now logo

My Practice Now

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

90%

9 of 10

objects map 1:1 between My Practice Now and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

My Practice Now stores clients, appointments, invoices, and billing records in a unified practice-management model. Dynamics 365 Sales models the same data using Account and Contact as separate entities, Opportunity records for pipeline tracking, and Activity records (Tasks and Appointments) for interactions. FlitStack AI maps My Practice Now client records to Dynamics 365 Accounts with a primary Contact, appointment records to Dynamics 365 Activities preserving the original start and end timestamps, and invoice data to custom fields on the Account since Dynamics 365 Sales does not include a native invoicing module. Custom properties, service definitions, and package records migrate as custom fields on the Account or a custom Practice entity. Owner assignment resolves My Practice Now staff by email against Dynamics 365 Users. We handle the Account/Contact population sequence, bulk API writes to Dataverse, and a 24–48 hour delta pickup at cutover. Workflows, automations, billing rules, and scheduling logic do not migrate — we export their definitions for your Dynamics admin to rebuild in Power Automate and the Dynamics 365 Sales app.

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

My Practice Now logo

My Practice Now

What's pushing teams away

  • Capterra reviewers cite poor customer service and unresponsive support as primary churn drivers, with issues remaining unresolved long enough to erode trust.
  • Negative reviews describe the software as non-intuitive and complicated, contradicting positive reviews and suggesting a steep or inconsistent onboarding experience.
  • Multiple reviews note that implementation is time-consuming and lengthy, which frustrates small practices with limited administrative capacity.

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 My Practice Now objects map to Microsoft Dynamics 365 Sales

Each row shows how a My Practice Now 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.

My Practice Now

Client

maps to

Microsoft Dynamics 365 Sales

Account + Contact

1:many
Fully supported

My Practice Now Client splits into a Dynamics 365 Account record (business information) and a primary Contact record (individual details). The Account holds practice name, address, and billing fields; the Contact holds name, email, phone, and role fields. We populate both with a 1:1 relationship and flag the primary contact.

My Practice Now

Appointment

maps to

Microsoft Dynamics 365 Sales

Appointment (Activity) + Task

1:1
Fully supported

My Practice Now Appointment maps to a Dynamics 365 Appointment activity record. Fields including scheduled date, start time, end time, duration, staff member, service type, and status transfer as individual fields on the Activity. A separate Task record is created for any appointment notes or follow-up items flagged in My Practice Now.

My Practice Now

Invoice

maps to

Microsoft Dynamics 365 Sales

Account (custom fields) + Opportunity

1:1
Fully supported

My Practice Now Invoice has no native equivalent in Dynamics 365 Sales. We create custom fields on the Account record (Invoice_Total__c, Invoice_Status__c, Last_Invoice_Date__c) and optionally link an Opportunity record to preserve billing history. Full invoicing requires Dynamics 365 Business Central; we flag this as a post-migration recommendation.

My Practice Now

Client Custom Fields

maps to

Microsoft Dynamics 365 Sales

Account (custom fields)

1:1
Fully supported

Any custom properties on the My Practice Now Client object — such as referral source, insurance provider, or custom status flags — are provisioned in Dataverse with the new_ prefix and mapped field-by-field. We match the data type and pick-list values before the migration run to avoid Dataverse schema errors.

My Practice Now

Service / Package Definition

maps to

Microsoft Dynamics 365 Sales

Product (custom fields)

1:1
Fully supported

My Practice Now service and package definitions (session types, session rates, package bundles) become Dynamics 365 Product records with custom fields capturing service duration, pricing model, and description. If My Practice Now uses a service catalog, we map it to the Dynamics 365 Product Catalog.

My Practice Now

Staff / Practitioner

maps to

Microsoft Dynamics 365 Sales

SystemUser

1:1
Fully supported

My Practice Now staff records resolve to Dynamics 365 SystemUser by email match. Unmatched staff are flagged before migration — your team creates the Dynamics user first, or we assign records to a fallback user. Role and permission settings from My Practice Now do not carry over and must be configured in Dynamics 365 security roles post-migration.

My Practice Now

Client Notes

maps to

Microsoft Dynamics 365 Sales

Note (Annotation)

1:1
Fully supported

Client notes in My Practice Now map to Dynamics 365 Notes (Annotation records) linked to the Account or Contact. We preserve the original created date, the note body content, and the author where identifiable. Rich-text formatting is maintained; attachments from notes are re-hosted as SharePoint files in Dynamics 365.

My Practice Now

Client Files / Attachments

maps to

Microsoft Dynamics 365 Sales

SharePoint Document Location + Note

1:1
Fully supported

Files attached to My Practice Now client records (intake forms, signed agreements, insurance cards) re-upload to the Account's SharePoint document location in Dynamics 365. We preserve the original file name, upload date, and link each file to the corresponding Account record.

My Practice Now

Billing / Payment Records

maps to

Microsoft Dynamics 365 Sales

Account (custom fields)

1:1
Fully supported

Payment history, outstanding balances, and billing notes from My Practice Now transfer as custom fields on the Account record (Balance_Due__c, Last_Payment_Date__c, Payment_Status__c). Transaction-level detail requires Dynamics 365 Business Central; we surface the summary as a read-only reference on the Account.

My Practice Now

Appointment Status History

maps to

Microsoft Dynamics 365 Sales

Appointment (Activity) + Custom Field

1:1
Fully supported

Status change history on My Practice Now appointments (confirmed, completed, no-show, cancelled) maps to a custom pick-list field on the Dynamics 365 Appointment activity. We preserve the last-known status and timestamp as Appointment_Status__c and Appointment_Status_Date__c for reporting continuity. We capture each status transition event and store it as a serialized history string on the Appointment record, enabling historical workflow analysis and audit compliance in Dynamics 365.

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.

My Practice Now logo

My Practice Now gotchas

Medium

Research data is sparse and often misattributed

High

Thinkific export scope determines what we can migrate

Medium

Content files require separate media migration

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

  • Dynamics 365 Sales has no native invoicing module — invoice data requires custom field provisioning

    My Practice Now treats invoices as core data objects with line items, amounts, and payment status. Dynamics 365 Sales does not include a native invoice entity — it handles quotes and orders but not billing records unless your organization also licenses Dynamics 365 Business Central. FlitStack AI preserves invoice data as custom fields on the Account record (Total_Invoice_Amount__c, Invoice_Status__c, Balance_Due__c) and creates a reference Opportunity where a 1:1 relationship exists. Full invoice history with line items requires Business Central as a post-migration step, which we flag explicitly in the migration plan before any data moves.

  • Appointment-to-Activity conversion loses My Practice Now's native scheduling board

    My Practice Now's scheduling interface is purpose-built for appointment management — staff calendars, appointment status workflows, and service-type routing are native features. When appointments migrate to Dynamics 365 Activities (Appointment and Task records), the scheduling context is preserved as field data but the native scheduling board does not exist in Dynamics 365 Sales. Teams that rely heavily on My Practice Now's visual scheduling calendar should plan to configure a scheduling solution using Dynamics 365's Calendar Control, Power Apps, or a third-party scheduling add-on post-migration. We flag appointment fields in the migration plan so your admin can map them to the chosen scheduling configuration.

  • My Practice Now's single-client model splits into Account and Contact, creating a mandatory population sequence

    My Practice Now stores client data in one record. Dynamics 365 Sales separates business information (stored on Account) from individual contact information (stored on Contact). This split means every client record generates two rows in Dynamics 365 and requires the Account to exist before the Contact can be linked via the Primary Contact ID lookup field. FlitStack AI sequences the migration to create all Accounts first, then all Contacts with AccountId populated, ensuring referential integrity. If your My Practice Now data has clients without an email address, we surface those records for manual resolution before the migration runs.

  • Power Platform API request limits apply during bulk migration writes

    Dynamics 365 Sales and the underlying Dataverse API impose request limits — the default allocation is 100,000 API requests per 24 hours per user. A large migration with hundreds of thousands of records (clients, appointments, invoices, notes) can exhaust the API quota during the migration run, causing HTTP 429 throttling responses. FlitStack AI implements exponential backoff on 429 responses and distributes writes across off-peak hours to stay within the Dataverse request allocation. For migrations exceeding 200,000 records, we coordinate a dedicated migration user with elevated API limits in partnership with your Dynamics 365 admin.

  • Dynamics 365 Sales Professional caps custom tables at 15 — Enterprise removes this limit

    If your My Practice Now setup uses more than 15 custom fields across objects or stores data in custom practice-specific objects, the Dynamics 365 Sales Professional license enforces a 15-table ceiling that your migration will exceed. We audit your My Practice Now custom field count during discovery and confirm your Dynamics 365 license tier before migration planning. Upgrading to Sales Enterprise unlocks unlimited custom tables and removes this constraint — we include the license tier check as a pre-flight item in every My Practice Now migration plan.

Migration approach

Six steps for a successful My Practice Now to Microsoft Dynamics 365 Sales data migration

  1. Discover My Practice Now data inventory and Dynamics 365 target schema

    FlitStack AI begins every migration with a structured discovery phase. We inventory all My Practice Now objects — Client, Appointment, Invoice, Service, Client Notes, and any custom fields — and generate a record count and field inventory. Simultaneously, we audit your Dynamics 365 Sales environment to confirm license tier (Professional vs Enterprise), identify existing Account and Contact records that would cause duplicates, and check custom field provisioning capacity. The output is a pre-migration health report that flags duplicate records, missing custom fields, and license-tier risks before a single record moves.

  2. Provision custom fields in Dataverse and validate field-level mapping

    With the inventory complete, FlitStack AI creates all required custom fields in Dataverse that do not exist in your Dynamics 365 Sales out-of-box schema — including Invoice_Total__c, Invoice_Status__c, Balance_Due__c, Referral_Source__c, Original_Created_Date__c, and Source_System_ID__c on Account and Contact. We also provision Appointment_Status__c and Duration__c on the Activity entity. Pick-list fields receive value-by-value mappings from My Practice Now status enumerations to Dynamics 365 StateCode, StatusCode, and custom pick-list values. No data moves until all target fields are validated to exist and accept the incoming data types.

  3. Resolve staff and owner records by email match against Dynamics 365 Users

    My Practice Now staff and practitioner records need to resolve to Dynamics 365 SystemUser records so appointment and note ownership maps correctly. FlitStack AI performs an email-based matching pass: staff with a My Practice Now email that matches an existing Dynamics 365 user are assigned directly; unmatched staff are flagged in a pre-flight report. Your team creates the corresponding Dynamics users before the migration run, or we assign their records to a designated fallback owner. This step prevents orphaned Activities and ensures the Dynamics 365 audit log reflects the correct user attribution on every migrated record.

  4. Run a sample migration with field-level diff and reconciliation report

    Before committing to a full migration, FlitStack AI runs a sample migration of 50–100 representative records spanning Client, Appointment, Invoice, and Note objects. The sample validates that appointment timestamps land correctly in Dynamics 365 ScheduledStart and ScheduledEnd, that invoice amounts populate the custom Account fields, that Contact records link to the correct Account via primarycontactid, and that owner resolution worked for all staff. We generate a field-level diff comparing source values against the Dynamics 365 destination values and surface any discrepancies for your review before the full run is scheduled.

  5. Execute full migration with delta-pickup window and audit logging

    The full migration loads My Practice Now data into Dynamics 365 Sales in the validated sequence: Accounts first, then Contacts with AccountId links, then Activity records with owner resolution, then Notes and Attachments. A delta-pickup window of 24–48 hours runs concurrently — any records created or modified in My Practice Now during the migration are captured in a second pass to ensure Salesforce reflects the final state at go-live. Every operation is logged with source record ID, destination record ID, field mappings applied, and timestamp. One-click rollback is available if reconciliation finds unexpected discrepancies after the migration completes.

Platform deep dives

Context on both ends of the pair

My Practice Now logo

My Practice Now

Source

Strengths

  • Combines appointment scheduling, invoicing, and client notes in a single interface for small practices
  • Intuitive and simple to use according to positive G2 reviewers
  • Responsive development team that incorporates user feature requests
  • Mobile app allows creating and accessing client notes on the go
  • Great tech support cited by satisfied users

Weaknesses

  • Poor customer service and slow issue resolution reported in negative reviews
  • Non-intuitive and complicated interface according to some users
  • Lengthy, time-consuming implementation process
  • Inconsistent user experience — same product praised as intuitive and criticized as confusing
  • Sparse public documentation makes research and comparison difficult
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 My Practice Now 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

    My Practice Now: Not publicly documented at the individual storefront level; Thinkific generally applies org-level rate limits.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your My Practice Now 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 My Practice Now to Dynamics 365 Sales migrations complete within 48–72 hours of migration run time for setups under 25,000 total records. Migrations with 100,000+ records across clients, appointments, and invoice data extend to 5–10 days, primarily because appointment-to-Activity conversion requires per-record timestamp handling and invoice data needs custom field provisioning in Dataverse. The longest planning step is custom field creation and value-mapping setup, which we complete before any data movement begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from My Practice Now.
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