CRM migration

Migrate from Profi to Microsoft Dynamics 365 Sales

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

Profi logo

Profi

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

90%

9 of 10

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Profi organizes client-facing coaching data as unified objects: clients with lifecycle and contact details, session histories, program enrollments, coach assignments, and payment records. Dynamics 365 Sales structures CRM data on the Dataverse engine using Account, Contact, Lead, and Opportunity entities — with a strict split between Leads (pre-Qualification) and Contact records. FlitStack AI maps Profi clients to Dynamics 365 Contacts, Profi company data to Account records, and resolves owner assignments by matching coach emails against Dynamics 365 users. Coaching-specific data — program enrollments, session records, coach profiles, and billing history — requires custom Dataverse tables and custom fields, since no native Dynamics 365 entity represents these concepts. The migration sequence runs Accounts and Contacts first, establishing foreign-key relationships, then creates the custom coaching tables, followed by activity history. A sample diff validates field mapping accuracy, and a 24–48 hour delta window captures any in-flight changes at cutover, ensuring data continuity throughout the transition.

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

Profi logo

Profi

What's pushing teams away

  • Limited feature depth frustrates growing coaching businesses that need advanced automation, custom reporting, or third-party integrations beyond what the platform natively provides.
  • No bulk data export mechanism forces coaches to manually re-enter client records and session history when switching platforms, making migration painful and error-prone.
  • Pricing becomes prohibitive for solo practitioners as practice scales, with no transparent mid-tier that balances cost against feature access for small-team use cases.
  • The platform's opinionated structure resists customization needed for specialty coaching niches, leading coaches with non-standard workflows to seek more flexible alternatives.
  • Locked-in session and package metadata makes it difficult to cleanly migrate active enrollments and recurring billing relationships to competing platforms.

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

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

Profi

Client

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Profi clients map directly to Dynamics 365 Contacts. All standard contact fields (name, email, phone, address) translate field-for-field. Profi lifecycle stage data migrates as a custom pick-list field (Client_Lifecycle_Stage__c) on the Contact since Dynamics has no native coaching-progression equivalent. This custom field can be placed on the Contact form for reporting and segmentation, and original creation timestamps are preserved via the Original_Create_Date__c custom field to maintain audit continuity.

Profi

Company

maps to

Microsoft Dynamics 365 Sales

Account

1:1
Fully supported

Profi company data maps to Dynamics 365 Account records. Industry, employee count, annual revenue, and address fields translate directly. Profi's company type field (e.g., individual coach, coaching firm, corporate client) migrates as a custom pick-list field (Company_Type__c) on the Account.

Profi

Client (pre-coaching lead)

maps to

Microsoft Dynamics 365 Sales

Lead

1:many
Fully supported

Profi contacts who have not yet booked a session are treated as Leads in Dynamics 365 Sales. We split Profi clients into Leads (no session history) and Contacts (at least one session booked). The split rule is configurable — your team can specify the threshold based on Profi's enrollment or activity data.

Profi

Booking / Session

maps to

Microsoft Dynamics 365 Sales

Activity (Task or Email)

1:1
Fully supported

Profi session records migrate as Dataverse Activities. Each session becomes a Task with Subject set to the session name, and custom fields for Session_Type__c, Duration_Minutes__c, Session_Date__c, and Session_Status__c. Coach assignment resolves by email match to a Dynamics 365 user. The Task's Regarding field links to the Contact record, preserving the client relationship in the Dynamics 365 activity timeline.

Profi

Program / Course Enrollment

maps to

Microsoft Dynamics 365 Sales

Custom Table: Program_Enrollment__c

1:1
Fully supported

Profi program and course enrollment data has no native equivalent in Dynamics 365 Sales. We create a custom Dataverse table (Program_Enrollment__c) linked to the Contact record via a lookup relationship. Enrollment status and progress percentage migrate as custom fields on this table.

Profi

Payment / Invoice

maps to

Microsoft Dynamics 365 Sales

Custom Table: Coaching_Payment__c

1:1
Fully supported

