CRM migration

Migrate from Dentally to Microsoft Dynamics 365 Sales

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

Dentally logo

Dentally

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

100%

16 of 16

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from Dentally to Dynamics 365 Sales means translating a dental-practice management data model into a CRM-native structure that supports leads, opportunities, quotes, and full sales forecasting. Dentally stores patients, practitioners, appointments, treatment plans, and invoices in a practice-centric schema. Dynamics 365 Sales natively understands Accounts, Contacts, Leads, and Opportunities, but dental-specific objects like treatment plans and invoices have no built-in equivalent — they require custom Dataverse tables. We extract Dentally data via its API using scoped read access, map all standard contact fields directly, and translate treatment plans, appointments, and invoices into custom tables with lookups that preserve the patient-to-practitioner and invoice-to-treatment relationships. Original create and modify timestamps carry forward on every record so Dynamics 365 reporting reflects the full history from go-live. A sample migration with field-level diff runs first, followed by a sequenced full load and a delta-pickup window during cutover so no in-flight appointments or invoice updates are lost.

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

Dentally logo

Dentally

What's pushing teams away

  • Multi-site practices report hitting API rate limit ceilings that are not publicly documented and require raising a support ticket to negotiate higher thresholds.
  • Tier-gated advanced features such as full imaging integration and enhanced NHS workflows push growing practices toward the highest pricing tier sooner than expected.
  • Limited public API documentation makes it difficult to scope custom integrations or assess data portability before committing to the platform.
  • Dentally's own migration team manages inbound data transfers, meaning practices cannot self-service an export or cross-check their data independently.
  • Smaller practices on the starter tier report that the 5-user cap becomes restrictive as the team grows, creating pressure to upgrade before the software justifies the cost.

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 Dentally objects map to Microsoft Dynamics 365 Sales

Each row shows how a Dentally 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.

Dentally

Patient

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Every Dentally patient maps to a Dynamics 365 Contact record. Fields including firstname, lastname, email, phone, mobilephone, address, and date of birth map directly. Practitioner_Assigned__c creates a lookup to the Practitioner__c custom table so the assigned dentist surfaces on the patient record. Original create and modify timestamps preserved as custom datetime fields.

Dentally

Patient.email

maps to

Microsoft Dynamics 365 Sales

Contact.Email

1:1
Fully supported

Email is a required, unique field on Contact. If Dentally stores multiple email addresses, the primary address routes to Email and additional addresses populate a custom Email_2__c text field on Contact. Email validation and de-duplication runs before insert to prevent duplicate Contact records in Dynamics 365.

Dentally

Practitioner

maps to

Microsoft Dynamics 365 Sales

Custom Table: Practitioner__c

1:1
Fully supported

Dentally practitioners (dentists, hygienists, specialists) have no direct CRM equivalent. We create a Practitioner__c custom Dataverse table with fields for name, title, registration number, and email, linked to a Contact record via a lookup. The Contact lookup allows appointment queries to return the practitioner name directly without a custom join.

Dentally

Practitioner.location

maps to

Microsoft Dynamics 365 Sales

Practitioner__c.Location__c / Account.ParentAccountId

1:1
Fully supported

Dentally stores practice location against each practitioner. For multi-location groups, the Dentally location translates to an Account record, and Practitioner__c.Location__c stores a lookup to that Account. Single-location setups map the location name to a text field on Practitioner__c. Location lookups also enable reporting by site and support hierarchical sharing rules across business units in Dynamics 365.

Dentally

Account / Referring Practice

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

If Dentally stores referring practices or corporate dental groups, those entities map directly to Dynamics 365 Sales Accounts. Account.Name receives the practice name, Industry defaults to Healthcare, and NumberOfEmployees reflects practice headcount. Multi-location groups map to a parent Account with subsidiary locations as child Accounts linked via ParentAccountId.

Dentally

Treatment Plan

maps to

Microsoft Dynamics 365 Sales

Custom Table: Treatment_Plan__c

1:1
Fully supported

