> For the complete documentation index, see [llms.txt](https://docs.inogic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inogic.com/deduped/faqs.md).

# FAQs

## 1)After importing the solution of DeDupeD from website all the Processes of DeDupeD is in a 'Draft/Deactivated' state. What to do?

Once the solution is imported, please follow the below steps to activate all the processes of DeDupeD.

* Click on the **gear icon** --> Select **Advanced Settings**.&#x20;

<div align="left"><figure><img src="/files/pluOnsbS125ZiKG1sWr7" alt=""><figcaption></figcaption></figure></div>

* Next, select **Processes**.

<figure><img src="/files/baR1rzOASP1p4yZ6nKWO" alt=""><figcaption></figcaption></figure>

* From **'All Process'** View activate the process shown in the below screenshot:

<figure><img src="/files/I0IUKgVDSQZUAMgEvcVt" alt=""><figcaption></figcaption></figure>

## 2) Which entity view should be modified to show up columns from a specific entity view when merging the duplicate records?

To view the columns of an entity view on the DeDupeD UI and Windows tool while merging the duplicate records. Select your desired view in the **“Entity View”** field within **“**[**Duplicate Matching Rule Settings**](https://docs.inogic.com/deduped/configuration/set-up-duplicate-matching-rule)**”.**

For instance, if you select the **“All Contacts”** view in the entity view field, then you will be able to see the columns of the **“All Contacts”** view on the DeDupeD app and tool, interface while merging duplicates.

<figure><img src="/files/WmSpHdPWTt0fWlEoDoEL" alt=""><figcaption></figcaption></figure>

**DeDupeD UI:** In the below screenshot, you can see how entity view columns appear on DeDupeD app UI.

<figure><img src="/files/U3v4yYpuiVXW45Cm8yQy" alt=""><figcaption></figcaption></figure>

**DeDupeD Tool:** In the below screenshot, you can see how entity view columns appear on DeDupeD Tool.

<figure><img src="/files/rs7qUMjoJ9JSXFoKRAxL" alt=""><figcaption></figcaption></figure>

## 3) I want to check all the duplicates of my entity view records at once. How can I see them?

With [DeDupeD’s windows tool](https://docs.inogic.com/deduped/features/clean-up-history-duplicate-records-in-bulk), you can easily see all the duplicate records of an entity view at once.

To see all the duplicates of an entity view, follow the steps below:

* Once logged into the tool, select any one of the[ configured](https://docs.inogic.com/deduped/configuration/entity-configuration) entities.

<figure><img src="/files/VGDHCLwmsEl4EJ3XVmkW" alt=""><figcaption></figcaption></figure>

* Select the specific entity view for which you want to see the duplicates.

<figure><img src="/files/h44wK8aqMDRDziHJSPuO" alt=""><figcaption></figcaption></figure>

* Click on **“Find Duplicates”** button.

<figure><img src="/files/pnHc5HLZ3Z60pIqRsPgc" alt=""><figcaption></figcaption></figure>

* Now you can see all the duplicate records of your selected entity view at once.

<figure><img src="/files/xPePnS4ZfdOeVSwdfy1j" alt=""><figcaption></figcaption></figure>

## 4) Can we restrict creating duplicate records while importing them from an Excel sheet?

Yes, with DeDupeD, you can restrict creation of duplicate records while importing data from an Excel sheet.

For this, you will need to enable the Server-Side DeDupeD Settings. Here, you need to select both **‘new record’** and **‘existing record’** plugins to prevent duplicates on events such as creation of new records and updating existing records.

<figure><img src="/files/dJ0tWcUVDExsB2X8WBz4" alt=""><figcaption></figcaption></figure>

* If OOB Duplicate Detection is not disabled you will need to set Allow Duplicates toggle to **‘No’** while importing the Excel Sheet.

## 5) How to identify the number of users in my CRM that will be considered for licensing?

**Step 1:** Log in to CRM and open the Sales Hub App

<figure><img src="/files/Kw2jeTdVyzNz0qViAXsf" alt=""><figcaption></figcaption></figure>

**Step 2:** Click on the Advance Find Option present in the right top corner (shown below)

<figure><img src="/files/yw1I4cKMksyRmIWm9dN4" alt=""><figcaption></figcaption></figure>

**Step 3:** In the search bar, search for **“User”** keyword. Select the **User** entity and click on the **Continue** button

<br>

<figure><img src="/files/EKfxZUX3KTMwRyLBeFkB" alt=""><figcaption></figcaption></figure>

**Step 4:** Once clicked, a side panel will show up containing default conditions. Clear the condition by selecting **“Delete all Filters”** and apply the below conditions in the filter section as shown below

a. **Status** Equal **Enabled**

b. **Access mode** Equal **Read-Write**

c. **Restricted Access Mode** Equal No

d. **Primary Email address** Does not Equal **<crmoln2@microsoft.com>**

**e. User Licensed** Equal **yes**

<figure><img src="/files/rl3OolHJcKFkaavCF7fV" alt=""><figcaption></figcaption></figure>

**Step 5:** Add a new related entity condition, where you will find the **Security Role** option under the **Many to many** sections as shown below

<figure><img src="/files/SzmecnzR0EoAZjuxPVoo" alt=""><figcaption></figcaption></figure>

**Step 6:** By default, **contains data** Operator will be selected which will retrieve only those users who have a security role assigned.

Delete the related entity field condition as shown in the screenshot below and then click on the **Apply** button to provide you with the list of respective users.

<figure><img src="/files/SLUangjYg4lvby47Xm2O" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Ip20XXiCWntmqknyVQCC" alt=""><figcaption></figcaption></figure>

## 6) We have done a sandbox copy of the production environment to a TEST environment and would like to work with the 'DeDupeD' solution in this new instance. What should we do?

For this, you need to delete the **Inogic License Details** record from your sandbox environment. After deleting, the next step would be to [activate the license](https://docs.inogic.com/deduped/getting-started/license-activation).

To delete the **DeDupeD** license follow the steps given below:

* Click on the **Gear icon** and go to **Advanced Settings.**

<figure><img src="/files/QEsIh2HbWez5uj6tgkX5" alt=""><figcaption></figcaption></figure>

* Navigate to **Advanced Find.**

<figure><img src="/files/IhJuG9PY5co7qpdfjJcb" alt=""><figcaption></figcaption></figure>

* Select **Inogic License Details** in **‘Look for’** -> Click on **Results** button.

<figure><img src="/files/i7IRmvTamotEROXn7s1u" alt=""><figcaption></figcaption></figure>

* Select the **DeDupeD** record and **delete** it.

<figure><img src="/files/h75wg3insjhgsxOpqGaR" alt=""><figcaption></figcaption></figure>

## 7) Unable to Configure the Application Due to Block Unmanaged Customizations in Dataverse?

When installing our solution, it's crucial to address certain prerequisites beforehand to ensure a smooth deployment process. One of these prerequisites involves disabling the **"Block Unmanaged Customizations"** feature within the Power Platform administrator settings.

Because while configuring our solution, certain required unmanaged customization takes place, for which this setting needs to be turned OFF.

Below are the steps for the same:

1. &#x20;To disable this feature, navigate to **Power Platform Admin Center** and Log in to the Power Platform Admin Center using your administrator credentials.

<figure><img src="/files/63AmvaE7rYDu2oHNQmmS" alt=""><figcaption></figcaption></figure>

2. &#x20;**Navigate to Environments:** Select the environment for which you want to disable the setting from the list of available environments.

<figure><img src="/files/BKEiSpwGAGDxex3M8dCt" alt=""><figcaption></figcaption></figure>

3. **Access Environment Settings:** Within the selected environment, navigate to the **"Settings"** tab to access environment-specific configurations.

<figure><img src="/files/X30CgMu2y6GILUCblHIR" alt=""><figcaption></figcaption></figure>

4. &#x20;**Access to Customization Settings:** Navigate to **“Product”** dropdown & Click on **“Features”.**

<figure><img src="/files/rkJDtuiDscHfKqxsJHM3" alt=""><figcaption></figcaption></figure>

5. **Disable "Block Unmanaged Customizations":** Locate the **"Customization Settings"** section and toggle the **"Block Unmanaged Customizations"** option to the **"Disabled"** position.

<figure><img src="/files/B4ROKbvaoIj2KyoF9gOB" alt=""><figcaption></figcaption></figure>

6. **Save Changes:** Once you've disabled the setting, don't forget to save your changes to apply the configuration to the environment.

## 8) How does the product ensure data security, and does it transfer any data outside the environment where it's stored?

No, we do not store any data on our end. All data is sourced directly from Microsoft through the Out-of-the-Box (OOB) APIs. Our product operates based solely on this data to perform its logic and functions. Consequently, all data processing occurs within the original environment, ensuring that no data is transferred offshore or outside of that environment.

## 9) How can I set a customized status reason for merged records in DeDupeD?

In DeDupeD, when duplicate records are merged, subordinate records are automatically set to Inactive. If your organization uses custom status reasons—like Lost, Canceled, or Disqualified—this default behavior can cause errors or mismatched statuses. To prevent this, DeDupeD allows you to specify a preferred inactive status reason using the Merged Status Reason Value field.

&#x20;**To configure it:**

1. Go to Advanced Settings → Customizations → Customize the System.
2. Open the Entity Configuration entity.
3. Under Forms, select the Main Form of Entity Configuration.
4. Locate the Merged Status Reason Value field and set its Visibility to Visible by Default.
5. Click Save and Publish All Customizations.
6. In your Entity Configuration record, enter the desired inactive status reason (e.g., Lost, Canceled, Disqualified).

Once set, all subordinate records merged into a master record will use your specified inactive status reason instead of the default. This ensures consistent CRM data, avoids status errors, and aligns with your organization’s customized workflow.

<div data-with-frame="true"><figure><img src="/files/8ChspFGUHE2imtIWZnFU" alt=""><figcaption></figcaption></figure></div>

## 10) I am upgrading to v9.0.0.33 or above and have Fuzzy Matching configured. What do I need to do?

In versions below v9.0.0.33, DeDupeD used a single common field to store indexing data for all fuzzy matching conditions, regardless of the column or accuracy level used. So even if you had fuzzy matching set up on multiple columns or accuracy levels, everything was managed through this one shared field. From v9.0.0.33 onwards, DeDupeD creates a separate field for each fuzzy matching condition, based on the specific column and accuracy level configured. For example, First Name at High accuracy and First Name at Medium accuracy are now stored as two distinct fields instead of one shared field. Because of this change, fuzzy matching conditions configured in versions below v9.0.0.33 do not carry forward automatically after the upgrade. To continue using fuzzy matching without issues, follow these steps right after upgrading:

1. Delete your existing fuzzy matching conditions.
2. Recreate the same conditions again.
3. Run indexing for all existing records.&#x20;

This ensures duplicate detection works correctly with the updated fuzzy matching structure. Note: If you are not using Fuzzy Matching, or if you are already on v9.0.0.33 or later, you can proceed with the upgrade directly, and this does not apply to you.

## 11) How do I grant the "Bypass Custom Business Logic" (prvBypassCustomBusinessLogic) privilege to a non-System Administrator user?

If you want a non-System Administrator user to perform operations that require bypassing custom business logic (such as custom plug-ins and workflows), you must grant the **Bypass Custom Business Logic** (prvBypassCustomBusinessLogic) privilege through a custom security role.

Note: This privilege is not available in the standard Security Role editor and must be added using the Dataverse Web API.

**Step 1: Create a Custom Security Role**

1. Log in to the **Power Platform Admin Center.**
2. Go to **Settings → Users + permissions → Security roles**.
3. Click **New Role**.
4. Give the role a name (for example, **Bypass Plugins Role**).
5. Save the role.

{% hint style="info" %}
**Note:** You do not need to configure any additional privileges in this role.
{% endhint %}

**Step 2: Add the Bypass Custom Business Logic Privilege**

1. Open your Model-driven app (for example, **Sales Hub**).
2. Press **F12** and open the **Console tab**.
3. Replace "Bypass Plugins Role" in the script below with the exact name of the role you created.
4. Paste the following script into the browser console and press **Enter**.

(async function() {

&#x20;   const roleName = "Bypass Plugins Role"; // Update if required

&#x20;   const privilegeId = "0ea552b0-a491-4470-9a1b-82068deccf66";

&#x20;   try {

&#x20;       const xrmContext =

&#x20;           (typeof Xrm !== 'undefined') ? Xrm :

&#x20;           (typeof parent !== 'undefined' && typeof parent.Xrm !== 'undefined') ? parent.Xrm : null;

&#x20;       if (!xrmContext) {

&#x20;           throw new Error("Could not find Xrm. Please run this from a Model-driven App.");

&#x20;       }

&#x20;       const rootUrl = xrmContext.Utility.getGlobalContext().getClientUrl();

&#x20;       const roleRes = await fetch(

&#x20;           \`${rootUrl}/api/data/v9.2/roles?$filter=name eq '${roleName}' and \_parentroleid\_value eq null&$select=roleid\`,

&#x20;           {

&#x20;               headers: {

&#x20;                   "Accept": "application/json",

&#x20;                   "OData-MaxVersion": "4.0",

&#x20;                   "OData-Version": "4.0"

&#x20;               }

&#x20;           });

&#x20;       if (!roleRes.ok) throw new Error(\`HTTP ${roleRes.status}\`);

&#x20;       const roleData = await roleRes.json();

&#x20;       if (!roleData.value.length) {

&#x20;           throw new Error(\`Role "${roleName}" not found.\`);

&#x20;       }

&#x20;       const roleId = roleData.value\[0].roleid;

&#x20;       const addPrivRes = await fetch(         \`${rootUrl}/api/data/v9.2/roles(${roleId})/Microsoft.Dynamics.CRM.AddPrivilegesRole\`,

&#x20;           {

&#x20;               method: "POST",

&#x20;               headers: {

&#x20;                   "Content-Type": "application/json",

&#x20;                   "Accept": "application/json",

&#x20;                   "OData-MaxVersion": "4.0",

&#x20;                   "OData-Version": "4.0"

&#x20;               },

&#x20;               body: JSON.stringify({

&#x20;                   Privileges: \[{

&#x20;                       PrivilegeId: "0ea552b0-a491-4470-9a1b-82068deccf66",

&#x20;                       Depth: "3"

&#x20;                   }]

&#x20;               })

&#x20;           });

&#x20;       if (!addPrivRes.ok) {

&#x20;           const err = await addPrivRes.json();

&#x20;           throw new Error(err.error?.message || addPrivRes.statusText);

&#x20;       }

&#x20;       console.log("Privilege added successfully.");

&#x20;   }

&#x20;   catch (e) {

&#x20;       console.error(e);

&#x20;   }

})();

**Step 3: Assign the Role**

1. Return to **Power Platform Admin Center → Users**.
2. Select the user who requires the privilege.
3. Click **Manage security roles**.
4. Assign the custom security role you created.
5. Save the changes.

Once the role has been assigned, the user will have the **Bypass Custom Business Logic** privilege and can perform operations that require bypassing custom business logic without needing the **System Administrator** role.

## 12) How can I review trace logs for unexpected merge failures in DeDupeD?

If an unexpected merge failure occurs, you can review the relevant logs to identify the details of the merge operation and any errors recorded during execution.

The location of the logs depends on the merge method used.

### DeDupeD Logs

1. Navigate to the **DeDupeD** application.
2. Open **Logs**.
3. Find the log generated around the time the merge failure occurred.
4. Open the relevant log and review the **Message Block** and **Stack Trace** details (if available).

<figure><img src="/files/xSo9IZkXbhyGDX74rdDY" alt=""><figcaption></figcaption></figure>

### DeDupeD Merge UI

1. Navigate to **Advanced Settings → Plugin Trace Logs**.
2. Find the trace generated at the time the merge operation was performed.
3. Filter records where **Type Name** contains **MergeDuplicateProcess**.
4. Open the relevant trace and review the **Message Block** and **Stack Trace** details (if available).

<figure><img src="/files/iGUhm1wx4daoarqTrgNo" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cU5YKdEpa5s4zf2g7h1c" alt=""><figcaption></figcaption></figure>

### Auto Merge

1. Navigate to **Advanced Settings → Plugin Trace Logs**.
2. Find the trace generated at the time the merge operation was performed.
3. Filter records where **Type Name** contains **AutoMergeProcess**.
4. Open the relevant trace and review the **Message Block** and **Stack Trace** details (if available).

<figure><img src="/files/Gja7xEzAdevMF5MuYzIw" alt=""><figcaption></figcaption></figure>

### Scheduled Merge (CRM Scheduling)

1. Navigate to **Advanced Settings → Plugin Trace Logs**.
2. Filter records where **Type Name** contains **ScheduleJobs**.

<figure><img src="/files/wwBxoOUHKdIFIJQSBdXo" alt=""><figcaption></figcaption></figure>

3. Find the traces generated when the scheduled merge job was executed.
4. Review the traces for the following components:

   * **Inogic.DeDupeD.Workflows.ValidateAndCreateScheduleJobs**
   * **Inogic.DeDupeD.Workflows.ProcessScheduleJobs**

   <figure><img src="/files/zA8u0axL3oZQi7A8wIGO" alt=""><figcaption></figcaption></figure>
5. Open the relevant trace and review the **Message Block** and **Stack Trace** details (if available).

   The scheduled merge execution date and time can help identify the relevant trace entries quickly.

   ### Scheduled Merge (Windows Task Scheduler)

   1. Open the **Documents** folder.
   2. Open the **DeDupeD\_Logs** folder.
   3. Find the log file generated during the scheduled merge execution. The file name starts with **SchedulerTrace\_**.
   4. Open the log file and review the recorded error details.

   <figure><img src="/files/QAlQtGZGxpCDr2XsFMan" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HPbUk8reXD9RlxpKoi47" alt=""><figcaption></figcaption></figure>

### DeDupeD Windows Tool

1. Open the **Documents** folder.
2. Open the **DeDupeD\_Logs** folder.
3. Find the log file generated during the merge operation.
4. Open the log file and review the recorded error details.

<figure><img src="/files/pT7fh0gcDDT0vCaU4ABm" alt=""><figcaption></figcaption></figure>

The approximate date and time of the merge operation can help identify the required trace or log entry.

## 13) Why do I receive a "Duplicate key exists" error while merging records?

This error is generated by **Microsoft Dynamics 365 / Dataverse** and is not caused by DeDupeD. The error occurs when an entity has an **Alternate Key (Unique Key)** configured, and the merge operation attempts to update the master record with a value that already exists in another record.

During a merge, DeDupeD updates the master record with selected values from the duplicate record. If this update violates an Alternate Key constraint, Dynamics 365 prevents the update and returns the **"Duplicate key exists"** error.

<figure><img src="/files/QbrxMUoXuzon8DzuUTje" alt=""><figcaption></figcaption></figure>

### How can I prevent this error?

Since Alternate Key fields must maintain unique values, updating them during a merge can cause duplicate key conflicts, add that field to **Ignore Fields from Merge** in DeDupeD.

When a field is added to **Ignore Fields from Merge**:

* DeDupeD does not update that field during the merge.
* The existing value on the master record is retained.

<figure><img src="/files/LUznLKDoEqbKEA0Xgb59" alt=""><figcaption></figcaption></figure>

This prevents merge failures caused by duplicate Alternate Key values when the ignored field is responsible for the conflict. If the issue continues, review the Alternate Key configuration and record values in Microsoft Dynamics 365 before retrying the merge.

## 14) Why can't I merge records when the Master Case is resolved?

If the master Case selected for merging is in a **Resolved** or **Canceled** state, Microsoft Dynamics 365 restricts updates to most Case fields.

Since the merge process updates the master record, Dynamics 365 prevents the merge from completing.

### Resolution

You can resolve this issue using one of the following options:

* Reactivate the master Case, perform the merge, and then resolve the Case again if required.
* Update the Service Configuration setting in Dynamics 365:

  1. Navigate to **Advanced Settings → Service Management → Service Configuration Settings**.
  2. Change **Allow updates for** from **Don't allow updates to Resolved and canceled cases** to the required setting.

  <figure><img src="/files/wuMrvtbKAyc6sAGE85HY" alt=""><figcaption></figcaption></figure>

After making the required changes, retry the merge. This is standard Microsoft Dynamics 365 behavior and is not a limitation of DeDupeD.

## 15) Why did my DeDupeD job complete successfully, but the email notification failed?

If you receive the following message after a DeDupeD scheduled job completes:

1. Job completed successfully but email notification could not be sent due to lack of permissions.
2. The DeDupeD job completed successfully, but DeDupeD was unable to send the email notification.

This occurs when the user configured for email notifications does not have permission to send emails on behalf of other users.

### Resolution

To enable email notifications:

1. Navigate to **Personalization Settings**.
2. Open the **Email** tab.
3. Enable **Allow other Microsoft Dynamics 365 users to send email on your behalf**.
4. Save the changes.

<figure><img src="/files/Cp9i0ksjrtPUFtKfLDNW" alt=""><figcaption></figcaption></figure>

After enabling this setting, run the scheduled job again. The email notification should be sent successfully.

The permission issue affects only email notifications. The DeDupeD scheduled job execution is not impacted.

## 16) **What determines the execution time of a DeDupeD scheduled job**?

DeDupeD scheduled jobs run based on the **Dynamics 365 Personalization Settings** of the user who creates or owns the scheduled job.

The scheduled job does not use the local system time of the user's computer or browser.

If your computer time zone and Dynamics 365 time zone are different, the job runs according to the time zone configured in **Dynamics 365 Personalization Settings**.

### Example

Suppose:

* Your computer time zone is **UTC+1**.
* Your Dynamics 365 Personalization Settings are configured for **UTC+5:30 (India Standard Time)**.
* You schedule a DeDupeD job for **10:00 AM**.

The scheduled job starts at **10:00 AM IST**, based on your Dynamics 365 settings, regardless of your computer's local time.

### How to ensure the job runs at the expected time

Before scheduling a DeDupeD job, verify that your **Dynamics 365 Personalization Settings** have the correct time zone configured.

DeDupeD always uses the time zone configured in Dynamics 365 Personalization Settings when executing scheduled jobs.

<figure><img src="/files/AwG3b1lJ2mTH9zfuJBEm" alt=""><figcaption></figcaption></figure>
