CRM migration

Migrate from The Practice to Microsoft Dynamics 365 Sales

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

The Practice logo

The Practice

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

100%

14 of 14

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Teams leave The Practice when their practice-management needs expand beyond client scheduling and session notes into territory management, advanced forecasting, ERP integration via Business Central, or a need for deeper Microsoft 365 co-sell workflows. The migration carries The Practice's standard objects — clients, sessions, invoices, billing history, and custom properties — into Dynamics 365 Sales entities: Account, Contact, Opportunity, and custom Dataverse tables. The harder translation problems are The Practice's session-type and billing-status fields mapping to Dynamics 365 Sales Opportunity State/Statuscode value sets, coach-to-owner resolution against Azure Active Directory identities, and the lack of a direct workflow equivalent — Power Automate flows and Dynamics business process flows must be rebuilt. FlitStack AI uses The Practice's API for data extraction, transforms records to match Dataverse column types and pick-list OptionSet values, loads via the Dataverse Web API with batched requests, and runs a delta-sync window (24–48 hours) before go-live. We do not migrate workflows, email templates, or integrations — those are rebuilt manually post-migration.

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

The Practice logo

The Practice

What's pushing teams away

  • Email reminders send from a generic 'Practice' sender name rather than the practitioner's own name or business name, which clients sometimes ignore or mark as spam.
  • The platform has no public API, which frustrates power users and teams that need to connect The Practice to their existing analytics, billing, or telephony stack.
  • Storage limits on file uploads are not clearly communicated at signup, leading to surprise billing when coaches try to store session recordings or large PDFs.
  • The reporting and export features are limited compared to purpose-built CRM platforms, making it difficult to generate clean data for business reviews or tax preparation.

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

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

The Practice

Client

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

The Practice Client maps to Dynamics 365 Sales Contact. Most client fields (name, email, phone) translate directly. Clients who represent an organization rather than an individual route to Account; The Practice's client_type field is used to determine the split — individual clients become Contacts, organization-named clients become Accounts with a related Contact.

The Practice

Client (organization-type)

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

When The Practice client record has a company name populated in the organization field, that record maps to Dynamics 365 Sales Account. The contact-level details (coach, primary service) are preserved as custom fields on the Account record. Account.Industry uses a value-mapped set based on the practice vertical.

The Practice

Session

maps to

Microsoft Dynamics 365 Sales

Custom Session Dataverse Table

1:1
Fully supported

The Practice Session has no direct Dynamics 365 Sales equivalent — sessions are not Leads, Opportunities, or standard activities. FlitStack creates a custom Dataverse table (new_Session) with a lookup to Contact (new_ClientId). Session status (scheduled/completed/cancelled) maps to a custom OptionSet (new_SessionStatus). Coach assignment maps to OwnerId on the custom table.

The Practice

Session (completed, paid)

maps to

Microsoft Dynamics 365 Sales

Opportunity

1:1
Fully supported

Completed and paid sessions in The Practice that represent recurring service revenue can be aggregated into a Dynamics 365 Sales Opportunity. Each session contributes to the Opportunity.Amount field; the SessionCount__c custom field on the Opportunity tracks the number of contributing sessions. This is an optional mapping for teams that want pipeline-level revenue tracking.

The Practice

Invoice

maps to

Microsoft Dynamics 365 Sales

Invoice (Dynamics 365 Sales)

1:1
Fully supported

The Practice Invoice maps to the Dynamics 365 Sales Invoice entity only when the Dynamics tenant has Sales Professional or Enterprise licensed (Invoice requires the sales-document module). Invoice.Amount maps from The Practice invoice.total_amount. Invoice status (paid/overdue/void) maps to Invoice.StatusCode via value_mapping.

The Practice

Billing Record

maps to

Microsoft Dynamics 365 Sales

InvoiceLineItem (custom)

1:1
Fully supported

Each line item on a The Practice invoice — representing a session, package, or product — maps to a custom Dataverse table (new_InvoiceLineItem) linked to Invoice. The line item description, quantity, and unit price map to corresponding custom fields. ServiceType from The Practice maps as a lookup to a custom ServiceType table.

The Practice

Client Custom Property

maps to

Microsoft Dynamics 365 Sales

Custom Column on Contact/Account

1:1
Fully supported

Every The Practice custom property on a Client record creates a new column in the target Dataverse table. The Practice stores these as string key-value pairs; they are type-inferred during discovery — date values become DateOnly columns, numeric values become Decimal, text remains Text. The SchemaName uses the new_ prefix per Dataverse convention.

The Practice

Session Note

maps to

Microsoft Dynamics 365 Sales

Annotation (Note)

1:1
Fully supported

Session notes written in The Practice migrate as Dataverse Annotation records linked to the new_Session custom table. The Note.Title uses the session date plus 'Session Note'; the Note.Body contains the full note text. Original timestamps are preserved in Annotation.CreatedOn. Rich-text formatting is stripped to plain text to match Dataverse Note field constraints.

