CRM migration

Migrate from Perfect Portal to Microsoft Dynamics 365 Sales

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

Perfect Portal logo

Perfect Portal

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

92%

11 of 12

objects map 1:1 between Perfect Portal and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

3–5 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Perfect Portal organises data around Matters, client Parties, Milestones, and document Attachments — a model built for law firms tracking case progress through defined stages. Dynamics 365 Sales (built on Microsoft Dataverse) uses Accounts, Contacts, Leads, Opportunities, and custom tables as its core objects. These models do not align natively: there is no Matter or Milestone equivalent in Dynamics 365, no built-in stage-transition audit field, and no N-party client relationship model. FlitStack AI maps your Matter records to custom Opportunity tables, client Parties to Account or Contact entities based on party type, and preserves Milestone stage histories as custom fields with stage-entered timestamps. Document attachments are re-hosted into SharePoint or Dynamics 365 native file storage since Perfect Portal stores them as URL references. A scoped read-access connection runs during the migration — your team continues working in Perfect Portal throughout. A delta-pickup window (24–48 hours) captures any Matter updates made during cutover. We surface Milestone automation logic as a rebuild reference so your Dynamics admin can recreate Matter-update flows in Power Automate or Dynamics workflows. All records land in Dynamics 365 with original create dates preserved as custom datetime fields for continuity in reporting.

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

Perfect Portal logo

Perfect Portal

What's pushing teams away

  • Perfect Portal does not appear to offer a public API or bulk data export mechanism, making self-service migration difficult and requiring manual or vendor-assisted extraction.
  • Cloud-based storage of privileged client matter data introduces data residency and confidentiality concerns that some firms find difficult to accept, particularly around third-party access.
  • The portal is a bolt-on product tightly coupled to its host practice management system, limiting flexibility if the firm wants to switch underlying PMS providers.
  • Per-matter pricing for client access can scale unpredictably as the firm grows, with no published tiered discount structure for high-volume practices.

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

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

Perfect Portal

Matter

maps to

Microsoft Dynamics 365 Sales

Opportunity (custom table on Dataverse)

1:1
Fully supported

Perfect Portal Matters contain the case name, client reference, status, and all nested parties and milestones. Dynamics 365 has no native Matter equivalent — we map Matters to a custom Opportunity table, creating custom fields for MatterType, CaseReference, BillingArrangement, and priority. The Opportunity Name maps from Matter.MatterName or Matter.CaseReference.

Perfect Portal

Matter.MatterName

maps to

Microsoft Dynamics 365 Sales

Opportunity.Name

1:1
Fully supported

Direct map. MatterName populates Opportunity.Name as the primary display label. Where MatterName is empty, we use Matter.CaseReference as a fallback Name value. The display label appears in Dynamics 365 pipeline views, related lists, and reporting charts, so selecting the most descriptive field ensures your team immediately recognises each record without opening it.

Perfect Portal

Matter.Amount

maps to

Microsoft Dynamics 365 Sales

Opportunity.EstimatedValue

1:1
Fully supported

Perfect Portal fee amounts map to EstimatedValue on the Opportunity record. Where Perfect Portal stores fee ranges rather than a single amount, we populate EstimatedValue with the midpoint and flag it in EstimatedValue_Source__c. This preserves transparency — your pipeline totals use a consistent numeric value, while the source flag lets finance teams filter or exclude estimated ranges in custom reports.

Perfect Portal

Matter.Status

maps to

Microsoft Dynamics 365 Sales

Opportunity.StateCode / custom Status__c

1:1
Fully supported

Perfect Portal Matter statuses (Active, On Hold, Closed Won, Closed Lost) map to Dynamics 365 StateCode (Open/Won/Lost) plus a custom pick-list field (PP_Status__c) preserving the exact source label. Value-by-value mapping ensures no status label is lost in translation. The PP_Status__c field displays the original Perfect Portal status in Dynamics 365 views, so your team instantly sees the legacy status without cross-referencing the source system.

Perfect Portal

Matter.OpenedDate

maps to

Microsoft Dynamics 365 Sales

Opportunity.CreatedOn (custom preservation field)

1:1
Fully supported

Dynamics 365 sets CreatedOn at record-creation time during migration. We preserve the original Matter.OpenedDate as PP_OpenedDate__c (Date field) so reports reflect when the matter actually began in Perfect Portal. This custom field appears in Dynamics 365 advanced find, pipeline reports, and Power BI dashboards, giving your team the true case origin date for compliance tracking and historical analysis.

Perfect Portal

Matter.AssignedFeeEarner

maps to

Microsoft Dynamics 365 Sales

Opportunity.OwnerId

1:1
Fully supported

Owner resolved by email match against Dynamics 365 users. Unmatched fee earners are flagged before migration — your team either creates the user in Dynamics first or assigns to a fallback owner. No record lands without a valid OwnerId. The exception report lists each unresolved email with a proposed fallback owner, so your admin resolves all gaps before the migration run begins.

