CRM migration

Migrate from Practice by Numbers to Microsoft Dynamics 365 Sales

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

Practice by Numbers logo

Practice by Numbers

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

92%

11 of 12

objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

5–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Practice by Numbers stores dental-practice data — patients, providers, appointments, treatment plans, insurance carriers, and billing records — in an industry-specific schema optimized for clinical workflows and production analytics. Dynamics 365 Sales uses the Dataverse data model with standard CRM entities (Account, Contact, Opportunity) plus custom tables. The migration carries patient demographics, appointment activity histories, provider records, and custom dental fields into Dataverse, mapping them to appropriate Contact, Account, and custom table records. FlitStack AI sequences the migration so patient records create as Contacts, providers as Accounts, and appointment/treatment data as custom activity tables — preserving original timestamps and provider ownership. What does not migrate: PbN's treatment reminder workflows, recall sequences, and appointment-confirmation automations. Those must be rebuilt in Dynamics 365 using Power Automate. The migration mechanism uses PbN's REST API for data export and the Dataverse Web API for import, with scoped read access so your team keeps working in Practice by Numbers during the cutover window.

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

Practice by Numbers logo

Practice by Numbers

What's pushing teams away

  • Limited public API documentation makes automated data extraction difficult, forcing practices to rely on manual CSV exports which restrict field selection and historical depth.
  • No free tier or low-cost entry point means the full feature set requires a significant commitment before the practice can validate fit with their specific workflow.
  • The breadth of features creates a steep onboarding curve, and some practices report that staff adoption lags during the first months after implementation.

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

Each row shows how a Practice by Numbers 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.

Practice by Numbers

Patient

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Direct map. Patient demographics (name, date of birth, contact info, address) map to Contact standard fields. Original PbN patient ID preserved as Source_System_ID__c for delta-run de-duplication and traceability. Patients without email receive a generated placeholder or are flagged for review.

Practice by Numbers

Patient Appointment History

maps to

Microsoft Dynamics 365 Sales

Custom Activity Table

1:1
Fully supported

Appointment records do not have a native Dynamics 365 equivalent. FlitStack creates a custom Dataverse table (e.g., Appointment_History__mdt or custom activity) with fields for appointment date, provider, procedure codes, procedure description, treatment status, and provider notes. Original timestamps and provider OwnerId are preserved. Each appointment links to the patient Contact.

Practice by Numbers

Provider / Doctor

maps to

Microsoft Dynamics 365 Sales

Account + User

many:1
Fully supported

Providers map to Accounts for their business-address record and to User records for their Dynamics 365 login. Provider license numbers, NPI codes, and specialty fields migrate as custom fields on Account. Provider-to-patient assignment links are preserved via OwnerId on patient Contact records.

Practice by Numbers

Treatment Plan

maps to

Microsoft Dynamics 365 Sales

Custom Table (Treatment_Plan__c)

1:1
Fully supported

Treatment plans with procedure codes (CDT/ADA), proposed treatments, and completion status require a custom Dataverse table. Each treatment plan links to the patient Contact. Status fields map to a custom picklist. We recommend your admin pre-creates this table with appropriate columns before migration.

Practice by Numbers

Insurance Carrier

maps to

Microsoft Dynamics 365 Sales

Custom Table (Insurance_Carrier__c)

1:1
Fully supported

Insurance carriers have no standard CRM equivalent in Dynamics 365. A custom table stores carrier name, group number format, and payer ID. Patient records link to their carrier via a lookup relationship. This keeps insurance data searchable without bloating the Contact record.

Practice by Numbers

Insurance Policy / Patient Benefit

maps to

Microsoft Dynamics 365 Sales

Custom Fields on Contact

1:1
Fully supported

Per-patient insurance details including subscriber ID, group number, coverage percentages, and annual maximum map to custom fields on the Contact record in Dataverse. We create Insurance_Carrier__c as a lookup to the carrier table, Subscriber_ID__c as a text field, Group_Number__c as text, Coverage_Percentage__c as a number, and Annual_Maximum__c as currency to preserve the complete insurance benefit snapshot for each patient.

Practice by Numbers

Billing / Payment Record

maps to

Microsoft Dynamics 365 Sales

Custom Table (Billing_Record__c)

1:1
Fully supported

Payment histories, adjustments, and outstanding balances require a custom Dataverse table linked to the patient Contact. Fields include payment date, amount, procedure code, payment method, and balance remaining. FlitStack can also export this as a separate data package if your accounting team prefers a dedicated financial export.

Practice by Numbers

Recall / Hygiene Interval

maps to

Microsoft Dynamics 365 Sales

Custom Fields on Contact

1:1
Fully supported

Recall intervals (e.g., 6-month hygiene recall) and last-recall date migrate as custom fields on Contact (Recall_Interval_Months__c, Last_Recall_Date__c). The recall workflow itself must be rebuilt in Power Automate using these fields as trigger conditions — FlitStack exports the intervals as a rebuild reference.