The Practice

Coach/User

maps to

Microsoft Dynamics 365 Sales

SystemUser → OwnerId

1:1
Fully supported

The Practice users assigned as coaches map to Dynamics 365 Sales SystemUser records. Resolution is by email address — FlitStack matches The Practice user.email to the Azure Active Directory UPN of a Dynamics 365 Sales user. Unmatched coaches are flagged before migration; the account owner assigns them a fallback OwnerId or invites them to the Dynamics tenant first.

The Practice

Practice Automation / Workflow

maps to

Microsoft Dynamics 365 Sales

No equivalent

1:1
Fully supported

The Practice workflows — session reminders, follow-up triggers, client onboarding sequences — have no direct equivalent in Dynamics 365 Sales. These must be rebuilt in Power Automate or Dynamics 365 Sales business process flows. FlitStack exports The Practice workflow definitions as a structured JSON reference document for your admin to use as a rebuild guide.

The Practice

Email Template

maps to

Microsoft Dynamics 365 Sales

No equivalent

1:1
Fully supported

The Practice email templates are not migrated. Dynamics 365 Sales uses Microsoft Copilot Studio or Power Automate for email automation; templates must be rebuilt using the source template text as reference. FlitStack preserves the template body text in a reference export file.

The Practice

Integration / Zapier connection

maps to

Microsoft Dynamics 365 Sales

No equivalent

1:1
Fully supported

The Practice integrations — including calendar synchronization, payment processor webhooks, and Zapier automation zaps — do not have a migration path to Dynamics 365 Sales. Post-migration, these connections must be rebuilt: calendar sync uses the Dynamics 365 Sales Outlook or Teams integration natively; payment processor hooks are rebuilt as Power Automate connectors or third-party middleware; Zapier zaps are replaced with Power Automate cloud flows that trigger on Dataverse record events.

The Practice

Report / Dashboard

maps to

Microsoft Dynamics 365 Sales

Power BI (reference only)

1:1
Fully supported

The Practice reports and dashboards do not migrate. The underlying data — session counts, billing totals, client retention — does migrate, so reports can be rebuilt in Dynamics 365 Sales native charts or Power BI. FlitStack provides a data dictionary of migrated fields to support the Power BI rebuild.

The Practice

Client Photo / Document Attachment

maps to

Microsoft Dynamics 365 Sales

SharePoint / OneDrive (via Dataverse)

1:1
Fully supported

The Practice document attachments on client records migrate to SharePoint Online via the Dynamics 365 Sales SharePoint integration. File size limit is 10 MB per file via the Dataverse Attachments API. Inline images in session notes are extracted, rehosted as individual Note attachments, and linked to the session record.

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.

The Practice logo

The Practice gotchas

High

No public API means all migration data must be extracted manually

Medium

Session recordings and large files require separate manual download

Medium

Client group and tag inheritance is not automatically preserved in exports

Low

Contract PDFs are stored as linked files, not embedded records

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 API request limits can throttle large session migrations

    The Dataverse Web API enforces per-user and per-environment request quotas (5,000 requests per user per 24 hours on standard licenses; higher on Enterprise). The Practice API extracts all sessions and custom properties in a single pass, but loading them into Dynamics 365 is constrained by Dataverse batch limits — 1,000 records per $batch request. For migrations exceeding 50,000 session records, FlitStack AI staggers loads across multiple API batches, monitors 429 Too Many Requests responses, and automatically retries with exponential back-off. We surface the batch schedule before migration runs so your Dynamics admin can coordinate with any concurrent Power Automate usage.

  • Invoice entity requires Sales Professional or Enterprise license — not available on all tiers

    Dynamics 365 Sales Invoice is part of the sales-document flow available only on Sales Professional ($65/user/month) and Sales Enterprise ($105/user/month). Teams licensed on Sales Team Member cannot use the Invoice entity natively. If your The Practice plan includes a full billing-history migration, FlitStack confirms the Dynamics 365 Sales license tier before mapping Invoice. If the license does not cover invoices, we migrate billing records to a custom Invoice__c Dataverse table instead — preserving the same field structure but outside the standard sales-document workflow.

  • Session records require a custom Dataverse table with non-standard relationship setup

    The Practice sessions are not Leads, Opportunities, or Activities in Dynamics 365 Sales. The standard Dynamics 365 Sales data model has no session entity — coaching, therapy, or service-session records must live in a custom Dataverse table (new_Session). This requires your Dynamics admin to create the custom table, define the Contact lookup column (new_ClientId), configure the OptionSet for session status, and add the SharePoint document location for session attachments before data lands. FlitStack delivers a pre-migration schema checklist specifying the exact table name, column schema names, and OptionSet values so the custom table is ready before extraction begins.

  • Workflow and automation rules do not migrate and require a manual rebuild

    The Practice workflows — session reminders, client onboarding sequences, follow-up triggers after sessions — are built on The Practice's proprietary automation engine and have no structural equivalent in Microsoft Dynamics 365 Sales. Dynamics 365 Sales uses Power Automate for workflow automation and business process flows for guided stage progression. There is no export-to-Dynamics conversion path. FlitStack exports your The Practice workflow definitions as a structured JSON reference file listing each automation's trigger, conditions, and actions in plain-language terms. Your Dynamics admin uses this file to rebuild each workflow in Power Automate. We do not charge for data migration and do not include workflow rebuild in the standard scope — it is quoted separately.

  • Coach-to-owner resolution may leave sessions orphaned if Azure AD email does not match

    The Practice assigns a coach to each client and session via an internal user record. Dynamics 365 Sales attributes records to users via OwnerId, which is a lookup to the SystemUser table keyed on Azure Active Directory UPN (user principal name). If a The Practice coach's email address (e.g., [email protected]) does not match any user's UPN in your Microsoft 365 tenant (which uses @yourcompany.com), the resolution query returns no match. FlitStack runs a pre-flight owner-resolve report before migration: all matched coaches land with correct OwnerId; unresolved coaches are flagged in a exceptions report with the option to assign them to a placeholder SystemUser or invite them to the Dynamics tenant first.