Profi payment and invoice records do not map to any standard Dynamics 365 entity. We create a custom Dataverse table (Coaching_Payment__c) linked to the Contact, with fields for Amount, Currency, Payment_Date, and Payment_Status (value-mapped from Profi statuses to Dynamics-compliant pick-list values).

Profi

Coach / Staff

maps to

Microsoft Dynamics 365 Sales

System User + Custom Table: Coach__c

1:1
Fully supported

Profi coaches and staff members are resolved by email match to existing Dynamics 365 users for ownership assignment. Coach profile data (specialty, credentials, bio) that does not fit on the system User record migrates to a custom Coach__c Dataverse table linked to the corresponding User.

Profi

Note / Session Note

maps to

Microsoft Dynamics 365 Sales

Annotation

1:1
Fully supported

Profi session notes and client notes map to Dataverse Annotations. The note text, created-on timestamp, and owning user all transfer. Rich-text formatting is preserved where Profi's format is compatible with the Annotation body field. Any embedded file attachments in Profi notes are migrated as Dynamics 365 file attachments (annotationattachments), and the notes can be visualized in Power BI using the Dataverse Notes entity for reporting and analysis.

Profi

Custom Field (Profi platform-specific)

maps to

Microsoft Dynamics 365 Sales

Custom Field on relevant entity

1:1
Fully supported

Any Profi custom fields added by your team — client-specific properties, program attributes, or billing metadata — are audited during discovery. Each custom field is type-matched to a Dataverse field type and created on the appropriate entity before migration data loads.

Profi

User / Owner Assignment

maps to

Microsoft Dynamics 365 Sales

System User (Owner)

1:1
Fully supported

Owner assignment across all Profi objects resolves by matching the owner or coach email address to a Dynamics 365 system user record. Unmatched owners are flagged before migration so your team can either invite them to Dynamics 365 or reassign their records to a designated fallback owner.

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.

Profi logo

Profi gotchas

High

No public API for bulk data export

Medium

Package-to-session linkage breaks in export

Medium

Video recordings stored outside standard export

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

  • Custom Dataverse table limit caps custom coaching entities under Sales Professional

    Dynamics 365 Sales Professional limits custom tables to 15 on Dataverse. Profi setups with program enrollments, session records, coach profiles, and payment history may exceed this cap — pushing migrations into a Sales Enterprise requirement. FlitStack surfaces this during discovery and delivers a custom-table audit before migration data loads, so your team can upgrade the license or consolidate custom entities before cutover. If your migration plan requires additional custom tables beyond the 15-table ceiling, FlitStack will flag each surplus entity and recommend either merging related data into existing tables or securing a Sales Enterprise license, which raises the cap to 500 custom tables.

  • Pick-list integer value mismatch silently corrupts data in Dataverse

    Dynamics 365 Dataverse stores pick-list values as integer IDs, not string labels. When a Profi pick-list field maps to a Dataverse OptionSet, the integer values must match exactly between source and target — a mismatch silently writes the wrong pick-list option to the record. FlitStack validates all value mappings against the target Dataverse schema before any data loads and flags any Profi pick-list value that lacks a corresponding Dataverse option.

  • Coach-to-user email resolution leaves unmatched owners without Dynamics access

    Profi coach and owner assignments link records to individuals by email. Dynamics 365 requires a system User record for owner assignment — if a Profi coach email does not match a Dynamics 365 user at migration time, their assigned records land with a fallback owner. FlitStack runs a pre-migration email match audit, surfaces all unmatched coach emails, and lets your team invite those users to Dynamics 365 before the migration run commits.

  • Custom fields created via the Dynamics UI get Field-Level Security applied automatically

    When a Dynamics 365 admin creates a custom field through the UI, Field-Level Security is enabled by default — restricting read and write access to designated security roles. FlitStack creates custom fields through the Dataverse API with Field-Level Security set to allow access for all roles by default. If your organization requires restricted access on specific fields (e.g., coaching payment amounts), FlitStack applies your specified Field-Level Security profile as part of the migration plan.

  • Dataverse API request limits throttle bulk activity migration

    Dataverse API request limits throttle bulk activity migration. Dynamics 365 Dataverse enforces API request allocation limits based on license tier and environment type. Migrating large volumes of session Activity records (tasks, appointments, notes) against these limits can cause throttling or 429 errors. FlitStack uses batched API requests with configurable throttle-backoff, splitting activity migration into sequential batches sized to stay within the Dataverse request allocation for your environment. The allocation tiers are published in the Microsoft documentation; FlitStack logs each batch response and automatically retries with exponential backoff when a 429 is received, ensuring no records are dropped.