Dentally treatment plans contain procedure codes, clinical notes, proposed dates, and cost estimates with patient and practitioner links. We create a Treatment_Plan__c Dataverse table with a Contact lookup for the patient, a Practitioner__c lookup for the treating practitioner, and currency fields for estimated and actual costs. Clinical notes transfer as a large-text field.

Dentally

Treatment Item

maps to

Microsoft Dynamics 365 Sales

Custom Table: Treatment_Item__c

1:1
Fully supported

Individual treatment line items within a plan carry procedure codes, descriptions, and costs. A Treatment_Item__c custom table links to Treatment_Plan__c via a lookup and to the Contact via a second lookup for direct patient queries. Dentally custom fields on treatment items become custom columns on Treatment_Item__c with the same field type (text, picklist, number) before migration.

Dentally

Appointment

maps to

Microsoft Dynamics 365 Sales

Custom Table: Appointment__c

1:1
Fully supported

Every Dentally appointment record — including historical ones — migrates to a custom Appointment__c Dataverse table with lookups to Contact (patient) and Practitioner__c (practitioner). Appointment_Date__c and Appointment_Time__c store the original scheduled datetime, Status__c maps via value mapping, and Duration_Minutes__c preserves the slot length. Clinical notes from the appointment transfer to Notes__c for chair-side reference.

Dentally

Appointment Status

maps to

Microsoft Dynamics 365 Sales

Appointment__c.Status__c (custom picklist)

1:1
Fully supported

Dentally appointment statuses (Scheduled, Confirmed, Arrived, In Progress, Completed, Cancelled, No Show) require value-by-value mapping to Appointment__c.Status__c picklist values. If Dentally uses custom status names, the mapping table is delivered before migration so your team can validate the status translation.

Dentally

Invoice

maps to

Microsoft Dynamics 365 Sales

Custom Table: Invoice__c

1:1
Fully supported

Dentally invoices (invoice number, status, total amount, outstanding balance, invoice date, due date) map to an Invoice__c custom Dataverse table with a Contact lookup pointing to the patient. Invoice_Status__c maps via value mapping (Paid, Partially Paid, Overdue, Written Off) and Outstanding_Balance__c preserves the remaining amount.

Dentally

Invoice

maps to

Microsoft Dynamics 365 Sales

Custom Table: Invoice__c

1:1
Fully supported

Dentally invoices (invoice number, status, total amount, outstanding balance, invoice date, due date) map to an Invoice__c custom Dataverse table with a Contact lookup pointing to the patient. Invoice_Status__c maps via value mapping (Paid, Partially Paid, Overdue, Written Off) and Outstanding_Balance__c preserves the remaining amount. Invoice_Date__c and Due_Date__c are preserved as date fields, allowing Power BI reports to calculate days‑outstanding and overdue aging buckets directly.

Dentally

Invoice Line Item

maps to

Microsoft Dynamics 365 Sales

Custom Table: Invoice_Line_Item__c

1:1
Fully supported

Line items from Dentally invoices migrate as Invoice_Line_Item__c records linked to Invoice__c via a lookup. Fields include Description__c, Quantity__c, Unit_Price__c, and Total_Amount__c. If a line item references a treatment, the Treatment_Item__c record ID is preserved in Treatment_Item_ID__c for cross-referencing.

Dentally

Payment

maps to

Microsoft Dynamics 365 Sales

Custom Table: Payment__c

1:1
Fully supported

Payment records in Dentally migrate as Payment__c with Payment_Date__c, Amount__c, and Payment_Method__c (Cash, Card, Insurance, Plan) mapped to custom picklist values. A lookup to Invoice__c ties each payment to the originating invoice so Dynamics 365 can reconstruct the full payment history from the patient record.

Dentally

Patient Medical Notes

maps to

Microsoft Dynamics 365 Sales

Contact.Dental_Notes__c (custom field)

1:1
Fully supported

Clinical notes and medical history stored in Dentally transfer to a large-text (Memo) custom field on the Contact record. This field is created before migration and labelled Dental_Notes__c so practitioners can access relevant medical context directly from the Contact form without navigating away.

Dentally

Referral Source

maps to

Microsoft Dynamics 365 Sales

