/// <summary> /// Creates any entity records that this sample requires. /// </summary> public static void CreateRequiredRecords(CrmServiceClient service) { String accountName = "Contoso, Ltd"; String websiteUrl = "http://www.contoso.com/"; Console.WriteLine(" Creating duplicate records (Account name={0}, Website URL={1})", accountName, websiteUrl); // Create some duplicate records for (int i = 0; i < 2; i++) { var account = new Account() { Name = accountName, WebSiteURL = websiteUrl }; account.Id = service.Create(account); duplicateAccounts[i] = account; } accountName = "Contoso Pharmaceuticals"; Console.WriteLine(" Creating a non-duplicate record (Account name={0}, Website URL={1})", accountName, websiteUrl); // Create a record that is NOT a duplicate var distinctAccount = new Account() { Name = accountName, WebSiteURL = websiteUrl }; distinctAccount.Id = service.Create(distinctAccount); account = distinctAccount; Console.WriteLine(" Creating a duplicate detection rule"); // Create a duplicate detection rule rule = new DuplicateRule() { Name = "Accounts with the same Account name and website url", BaseEntityName = Account.EntityLogicalName, MatchingEntityName = Account.EntityLogicalName }; rule.Id = service.Create(rule); // Create a duplicate detection rule condition var nameCondition = new DuplicateRuleCondition() { BaseAttributeName = "name", MatchingAttributeName = "name", OperatorCode = new OptionSetValue(0), // value 0 = 'exact match' // set the regarding id to point to the rule created earlier, // associating this condition with that rule RegardingObjectId = rule.ToEntityReference() }; service.Create(nameCondition); var websiteCondition = new DuplicateRuleCondition() { BaseAttributeName = "websiteurl", MatchingAttributeName = "websiteurl", OperatorCode = new OptionSetValue(0), RegardingObjectId = rule.ToEntityReference() }; service.Create(websiteCondition); Console.WriteLine(" Publishing duplicate detection rule"); // Publish the rule var publishRequest = new PublishDuplicateRuleRequest() { DuplicateRuleId = rule.Id }; var publishResponse = (PublishDuplicateRuleResponse)service.Execute(publishRequest); // The PublishDuplicateRule request returns before the publish is completed, // so we keep retrieving the async job state until it is "Completed" Console.WriteLine(" Checking to see if duplicate detection rule has finished publishing"); WaitForAsyncJobToFinish(service, publishResponse.JobId, 120); }
/// <summary> /// Creates any entity records that this sample requires. /// </summary> public void CreateRequiredRecords() { #region Creating Accounts String accountName = "Contoso, Ltd"; String websiteUrl = "http://www.contoso.com/"; Console.WriteLine(" Creating duplicate records (Account name={0}, Website URL={1})", accountName, websiteUrl); // Create some duplicate records for (int i = 0; i < 2; i++) { Account account = new Account() { Name = accountName, WebSiteURL = websiteUrl }; account.Id = _serviceProxy.Create(account); _duplicateAccounts[i] = account; } accountName = "Contoso Pharmaceuticals"; Console.WriteLine(" Creating a non-duplicate record (Account name={0}, Website URL={1})", accountName, websiteUrl); // Create a record that is NOT a duplicate Account distinctAccount = new Account() { Name = accountName, WebSiteURL = websiteUrl }; distinctAccount.Id = _serviceProxy.Create(distinctAccount); _account = distinctAccount; #endregion #region Create and Publish duplicate detection rule Console.WriteLine(" Creating a duplicate detection rule"); // Create a duplicate detection rule _rule = new DuplicateRule() { Name = "Accounts with the same Account name and website url", BaseEntityName = Account.EntityLogicalName, MatchingEntityName = Account.EntityLogicalName }; _rule.Id = _serviceProxy.Create(_rule); // Create a duplicate detection rule condition DuplicateRuleCondition nameCondition = new DuplicateRuleCondition() { BaseAttributeName = "name", MatchingAttributeName = "name", OperatorCode = new OptionSetValue(0), // value 0 = 'exact match' // set the regarding id to point to the rule created earlier, // associating this condition with that rule RegardingObjectId = _rule.ToEntityReference() }; _serviceProxy.Create(nameCondition); DuplicateRuleCondition websiteCondition = new DuplicateRuleCondition() { BaseAttributeName = "websiteurl", MatchingAttributeName = "websiteurl", OperatorCode = new OptionSetValue(0), RegardingObjectId = _rule.ToEntityReference() }; _serviceProxy.Create(websiteCondition); Console.WriteLine(" Publishing duplicate detection rule"); // Publish the rule PublishDuplicateRuleRequest publishRequest = new PublishDuplicateRuleRequest() { DuplicateRuleId = _rule.Id }; PublishDuplicateRuleResponse publishResponse = (PublishDuplicateRuleResponse)_serviceProxy.Execute(publishRequest); // The PublishDuplicateRule request returns before the publish is completed, // so we keep retrieving the async job state until it is "Completed" Console.WriteLine(" Checking to see if duplicate detection rule has finished publishing"); WaitForAsyncJobToFinish(publishResponse.JobId, 60); #endregion }