Migration approach

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

  1. Audit Profi data model and build Dynamics 365 custom entity schema

    FlitStack connects to Profi via its API or export endpoint and inventories all active objects — clients, sessions, programs, coaches, payments, and any custom fields. We then produce a custom Dataverse table schema specifying the tables, fields, pick-list values, and relationships required for each Profi coaching entity. Your Dynamics 365 admin creates the tables and fields (or FlitStack creates them via Dataverse API) before any data moves.

  2. Resolve coach and owner email matches to Dynamics 365 users

    All Profi owner and coach assignments are resolved by matching their email address to existing Dynamics 365 user accounts. FlitStack generates a pre-migration match report listing matched users, unmatched users, and records that will fall to the designated fallback owner. Your team resolves unmatched users — inviting them to Dynamics 365 or reassigning their records — before the migration run starts.

  3. Migrate core records in dependency order: Accounts, Contacts, Leads, then custom tables

    Dynamics 365 requires Account records to exist before Contacts (via the primary contact lookup), and Contact records to exist before Activity records can link to them. FlitStack sequences the migration in strict dependency order: Accounts first, then Contacts/Leads split by session history, then custom Dataverse tables (Program_Enrollment__c, Coaching_Payment__c, Coach__c), then Activity records. This ordering ensures every foreign-key lookup resolves correctly at load time.

  4. Run a sample migration with field-level diff across all entity types

    Run a sample migration with field-level diff across all entity types. A representative sample — typically 200–500 records spanning clients, companies, sessions, program enrollments, and payments — migrates first. FlitStack produces a field-level diff report showing every source field, its mapped destination value, and any transformation applied. You verify lifecycle-stage mapping, session-to-Activity translation, and custom table data before the full migration commits. Any discrepancies highlighted by the diff are corrected in the mapping rules before the final load, reducing the risk of data integrity issues during cutover.

  5. Execute full migration with delta-pickup and one-click rollback

    The full Profi dataset migrates into Dynamics 365. A 24–48 hour delta-pickup window runs concurrently, capturing any records created or modified in Profi during the cutover period. FlitStack maintains a full audit log of every record written. If reconciliation fails — missing foreign keys, pick-list mismatches, or data integrity issues — one-click rollback reverts the Dynamics 365 environment to its pre-migration state so the team can resolve and re-run without data loss.

Platform deep dives

Context on both ends of the pair

Profi logo

Profi

Source

Strengths

  • Consolidated feature set covering scheduling, video, content, and billing in one platform.
  • Highly rated interface cleanliness and ease of use for solo and small-team practices.
  • Built-in secure video conferencing eliminates dependency on separate video tools.
  • Native package and enrollment management for recurring coaching programs.
  • Reliable uptime and customer support highlighted by long-term users.

Weaknesses

  • No public bulk-export API makes data portability a manual, error-prone process.
  • Limited customization for specialty coaching workflows and reporting needs.
  • Pricing model lacks a clear mid-tier for small teams, making it expensive at scale.
  • Video recordings and content files require separate file-level export outside the data export process.
  • Gaps in integration ecosystem compared to broader CRM platforms with Zapier or webhook support.
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 Profi and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

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

    Profi: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Profi 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 Profi-to-Dynamics 365 migrations complete in 48–72 hours of clock time for under 50,000 records, assuming the custom Dataverse tables are created before migration runs. Larger implementations with program enrollment tables, coach profile records, and high session volumes extend to 5–7 days. The full project — discovery, schema build, sample migration, and cutover — typically spans 4–6 weeks. Custom entity complexity and data cleanup are the primary timeline drivers.

Adjacent paths

Related migrations to explore

Ready when you are

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