Migration approach

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

  1. Discover The Practice data model and Dynamics 365 target schema

    FlitStack AI connects to The Practice via API using scoped read credentials — no write access required. We enumerate all objects (clients, sessions, invoices, custom properties), count records per object, and identify field data types. Simultaneously, we audit your Dynamics 365 Sales environment: confirm the license tier (Professional/Enterprise/Team Member), check for existing custom tables, and identify any OptionSet definitions already in use. This produces a migration scoping document that names every source field, its destination column, and the mapping type before a single record moves.

  2. Create Dynamics 365 custom tables and OptionSets for session data

    If The Practice sessions, billing line items, or client custom properties cannot map to standard Dynamics 365 Sales entities, FlitStack creates the custom Dataverse tables and OptionSets before migration. We create new_Session with a Contact lookup (new_ClientId), a session status OptionSet (new_SessionStatus), and all custom columns from The Practice properties using the new_ schema prefix. The Dynamics admin reviews and publishes the schema in the target environment. We do not begin data extraction until this schema is confirmed as published.

  3. Export and transform The Practice data with field-level type mapping

    The Practice API exports clients, sessions, and invoices as JSON. FlitStack transforms each record: snake_case field names become PascalCase SchemaNames, The Practice pick-list values map to Dynamics 365 OptionSet integer values, date strings become Dataverse datetime format, and custom property key-value objects expand into individual column writes on the target entity. Client and session records are sorted so that dependent records (sessions referencing clients) load after the parent Contact is created, preserving the new_ClientId lookup integrity.

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

    A representative sample — typically 200–500 records across clients, sessions, and invoices — migrates first. FlitStack generates a field-level diff comparing each source field against the destination value in Dynamics 365 Sales. You review the diff to verify: coach-to-owner resolution is correct, session status OptionSet values match expectations, custom property columns landed on the correct records, and invoice totals sum correctly. The diff report is the gate before the full migration run commits.

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

    The full migration loads all clients, sessions, invoices, and custom property records into Dynamics 365 Sales using Dataverse $batch API calls. During the migration window, your team continues working in The Practice — FlitStack holds read-access only on the source. A delta-pickup window (24–48 hours post-full-load) captures records modified or created during the cutover. Every API operation is written to an audit log: source object, source ID, destination entity, destination ID, and timestamp. If reconciliation fails, the one-click rollback reverts all Dataverse writes by entity in reverse load order.

Platform deep dives

Context on both ends of the pair

The Practice logo

The Practice

Source

Strengths

  • Unlimited contacts and storage on all plans without per-record billing
  • Built-in scheduler with automated appointment reminders via email and SMS
  • Private client messaging integrated into the platform
  • Contract signing and management with document storage
  • Responsive customer support reported across multiple review sources

Weaknesses

  • No public REST API for bulk data export or third-party integrations
  • Email reminder sender name does not include the practitioner's business name
  • Limited reporting and analytics beyond basic client summaries
  • File storage has undocumented size limits that can trigger surprise overages
  • No migration tooling or official export path for switching platforms
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 The Practice and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

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

    The Practice: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your The Practice to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

For migrations under 25,000 total records (clients, sessions, and invoices combined), FlitStack AI typically completes in 48–72 hours of clock time. Migrations exceeding 100,000 records or those requiring the creation of custom Dataverse tables with many custom properties extend to 5–10 business days. The longest single step is the Dynamics 365 schema setup (custom table creation, OptionSet definition) — which FlitStack sequences before the data load begins so it does not run concurrently.

Adjacent paths

Related migrations to explore

Ready when you are

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