14 Replies Latest reply on Aug 15, 2018 10:56 AM by wynnb

    Use request parameter to set the resolution target

    wynnb Apprentice

      Is it possible to use a date parameter in a request offering to set the resolution target (BreachDateTime) of the resulting request? Could that field also be used to set the due date for tasks created in the workflow?

       

      The idea here is to allow the requester to state when they need the fulfillment, rather than set an arbitrary length of time in the offering. I want to use the date they select to update the BreachDateTime for the request and the task(s).

        • 1. Re: Use request parameter to set the resolution target
          AlasdairRobertson ITSMMVPGroup

          Yes it is possible, now the catches with it:

          • You have to manually setup on each offering as you publish it
          • You need a default value of something like current datetime + 2 hours to prevent it from instantly breaching whilst the rules sort themselves out
          • You have to pass the date to the field from the request offering
          • Doesn't use the HOP calendar so doesn't take in to account any holidays or working hours you have to calculate you can use the HOP functions (AddWorkingDays/AddWorkingSeconds) in the calculations however.

                    Note: on this point I noticed in my screen shot that the HOP field is still enabled so worth testing.

           

          If I haven't scared you off and I have this in place with a few customers here is how to do it:

           

          • A new datetime field to the ServiceReq object...something like TargetDateTime
          • On you request offering add a field for the delivery date
          • In the workflow for the RO add an Update block and push the delivery date to the TargetDateTime field (you can do any maths you need at this point to calculate the right date)
          • Publish the request offering
          • Go in to the AdminUI then to Automation Tools > Escalation Schedules
          • Go to the Service Request - Delivery schedule and browse to your request not the SLA one (unless you have an SLA for it) but the one under Service Request - Delivery Default Section
          • Open the threshold option and change the target duration to the field option and select your TargetDateTime field

           

          • Escalation levels and breaches work as normal.
          2 of 2 people found this helpful
          • 2. Re: Use request parameter to set the resolution target
            wynnb Apprentice

            Alastair,

             

            So... I got this to work as you described it, but... it doesn't affect the Task due date. Do I have to create a new relationship in order to add a RO workflow block to update the Task.Assignment TargetDate field?

            • 3. Re: Use request parameter to set the resolution target
              AlasdairRobertson ITSMMVPGroup

              Yes you would need an update block to set the target date time from the RO and then you can pass that to the tasks created as well. 

               

              Oh forgot to mention set an initialisation rule for the target date time field set it to something like current date time + 2 hours or the SR will breach the minute its created (before your workflow can update it).

              • 4. Re: Use request parameter to set the resolution target
                wynnb Apprentice

                But the update block can only update fields in the SR object, correct? I'm thinking I'd have to create a quick action to the Task.Assignment object that copies the due date from the SR to the Task, then add a 'run for child' block in the workflow to trigger it. Does that sound right?

                • 5. Re: Use request parameter to set the resolution target
                  AlasdairRobertson ITSMMVPGroup

                  Your correct, copy the value to the SR object then use a run for child to copy to your task object.  remember the from SR to Task is one to many (1:N) so make sure you target the correct task.

                  • 6. Re: Use request parameter to set the resolution target
                    wynnb Apprentice

                    Thanks for your continued help on this, Alasdair (and sorry for misspelling your name earlier...)

                     

                    Here's the rub: on the Task form, the "Completion Target" field is based on the escalation schedule: "$([link:ResolutionEscLink]BreachDateTime)". I can update the "Due On", "End Date", or "Planned End Date" fields in the Task using an extended task block, but none of those change the escalation schedule.

                     

                    So I built a run-for-child action in Task that triggers an action in Frs_data_escalation_watch to update the linked schedule (based on one of the Task fields that I can update). In my SR workflow, I set the 'End Date' in the extended task block using the RO parameter, and added a 'Logged' exit on the task that goes to the 'run for child' for the new action. But... it doesn't work. I have to manually run that action in the task to get the escalation watch updated.

                     

                    Getting closer...

                    • 7. Re: Use request parameter to set the resolution target
                      AlasdairRobertson ITSMMVPGroup

                      I wouldn't recommend playing with the Frs_Data_Escalation_Watch object directly, as this is an automated service it will make its own decisions.

                       

                      Just so I make sure I have the scenario right:

                      • The Breach Date/Time is coming from the Request Offering (field on form)
                      • The Escalation Clock you are trying to control is ServiceReq - Delivery (just checking you are not trying to do something with an OLA)
                      • The delivery breach date is controlled by a field on the task object (Completion Date)

                       

                      Questions: the completion date on the task...can it be changed by an analyst during the life of the SR?

                       

                      If my assumptions are correct the target date field should sit on the SR object, it can be displayed/copied to the task but the driver for the service request clock should be a field on the SR object.

                       

                      You can control the date time field on the SR object from the task (replicating any change upwards using business rules).

                      • 8. Re: Use request parameter to set the resolution target
                        wynnb Apprentice

                        - The Request breach date time is normally set on the offering (the Deliver by field on the 1st tab of the RO), but I'm overriding that using a date/time field on the form.

                        - The Task breach date (Task.Assignment - Completion) is normally set by the OLAs. So when a task is linked to a Service (via the parent object), the Task assumes the OLA for that team on that Service.

                        - the target duration on that escalation schedule is used to populate the "Completion Target" on the Task form. That's the field I want to modify based on the date entered in the SR form. the Completion Target field is read-only for analysts. There is a business rule for that as well:

                        $(if ResolutionEscLink != null

                          then [link:ResolutionEscLink]BreachDateTime

                          else null)

                         

                        Your initial instructions worked for setting a Delivery date on the request (the 'need by' date on the form becomes the 'ServiceReq - Delivery Default' breach date), but when the workflow creates the task - that task assumes the OLA settings. So I need to use this field on my request form to set both the SR and task breach dates - basically overriding the Request SLA and Task OLA for delivery/completion dates. I can set the EndDate on the task from that field, and I can then update the escalation watch Breach date from the Task's EndDate field with a quick action that runs against the task's escalation watch: the action sets the escalation BreachDateTime to $([Task#Assignment.AssignmentAssocResolutionEscWatch]EndDate).

                         

                        But, that only works if I run the action manually. I haven't figured out how to make that action work in the workflow - might be a timing issue.

                        • 9. Re: Use request parameter to set the resolution target
                          AlasdairRobertson ITSMMVPGroup

                          I will have a go on my test system but this is the plan,

                          • Copy the SR Target Date Time to the Task End Date using a business rule something like on creation of task copy the target date time over, also set a flag on the task to swap it to use a different escalation schedule (Task - Complete)
                          • On the task completion escalation add a new exception based upon the task flag created earlier
                            • The task escalation can then also run on the End date for an SLA target date.
                          • 10. Re: Use request parameter to set the resolution target
                            AlasdairRobertson ITSMMVPGroup

                            I have got it working as per the plan above:

                             

                            Service Request Flow I am using is calling an extended task so I can set the End Date at the point of creation, I do have a business rule which will update the task end date if the SR Target Date changes.

                             

                             

                            Here is the configuration for my OLA:

                             

                             

                            I hope this helps, shout if you get stuck.

                            • 11. Re: Use request parameter to set the resolution target
                              wynnb Apprentice

                              It works!

                               

                              That was the key Alasdair; adding the boolean field on Task.Assignment with a rule to set it to true if the task has an 'EndDate', then adding the escalation schedule exceptions.

                               

                              You've done it again!

                              • 12. Re: Use request parameter to set the resolution target
                                AlasdairRobertson ITSMMVPGroup

                                Your welcome I will mark this as correct, shout of you need more help.

                                • 13. Re: Use request parameter to set the resolution target
                                  GuyWilkinson Rookie

                                  We are trying to change the resolution target based on the urgency of the service request. For example, we want High to be 5 days, Medium 10 days, and Low 20 days. We have succeeded in setting the initial resolution target, and we have managed to change the target when we change the Urgency. However, when we change the resolution target the Level 1, 2 and 3 Escalation dates are not getting updated. In the following example we set the initial target resolution date to 31/08/18 (the Breach On date), and then changed it 20/08/18, but you can see that the Level 3 Escalation date has not changed and is after the resolution target.

                                   

                                  Does anyone know how we can update the Level 1, 2 and 3 Escalation dates?

                                   

                                  • 14. Re: Use request parameter to set the resolution target
                                    wynnb Apprentice

                                    Guy, typically the escalation schedules are set based on priority, but you could set the exceptions to use urgency instead. I think the reason your dates aren't changing when you modify the target is that the system has already set the dates, so the clock already exists. I don't think it can dynamically update - could be wrong - but as far as I've seen it is set on creation of the record and stays that way. You could possibly make that work through business rules, but you'd have to play with it.