Practice by Numbers

Custom Patient Property

maps to

Microsoft Dynamics 365 Sales

Custom Field on Contact

1:1
Fully supported

Any PbN custom patient properties (allergies, medical history flags, referral source) migrate as custom fields on the Contact record in Dataverse. FlitStack creates these dynamically during migration if they do not already exist in your Dynamics 365 environment. Field type is inferred from the source data type.

Practice by Numbers

Document / Attachment

maps to

Microsoft Dynamics 365 Sales

SharePoint Document Library

1:1
Fully supported

X-rays, signed consent forms, treatment plan PDFs, and insurance cards migrate to a SharePoint document library associated with the Dataverse environment. Each file is tagged with the patient Contact's ID as folder metadata so the file appears in the patient's timeline or document associated grid. File size limits and inline image handling follow SharePoint constraints.

Practice by Numbers

User / Staff Owner

maps to

Microsoft Dynamics 365 Sales

SystemUser

1:1
Fully supported

PbN staff and provider owners are resolved by email match against Dynamics 365 users (SystemUser). Unmatched owners are flagged before migration. Their records land under a fallback owner (e.g., a generic 'Migration Owner' user) until your admin provisions the correct D365 users.

Practice by Numbers

Appointment Reminder Workflow

maps to

Microsoft Dynamics 365 Sales

Power Automate (manual rebuild)

1:1
Fully supported

PbN's automated appointment reminders, recall notifications, and treatment-follow-up sequences have no Dynamics 365 equivalent that migrates automatically. FlitStack exports the interval rules and trigger logic as a structured reference document. Your Dynamics admin rebuilds these as Power Automate flows using the migrated recall fields as inputs.

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.

Practice by Numbers logo

Practice by Numbers gotchas

High

No publicly documented API for automated migration

High

Dental EHR data is inherently messy during extraction

Medium

Goal management metrics require explicit field mapping

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

  • Appointment records require a custom Dataverse table with no native Dynamics 365 equivalent

    Dynamics 365 Sales has no built-in appointment entity. PbN appointment histories — dates, procedure codes, provider assignments, chair time, and treatment notes — cannot map to any standard D365 object. FlitStack creates a custom Appointment_History__c table in Dataverse with the necessary fields and links each record to the patient Contact. The custom table must be pre-created (or we create it in a migration-specific solution) before the full data load runs. This is the highest-risk schema divergence in the migration because downstream Power Automate flows that reference appointments need to point to the custom table rather than a standard entity.

  • Insurance data and recall intervals require custom fields that D365 does not provision automatically

    PbN stores per-patient insurance snapshots (subscriber ID, group number, coverage percentage, annual maximum) and recall intervals (hygiene frequency, last-recall date) that have no standard D365 counterpart. Dynamics 365 Sales has no native insurance or recall fields on Contact. FlitStack creates these as custom fields (Subscriber_ID__c, Coverage_Percentage__c, Recall_Interval_Months__c, etc.) in your Dataverse environment. Custom fields add to migration scope because each one requires a field-type decision, visibility rules, and form placement. Your admin should review the custom field list before migration so the fields land on the correct forms.

  • File attachments migrate to SharePoint document libraries — not the D365 attachment grid

    PbN stores x-rays, signed consent forms, insurance cards, and treatment plan PDFs as attachments on patient records. Dynamics 365 stores large files in SharePoint Online, not in the Dataverse attachment blob. FlitStack migrates these files to a SharePoint document library associated with the Dataverse environment, with each file tagged by patient Contact ID as folder metadata. This means files appear in SharePoint and can be associated to Contact records via the D365 document grid, but the storage location and access path differ from PbN's inline preview. Your team may need to update links in patient-facing portals or documents that reference PbN-hosted files.

  • PbN appointment reminder and recall workflows must be rebuilt in Power Automate — they do not export

    Practice by Numbers' automated appointment reminders, recall notifications, and treatment-follow-up sequences are platform-native automations tied to PbN's appointment module and patient recall intervals. These have no Dynamics 365 equivalent that migrates automatically. D365 Sales does not include a recall or hygiene-follow-up module. FlitStack exports the recall intervals, frequency rules, and trigger logic as a structured reference document during the migration handoff. Your Dynamics admin then rebuilds these as Power Automate flows using the migrated Recall_Interval_Months__c and Last_Recall_Date__c fields as conditions. This is a manual rebuild effort that should be scoped separately from the data migration.

  • Provider records map to both Account and User entities — owner resolution requires email matching

    PbN provider records contain both business information (office address, credentials) and user identity (login email, scheduling assignments). Dynamics 365 separates these into Account records (business info) and SystemUser records (CRM login). FlitStack creates an Account for each provider's business details and attempts to match the provider's PbN email to an existing D365 SystemUser by email. Unmatched providers are flagged before migration — their records land under a fallback owner until your admin provisions the correct D365 user accounts. Provider-to-patient ownership links (which doctor owns which patient) map to the Contact's OwnerId.

