I want to reopen, and then update and the close the Case in one go.
However, xrm.SaveChanges gives the following error "This case has already been resolved. Close and reopen the case record to see the updates."
But when debugging I can see that the Case actually does change state. Can it be that the update change for all records is only fully completed when reaching xrm.SaveChanges?
How do I solve this issue?
protected void ModifyCases_Click(object sender, EventArgs e) { var xrm = new XrmServiceContext("Xrm"); var querycases = ( from i in xrm.IncidentSet where i.StateCode.Value == 1 && i.StatusCode == 5&& i.OwnerId.Id.Equals("26489806-250d-e211-8af5-3c4a92dbd83d") select i).Take(100).ToList(); foreach (Incident incident in querycases) { // Reactivate Case SetStateRequest setStateReq = new SetStateRequest(); setStateReq.EntityMoniker = new EntityReference(incident.LogicalName, incident.Id); setStateReq.State = new OptionSetValue(0); setStateReq.Status = new OptionSetValue(1); SetStateResponse response = (SetStateResponse)xrm.Execute(setStateReq); // Update Case incident.new_csem_id = incident.IncidentId.ToString(); xrm.UpdateObject(incident); // Case Resolution Entity caseResolution = new Entity("incidentresolution"); caseResolution.Attributes.Add("incidentid", new EntityReference(incident.LogicalName, incident.Id)); caseResolution.Attributes.Add("subject", "Auto closed during data migration"); xrm.Create(caseResolution); // Mark Case as Resolved CloseIncidentRequest req = new CloseIncidentRequest(); req.IncidentResolution = caseResolution; req.RequestName = "CloseIncident"; OptionSetValue o = new OptionSetValue(); o.Value = 5; req.Status = o; CloseIncidentResponse resp = (CloseIncidentResponse)xrm.Execute(req); }; xrm.SaveChanges(); }