Perfect Portal

Party (client type)

maps to

Microsoft Dynamics 365 Sales

Account / Contact

1:many
Fully supported

Organisational parties map to Account records. Individual parties map to Contact records. Where a Matter has multiple parties of mixed types, the primary party becomes the Account/Contact and additional parties are added via Account Contact Roles with a PP_PartyRole__c custom pick-list label.

Perfect Portal

Party (contact type)

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Party records with contact details (email, phone, address) map 1:1 to Dynamics 365 Contact. Contact.FullName maps from Party.FullName; Contact.EmailAddress1 maps from Party.Email. OwnerId on Contact resolved by email match to Dynamics users. Where a contact already exists in Dynamics, we match on EmailAddress1 to avoid duplicating records, merging in any additional fields present in the Perfect Portal Party record.

Perfect Portal

Milestone

maps to

Microsoft Dynamics 365 Sales

Custom datetime fields on Opportunity

1:1
Fully supported

Dynamics 365 has no native milestone construct. We map each Perfect Portal Milestone to a pair of custom fields: PP_Milestone_[Name]_Date__c (Date) and PP_Milestone_[Name]_Completed__c (Boolean). Stage-transition timestamps from Perfect Portal are preserved as separate custom datetime fields for audit continuity. These fields display in the Opportunity timeline view, giving your team a chronological record of every stage entry and exit without querying custom reports.

Perfect Portal

Attachment / Document

maps to

Microsoft Dynamics 365 Sales

SharePoint / Dynamics 365 Files

1:1
Fully supported

Perfect Portal stores document references as URLs pointing to internal storage. We download each document and re-upload to the relevant Account or Contact SharePoint document location, then write the file URL into a PP_DocumentURL__c custom field on the parent Opportunity record.

Perfect Portal

MatterNote / Activity Log

maps to

Microsoft Dynamics 365 Sales

Annotation (Notes)

1:1
Fully supported

Matter notes and activity log entries migrate as Dynamics 365 Annotations on the parent Opportunity. Original timestamps and author information are preserved in the Annotation.CreatedOn and Annotation.OwnerId fields. Each Annotation record is linked to the Opportunity, so your team sees the full activity history in the Dynamics 365 timeline without switching between screens or exporting data to audit logs.

Perfect Portal

MatterUpdate

maps to

Microsoft Dynamics 365 Sales

Task

1:1
Fully supported

Matter status updates and system-logged changes migrate as closed Tasks on the Opportunity. Task.Subject is set to 'Matter Update: [status change description]' and Task.ActualEnd reflects the original update timestamp. These closed Tasks appear in the Opportunity activity history, giving your team a chronological audit trail of every status change without relying on external log exports or manual spreadsheets.

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.

Perfect Portal logo

Perfect Portal gotchas

High

No public API or documented export endpoint

High

Third-party access complicates data residency and privilege

Medium

Matter stages are defined per-firm and non-standardised

Low

SMS notification logs are not independent 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

  • No public API — Perfect Portal data extraction requires coordinated export

    Perfect Portal does not publish a public REST API for third-party data extraction. Migration depends on coordinating a data export with the Perfect Portal team or using a supported export format. FlitStack sequences the migration to request the export package first, validates its completeness against your record counts before committing to the migration timeline, and flags any missing fields in the export so you can request a supplemental extract before the migration run. This step adds 2–5 business days to the overall project schedule compared to migrations from platforms with open APIs.

  • Milestone stage history requires custom field proliferation on Opportunity

    Dynamics 365 Opportunity has no native construct for milestone stages. FlitStack maps each Perfect Portal Milestone to a pair of custom fields — a Date field for the completion timestamp and a Boolean for completion status — plus a datetime field for when the stage was first entered. If your Perfect Portal instance uses more than 20 unique milestone types, the number of custom fields on the Opportunity record approaches Dynamics 365 field limits. We surface this before the migration runs and recommend a milestone-consolidation pass to collapse similar stages into a single field with a pick-list value, reducing field proliferation while preserving all stage timestamps.

  • Sales Professional tier caps custom tables at 15 — Enterprise may be required

    Dynamics 365 Sales Professional enforces a 15-table customisation limit on Dataverse. If your Perfect Portal setup uses more than 15 unique entity types (custom fields, related tables, or junction objects), the Professional tier will block the migration from completing. FlitStack audits the source entity count during discovery and flags whether your migration requires a Sales Enterprise license ($105/user/month vs $65/user/month) before the first record is touched. This avoids a mid-migration licensing upgrade that would delay the project and add cost.

  • N:1 party-to-matter collapse changes reporting granularity

    Perfect Portal allows multiple parties to be associated with a single Matter in a many-to-one relationship. Dynamics 365 Opportunity has a single primary AccountId and a native Account Contact Roles table for additional roles. We map the primary party to Account or Contact and subsequent parties to Account Contact Roles with a PP_PartyRole__c custom pick-list preserving the original role label from Perfect Portal. The key limitation: Dynamics 365 does not support a many-to-many Matter-to-Account relationship natively — any Matter that had more than two parties will have additional parties accessible only through the Account Contact Role records, which changes how your team queries related accounts.

  • Document URL references break after cutover without re-hosting

    Perfect Portal stores document references as URLs pointing to internal portal storage. After cutover, those URLs return 404 errors in Dynamics 365 because the document no longer lives at the original address. FlitStack downloads every document referenced in Attachment records, re-uploads to a SharePoint document library or Dynamics 365 native Files storage, and writes the new file URL into a PP_DocumentURL__c field on the parent Opportunity record. This operation is synchronous with the migration run — documents are not left dangling. Large document sets (over 10,000 files) may require a separate document-migration phase to avoid extending the cutover window.

