Freigeben über


Duplikaterkennung ausführen

Es gibt mehrere Möglichkeiten, Duplikaterkennung auszuführen, nachdem Sie sie aktiviert und die Duplikaterkennungsregeln veröffentlicht haben.

Abrufen und Erkennen von Duplikaten für einen bestimmten Datensatz

Duplikate erkennen und abrufen:

  • Bevor Sie eine Entität erstellen
  • Für eine vorhandene Entität
  • Für andere Entitäten, die den Duplikat-Regeln über Entitäten hinweg entsprechen. Zum Beispiel jede Lead-Entität, die mit einer Kontaktentität übereinstimmt.

Optionen:

Beispiel: Erkennen von Duplikaten für einen angegebenen Datensatz mithilfe der Web-API

Das folgende Beispiel zeigt, wie Duplikate eines angegebenen Datensatzes mithilfe RetrieveDuplicates der Funktion erkannt werden.

Anforderung

GET [Organization URI]/api/data/v9.1/RetrieveDuplicates(BusinessEntity=@p1,MatchingEntityName=@p2,PagingInfo=@p3)?@p1={'@odata.type':'Microsoft.Dynamics.CRM.account','accountid':'0d1156d2-1598-e711-80e8-00155db64062'}&@p2='account'&@p3={'PageNumber':1,'Count':50} HTTP/1.1
If-None-Match: null
OData-Version: 4.0
OData-MaxVersion: 4.0
Content-Type: application/json
Accept: application/json

Antwort

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal  
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.1/$metadata#accounts",
    "value": [
        <Omitted for brevity: JSON data for any matching accounts including all properties>
    ]
}

Erkennen von Duplikaten für einen Entitätstyp

Übermitteln Sie einen asynchronen Duplikaterkennungsauftrag, der im Hintergrund ausgeführt wird. Die Duplikate werden gemäß den veröffentlichten Duplikatsregeln für den Entitätstyp erkannt. Die erkannten Duplikate werden als DuplicateRecord Datensätze in Dynamics 365 Customer Engagement (on-premises) gespeichert.

Maximal 5000 Duplikate werden durch den Duplikaterkennungsauftrag zurückgegeben.

Optionen

Beispiel: Erkennen von Duplikaten für einen Entitätstyp mithilfe der Web-API

Im folgenden Beispiel wird gezeigt, wie Duplikate für einen Entitätstyp erkannt werden, indem ein asynchroner Auftrag mithilfe BulkDetectDuplicates von action erstellt wird.

Anforderung

POST [Organization URI]/api/data/v9.1/BulkDetectDuplicates HTTP/1.1
If-None-Match: null
OData-Version: 4.0
Content-Type: application/json
Accept: application/json
OData-MaxVersion: 4.0

{
    "Query": {
        "@odata.type": "#Microsoft.Dynamics.CRM.QueryExpression",
        "EntityName": "lead"
    },
    "JobName": "jobname1",
    "SendEmailNotification": false,
    "TemplateId": "07B94C1D-C85F-492F-B120-F0A743C540E6",
    "ToRecipients": [],
    "CCRecipients": [],
    "RecurrencePattern": "",
    "RecurrenceStartTime": "2015-07-15T05:30:00Z"
}  

Antwort

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal  
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.BulkDetectDuplicatesResponse",
    "JobId": "efaff068-7598-e711-80e8-00155db64062"
}

Mit der obigen Anforderung wird ein asynchroner Duplikaterkennungsauftrag erstellt, dessen JobID in der Antwort zurückgegeben wird. Die von der obigen Anforderung zurückgegebene JobID kann zum Abrufen doppelter Datensätze in einem Entitätstyp verwendet werden, wie im folgenden Beispiel gezeigt.

Anforderung

GET [Organization URI]/api/data/v9.1/asyncoperations(efaff068-7598-e711-80e8-00155db64062)/AsyncOperation_DuplicateBaseRecord
If-None-Match: null
OData-Version: 4.0
OData-MaxVersion: 4.0
Content-Type: application/json
Accept: application/json

Das FetchXML-Äquivalent der obigen Anforderung ist unten dargestellt.

<fetch>
    <entity name="duplicaterecord">
        <attribute name="owninguser" />
        <attribute name="ownerid" />
        <attribute name="baserecordid" />
        <attribute name="duplicateid" />
        <attribute name="owningbusinessunit" />
        <attribute name="createdon" />
        <attribute name="asyncoperationid" />
        <filter>
            <condition attribute="asyncoperationid" operator="eq" value="efaff068-7598-e711-80e8-00155db64062" />
        </filter>
    </entity>
</fetch>

Antwort

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal  
OData-Version: 4.0

