Introduction:
Service Level Agreements (SLAs) in Microsoft Dynamics CRM help you define the level of support or service that the company agrees to offer to its client. The details items that are included to define key performance indicators (KPIs) or metrics to achieve the service level that is expected to be.
With the release of Microsoft Dynamics CRM 2016, ‘UpdateRequest’ was introduced to activate and deactivate SLA records programmatically.
When we import the cases the related SLA records have to be deactivated programmatically so that it is not used along with the cases. We can now do this using ‘UpdateRequest’ for activating or deactivating the SLA records. This saves the time and the effort of deactivating the SLA records manually.
Let’s take a look how the ‘UpdateRequest’ is used in C# and in the code block.
Using ‘UpdateRequest’ through C#
//Get Case Guid
Guid entitlementId = Guid.Empty;
Guid slaId = Guid.Empty;
Guid CaseId = new Guid("17145E3A-A7D7-E511-80DC-FC15B4284AE0");
//Retrieve Case to get entitlement
Entity caseRes = _orgService.Retrieve("incident", CaseId, new ColumnSet(new string[] { "title", "entitlementid" }));
if (caseRes != null && caseRes.Contains("entitlementid"))
{
//Get entitlement Id
entitlementId = ((EntityReference)caseRes.Attributes["entitlementid"]).Id;
}
//Retrieve Entitlement to get SLA
Entity entitleEntity = _orgService.Retrieve("entitlement", entitlementId, new ColumnSet(new string[] { "slaid" }));
if (entitleEntity != null && entitleEntity.Contains("slaid"))
{
//Get SLA Id
slaId = ((EntityReference)entitleEntity.Attributes["slaid"]).Id;
}
//Deactivate SLA Record
Entity slaEntity = new Entity("sla");
slaEntity.Id = slaId;
slaEntity["statecode"] = new OptionSetValue(0);
slaEntity["statuscode"] = new OptionSetValue(1);
_orgService.Update(slaEntity);
Using ‘UpdateRequest’ through scripting
function DeactivateSLA() {
try {
var slaId = null;
var caseId = Xrm.Page.data.entity.getId();
var entitlement = Xrm.Page.getAttribute("entitlementid").getValue();
var entitlementId = entitlement[0].id;
var cols = ["slaid"];
//Retrieve Entitlement record
var entitleResponse = XrmServiceToolkit.Soap.Retrieve("entitlement", entitlementId, cols, null);
//Retrieve entitlement to get SLA
if (entitleResponse != null && entitleResponse.attributes["slaid"] != null)
{
slaId = entitleResponse.attributes["slaid"].id;
}
//Update SLA record
var slaEntity = {};
slaEntity.StateCode = { Value: 0 };
slaEntity.StatusCode = { Value: 1 };
//Update SLA Status
XrmServiceToolkit.Rest.Update(slaId, slaEntity, "SLASet", function (result)
{
Xrm.Utility.alertDialog("SLA Deactivated Successfully" + Id);
},
function (err) { return (err.Message) }, false);
}
catch (e)
{
Xrm.Utility.alertDialog("Function Name:" + "DeactivateSLA" + "-" + e.description);
}
}
Conclusion:
On a concluding note, hope the above code blocks help you to use ‘UpdateRequest’ to activate and deactivate the SLAs without affecting the cases. Any other SDK messages except ‘UpdateRequest’ are still not supported for this entity.
Now clone your Dynamics CRM Records in just 1 Click with Click2Clone.
That is impressive