Contact.Referral_Source__c (custom field)

1:1
Fully supported

If Dentally tracks how patients were referred (e.g., Google, existing patient, insurance provider), that value migrates as a custom picklist or text field on Contact. The custom field is created before migration with the same field type as the Dentally source.

Dentally

Dentally Object ID

maps to

Microsoft Dynamics 365 Sales

[All tables].Source_System_ID__c (custom field)

1:1
Fully supported

Every migrated record receives a Source_System_ID__c text field storing its original Dentally object ID. This field enables delta-run de-duplication, cross-referencing between Dentally and Dynamics records post-migration, and audit traceability. The field name is consistent across all custom tables. It also supports downstream integration by allowing external systems to reference the original identifier for synchronization tasks.

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.

Dentally logo

Dentally gotchas

High

API rate limits are undocumented and require a support request

High

Dentally manages inbound migrations rather than offering self-service export

Medium

Final migration runs the day before go-live, leaving a narrow correction window

Medium

Dentally Vision imaging requires separate product setup

Low

Tier-gated features may be inactive in the migrated environment

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 Professional caps custom tables at 15 — Enterprise required for full dental schema

    Dentally's data model (treatment plans, appointments, invoices, practitioners, payment records) requires five to seven custom Dataverse tables plus supporting lookup relationships. If your Dynamics 365 Sales license is Professional tier, the 15-custom-table limit can be reached quickly when each dental entity also carries custom fields for status, type, clinical notes, and timestamps. We identify this at scoping and recommend the Enterprise or Premium license tier before migration begins. Upgrading mid-project adds licensing cost but avoids a schema redesign after data has already moved.

  • Appointment and invoice history requires a full custom-table build — no native equivalent in Dynamics 365 Sales

    Dentally stores complete appointment and invoice histories spanning years. Dynamics 365 Sales has no native appointment-slot or invoice entity — these are handled by custom Appointment__c and Invoice__c Dataverse tables with lookup fields to Contact and Practitioner__c. Each custom table requires column types to be defined (DateTime, Picklist, Currency, Lookup) before migration, and any custom fields in Dentally (treatment-specific dropdowns, insurance fields) must be pre-created in Dataverse with matching types. If Dentally uses custom appointment statuses or invoice terms, the value-mapping table must be validated with your team before the migration run commits.

  • Dentally API rate limits require throttled export batching across large multi-site accounts

    Dentally enforces per-application API rate limits. For multi-site dental groups with tens of thousands of patient records, a full data export can exceed these limits during a single bulk request. FlitStack AI throttles Dentally API calls using exponential back-off, batching requests to stay within allocated limits. This extends the extraction window but prevents throttling errors that would otherwise halt the migration mid-run. The export remains read-only on Dentally throughout — your team keeps working in the platform during extraction.

  • Practitioner-to-patient lookups require a stable Contact-to-Practitioner resolution strategy

    Dentally practitioners are internal records; Dynamics 365 Sales has no native practitioner entity. We create a Practitioner__c custom table and link it to Contact via a lookup field. The resolution key is practitioner email: if the practitioner has a Contact record in Dynamics 365, the lookup resolves automatically. If not, unlinked practitioners are flagged before migration and your team decides whether to create Contact records for them or leave the practitioner lookup blank. Circular or missing practitioner references (deleted Dentally practitioners linked to active appointments) are surfaced in the pre-migration validation report.

  • Original create and modify timestamps must be preserved manually — Dynamics 365 sets CreatedDate at insert time

    Dynamics 365 Sales sets CreatedDate and ModifiedDate at the moment each record is inserted via API, overwriting any date values submitted in the payload. To preserve reporting continuity (showing when a patient was first created in Dentally, or when an invoice was last modified before migration), we create Original_Create_Date__c and Original_Modify_Date__c custom datetime fields on every target table. These fields carry the source timestamps exactly. Any business logic or reports that depend on creation date must reference these custom fields — not Dynamics native fields — after migration completes.

