Back to Knowledge Center

Duplicates come back because a clean-up corrects the information already in the CRM, but does nothing about the places where new errors get in. They typically arrive through four entry points: manual entry, imports, integrations and changes on the customer's side, such as people changing jobs, mergers and relocations. What lasts is deciding which information has to be right, making someone responsible for keeping it up to date, protecting each entry point in proportion to the risk, and tracking a few metrics regularly. Dynamics 365 and Dataverse provide the tools: duplicate detection rules, scheduled duplicate detection jobs, merging and alternate keys. The tools do not do the job on their own, though. Duplicate detection rules warn users in the app, but integrations that write through the APIs are not checked unless they ask to be.

Scope: This article is about customer information in day-to-day CRM work, using Dynamics 365 Sales and Customer Service on Dataverse as the example. The principles apply to other CRM solutions too. If several systems need to share one authoritative version of each customer, that is an architecture question, which we cover in CRM is not a master data register.

Cleaned up before, only to see the errors return? In an introductory call we go through where customer information enters your CRM and what is worth looking at more closely.

Book an introductory call

Why doesn't a one-off clean-up last?

A clean-up is worthwhile. It merges duplicates, fills gaps and deactivates contacts who have left. But it does not change how information gets in. The next day a salesperson registers a company that already exists, a trade-show list is imported on top of existing contacts, and the web shop integration creates a new customer instead of updating the existing one.

Reality changes too. People change jobs, companies merge or close, and addresses change. Information then goes out of date without anyone having done anything wrong. Data quality therefore needs ongoing maintenance, much like the customer relationships themselves.

Four entry points into the CRM, each with its own check All four entry points bring information into the CRM: manual entry, imports, integrations and changes on the customer side. Each entry point has its own measure, and scheduled jobs with a responsible person catch what still gets through. Manual entry Duplicate warning, few required fields Check Imports Duplicate check during import Check Integrations Key from source system, upsert Check Changes on the customer's side Responsibility, regular checks Check Customer information in the CRM Scheduled jobs and a named person catch what still gets through
A clean-up fixes what is already in the CRM. Lasting quality needs a measure at each entry point.

The table shows the four entry points, the errors they typically cause and measures that are proportionate to the risk.

Entry pointTypical errorsMeasures
Manual entryThe same company registered twice with different spellings, missing organisation numbersDuplicate warning on save, few required fields, lookup in the Norwegian register of legal entities
ImportsTrade-show and campaign lists added on top of existing contactsDuplicate check during import, an alternate key where one exists, review before importing
IntegrationsA new record on every sync instead of an updateA stable key from the source system, upsert, and agreement on which system maintains which fields
Changes on the customer's sideContacts who have left, companies that have merged or closedResponsibility for follow-up, regular checks, updates from the register

For Norwegian business customers, the organisation number is the best key, because it identifies each legal entity uniquely. Branches and other operations at separate addresses are registered as sub-entities with their own organisation numbers. If you keep several accounts per legal entity, for example one per branch, the organisation number cannot be a unique key on its own. The Brønnøysund Register Centre offers an open API to the Central Coordinating Register for Legal Entities, so the name and organisation number can be looked up when a customer is registered instead of being typed in by hand, and changes in the register can be picked up later.

Be careful about making many fields required. Microsoft itself warns that people may enter incorrect data simply to save a record when they do not have the right information to hand. Instead, make the field required only when the situation calls for it. A business rule on the form can require the field once a particular value is set, for example when a prospect becomes a customer. If you use a business process flow, the field can be required at the stage before a quote.

Integrations can create duplicates without anyone noticing

When a user saves a record that resembles an existing one, Dynamics 365 shows a warning listing the possible duplicates. The user can then merge the records or save anyway. An integration gets no such warning. When records are created or updated through the Web API or the SDK for .NET, duplicate detection is suppressed by default. The integration has to request the check for it to apply.

