CRM migration
Field-level mapping, validation, and rollback between AgileCase and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .
AgileCase
Source
Microsoft Dynamics 365 Sales
Destination
Compatibility
11 of 12
objects map 1:1 between AgileCase and Microsoft Dynamics 365 Sales .
Complexity
BStandard
Timeline
48–72 hours
Overview
AgileCase stores everything as Case objects — contacts, companies, cases, tasks, and custom fields sit inside one flexible case-centric model. Dynamics 365 Sales separates leads, contacts, accounts, and opportunities across distinct entities using Microsoft Dataverse. FlitStack AI extracts your AgileCase schema, maps Case records to Dynamics contacts and opportunities, and preserves custom field definitions as Dataverse columns with their original data types intact. AgileCase file attachments re-upload to Dynamics 365 SharePoint or Dataverse file columns. AgileCase workflow definitions (case plans, custom scripts, email templates) do not have a direct Dynamics equivalent — those are surfaced in an export package for your Power Automate rebuild. The migration uses AgileCase's REST API to read records, transforms data through a staging layer, and loads into Dynamics via Dataverse bulk operations or API calls, sequenced so foreign-key relationships resolve correctly. A delta-pickup window runs during cutover to capture records modified while the migration processes.
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
AgileCase platform overview
Scorecard, SWOT, gotchas, and pricing for AgileCase.
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 AgileCase 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.
AgileCase
Contact (inside Case)
Microsoft Dynamics 365 Sales
Contact
1:1AgileCase stores contacts inside cases. FlitStack extracts all unique contacts, deduplicates by email address, and loads them as Dynamics 365 Contact records. A primary CaseId reference is preserved as a custom field on the contact for traceability. FlitStack also merges duplicate contacts identified by phone number, and flags email-less contacts for Lead routing.
AgileCase
Contact (email-less)
Microsoft Dynamics 365 Sales
Lead
1:manyAgileCase contacts without an email address cannot map to Dynamics 365 Contact (which requires Email as a required-like field for duplicate detection). These records route to the Dynamics Lead entity instead, with a flag noting their original AgileCase source. The Lead retains the contact's name, phone, and address fields, and the source flag enables reporting on the origin of these records.
AgileCase
Company (inside Case)
Microsoft Dynamics 365 Sales
Account
1:1AgileCase companies extract to Dynamics 365 Account records. The primary contact link from the case becomes Account's primary contact lookup. Parent-child company hierarchies in AgileCase map to Account.ParentId in Dynamics. FlitStack also validates that each parent company exists before linking, and any orphaned child companies are queued for manual resolution. The account record retains the original AgileCase company ID in Source_ID__c for reconciliation.
AgileCase
Case
Microsoft Dynamics 365 Sales
Opportunity
1:1AgileCase Case objects map to Dynamics 365 Opportunity records — each case becomes one opportunity. Case name becomes Opportunity.Name; case amount maps to Opportunity.Amount; case closed date maps to Opportunity.CloseDate. FlitStack also copies the case description into the Opportunity Description field and maps any custom case fields to corresponding Dataverse columns on the Opportunity. If the case includes a reference to a primary contact, FlitStack resolves the ContactId lookup before loading the opportunity.
AgileCase
Case Status
Microsoft Dynamics 365 Sales
Opportunity Stage
1:1AgileCase case-status pick-list values (e.g., Open, In Progress, Resolved, Escalated) map to Dynamics Opportunity Stage values per pipeline. We create a Dataverse option-set for case status and map each value explicitly — no default mapping is assumed. If a case status value does not match an existing stage in the target pipeline, FlitStack creates a new stage entry in the Dataverse option-set and flags it for review, ensuring no status is lost during migration.
AgileCase
Case Priority
Microsoft Dynamics 365 Sales
Custom Field (Priority__c)
1:1AgileCase priority levels (Low, Medium, High, Critical) have no native Dynamics equivalent on Opportunity. We create a custom option-set field Priority__c on the Opportunity entity and map values one-by-one. The custom field is added to the Opportunity form layout and included in Power BI reports for filtering by priority. During migration, any unmapped priority values are logged and resolved by your Dynamics admin before go-live.
AgileCase
Case Assignee / Owner
Microsoft Dynamics 365 Sales
Opportunity OwnerId
1:1AgileCase case owner resolves by email match against Dynamics 365 system users. Unmatched owners are flagged with a custom field AgileCase_Original_Owner__c for manual assignment before go-live. The matching logic also checks for duplicate email addresses and selects the most recently active user account. If no match is found, the opportunity is placed in a dedicated queue for your admin to assign an owner manually, ensuring no records are left without an owner after cutover.
AgileCase
Custom Fields
Microsoft Dynamics 365 Sales
Dataverse Custom Columns
1:1Every AgileCase custom field maps to a Dataverse column of the equivalent data type — text, number, date, pick-list, boolean. Dynamics 365 Sales Professional enforces a per-entity column limit; we validate field count against the license tier before migration. If the custom field count exceeds the allowed limit, FlitStack flags the excess fields and recommends either consolidating fields into a JSON blob or upgrading to Sales Enterprise before proceeding.
AgileCase
File Attachments
Microsoft Dynamics 365 Sales
SharePoint / Dataverse Files
1:1AgileCase file attachments on cases download to local storage, then re-upload to Dynamics 365 SharePoint document locations or Dataverse file columns, linked back to the Opportunity record by the original case ID. FlitStack also validates file size against the 115 MB Dataverse limit and splits any oversized attachments into smaller chunks before uploading. File metadata such as original creation date and author are preserved in the SharePoint column properties.
AgileCase
Email / Call / Meeting Log
Microsoft Dynamics 365 Sales
Task / Email (Activity)
1:1AgileCase activity logs (calls, emails, meetings) attached to a case map to Dynamics 365 Task and Email records with the Opportunity as the regarding object. Original activity type, timestamp, and notes are preserved. FlitStack also maps the original contact associated with the activity to the RegardingObjectId field, ensuring that the related contact is linked in Dynamics. If an activity type has no direct equivalent, it is stored as a generic Task with a custom type field.
AgileCase
Case Plan / Workflow Definition
Microsoft Dynamics 365 Sales
Power Automate (no equivalent)
1:1AgileCase workflow rules and case-plan scripts cannot import into Dynamics 365. FlitStack exports the workflow definitions as a structured JSON package so your Dynamics admin can reference them when rebuilding in Power Automate. The JSON includes trigger conditions, action steps, field update logic, and any custom script snippets. FlitStack also provides a mapping guide that links each AgileCase case-plan step to equivalent Power Automate connectors, helping you replicate the automation flow efficiently.
AgileCase
Audit Trail
Microsoft Dynamics 365 Sales
Custom Date Fields
1:1AgileCase stores up to 180 days of audit history on Professional plans and 3 years on Business plans. Original create and update timestamps migrate as custom datetime fields on each Dynamics record — CreatedDate in Dynamics is set at migration time.
| AgileCase | Microsoft Dynamics 365 Sales | Compatibility | |
|---|---|---|---|
| Contact (inside Case) | Contact1:1 | Fully supported | |
| Contact (email-less) | Lead1:many | Fully supported | |
| Company (inside Case) | Account1:1 | Fully supported | |
| Case | Opportunity1:1 | Fully supported | |
| Case Status | Opportunity Stage1:1 | Fully supported | |
| Case Priority | Custom Field (Priority__c)1:1 | Fully supported | |
| Case Assignee / Owner | Opportunity OwnerId1:1 | Fully supported | |
| Custom Fields | Dataverse Custom Columns1:1 | Mapping required | |
| File Attachments | SharePoint / Dataverse Files1:1 | Fully supported | |
| Email / Call / Meeting Log | Task / Email (Activity)1:1 | Fully supported | |
| Case Plan / Workflow Definition | Power Automate (no equivalent)1:1 | Fully supported | |
| Audit Trail | Custom Date Fields1: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.
AgileCase gotchas
Audit trail retention is tier-dependent
Post-termination 30-day export window in DPA
Blob storage document extraction requires flattening
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
Extract AgileCase schema and map objects to Dataverse entities
FlitStack reads AgileCase object definitions via REST API — contacts, companies, cases, custom fields, file attachments, and activity logs. We produce a schema map showing which AgileCase objects translate to which Dataverse entities (Contact, Account, Opportunity) and flag any custom fields that require Dataverse column creation. You receive a schema plan before data moves so your Dynamics admin can pre-create custom fields and option-sets.
Resolve owners by email and validate Dynamics user accounts
AgileCase case owners are matched to Dynamics 365 system users by email address. Unmatched owners are listed in a pre-migration report — your Dynamics admin either invites them to the environment or assigns a fallback owner before records load. No opportunity lands without a valid OwnerId; contacts without email are flagged for Lead routing instead of Contact. The matching logic also checks for duplicate email entries and resolves to the most recently active user. If a fallback owner is used, the original AgileCase owner is stored in a custom field AgileCase_Original_Owner__c for post-migration review.
Migrate parent entities first — Accounts, then Contacts, then Opportunities
Dynamics requires Account records before Contact records (AccountId lookup) and Contact records before Opportunity records (ContactId and AccountId lookups). FlitStack sequences the migration so Accounts load first, then Contacts/Leads split by email presence, then Cases → Opportunities with case-status to stage mapping resolved per pipeline. Custom fields are created in Dataverse before the corresponding records load. This sequencing ensures referential integrity, prevents orphaned lookups, and allows validation of parent records before children are loaded. The migration script also validates that each parent record exists before inserting child records, and any missing parent references are reported for remediation before proceeding.
Run a sample migration with field-level diff before the full run
FlitStack selects a representative subset of records — typically 200–500 rows covering contacts, accounts, cases, and file attachments — and runs a trial migration into a sandbox Dynamics environment. After the trial, a field-level diff report compares source values in AgileCase against the loaded values in Dynamics, highlighting any discrepancies in case status mapping, priority assignment, owner resolution, custom field data types, and attachment links. You review the diff report and approve or request adjustments before FlitStack proceeds with the full production migration. This step reduces the risk of bulk data errors and ensures alignment with your business rules.
Cut over with delta-pickup for in-flight changes during final sync
The full migration runs against Dynamics 365 Sales. A delta-pickup window of 24–48 hours captures records created or modified in AgileCase during the cutover period. File attachments re-upload to SharePoint or Dataverse Files with case ID embedded in the file name. FlitStack's audit log records every operation; one-click rollback reverts all migrated records if reconciliation fails. After go-live, a 30-day post-migration window is available for data reconciliation.
Platform deep dives
AgileCase
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Sales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across AgileCase and Microsoft Dynamics 365 Sales .
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
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
AgileCase: Not publicly documented.
Data volume sensitivity
AgileCase exposes a bulk API — large-volume migrations stream efficiently.
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 AgileCase to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.
Walk through your AgileCase 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 AgileCase
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.