CRM migration
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
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
5–10 business days
Overview
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.
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
Practice by Numbers platform overview
Scorecard, SWOT, gotchas, and pricing for Practice by Numbers.
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 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
Microsoft Dynamics 365 Sales
Contact
1:1Direct 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
Microsoft Dynamics 365 Sales
Custom Activity Table
1:1Appointment 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
Microsoft Dynamics 365 Sales
Account + User
many:1Providers 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
Microsoft Dynamics 365 Sales
Custom Table (Treatment_Plan__c)
1:1Treatment 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
Microsoft Dynamics 365 Sales
Custom Table (Insurance_Carrier__c)
1:1Insurance 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
Microsoft Dynamics 365 Sales
Custom Fields on Contact
1:1Per-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
Microsoft Dynamics 365 Sales
Custom Table (Billing_Record__c)
1:1Payment 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
Microsoft Dynamics 365 Sales
Custom Fields on Contact
1:1Recall 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
Microsoft Dynamics 365 Sales
Custom Field on Contact
1:1Any 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
Microsoft Dynamics 365 Sales
SharePoint Document Library
1:1X-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
Microsoft Dynamics 365 Sales
SystemUser
1:1PbN 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
Microsoft Dynamics 365 Sales
Power Automate (manual rebuild)
1:1PbN'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.
| Practice by Numbers | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Patient Appointment History | Custom Activity Table1:1 | Fully supported | |
| Provider / Doctor | Account + Usermany:1 | Fully supported | |
| Treatment Plan | Custom Table (Treatment_Plan__c)1:1 | Fully supported | |
| Insurance Carrier | Custom Table (Insurance_Carrier__c)1:1 | Fully supported | |
| Insurance Policy / Patient Benefit | Custom Fields on Contact1:1 | Fully supported | |
| Billing / Payment Record | Custom Table (Billing_Record__c)1:1 | Fully supported | |
| Recall / Hygiene Interval | Custom Fields on Contact1:1 | Fully supported | |
| Custom Patient Property | Custom Field on Contact1:1 | Fully supported | |
| Document / Attachment | SharePoint Document Library1:1 | Fully supported | |
| User / Staff Owner | SystemUser1:1 | Fully supported | |
| Appointment Reminder Workflow | Power Automate (manual rebuild)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.
Practice by Numbers gotchas
No publicly documented API for automated migration
Dental EHR data is inherently messy during extraction
Goal management metrics require explicit field mapping
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
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.
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.
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.
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.
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
Practice by Numbers
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .
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
All 8 core objects map 1:1 between Practice by Numbers and Microsoft Dynamics 365 Sales .
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
Practice by Numbers: Not publicly documented.
Data volume sensitivity
Practice by Numbers 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 Practice by Numbers to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Practice by Numbers
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.