The same goes for required fields. A column set to Business Required in Dataverse is enforced in the app, but not when the record is saved through the APIs. There the platform enforces only the columns the system itself requires.

The robust approach is to give each integration a stable key from the source system, such as the customer number in the ERP system or the organisation number. In Dataverse this is called an alternate key. It ensures that no two records can have the same key value, and it lets the integration use upsert: update the record if it exists, create it if it does not. There are two caveats: uniqueness is not enforced when the key column is empty, and keys containing certain special characters cannot be used for updates or upserts through the API.

Also agree which system maintains which fields. If both the ERP system and the CRM can change the invoice address, the integration will sooner or later overwrite a correct address with an old one. There is more on this in our guide to connecting ERP and CRM.

A hypothetical example

A wholesaler cleans up its customer database before the sales team starts using Copilot, merging a large number of duplicates. Three months later many of them are back. The cause is the web shop integration. It creates a new contact for every order placed by a customer who is not signed in, and neither duplicate detection nor a key stops it. What helps is having the integration look up an existing contact by email address before it creates a new one, and making one person responsible for merging whatever still gets through. Another clean-up on its own would have produced the same result three months later.

This example is hypothetical and put together to show the pattern. It does not describe any particular customer.

Decide which information has to be right

Not every field matters equally. Start with the information used for something where an error is costly: invoicing, consent and mailings, management reporting and customer follow-up. A field nobody uses needs no checks, and can often be removed from the form.

InformationUsed forWhat an error costs
Organisation number and invoice addressInvoicing and transfer to ERPWrong invoices, credit notes and manual correction
Email address and consentMailings and newslettersMailings sent to people who have not consented, or that never arrive
Industry, size and account managerSegmentation and reportingReports management does not trust
Contacts and activitiesFollow-up and Copilot summariesFollowing up the wrong person, incomplete history

Copilot makes data quality more visible. Copilot in Dynamics 365 Sales only retrieves information from records and files the user has access to, and its answers are no better than the records they draw on. If a customer's history is split across two accounts, a summary of one of them may show only half the picture. Microsoft's guidance for Sales implementations lists data quality and measures against duplicates among the points to consider when preparing the solution for Copilot. What Copilot does in practice is covered in Copilot in Dynamics 365 Sales.

Who is responsible for keeping customer information up to date?

In Dynamics 365, account and contact records have an owner. That means the record is assigned to a user or a team, which among other things controls access. It is not the same as someone being responsible for the information being correct. Without that clarity, merging duplicates can easily become a task with no clear owner. Microsoft describes the same problem in a reference architecture for duplicate contacts in Dynamics 365 Sales.

A simple arrangement has three roles:

  • The people who use the information every day, often salespeople or case handlers, correct errors when they spot them and flag possible duplicates.
  • A named person with the time and access merges duplicates and works through the results of the scheduled duplicate detection jobs.
  • The platform owner decides the rules: which fields are required and when, which duplicate detection rules apply, and which system maintains which fields.

In a smaller organisation, two of the roles may sit with the same person. What matters is that someone has been given the task and has time set aside for it. How the platform owner's responsibilities fit with the rest of governance is covered in Enterprise CRM with Dynamics 365.

When duplicates keep coming back, it is often because one of the entry points has no one responsible for it.

Cartagena, from work on CRM solutions in Dynamics 365

What Dynamics 365 and Dataverse provide

The tools are already in the platform. They support the way you work, but they do not replace it.

FeatureWhat it doesWorth knowing
Duplicate detection rulesWarn about possible duplicates on save and importDefault rules exist for accounts and contacts. No more than five published rules per record type.
Scheduled duplicate detection jobsSearch existing records and list possible duplicatesCan run daily. Also catch duplicates created at the same moment.
MergingCombines records and carries related records over to the one keptAvailable for accounts, contacts and leads.
Duplicate lead detection in SalesAn AI model finds possible duplicate leads, using email, phone and similar names among other signalsUp to four duplicates can be merged into the primary record. Microsoft recommends turning off the platform's lead duplicate detection when this is used.
Alternate keysPrevent two records with the same key value and let integrations use upsertUp to ten keys per table. Uniqueness is not enforced for empty values.
Customer Insights - DataUnifies customer profiles from several sources using your own matching rulesA separate product, for when several systems need to share one unified customer profile.