{  
   "@odata.context":"[Organization URI]/api/data/v9.1/$metadata#duplicaterecords",
   "value":[  
      {  
         "owninguser":"b3ac4144-6d9a-e711-811c-000d3a75ce72",
         "_ownerid_value":"b3ac4144-6d9a-e711-811c-000d3a75ce72",
         "_baserecordid_value":"3a6fc65b-3f9c-e711-811c-000d3a75ce72",
         "duplicateid":"489a879c-019b-4c28-8539-51ebc850d18f",
         "createdon":"2017-09-19T03:34:25Z",
         "owningbusinessunit":"20a44144-6d9a-e711-811c-000d3a75ce72",
         "_asyncoperationid_value":"efaff068-7598-e711-80e8-00155db64062",
         "_duplicateruleid_value":null,
         "_duplicaterecordid_value":null
      },
      {  
         "owninguser":"b3ac4144-6d9a-e711-811c-000d3a75ce72",
         "_ownerid_value":"b3ac4144-6d9a-e711-811c-000d3a75ce72",
         "_baserecordid_value":"406fc65b-3f9c-e711-811c-000d3a75ce72",
         "duplicateid":"0a4a7dea-1488-4e05-b5eb-c2925ad2925a",
         "createdon":"2017-09-19T03:34:25Z",
         "owningbusinessunit":"20a44144-6d9a-e711-811c-000d3a75ce72",
         "_asyncoperationid_value":"efaff068-7598-e711-80e8-00155db64062",
         "_duplicateruleid_value":null,
         "_duplicaterecordid_value":null
      }
   ]
}

Die GUID des Basis-Datensatzes wird als baserecordid in Datensätzen DuplicateRecord gespeichert. duplicateid, in der obigen Antwort ist der eindeutige Bezeichner des doppelten Datensatzes. asyncoperationid ist der eindeutige Identifikator des Systemauftrags, der diesen Datensatz erstellt hat. Und, ownerid ist die eindeutige Kennung des Benutzers oder Teams, dem der doppelte Datensatz gehört. Weitere Informationen finden Sie unter DuplicateRecord-Entität.

Hinweis

Stellen Sie vor dem Erstellen und Ausführen von Duplikaterkennungsaufträgen sicher, dass geeignete Regeln für die Duplikaterkennung vorhanden sind. Dynamics 365 Customer Engagement enthält vordefinierte Duplikaterkennungsregeln für Kundenkonten, Kontakte und Leads, jedoch nicht für andere Arten von Datensätzen. Wenn Sie möchten, dass das System Duplikate für andere Datensatztypen erkennt, müssen Sie eine neue Regel erstellen. Informationen zum Erstellen einer Regel zur Erkennung von Duplikaten finden Sie unter Regeln zur Erkennung von Duplikaten.

Erkennen von Duplikaten während Erstellungs- und Aktualisierungsvorgängen

Standardmäßig wird die Duplikaterkennung unterdrückt, wenn Sie einen Datensatz mithilfe der Web-API erstellen oder aktualisieren. Verwenden Sie den Header MSCRM.SuppressDuplicateDetection und legen Sie seinen Wert auf false fest, während Sie einen Datensatz erstellen oder aktualisieren. Die Duplikaterkennung wird nur angewendet, wenn in der Organisation die Duplikaterkennung aktiviert ist, die Entität für die Duplikaterkennung aktiviert ist und aktive Duplikaterkennungsregeln angewendet werden.

Weitere Informationen zum Erkennen von Duplikaten während des Erstellungs- und Aktualisierungsvorgangs finden Sie unter Verwalten der Duplikaterkennung während des Erstellungs- und Aktualisierungsvorgangs mithilfe der Web-API

Beispiel: Duplikaterkennung mit dem Organisationsdienst

Das folgende Beispiel zeigt, wie die Option zur Duplikaterkennung als Teil von Nachrichten wie CreateRequest und UpdateRequest übergeben werden kann.



// Connect to the Organization service. 
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
{
    // This statement is required to enable early-bound type support.
    _serviceProxy.EnableProxyTypes();

    _service = (IOrganizationService)_serviceProxy;

    CreateRequiredRecords();

    // Create and account record with the named Proseware, Inc. and already existing Account Number.
    Account account = new Account 
    {
        Name = "Proseware, Inc.",
        AccountNumber = "ACC005"
    };

    // Create operation by suppressing duplicate detection
    CreateRequest reqCreate = new CreateRequest();
    reqCreate.Target = account;
    reqCreate.Parameters.Add("SuppressDuplicateDetection", true); // Change to false to activate the duplicate detection.
    CreateResponse createResponse = (CreateResponse)_service.Execute(reqCreate);
    _dupAccountId = createResponse.id;
    Console.Write("Account: {0} {1} created with SuppressDuplicateDetection to true, ", 
        account.Name, account.AccountNumber);
    
    // Retrieve the account containing with its few attributes.
    ColumnSet cols = new ColumnSet(
        new String[] { "name", "accountnumber"});

    Account retrievedAccount = (Account)_service.Retrieve("account", _dupAccountId, cols);
    Console.Write("retrieved, ");

    // Update the existing account with new account number.
    retrievedAccount.AccountNumber = "ACC006";                   

    // Update operation – update record, if a duplicate is not found.
    UpdateRequest reqUpdate = new UpdateRequest();
    reqUpdate.Target = retrievedAccount;
    reqUpdate["SuppressDuplicateDetection"] = false; // Duplicate detection is activated.

    // Update the account record.
    UpdateResponse updateResponse = (UpdateResponse)_service.Execute(reqUpdate);
    Console.WriteLine("and updated.");

    DeleteRequiredRecords(promptforDelete);
}

Siehe auch

Erkennung von Duplikaten
Aktivieren und Deaktivieren der Duplikaterkennung
Verwenden von Nachrichten (Anforderungs- und Antwortklassen) mit der Execute-Methode
Doppelte Erkennungsmeldungen