Partager via


Exécuter la détection des doublons

Il existe plusieurs façons de détecter des doublons une fois que vous avez activé la détection et publié les règles de détection des doublons.

Récupérer et détecter les doublons pour un enregistrement spécifié

Détecter et extraire les doublons :

  • Avant de créer une entité
  • Pour une entité existante
  • Pour les autres entités correspondant aux règles des doublons dans diverses entités. Par exemple, une entité Prospect qui correspond à une entité Contact.

Options :

Exemple : Détection des doublons pour un enregistrement spécifié à l’aide de l’API web

Cet exemple montre comment détecter des doublons d’un enregistrement spécifié à l’aide de la fonction RetrieveDuplicates.

Demande

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

Réponse

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>
    ]
}

Détecter les doublons pour un type d’entité

Soumettez une tâche asynchrone de détection des doublons qui s’exécute en arrière-plan. Les doublons sont détectés en fonction des règles de détection des doublons publiées pour le type d’entité. Les doublons détectés sont enregistrés en tant qu’enregistrements DuplicateRecord dans Dynamics 365 Customer Engagement (on-premises).

5000 doublons au maximum sont retournés par la tâche de détection des doublons.

Options

Exemple : Détection des doublons pour un type d’entité en utilisant l’API web

Cet exemple montre comment détecter des doublons pour un type d’entité en créant une tâche asynchrone à l’aide de l’action BulkDetectDuplicates.

Demande

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"
}  

Réponse

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"
}

La demande ci-dessus crée une tâche asynchrone de détection des doublons dont le JobID est renvoyé dans la réponse. Le JobID obtenu de la demande ci-dessus peut être utilisé pour extraire des enregistrements en double dans un seul type d’entité, comme décrit dans l’exemple ci-dessous.

Demander

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

L’équivalent FetchXML de la demande ci-dessus est indiqué ci-dessous.

<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>

Réponse

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
      }
   ]
}

Le GUID de l’enregistrement de base est enregistré en tant que baserecordid dans les enregistrements DuplicateRecord. duplicateid, dans la réponse ci-dessus, est l’identificateur unique des enregistrements dupliqués. asyncoperationid est l’identificateur unique de la tâche système qui a créé cet enregistrement. Et ownerid est l’dentificateur unique de l’utilisateur ou de l’équipe propriétaire de l’enregistrement dupliqué. Pour plus d’informations, voir Entité DuplicateRecord.

Note

Avant de créer et exécuter des tâches de détection des doublons, vérifiez que les règles de détection des doublons appropriées sont en place. Common Data Service pour Dynamics 365 Customer Engagement comprend des règles de détection des doublons par défaut pour les comptes, les contacts et les prospects, mais pas pour les autres types d’enregistrements. Si vous souhaitez que le système détecte les doublons pour d’autres types d’enregistrements, vous devez créer une règle. Pour plus d’informations sur la création d’une règle de détection des doublons, voir Règles de détection des doublons.

Détecter des doublons pendant les opérations de création et de mise à jour

Par défaut, la détection des doublons est supprimée lorsque vous créez ou mettez à jour un enregistrement à l’aide de l’API web. Utilisez l’en-tête MSCRM.SuppressDuplicateDetection et définissez sa valeur sur false lors de la création ou de la mise à jour d’un enregistrement. La détection des doublons s’applique uniquement lorsque l’organisation a activé la détection des doublons, l’entité est activée pour la détection des doublons et les règles de détection de doublons actives sont appliquées.

Découvrez plus en détail comment détecter des doublons pendant les opérations de création et mise à jour dans Gérer la détection des doublons pendant les opérations de création et de mise à jour à l’aide de l’API web.

Exemple : Détection des doublons en utilisant le service de l’organisation

L’exemple suivant montre comment passer l’option de détection des doublons en tant que partie des messages CreateRequest et UpdateRequest :



// 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);
}

Voir aussi

Détection des doublons
Activer et désactiver la détection de doublons
Utiliser les messages (classes de demande et de réponse) avec la méthode Execute
Messages de détection des doublons