In today’s blog I will explain how to close incident from web api. When we Resolve case from Case form system creates record in Incident resolution entity. And the changes the status of the case.
Same way we have to first create record in Incident Resolution entity from web api and then use CloseIncident action to change the status of the case.
Step 1:
Use below code to create Incident Resolution entity record using web api. We can map multiple fields while creating the record those are visible on Case Resolve dialog.
var entity = {};
entity.subject = "Problem Solved";
entity.description="Issue fixed";//Remarks
entity["incidentid@odata.bind"] = "/incidents(ca9e62a8-90df-e311-9565-a45d36fc5fe8)";
entity.timespent = 5;//Total Time
entity.totaltimespent = 15;//Billable time
entity.resolutiontypecode = 5;//Problem Solved
Xrm.WebApi.online.createRecord("incidentresolution", entity).then(
function success(result) {
var newEntityId = result.id;
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);
Step 2:
Now we have to execute IncidentResolution action from Web api. Use below code to invoke action.
var parameters = {};
var incidentresolution = {};
incidentresolution.activityid = "00000000-0000-0000-0000-000000000000"; //Pass entity ID from previous web api response
incidentresolution["@odata.type"] = "Microsoft.Dynamics.CRM.incidentresolution";
parameters.IncidentResolution = incidentresolution;
parameters.Status = 5;//Problem Solved
var closeIncidentRequest = {
IncidentResolution: parameters.IncidentResolution,
Status: parameters.Status,
getMetadata: function() {
return {
boundParameter: null,
parameterTypes: {
"IncidentResolution": {
"typeName": "mscrm.incidentresolution",
"structuralProperty": 5
},
"Status": {
"typeName": "Edm.Int32",
"structuralProperty": 1
}
},
operationType: 0,
operationName: "CloseIncident"
};
}
};
Xrm.WebApi.online.execute(closeIncidentRequest).then(
function success(result) {
if (result.ok) {
//Success - No Return Data - Do Something
}
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);
Hope this helps!
Hi there
Thanks for sharing this post, it helps. However, there’s a little tweak that I had to get done in order to get it working in my case, instead of defining activityid in incidentresolution object, I defined the incidentid by using odata binding:
was:
incidentresolution.activityid = “00000000-0000-0000-0000-000000000000”;
is:
incidentresolution[“incidentid@odata.bind”] = “/incidents(” + id + “)”;
Thanks, though. Cheers
Jo
LikeLike
Thanks for sharing this info!
LikeLike