Migration approach

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

  1. Coordinate Perfect Portal data export and audit source schema

    FlitStack initiates contact with Perfect Portal to request a structured data export covering all Matters, Parties, Milestones, Attachments, and notes. We audit the export schema against your reported record counts to confirm completeness before committing to the migration plan. Any fields missing from the export are flagged immediately so you can request a supplemental extract. This step also identifies custom fields and milestone types that will require custom field creation in Dynamics 365 before the data load begins.

  2. Stand up Dynamics 365 schema: custom fields, tables, and SharePoint libraries

    Before any data moves, your Dynamics 365 admin (or our team) creates the custom Opportunity fields for MatterType, Priority, BillingArrangement, milestone dates, and all milestone-specific completion fields. We also provision the SharePoint document library for re-hosted attachments. The schema setup plan is delivered as a checklist so your admin can pre-create the fields during the discovery phase, reducing validation friction when the migration run starts. If your record counts require Sales Enterprise over Sales Professional, this step includes the license upgrade planning.

  3. Resolve owners and primary accounts before bulk data load

    We match every Perfect Portal fee earner (AssignedFeeEarner) against Dynamics 365 users by email. Unmatched fee earners are listed in a pre-migration exception report — your team either creates the corresponding Dynamics user or assigns the records to a fallback owner before the migration run commits. Accounts and Contacts are loaded first so their record IDs are available for the Opportunity.OwnerId and Contact.AccountId lookups that follow. This sequencing ensures no foreign-key orphaning in the target system.

  4. Run sample migration with field-level diff across Matter, Party, and Milestone records

    A representative slice — typically 100–500 records spanning Matters with multiple Parties, milestone histories, and a range of statuses — migrates first. We generate a field-level diff report showing the source value, the mapped destination field, and the post-migration value in Dynamics 365. You verify milestone-date field naming, party-to-account collapse, status value mapping, and owner resolution before the full run commits. Any mapping corrections are applied before the bulk load.

  5. Execute full migration with scoped read access and delta-pickup window

    The full migration runs against Dynamics 365 using Bulk API for high-volume record insertion. Scoped read access on Perfect Portal means your team keeps working in Perfect Portal throughout — no account lock, no downtime. A 24–48 hour delta-pickup window after the bulk load captures any Matter updates or new Parties created during the cutover. Every operation is logged in an audit table (PP_MigrationBatchID__c, PP_MigratedAt__c) so you can trace any record back to its source. One-click rollback is available if reconciliation reveals unexpected data divergence.

Platform deep dives

Context on both ends of the pair

Perfect Portal logo

Perfect Portal

Source

Strengths

  • Purpose-built for law firm matter-stage visibility with configurable workflow stages.
  • Built-in SMS notification automation tied to stage completion events.
  • Third-party referrer access and commission transparency without additional software.
  • Clean client-facing portal that reduces inbound status calls to the firm.
  • Linked to practice management system so matter data is not duplicated manually.

Weaknesses

  • No documented public API for automated data extraction or migration tooling.
  • Tightly coupled to the host practice management system; switching PMS may break or require reconfiguration of the portal.
  • Third-party access to privileged matter data creates confidentiality governance overhead.
  • Per-matter client pricing lacks transparency and may not scale cost-effectively for high-volume firms.
  • Data residency and security controls for confidential legal matter data in a cloud portal are not publicly documented.
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 Perfect Portal and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

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

    Perfect Portal: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Perfect Portal 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 Perfect Portal migrations complete in 5–7 business days of migration time for under 10,000 Matters, plus a 24–48 hour delta-pickup window. Migrations with 10,000–50,000 Matters or multiple custom milestone fields extend to 8–12 business days. The Perfect Portal data-export coordination step adds 2–5 days before migration begins. Enterprise migrations with complex party-to-matter relationships and SharePoint document re-hosting of more than 10,000 files can run 4–8 weeks from kickoff to go-live.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Perfect Portal.
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