Hi All,
I have one lookup field(Contact entity) in Case entity .Need to get lookup details like fields values present in Contact & update in Case fields using C#.
The below code using in Console, but getting error while am updating in Case record with entityId in last line "Invalid Type for entity id value" :
static void Main(string[] args)
{
IOrganizationService _crmService = ConnectToCRM();
// CreateAutoNumberAttribute(_crmService);
if (_crmService != null)
{
QueryExpression qe = new QueryExpression("incident");
EntityCollection coll = _crmService.RetrieveMultiple(qe);
Console.WriteLine("Retrieved : " + coll.Entities.Count);
Console.ReadLine();
string entityId = "c35a88e1-4fe5-ea11-a824-001dd8b70014";
//string entity = "incident";
//string getassetId = "8E72FA18-26CF-EA11-A827-001DD8B70013"; //8e72fa18-26cf-ea11-a827-001dd8b70013
//Entity enContact = _crmService.Retrieve("contact", Guid.Parse(entityId), new ColumnSet(true));
ColumnSet attributes = new ColumnSet(new string[] { "mdc_reportername", "mdc_reporterisnotanmicuser" });
Entity enCase = _crmService.Retrieve("incident", Guid.Parse(entityId), attributes);
EntityReference reporterName = enCase.Attributes.Contains("mdc_reportername") ? enCase.GetAttributeValue<EntityReference>("mdc_reportername") : null;
bool isMICUser = enCase.Contains("mdc_reporterisnotanmicuser") ? enCase.GetAttributeValue<bool>("mdc_reporterisnotanmicuser") : false;
string title = string.Empty;
string company = string.Empty;
string dept = string.Empty;
string emailaddress = string.Empty;
string mobilephone = string.Empty;
string lineManager = string.Empty;
string lineManagerEMail = string.Empty;
Guid divisionID = Guid.Empty;
Guid platformID = Guid.Empty;
Guid aasetID = Guid.Empty;
Guid reporteId = Guid.Empty;
bool isuser = false;
if (enCase.Attributes.Contains("mdc_reportername") && reporterName != null)
{
reporteId = (enCase.GetAttributeValue<EntityReference>("mdc_reportername")).Id;
Console.WriteLine("Reporter Name From Case : " + reporteId);
Console.ReadLine();
}
if (enCase.Attributes.Contains("mdc_reporterisnotanmicuser"))
{
isuser = enCase.GetAttributeValue<bool>("mdc_reporterisnotanmicuser");
Console.WriteLine("Is MIC User From Case : " + isuser);
Console.ReadLine();
}
string contactFetch = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='contact'>
<attribute name='contactid' />
<attribute name='mdc_title' />
<attribute name='mdc_platform' />
<attribute name='mdc_linemanageremail' />
<attribute name='mdc_linemanager' />
<attribute name='emailaddress1' />
<attribute name='mdc_division' />
<attribute name='mdc_department' />
<attribute name='mdc_company' />
<attribute name='mdc_asset' />
<filter type='and'>
<condition attribute='mdc_title' operator='not-null' />
<condition attribute='contactid' operator='eq' value='" + reporteId + @"' />
</filter>
</entity>
</fetch>";
FetchExpression fetchQuery = new FetchExpression(contactFetch);
Console.WriteLine("Get fetch : " + fetchQuery);
EntityCollection fetchResults = _crmService.RetrieveMultiple(fetchQuery);
if (fetchResults.Entities.Count() > 0)
{
foreach (Entity item in fetchResults.Entities)
{
if (item.Attributes.Contains("mdc_asset"))
{
EntityReference assetValue = item.GetAttributeValue<EntityReference>("mdc_asset");
aasetID = assetValue.Id;
Console.WriteLine("AssetValue From Fetch : " + aasetID);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_title"))
{
title = item["mdc_title"].ToString();
Console.WriteLine("title from fetch : " + title);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_division"))
{
EntityReference divisionValue = item.GetAttributeValue<EntityReference>("mdc_division");
divisionID = divisionValue.Id;
Console.WriteLine("divisionValue from fetch : " + divisionValue.Name);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_company"))
{
company = item["mdc_company"].ToString();
Console.WriteLine("Company from fetch : " + company);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_platform"))
{
EntityReference platformValue = item.GetAttributeValue<EntityReference>("mdc_platform");
platformID = platformValue.Id;
Console.WriteLine("Platform from fetch : " + platformID);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_department"))
{
dept = item["mdc_department"].ToString();
Console.WriteLine("Dept from fetch : " + dept);
Console.ReadLine();
}
if (item.Attributes.Contains("emailaddress1"))
{
emailaddress = item["emailaddress1"].ToString();
Console.WriteLine("emailaddress from fetch : " + emailaddress);
Console.ReadLine();
}
if (item.Attributes.Contains("mobilephone"))
{
mobilephone = item["mobilephone"].ToString();
Console.WriteLine("mobilephone from fetch : " + mobilephone);
Console.ReadLine();
}
if (item.Attributes.Contains("mdc_linemanager"))
{
lineManager = item["mdc_linemanager"].ToString();
}
if (item.Attributes.Contains("mdc_linemanageremail"))
{
lineManagerEMail = item["mdc_linemanageremail"].ToString();
}
Entity caseEntity = new Entity("incident");
if (!string.IsNullOrEmpty(emailaddress))
caseEntity["mdc_reporteremailaddress"] = emailaddress;
if (!string.IsNullOrEmpty(company))
caseEntity["mdc_reportercompany"] = company;
if (!string.IsNullOrEmpty(title))
caseEntity["mdc_reportertitle"] = title;
if (platformID != null)
caseEntity["mdc_platform"] = platformID;
if (aasetID != null)
caseEntity["mdc_relatedasset"] = aasetID;
caseEntity["incidentid"] = entityId;
_crmService.Update(caseEntity);
Console.WriteLine("Updated Case Record : " + caseEntity);
Console.ReadLine();
}
}
Please let me know where am going wrong.
Thanks,
Jharana