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.
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.
The table shows the four entry points, the errors they typically cause and measures that are proportionate to the risk.
| Entry point | Typical errors | Measures |
|---|---|---|
| Manual entry | The same company registered twice with different spellings, missing organisation numbers | Duplicate warning on save, few required fields, lookup in the Norwegian register of legal entities |
| Imports | Trade-show and campaign lists added on top of existing contacts | Duplicate check during import, an alternate key where one exists, review before importing |
| Integrations | A new record on every sync instead of an update | A stable key from the source system, upsert, and agreement on which system maintains which fields |
| Changes on the customer's side | Contacts who have left, companies that have merged or closed | Responsibility 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.
| Information | Used for | What an error costs |
|---|---|---|
| Organisation number and invoice address | Invoicing and transfer to ERP | Wrong invoices, credit notes and manual correction |
| Email address and consent | Mailings and newsletters | Mailings sent to people who have not consented, or that never arrive |
| Industry, size and account manager | Segmentation and reporting | Reports management does not trust |
| Contacts and activities | Follow-up and Copilot summaries | Following 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.
| Feature | What it does | Worth knowing |
|---|---|---|
| Duplicate detection rules | Warn about possible duplicates on save and import | Default rules exist for accounts and contacts. No more than five published rules per record type. |
| Scheduled duplicate detection jobs | Search existing records and list possible duplicates | Can run daily. Also catch duplicates created at the same moment. |
| Merging | Combines records and carries related records over to the one kept | Available for accounts, contacts and leads. |
| Duplicate lead detection in Sales | An AI model finds possible duplicate leads, using email, phone and similar names among other signals | Up 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 keys | Prevent two records with the same key value and let integrations use upsert | Up to ten keys per table. Uniqueness is not enforced for empty values. |
| Customer Insights - Data | Unifies customer profiles from several sources using your own matching rules | A 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 callFrequently 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.
Sources
- Microsoft Learn: Set up duplicate detection rules to keep your data clean
- Microsoft Learn: Run bulk system jobs to detect duplicate records
- Microsoft Learn: Detect duplicate records and merge
- Microsoft Learn: Merge duplicate rows
- Microsoft Learn: Run duplicate detection (suppressed by default in the Web API and SDK)
- Microsoft Learn: Duplicate rule tables (simultaneous records, scheduled jobs)
- Microsoft Learn: Column requirement options (required columns and the APIs)
- Microsoft Learn: Create a business rule for a table
- Microsoft Learn: Define alternate keys to reference rows
- Microsoft Learn: Use Upsert to create or update a record
- Microsoft Learn: Enable duplicate lead detection in Dynamics 365 Sales
- Microsoft Learn: Manage duplicate leads
- Microsoft Learn: Copilot in Dynamics 365 Sales overview
- Microsoft Learn: UI/UX guidance for Dynamics 365 Sales implementations
- Microsoft Learn: Reference architecture for contact deduplication in Dynamics 365 Sales
- Brønnøysund Register Centre: API documentation for the Central Coordinating Register for Legal Entities (in Norwegian)
The sources were retrieved and checked on 2 November 2026.