I am running into an issue with the ability to Suppress Duplicate Detection in the Dynamics CRM API. I am qualifying leads and the Duplicate Detection is getting triggered on some of the leads. I have some logic to decide if we want to suppress the so on certain leads I want to bypass that detection.
What is happening is it is not working when in the request headers I set the MSCRM.SuppressDuplicateDetection: true
and it will still not qualify the lead.
Here is my full code:
api_surpress_dup_detection_headers = {
"Authorization": BEARER,
"If-None-Match": None,
"OData-Version": "4.0",
"OData-MaxVersion": "4.0",
"Content-Type": "application/json",
"Accept": "application/json",
"MSCRM.SuppressDuplicateDetection": "true",
"If-Match": "*"
}
lead_qualify_url = f"{data_url}leads({lead_guid})/Microsoft.Dynamics.CRM.QualifyLead"
data = {
'CreateAccount': False,
'CreateContact': True,
'CreateOpportunity':False,
'Status':3
}
qualify_lead_response = requests.post(lead_qualify_url, headers=api_surpress_dup_detection_headers, data=json.dumps(data))
The result I get is:
<Response [412]> '{"error":{"code":"0x80040333","message":"A record was not created or updated because a duplicate of the current record already exists."}}'
If anyone has solved this before I would greatly appreciate any help!
From documentation, I see that adding MSCRM.SuppressDuplicateDetection
in request header works for CREATE and UPDATE request.
For QualifyLead
action - this may be little different. Instead of adding request header - you may need to include in payload like explained in this blog.
this.SuppressDuplicateDetection = true // or false
"SuppressDuplicateDetection": {
"typeName": "Edm.Boolean", "structuralProperty": 1
}