When we apply a Duplicate Detection Rule on any Entity then we expect it to behave proportionally and maintain the integrity of data throughout the Organization, but this acts a bit differently as expected.
Duplicate Detection Rules behaves according to the Security roles provided to the user. i.e rule applies for the view or data that they have access to.
Lets take an Example to explain this theory in detail :
In one of my live Organization, there is a Duplicate Detection Rule enabled on Lead for exact match on Email and Mobile.
The Sales division look after prospects(i.e creation and follow up with the Leads) and the Sales is further divided into 2 different Team where each team has a role of read,write and create at their own Business Unit level. This was done for the competition purpose, so that each team cannot view / follow the leads generated by the other team.
Unknowingly, the above scenario created a conflict with the Duplicate Detection Rule in Leads. Say Team A created a lead with Mob 987654321 and Email firstname.lastname@example.org. Now as per Duplicate Detection Rule there should be a Duplicate Check while Creating or Importing a new Lead with the same Mob and Email.
Now If any other user in Team A again tries to create a Lead with the same Mob and Email, they will see a Duplicate Check against an Existing Lead(since there already exists same lead within their BU). But if the same duplicate Lead is being created by any user in Team B then there would be no Duplicate check and a Duplicate Lead will be created inside the Organization. Reason being, the system didn’t find any duplicates under their lead view as Team B didn’t had the read rights for the leads at the Organization level.
If you see this from the BU level perspective then the Duplicate detection is working absolutely fine, but at the Organization level the Duplicate Detection Rules fails.
To help come out of this loop there a solution : -> Assign a person lead Read rights at Organization level and then he might check duplicates on schedule basis by running the Duplicate Detection jobs regularly. But this might not be the best solution at the real time event and even 1 of my client was Neither Happy with this. Consequently I have written a plugin that runs the service through Impersonation and hence checks for the Duplicate at the Organization Level and at the live time. The Plugin follows in my Next-Blog.
Hope this information was Informative.