Hi I am trying to use the below code to contact merge ,
but this code gives only for text field how about two options ,optionset values and date values
for example if the master contact record has one field(attribute) with flag yes or no, for this how we do validate for subordinate record and master record and how do we assign that value from subordinate record to master record, please help for the option set values and date values as well.
public
void
MergeAccounts(Guid masterAccountId, Guid subOrdinateAccountId)
{
try
{
IOrganizationService crmConnection = GetCRMConnection();
EntityReference target =
new
EntityReference();
target.Id = masterAccountId;
target.LogicalName =
"account"
;
MergeRequest merge =
new
MergeRequest();
merge.SubordinateId = subOrdinateAccountId;
merge.Target = target;
merge.PerformParentingChecks =
false
;
Entity updateContent =
new
Entity(
"account"
);
var
cols =
new
ColumnSet(
new
[] {
"primarycontactid"
,
"websiteurl"
,
"telephone1"
,
"fax"
,
"emailaddress1"
});
var
masterAccount = crmConnection.Retrieve(
"account"
, masterAccountId, cols);
var
subOrdinateAccount = crmConnection.Retrieve(
"account"
, subOrdinateAccountId, cols);
if
(!masterAccount.Contains(
"primarycontactid"
) && subOrdinateAccount.Contains(
"primarycontactid"
))
updateContent.Attributes.Add(
"primarycontactid"
,
new
EntityReference(
"contact"
, subOrdinateAccount.GetAttributeValue<EntityReference>(
"primarycontactid"
).Id));
if
(!masterAccount.Contains(
"websiteurl"
) && subOrdinateAccount.Contains(
"websiteurl"
))
updateContent.Attributes.Add(
"websiteurl"
, subOrdinateAccount.Attributes[
"websiteurl"
]);
if
(!masterAccount.Contains(
"telephone1"
) && subOrdinateAccount.Contains(
"telephone1"
))
updateContent.Attributes.Add(
"telephone1"
, subOrdinateAccount.Attributes[
"telephone1"
]);
if
(!masterAccount.Contains(
"fax"
) && subOrdinateAccount.Contains(
"fax"
))
updateContent.Attributes.Add(
"fax"
, subOrdinateAccount.Attributes[
"fax"
]);
if
(!masterAccount.Contains(
"emailaddress1"
) && subOrdinateAccount.Contains(
"emailaddress1"
))
updateContent.Attributes.Add(
"emailaddress1"
, subOrdinateAccount.Attributes[
"emailaddress1"
]);
merge.UpdateContent = updateContent;
MergeResponse mergeRes = (MergeResponse)crmConnection.Execute(merge);
}
catch
(Exception ex)
{
throw
ex;
}
Kindly help me here