Microsoft Copilot $21 now $18/user/month + 1 month free

March 5, 2026

Migrating 1.3 Million CRM Records in Dynamics 365: Why We Used a Custom Console App

A government client needed to restructure 1.3 million contact records in Microsoft Dynamics 365 CRM. At that scale, traditional UI tools and flows can throttle, fail silently, or leave a migration half-finished.

Instead of relying on standard imports, we used a custom console application built on the Dataverse SDK to execute the migration safely and deterministically, even when the job was interrupted mid-run.

Key Takeaways

  • Large-scale updates in Dynamics 365 CRM / Dataverse require a different approach than standard UI tools or imports.
  • A custom console app using the Dataverse SDK provides control over batching, retries, and execution logic.
  • Idempotent update logic ensures migrations can safely resume if interrupted.
  • Testing with dry runs and small batches first significantly reduces migration risk.

The Challenge: Migrating 1.3 Million Dynamics 365 CRM Records

Recently, one of our firm’s clients in the government sector needed to overhaul how they track contact origins in Microsoft Dynamics 365. The goal was straightforward on paper: migrate data from a legacy “Source” field into a newly redesigned, structured field and map the old option set values into new grouped categories.

The catch? We were dealing with 1.3 million Contact records.

Why Updating 1.3 Million Dynamics 365 Records Requires a Different Approach

Updating a few hundred records is a quick afternoon task. Updating 1.3 million records becomes an operational risk if it isn’t handled carefully. At that scale, standard out-of-the-box tools and event-driven automations simply cannot handle the load reliably.

Several factors made this migration particularly complex:

  • Throttling and Timeouts
    Standard UI tools and flows will inevitably throttle, time out, or fail silently when pushed to seven-digit volumes.
  • Inactive Records
    A large portion of the database consisted of inactive contacts. The standard Dataverse UI locks these records down, preventing edits without temporarily reactivating them — a messy and risky workaround.
  • Data Integrity
    We had to preserve existing, populated values. Accidentally overwriting valid data across millions of rows was not an option.
  • The “Half-Finished” Nightmare
    If a standard import fails halfway through, figuring out exactly where it stopped and how to resume without duplicating work or corrupting data can become a massive headache.

Our Solution: Using a Dataverse Console App for a Large-Scale CRM Data Migration

To eliminate these risks, we bypassed the UI entirely and built a custom console app leveraging the Dataverse SDK. This wasn’t about building a flashy interface; it was about having absolute control and deterministic execution.

We implemented a strict “test small first” methodology:

  • Idempotent Logic
    The update rule was designed so that running it twice would not change anything the second time. It only targeted records where the old field had data and the new field was empty.
  • Dry Runs
    We ran the logic in a simulated state first to validate mappings and confirm exact record counts without touching the live database.
  • Direct SDK Access
    Using the Dataverse SDK allowed us to update inactive records without triggering UI-level restrictions.
  • Controlled Batching
    We managed the exact size and speed of the data payloads being sent to the server to prevent throttling or system instability.

Ensuring Reliable Dynamics 365 Data Migration at Scale

This approach protected the client from data loss, downtime, and operational chaos.

The true test of our methodology happened mid-deployment: the power went out while the job was running. Because we designed the console app with idempotent logic, it wasn’t a crisis. We simply rebooted, restarted the application, and it picked up exactly where it left off, ignoring the records that had already been processed.

When your data volume reaches seven digits, you need a solution that guarantees success on the first try. By stepping outside the standard UI and using a controlled SDK-based approach, we delivered a flawless, verifiable migration.

Organizations planning a Dynamics 365 CRM implementation or large-scale data restructuring often encounter similar challenges, where careful planning and the right technical approach make all the difference.

Deeper Technical Breakdown of the Dataverse Migration

For a deeper technical breakdown of the migration, including the code logic, execution pattern, and the pre-flight checklist used for this project, read the full article on updating millions of Dataverse records using a custom console app.

Other articles

What 200% ROI from Business Central Really Looks Like

Jackie Gant

|

April 13, 2026
Where ROI actually shows up from finance efficiency to operational visibility Forrester says Business Central delivers 200% ROI. But what does that actually look like in practice? A recent Total Economic…

Do You Need Avalara for Business Central? A Practical Guide

Clayton Jones

|

April 10, 2026
Webinar: Sales Tax Works…Until It Doesn’t: Tax Complexity at Scale for Product CompaniesMay 5 @ 10:00 AM PT/1:00 PM ETRegister Now!Most companies focused on making, distributing, or selling products manage…

What Is Work IQ? How Microsoft Copilot Moves from Data to Context

Zoltan Orban

|

April 9, 2026
Work IQ is one of those terms that can sound more complex than it really is. Most AI tools today work by pulling from available data. They can read records, summarize…

What’s Rolling Out in Business Central 2026 Release Wave 1

Lupe Haro

|

April 7, 2026
The latest release of Microsoft Dynamics 365 Business Central is now rolling out, with updates scheduled between April and September 2026. When Microsoft first introduced this wave, the themes were clear:…

Where Microsoft Copilot Fits into the Workday

Zoltan Orban

|

March 31, 2026
There is a lot of marketing around Copilot, but in practice, its value often shows up in small, everyday tasks. It is not a replacement for expertise, but it can…

What Copilot “Cowork” Means for Business Users

Zoltan Orban

|

March 26, 2026
Microsoft recently introduced Copilot Cowork, and I wanted to take a closer look at what it represents in practical terms, especially for business users working across Microsoft 365 and related…