Migration approach

Six steps for a successful Practice by Numbers to Microsoft Dynamics 365 Sales data migration

  1. Stand up the Dynamics 365 Dataverse schema first

    Before data leaves Practice by Numbers, FlitStack works with your Dynamics 365 admin to create the custom tables and fields needed for the migration: Appointment_History__c, Treatment_Plan__c, Insurance_Carrier__c, and the custom Contact fields for recall intervals, insurance snapshots, and provider credentials. We deliver a schema setup checklist based on your PbN custom property count so the Dataverse environment is ready before validation runs. If your PbN export includes non-standard date formats or pick-list values that don't match D365 types, we flag those for cleanup before migration.

  2. Extract patient and provider data from Practice by Numbers via API

    FlitStack connects to the Practice by Numbers REST API using scoped read access. We extract patient records, provider records, appointment histories, treatment plans, insurance carrier data, and custom patient properties in parallel batches to respect PbN's rate limits. If PbN's API does not support bulk export for certain objects, we use their CSV export endpoint and parse the resulting files. All timestamps, owner IDs, and custom property values are preserved in the extraction JSON. Any attachments (x-rays, PDFs) are downloaded to a staging SharePoint library with patient ID metadata.

  3. Map data model and resolve owner relationships

    The extracted PbN data is mapped to the Dataverse schema created in Step 1. Patient records create as Contacts with custom insurance and recall fields. Provider records create as Accounts and are linked to patient Contacts via OwnerId. Appointment histories create as records in the Appointment_History__c custom table, linked to the patient Contact and provider Account. Insurance carriers create in the Insurance_Carrier__c table and are linked to patient Contacts via lookup fields. Owner resolution matches PbN provider email to D365 SystemUser by email; unmatched providers are flagged in a pre-migration report for your admin to resolve.

  4. Run sample migration with field-level diff

    A representative slice of 200–500 patient records migrates first, spanning a range of custom field configurations, file attachments, and provider types. FlitStack generates a field-level diff report comparing source PbN values against the Dynamics 365 destination fields. You verify recall interval mapping, insurance field population, appointment table links, and SharePoint file placement before the full run commits. Any field mapping errors or missing custom tables are corrected before proceeding.

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

    The full record set migrates to Dynamics 365. A delta-pickup window (typically 24–48 hours after the main run completes) captures any records created or modified in Practice by Numbers during the cutover period. FlitStack writes an audit log of every create and update operation with source record ID, destination record ID, timestamp, and operator. If reconciliation fails — for example, a custom field value is missing or a patient record duplicates — one-click rollback reverts the Dataverse environment to its pre-migration state. The migration handoff package includes the recall-interval reference document for Power Automate rebuild.

Platform deep dives

Context on both ends of the pair

Practice by Numbers logo

Practice by Numbers

Source

Strengths

  • Bi-directional integration with major dental PMSs (Open Dental 15.4+, Dentrix, Dentrix Ascend, EagleSoft, Practice-Web) — PbN writes SMS, email, call and note activity back into the PMS CommLog so the PMS remains the system of record.
  • Dentist-founded product with a 9.8/10 G2 support rating and 99.99% advertised uptime — reviewers consistently call out responsive support and quick feature delivery.
  • Real-time Practice IQ dashboards cover production, collections, case acceptance, new-patient, hygiene reappointment and other dental KPIs that horizontal BI tools do not pre-build.
  • PbN Voice native phone system (call tracking, recording, analytics) plus payments, digital forms and insurance verification consolidate vendors small practices would otherwise stitch together.
  • Modular plan structure lets practices add Voice, Payments or specific modules incrementally rather than paying for everything in tier 1.

Weaknesses

  • Only the Core plan ($249/month) has publicly listed pricing — higher tiers (Flow, Scale, Thrive) require sales contact, complicating self-serve evaluation.
  • Reports are not customisable enough for some practices — granular per-practice metric configuration often requires support involvement.
  • Single-location practices report PbN can feel expensive relative to features they actually use — pricing is more competitive at multi-location and DSO scale.
  • Some digital-form and online-scheduling flows have reliability gaps — reviewers cite forms occasionally failing to send and patients struggling to open them.
  • PbN is a layer on top of the PMS, not the PMS itself — practices migrating need to plan PMS-side data extraction (Open Dental, Dentrix) in parallel.
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. All 8 core objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Practice by Numbers and Microsoft Dynamics 365 Sales .

  • Object compatibility

    A

    All 8 core objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .

  • 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

    Practice by Numbers: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Practice by Numbers 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 dental practice migrations complete in 5–10 business days for under 50,000 records. Larger datasets with 200,000+ records, extensive appointment histories, or significant SharePoint file migrations extend to 3–5 weeks. The custom Dataverse table creation step (Appointment_History__c, Treatment_Plan__c) and Power Automate workflow rebuild add planning time outside the data migration window. Scope clarity on custom property count and file attachment volume drives the most accurate timeline estimate.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Practice by Numbers.
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