--- title: "Configure duplicate checks" slug: "bc-configure-duplicate-checks" description: "Learn how to create and configure Duplicate Checks in D365 BC to prevent duplicate Customer, Vendor, or Contact records effectively." updated: 2026-08-05T06:22:22Z published: 2026-08-05T06:22:22Z canonical: "docs.staedean.com/bc-configure-duplicate-checks" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.staedean.com/llms.txt > Use this file to discover all available pages before exploring further. # Configure duplicate checks A Duplicate Check defines how D365 BC identifies whether a master data record being created or updated already exists in the system. You configure the check as a reusable definition by specifying the table to search and the fields to compare, and then link it to a policy version. When a match is detected, D365 BC either blocks the save with an error or displays a warning, based on the configured outcome. Duplicate checks and validation rules work independently. A policy version can have both, either, or neither. **Purpose** Create a **Duplicate Check** definition that specifies the matching logic for detecting duplicate **Customer**, **Vendor**, or **Contact** records. Once created, the definition is linked to a policy version from the **Data Policy form**, where the outcome behaviour is configured. ### **Before You Start** **Duplicate Check setup** has two stages and two pages: | **Stage** | **Page** | **What you do** | | --- | --- | --- | | **Stage 1** | Duplicate Check List → Duplicate Check card | Create a Duplicate Check definition: name, type, table, fields | | **Stage 2** | Data Policy form → Duplicate Check Rules sub-grid | Link the definition to a policy version, set outcome and message | Complete both stages. A duplicate check definition that is not linked to a policy has no effect. ### **Stage 1 - Create the Duplicate Check Definition** 1. Press **Alt+Q**. 2. Type **Duplicate Check List**. 3. Select the result. The **Duplicate Check List** shows all existing definitions. Check whether a suitable one already exists. If so, skip to [Link the Duplicate Check to a Policy Version](https://portal.document360.io/manufacturing/docs/configure-duplicate-checks#stage-2-link-the-duplicate-check-to-a-policy-version). 4. Click **+ New** in the action bar. 5. The **Duplicate Check card** form opens. **Fill in the General section** | **Field** | **Instructions** | | --- | --- | | **Description** | Enter a clear name for this check, e.g. *"Customer Name + Phone DC"* or *"Contact Basic DC"*. This name is what you will select when linking to a policy. | | **Duplicate Check Type** | Select **Basic** for exact field matching. | | **Source Table** | Select the table this check targets: **18** (Customer), **23** (Vendor), or **5050** (Contact). | | **Threshold %** | *(Fuzzy only)* Enter the minimum match percentage required to flag a record as a duplicate, e.g. **70** means 70% of the total field weightage must match. | | **Active** | Leave this turned off for now. Enable it after adding the fields in [Add fields to the Field Constraints sub-grid](https://portal.document360.io/manufacturing/docs/configure-duplicate-checks#step-4-add-fields-to-the-field-constraints-sub-grid). | **Add fields to the Field Constraints sub-grid** The fields you add here are the ones compared between the new record and all existing records in the table. All fields must match for a **Basic check** to trigger; for each contributes a weighted match score. 1. In the **Field Constraints** sub-grid, click **New Line**. 2. Click the lookup in **Field No.** and select the first field (e.g. **Name**). 3. **Field Caption** populates automatically. 4. *(Fuzzy only)* Enter a **Weightage** value for this field. 5. Repeat for each additional field (e.g. **Phone No.**, **E-Mail**). > [!NOTE] > **Note** For Basic matching: add only the fields that together reliably identify a duplicate. Adding too many fields makes it harder to trigger a match (all must match exactly). A combination of two or e high-confidence fields is usually sufficient. 6. In the **General** section, click the **Active** toggle to enable it. 7. D365 BC saves automatically. The definition now appears in the **Duplicate Check List** and is available for selection in the **Duplicate Check Rules** sub-grid of Anywhere Mobility Solutions policy version. ### **Stage 2 - Link the Duplicate Check to a Policy Version** Once the definition exists and is **Active**, link it to a policy version: **Add the duplicate check to the Duplicate Check Rules sub-grid** 1. Open **Data Policies** (Tell Me → "Data Policies"). 2. Click the **Policy Table ID** for the policy you want to configure (e.g. **18** for Customer). 3. In the **Duplicate Check Rules** sub-grid, click **New Line**. 4. Click the lookup in **Duplicate Check Id** and select the definition you created. 5. **Description** auto-populates from the definition. 6. Set **Outcome**: - **Error** - Blocks the save. The user must resolve the duplicate before the record can be saved. - **Warning** - Displays a message popup. The user can acknowledge the message and proceed.. 7. Enter a **Validation Message**, which is displayed to the user when a duplicate is detected. 8. Enable the **Active** toggle in the **General** section of the **Data Policy form** (see **Create and Manage Policy Versions**). Once active, the duplicate check fires whenever a user saves a record in the targeted table. > [!NOTE] > Note > > A Data Policy can have only **one active Duplicate Check** at a time. When you add or enable a Duplicate Check, D365 BC checks whether another active Duplicate Check already exists for the policy. If one is already active, D365 BC prevents the action and displays: "Only one active Duplicate Check is allowed per Data Policy." To switch to a different duplicate check, deactivate the current one first. 9. The row saves automatically. The duplicate check is now linked to this version. ### **Examples** #### **Example 1 - Detect duplicate Contacts by Name + Phone No.** *Scenario:* Prevent two Contact records being created with the same name and phone number. **Stage 1 - Duplicate Check card:** | **Field** | **Value** | | --- | --- | | Description | Contact_DC | | Duplicate Check Type | Basic | | Source Table | 5050 (Contact) | | Active | On | Field Constraints: | **Field No.** | **Field Caption** | | --- | --- | | 2 | Name | | 9 | Phone No. | **Stage 2 - Data Policy form, Duplicate Check Rules sub-grid (Contact policy, Version 1):** | **Duplicate Check Id** | **Description** | **Outcome** | **Validation Message** | **Active** | | --- | --- | --- | --- | --- | | DUP-0008 | Contact_DC | Error | "A contact with this name and phone number already exists. Please search for the existing record before creating a new one." | ✓ | **What the user sees:** When a user tries to save a Contact with the same Name and Phone No. as an existing Contact, the record is blocked with the custom error message. #### **Example 2 - Detect duplicate Customers by Name + Address (warning, not error)** **Scenario***:* Flag potential duplicate customers when Name and Address match, but allow the user to proceed if it is intentional (e.g. a parent/child company at the same address). **Stage 1 - Duplicate Check card:** | **Field** | **Value** | | --- | --- | | Description | Customer Name+Address DC | | Duplicate Check Type | Basic | | Source Table | 18 (Customer) | | Active | On | Field Constraints: | **Field No.** | **Field Caption** | | --- | --- | | 2 | Name | | 5 | Address | **Stage 2 - Data Policy form (Customer policy, Version 1):** | **Duplicate Check Id** | **Outcome** | **Validation Message** | **Active** | | --- | --- | --- | --- | | DUP-0015 | Warning | "A customer with this name and address already exists. Verify this is not a duplicate before saving." | ✓ | **What the user sees:** A popup with the warning message and an **OK** button. They can click **OK** and the record saves. The duplicate is flagged but not blocked. > [!NOTE] > **Note** The Weightage values do not need to add up to exactly 100, but using values that total 100 makes the **Threshold %** easier to reason about. > [!NOTE] > **Warning** Once a **Duplicate Check** definition is referenced by an **active policy version**, it cannot be edited. If you need to change the matching fields, threshold, or type, create a new **Duplicate Check** definition, link it to the policy, and deactivate the old one.