Migration approach

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

  1. Stand up Dataverse custom tables before migration

    Before any data moves, we create the custom Dataverse tables required for the dental schema: Practitioner__c, Treatment_Plan__c, Treatment_Item__c, Appointment__c, Invoice__c, Invoice_Line_Item__c, and Payment__c. For each table we define column types (Date, DateTime, Currency, Picklist, Lookup), create the lookup relationships to Contact and Practitioner__c, and add custom fields for status values, clinical notes, and timestamp preservation fields. We also add Original_Create_Date__c and Source_System_ID__c to the Contact table. This schema setup plan is delivered before migration so your Dynamics 365 admin can review and pre-create any additional columns you need.

  2. Export Dentally data via scoped API read

    FlitStack AI authenticates against Dentally using scoped read access — no write permissions are requested. We export patients, practitioners, appointments, treatment plans, treatment items, invoices, and invoice line items in sequence, preserving original creation and modification timestamps on each record. For multi-site accounts, the site/location identifier is captured so the practitioner location linking in Dynamics 365 is accurate. The Dentally API is polled with throttling and retry logic to stay within rate limits on large datasets. Read-only access means your team continues working in Dentally throughout the export window.

  3. Run sample migration with field-level diff

    A representative slice migrates first — typically 200–500 records covering patients, practitioners, appointments, and invoices from one or two Dentally sites. We generate a field-level diff between the source JSON and the destination Dataverse records so you can verify practitioner lookup resolution, appointment status value mapping, invoice outstanding balance preservation, and custom field completeness. Any mapping gaps or missing custom field definitions are corrected before the full run commits. The sample diff is delivered as a structured report, not a raw export.

  4. Cut over with sequenced full load and delta pickup

    The full migration runs in the correct foreign-key order: Practitioners__c first, then Contacts, then Appointment__c and Invoice__c with their line-item children. Every record retains its Original_Create_Date__c, Original_Modify_Date__c, and Source_System_ID__c. During the cutover window, a delta-pickup (typically 24–48 hours) captures any Dentally records created or modified after the extraction snapshot. The delta delta-merge completes the Dynamics 365 dataset to match Dentally's final state at go-live. FlitStack AI sequences the load so lookup relationships resolve correctly and invoice line items attach to their parent Invoice__c records without orphaning.

  5. Reconciliation report and audit log delivery

    After the full migration and delta-merge, FlitStack AI generates a reconciliation report comparing record counts and field totals between Dentally and Dynamics 365 for each entity type. The audit log captures every insert and update operation with timestamps, source record ID, and destination record ID. One-click rollback is available if the reconciliation reveals critical gaps. The report and audit log are delivered as downloadable documents; no data is stored on FlitStack servers after delivery.

Platform deep dives

Context on both ends of the pair

Dentally logo

Dentally

Source

Strengths

  • Strong UK market presence with over 12,000 subscribed practices providing peer credibility and local support networks.
  • Consolidates appointment scheduling, clinical records, NHS referrals, and payments in a single cloud-based platform without on-premise hardware.
  • Native integrations with Xero, DenGro, and NHS e-referrals reduce the need for middleware or manual data re-entry.
  • Patient-facing Dentally Portal and integrated Dentally Vision imaging add capability without requiring separate vendor contracts.

Weaknesses

  • API rate limits are not publicly documented and practices with multi-site or high-volume integrations report needing to request increases through support.
  • Public API documentation is limited, making custom development and third-party integration scoping difficult before commitment.
  • Advanced features including full imaging and enhanced NHS workflows are gated behind higher pricing tiers, increasing cost as practices grow.
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 Dentally and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Dentally 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

    Dentally: Not publicly documented; practices requiring higher limits must request them via Dentally support.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Dentally 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 Dentally-to-Dynamics 365 migrations complete in 48–72 hours for practices with up to 10,000 patient records and standard custom fields. Multi-site groups with 50,000+ records or deep appointment histories spanning years extend to 7–14 days. The longest planning step is Dataverse custom table design and value-mapping validation for appointment statuses and invoice states before migration begins. Additional time may be required for a pre‑migration schema review, sample migration test, and post‑migration reconciliation, each adding a few hours to a full day to ensure mapping accuracy and data integrity before the final cutover.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dentally.
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