Tuesday, July 19, 2016

After a case is resolved, the user can reactivate the case
but what happens to the SLA when this occurs? In some scenarios you might want
to restart the SLA timer while in other cases you’d want to SLA the remain
unchanged. This posts explores a bit both possibilities. Note that this post
was tested with CRM 2015 and enhanced SLAs.

One of my recent requirements was that whenever a case is
reopened, the applicable SLA would need to restart counting again as if it were
a new case that just got created. This lead me to explore what kind of control
we have on SLAs when a resolved/cancelled case is brought back to in progress.

In my first attempt, I had created an enhanced SLA for which
the “Applicable From” field was the CreatedOn field, meaning that the “start”
of the SLA timer is the creation date of the case:

In my test SLA I give the users 5 minutes to resolve the
case before the SLA is considered as “failed”. Then I created a case and
resolved it after 1 minute which causes the case to succeed the SLA. I can see
in the associated SLA KPI instance that everything looks as expected:

Note: The SLA KPI Instance is the entity in CRM that holds
the information about the SLA of a given case, there is one SLA KPI instance
per case that has an SLA.

Now I reactivate the case and notice that although the case
is now active, the SLA KPI instance has not changed, so the case is considered
to have succeeded the KPI even though it is still active (there is no timer
anymore):

I can edit anything in the case and resolve it again and no
change is logged to the original KPI instance and there will be no new KPI
instance either. Even if I leave the case open for months before resolving it,
this case is always considered to have met the KPI. Whether this behavior is
expected or not is debatable because in some other scenarios you might have a
manager re-open a case just to enter som additional information before closing
it again and you might not want to lose the original SLA KPI instance
information in that case. However, in my requirement, the SLA timer should
start again, so what can we do?

It will not be possible to generate a new SLA KPI instance
when a case is reactivated because this feature is not flexible to do so in
CRM. However, we can trick to overwrite the existing SLA KPI instance and
update it as though it were a new case when the case is reactivated. However,
you will lose the historic SLA instance information from the first time that
the case was resolved.

To do so, the first thing you need to do is base your SLA on
some other field that is not the “Created On” date. I believe it is a good
practice to create a custom DateTime field in the case from which you always
base your SLAs so this way you can implement any business logic to set the
value of that field depending on many conditions (something you cannot do with
the CreatedOn field which is read-only and will never change). So I created a
new SLA based on my custom field:

Now I can set a simple business rule to populate the “SLA
start” field with the value of “Created On” whenever a new case is created.
Thus far, my SLA will behave the same as it did when I had it defined based on “Created
On”. The only difference now is that I will also create a workflow which will
update the SLA start field when the case is reopened and will set the value to “Execution
Time” (time the case is reactivated).

When I repeat the same example as before, I notice that once
I reactivate the case, the old SLA KPI instance information is lost and the
entire SLA is recalculated and updated; this happens because a change occurs in
the field on which the SLA is based (SLA start) which forces everything to
re-calculate. So I achieve my requirement of restarting the SLA timer when the
case is reopened. However, I would have much rather liked CRM to generate a new
instance of an SLA KPI each time I reactivate the case so this way I can track
the SLA timer after reopening the case but at the same time I do not lose the
old KPI information which can be useful for reporting. I haven’t found a way to
do so, but I would be happy to hear if anyone has solved this problem.

There I however, a big caveat with this approach and that is
that because the “old” SLA KPI information is lost when reactivating the case
then users can “cheat” by simply reactivating and re-resolving cases for which
they did not meet the KPI and all of the sudden their KPIs look like they never
missed any SLA!

If you don’t want your SLA timer to restart when a case is
re-activated you just need to make sure that the “Applicable From” field that
you use in your SLA definition will never change when a case is reopened (as is
the case with the “Created On” field).

Friday, July 1, 2016

About me

I used to be part of the CRM product team at Microsoft and I recently joined the Avanade Canada team as a consultant in the CRM Service Line, I developed a sort of delight in seeing how Dynamics CRM is evolving as a platform (xRM) and how its feature set has matured to be able to model and address plenty of business scenarios beyond Customer Relationship Management. I was recently given the Microsoft MVP award in Dynamics CRM and I am really excited to be part of the program and continue contributing to the CRM community.