Dynamics CRM内では、リードエンティティにはステータスとステータス理由の両方があります。APIを使用して、すべてのステータス理由を取得できます。私がつまずくのは、ユーザーがステータス理由を選択したときです。逆方向に作業して、選択したステータス理由に関連付けられているステータスを確認したいと思います。
すべてのステータス理由を取得する方法は次のとおりです。
//get the list of status reasons
RetrieveAttributeRequest request = new RetrieveAttributeRequest();
request.EntityLogicalName = "lead";
request.LogicalName = "statuscode";
RetrieveAttributeResponse response = RetrieveAttributeResponse)theOrgContext.Execute(request);
StatusAttributeMetadata picklist = (StatusAttributeMetadata)response.AttributeMetadata;
foreach (OptionMetadata option in picklist.OptionSet.Options)
{
retval.ListOfStatuses.Add(option.Value.Value, option.Label.UserLocalizedLabel.Label.ToString());
}
エンティティを更新するには、LINQを使用しています。
//set the status to the new value
theLead.StatusCode.Value = int.Parse(statusValue);
theLead.StateCode = ???
//mark the object as updated
theContext.UpdateObject(theLead);
//persist the changes back to the CRM system
theContext.SaveChanges();
CRMにクエリを実行して、???に入力する必要のある値を把握する方法がわかりません。