Duplicate detection rules catch the obvious cases, such as the same email address, the same organisation number or the same first characters of a name, depending on the criteria you set up. “Olsen Bygg AS” and “Olsen Bygg” can slip through. Scheduled jobs, and someone who works through the results, catch more of the rest.

Track a few metrics every month

You do not need a separate quality programme to know whether things are moving in the right direction. Choose three or four metrics linked to the information that matters most, and follow them from month to month:

  • the share of active business customers without an organisation number
  • the number of possible duplicates in the latest scheduled duplicate detection job
  • the number of customers with open opportunities but no active contact
  • the number of mailings returned because the address does not exist

The direction tells you more than the level. If the numbers start rising again after a clean-up, one of the entry points is still letting new errors in. The metrics can sit in a simple report alongside the sales figures. See Power BI + Dynamics 365 Sales.

When do you need more than good housekeeping in the CRM?

The measures above keep the CRM data in order for the people who use the CRM. If the ERP system, web shop, reporting and CRM are to share one authoritative version of each customer, you need a separate layer that matches and merges records across systems. That can be a master data tool or Customer Insights - Data. When that pays off, and why we think the CRM should rarely be that layer, is covered in CRM is not a master data register.

If you are about to change solutions, the migration is a good time to clean up, because the data has to be reviewed anyway. See our guide to migrating from Excel to Dynamics 365, and how we approach Dynamics 365 implementation.

Find out where the errors get in

In an introductory call we go through how customer information enters your CRM: manual entry, imports and integrations. You get our view of what is worth looking at more closely. If you need a more thorough review, we agree the scope afterwards.

Book an introductory call

Frequently asked questions about CRM data quality

How do we find the duplicates already in Dynamics 365?

Set up and publish duplicate detection rules for the record types you want to check, and create a scheduled duplicate detection job in the Power Platform admin center. The job can be limited to a view, such as active accounts, and run daily. Review the results before merging, because a merge carries related records over too. Merging is available for accounts, contacts and leads. Other record types have to be cleaned up another way.

Should the organisation number be required?

For customers you invoice, yes. For new leads, requiring it at first entry can lead salespeople to skip registering altogether, or to type in something random just to save. Instead, make the field required when it is needed: with a business rule when a prospect becomes a customer, or at the stage before a quote if you use a business process flow. Remember that the requirement only applies in the app. Integrations have to be checked separately.

Why don't our duplicate detection rules stop our integrations?

Because duplicate detection is suppressed by default when records are created or updated through the Web API or the SDK for .NET. The integration can request the check, but the record is then rejected with an error if it matches an existing one, and the integration has to handle that. It is often better to give the integration an alternate key from the source system and use upsert, so that it updates existing records instead of creating new ones.

What is the difference between a duplicate detection rule and an alternate key?

A duplicate detection rule finds records that resemble each other and warns the user, who can choose to save anyway. An alternate key is a constraint in the platform: no two records can have the same key value. The rule suits manual entry, where a person should make the call. The key suits integrations and imports that have an unambiguous number from the source system. Note that uniqueness is not enforced for empty key columns.

Does the data need to be cleaned up before we start using Copilot?

It does not have to be perfect, but Copilot bases its answers on the records the user has access to, so duplicates and out-of-date contacts make for weaker summaries. Prioritise accounts, contacts, opportunities, leads and activities, which Microsoft describes as the core tables for Copilot in Sales.

Related reading

Sources

The sources were retrieved and checked on 2 November 2026.