Dijeli putem


Pokrenite otkrivanje duplikata

Postoji nekoliko načina za otkrivanje duplikata nakon što ga omogućite i objavite pravila otkrivanja duplikata.

Dohvaćanje i otkrivanje duplikata za određeni zapis

Otkrijte i dohvatite duplikate:

  • Prije stvaranja entiteta
  • Za postojeći subjekt
  • Za ostale entitete koji odgovaraju dupliciranim pravilima u svim entitetima. Na primjer, bilo koji entitet potencijalnog klijenta koji odgovara entitetu kontakta.

Mogućnosti:

Primjer: Otkrivanje duplikata za određeni zapis pomoću web-API-ja

Sljedeći primjer pokazuje kako otkriti duplikate određenog zapisa pomoću RetrieveDuplicates funkcije.

Zahtjev

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

Odgovor

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

Otkrivanje duplikata za vrstu entiteta

Pošaljite asinkroni zadatak otkrivanja duplikata koji se izvodi u pozadini. Duplikati se otkrivaju u skladu s objavljenim pravilima duplikata za vrstu entiteta. Otkriveni duplikati pohranjuju se kao DuplicateRecord zapisi u sustavu Dynamics 365 Customer Engagement (on-premises).

Posao otkrivanja duplikata vraća najviše 5000 duplikata.

Mogućnosti

Primjer: Otkrivanje duplikata za vrstu entiteta pomoću web-API-ja

Sljedeći primjer pokazuje kako otkriti duplikate za vrstu entiteta stvaranjem asinkronog posla pomoću BulkDetectDuplicates akcije.

Zahtjev

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

Odgovor

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

Gornji zahtjev stvara asinkroni posao otkrivanja duplikata čiji se JobID vraća u odgovoru. JobID vraćen iz gornjeg zahtjeva može se koristiti za dohvaćanje dupliciranih zapisa u vrsti entiteta, kao što je prikazano u primjeru u nastavku.

Zahtjev

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

FetchXML ekvivalent gornjeg zahtjeva prikazan je u nastavku.

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

Odgovor

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

GUID osnovnog zapisa pohranjuje se kao baserecordid u zapisima DuplicateRecord . duplicateid, u prethodnom odgovoru jedinstveni identifikator dupliciranog zapisa. asyncoperationid je jedinstveni idenitifikator posla sustava koji je stvorio taj zapis. I ownerid jedinstveni identifikator korisnika ili tima koji posjeduje duplicirani zapis. Dodatne informacije potražite u odjeljku DuplicateRecord entiteta .

Napomena

Prije stvaranja i izvršavanja poslova otkrivanja duplikata provjerite postoje li odgovarajuća pravila otkrivanja duplikata. Dynamics 365 Customer Engagement uključuje zadana pravila otkrivanja duplikata za račune, kontakte i potencijalne klijente, ali ne i za druge vrste zapisa. Ako želite da sustav otkrije duplikate za druge vrste zapisa, morat ćete stvoriti novo pravilo. Informacije o stvaranju pravila otkrivanja duplikata potražite u članku Pravila otkrivanja duplikata.

Otkrivanje duplikata tijekom operacija stvaranja i ažuriranja

Prema zadanim postavkama, otkrivanje duplikata potiskuje se prilikom stvaranja ili ažuriranja zapisa pomoću web-API-ja. Koristite MSCRM.SuppressDuplicateDetection zaglavlje i postavite njegovu vrijednost na tijekom false stvaranja ili ažuriranja zapisa. Otkrivanje duplikata primjenjuje se samo kada je u tvrtki ili ustanovi omogućeno otkrivanje duplikata, entitetu je omogućeno otkrivanje duplikata i primjenjuju se aktivna pravila otkrivanja duplikata.

Pogledajte više o tome kako otkriti duplikate tijekom operacije stvaranja i ažuriranja u odjeljku Upravljanje otkrivanjem duplikata tijekom operacije stvaranja i ažuriranja pomoću web-API-ja

Primjer: Otkrivanje duplikata pomoću usluge tvrtke ili ustanove

Sljedeći primjer pokazuje kako proslijediti mogućnost otkrivanja duplikata kao dio CreateRequestUpdateRequest i poruka:



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

Pogledajte

Otkrivanje duplikata
Omogućivanje i onemogućavanje otkrivanja duplikata
Koristite poruke (klase zahtjeva i odgovora) s metodom izvršavanja
Poruke za otkrivanje duplikata