CRM migration
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
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
14 of 14
objects map 1:1 between The Practice and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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
The Practice platform overview
Scorecard, SWOT, gotchas, and pricing for The Practice.
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 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
Microsoft Dynamics 365 Sales
Contact
1:1The 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)
Microsoft Dynamics 365 Sales
Account
1:1When 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
Microsoft Dynamics 365 Sales
Custom Session Dataverse Table
1:1The 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)
Microsoft Dynamics 365 Sales
Opportunity
1:1Completed 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
Microsoft Dynamics 365 Sales
Invoice (Dynamics 365 Sales)
1:1The 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
Microsoft Dynamics 365 Sales
InvoiceLineItem (custom)
1:1Each 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
Microsoft Dynamics 365 Sales
Custom Column on Contact/Account
1:1Every 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
Microsoft Dynamics 365 Sales
Annotation (Note)
1:1Session 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
Microsoft Dynamics 365 Sales
SystemUser → OwnerId
1:1The 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
Microsoft Dynamics 365 Sales
No equivalent
1:1The 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
Microsoft Dynamics 365 Sales
No equivalent
1:1The 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
Microsoft Dynamics 365 Sales
No equivalent
1:1The 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
Microsoft Dynamics 365 Sales
Power BI (reference only)
1:1The 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
Microsoft Dynamics 365 Sales
SharePoint / OneDrive (via Dataverse)
1:1The 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.
| The Practice | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Client | Contact1:1 | Fully supported | |
| Client (organization-type) | Account1:1 | Fully supported | |
| Session | Custom Session Dataverse Table1:1 | Fully supported | |
| Session (completed, paid) | Opportunity1:1 | Fully supported | |
| Invoice | Invoice (Dynamics 365 Sales)1:1 | Fully supported | |
| Billing Record | InvoiceLineItem (custom)1:1 | Fully supported | |
| Client Custom Property | Custom Column on Contact/Account1:1 | Fully supported | |
| Session Note | Annotation (Note)1:1 | Fully supported | |
| Coach/User | SystemUser → OwnerId1:1 | Fully supported | |
| Practice Automation / Workflow | No equivalent1:1 | Fully supported | |
| Email Template | No equivalent1:1 | Fully supported | |
| Integration / Zapier connection | No equivalent1:1 | Fully supported | |
| Report / Dashboard | Power BI (reference only)1:1 | Fully supported | |
| Client Photo / Document Attachment | SharePoint / OneDrive (via Dataverse)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.
The Practice gotchas
No public API means all migration data must be extracted manually
Session recordings and large files require separate manual download
Client group and tag inheritance is not automatically preserved in exports
Contract PDFs are stored as linked files, not embedded records
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
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.
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.
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.
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.
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
The Practice
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between The Practice and Microsoft Dynamics 365 Sales .
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across The Practice and Microsoft Dynamics 365 Sales .
Object compatibility
All 8 core objects map 1:1 between The Practice 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
The Practice: Not publicly documented.
Data volume sensitivity
The Practice 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 The Practice to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave The Practice
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.