Skip to content

Dynamics 365 Migration Case Study: Why Standard Adapters Fail on High-Volume Data

Most "no-code" migration tools fail during enterprise Dynamics 365 transitions because they treat data movement as a mapping exercise rather than an engineering challenge. Specifically, they struggle with handling the "Infinite Loop" of Circular References, audit trail preservation, and large-file memory management. For high-volume migrations, a script-led, idempotent engineering approach is required to ensure data integrity and project timelines.

Raaj Raaj · · 4 min read
Dynamics 365 Migration Case Study: Why Standard Adapters Fail on High-Volume Data
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

The "Plug-and-Play" Myth vs. Enterprise Reality

Standard migration adapters—tools like KingswaySoft, Scribe, or SSIS-based packages (often priced around $500)—work perfectly for simple contacts or small datasets. However, once you cross roughly 100K records or start dealing with large attachments and complex relationships, these tools hit a wall.

In a recent engagement with a logistics firm, a standard adapter projected a 45-day migration timeline for five years of sales history. By bypassing the tool and using an engineer-led approach, we completed the same migration significantly faster. The bottleneck wasn't the data volume alone—it was the combination of audit trail requirements, attachment sizes, and circular references that no off-the-shelf adapter could handle without manual intervention at every step.

3 Technical Reasons Standard Adapters Fail

1. The Audit Trail: Created On vs. Created By

A common misconception is that Dynamics 365 prevents you from migrating historical dates.

  • The Problem: When moving records from 2018, standard tools often default to "Today" as the creation date, destroying your audit trail.
  • The Technical Reality: While Created On can be preserved using the overriddencreatedon attribute during the Create operation (Microsoft Docs: Override timestamps), preserving Created By (the original author) requires User Impersonation via the CallerId property (Microsoft Docs: Impersonate another user).
  • The Failure: Most generic tools do not support the complex impersonation logic or identity mapping required to link legacy users to modern Entra ID profiles, leading to compliance failures.

2. Attachment Bloat & Memory Overload

Legacy systems often house hundreds of gigabytes of PDF contracts and images.

  • The Failure: Basic tools attempt to treat these files as standard text, converting them to Base64 and pushing them through a single SOAP transaction.
  • The Result: This triggers a System.OutOfMemoryException or a timeout on any file larger than 10MB.
  • Temporary Fix: Sure, you can bump the Max upload size to 128MB (Microsoft Docs: File column size limits). But that doesn't solve the Base64 problem. Standard tools convert files into Base64 strings, which inflates the size by ~33% (every 3 bytes of binary data becomes 4 characters of Base64). Pushing a 100MB+ string through a single SOAP transaction is a recipe for a System.OutOfMemoryException.
  • The Engineering Fix: We utilize a Chunking Strategy, reading files in small byte streams and uploading them directly to Azure Blob Storage before linking them to the Dataverse record, bypassing application-layer overhead.
Info

Dataverse API throttling matters here too. Dataverse enforces a limit of roughly 6,000 API requests per 5-minute window per user. High-volume migrations need to account for this by batching operations with ExecuteMultiple (up to 1,000 operations per batch) and distributing load across multiple calling users. Standard adapters rarely handle this gracefully—they just retry on 429 errors until the migration grinds to a halt.

3. Handling the "Infinite Loop" of Circular References

This is a technical detail that standard adapter documentation rarely addresses. In enterprise data, you encounter Circular References—where User A reports to User B, but User B is also listed as a backup for User A.

If you try to migrate these in one go, the system throws a deadlock error because the "Manager" doesn't exist yet.

The Multi-Pass Strategy

The solution is a two-pass idempotent approach:

  • Pass 1: Create the core records with nullified relationship links. This gets the GUIDs into the system without triggering reference errors.
  • Pass 2: Once all records exist, run a "patch" pass to update the relationships. This avoids the "chicken and egg" problem entirely.

If the migration fails partway through Pass 2, the idempotent design means you can re-run it safely—records that already have correct relationships are simply skipped.

When Do You Actually Need Custom Engineering?

Not every migration needs a custom approach. Here's a rough decision framework:

  • Standard tools are likely fine if: Your migration involves fewer than ~50K records, attachments are under 5MB each, you have no circular references, and you don't need to preserve Created By attribution.
  • Custom engineering is warranted if: You're dealing with 100K+ records, hundreds of gigabytes of attachments, circular entity relationships, strict audit trail requirements (Created On + Created By), or complex identity mapping to Entra ID.

The honest answer is that standard adapters cover the first 80% of migrations well. It's the remaining 20%—large attachment volumes, circular references, audit trail fidelity—where they break down and the real engineering work begins.

What ClonePartner Does Differently

ClonePartner is an engineer-led service that specializes in the migrations where standard adapters have already failed or where the data complexity makes failure likely.

What that looks like in practice:

  1. Sample Migrations on Your Actual Data: We run your real data through the pipeline before committing, so you see exactly what the output looks like—not a demo on clean sample records.
  2. 30-Day Support Window: If you find a missing attachment on Day 29, we fix it at no additional cost.
  3. Direct Engineer Access: You speak directly to the migration engineer handling your data, not a support queue.

Frequently Asked Questions

Can ClonePartner handle Circular References?
Yes. We use a multi-pass approach—creating records with nullified links first, then patching relationships in a second pass to avoid deadlocks.
Is my data secure?
Yes—your data is fully secure. We offer two secure approaches depending on your requirements. In the first, our team performs the data migration while adhering to strict security standards and is compliant with SOC 2 Type II, GDPR, HIPAA, and ISO 27001. Alternatively, if you prefer that your data never leaves your environment, we provide secure executables that run entirely within your systems, ensuring complete data isolation and control.
What if it fails halfway?
Our process is Idempotent. If the internet cuts out at record #50,000, we resume at #50,001 with zero duplicates.
Can you migrate "Created By" for users who no longer exist in the company?
Yes. We map legacy user IDs to a "Ghost User" or historical record in Entra ID, then use User Impersonation to ensure the legacy name appears in the audit trail without requiring an active license for that former employee.
Will our custom plugins trigger during the migration?
We typically recommend disabling non-critical plugins and workflows during the migration phase to maximize throughput and prevent errors. We then re-enable them for the delta sync.

More from our Blog