Best Practice for Users and Technicians to Communicate for a Requested Item?

johnnyw
Mega Expert

Since we have the REQ/RITM/TASK structure in ServiceNow that prevents the end user who submitted a REQ/RITM to communicate with the task assignees out of the box, what is the best way to configure the Service Catalog to allow end users who submitted the request (Requested For/Opened By) to communicate with the Assigned To or Assignment Group of the tasks and vice versa?

We have had this issue since we went live and have been instructing users and ITIL analysts to always add comments to the RITM and to add people to the RITM's watch list.   This is a hassle and isn't a feasible workaround to functionality that seems obviously necessary that wasn't included OOB.

I've read posts about creating BR's to add Task Assigned To/Assignment Groups to the RITM watch list.   I've also read posts where people tried creating BR's to copy Task Comments to the RITM comments and vice versa.   Most of those discussions don't have a clear solution that seems to work flawlessly.

What was your solution?   Please share!

(We are on Fuji)

Thanks,

Johnny

9 REPLIES 9

Brad Tilton
ServiceNow Employee
ServiceNow Employee

Hi Johnny,



Most of the customers I've worked with don't actually communicate through email in the catalog, but I think forcing everything through the RITM is the right move if you are. In order to communicate the comments to those working the tasks you could write a mail script that queries all associated open tasks and adds the assignees to the comments email. The idea of writing a business rule to add assignees to the watch list on the RITM isn't a bad idea either. Unfortunately I don't think you're going to find a best practice that works flawlessly.


Thanks Brad for the quick response.



We are not necessarily looking to use email as the method of communication, but we need a way for all of the task assignees to get notified if the end user logs a comment on the RITM.   Right now, the technicians can add comments to the RITM and the end user would get a notification, but if the end user responds, the technician won't know unless they manually add themselves to the watch list.


johnnyw
Mega Expert

Can anyone else shed some light on what their solutions are?   I'm looking for feasible options that have worked for their organizations.



Thanks,


Johnny


Brendan Hallida
Kilo Guru

Hi Johnny,



I had this same dilemma and found this thread that helped me on my way.



Notification for Additional comments in Service Catalog task



The way it works is if an end user updates the additional comments on the sc_req_item table, an email is sent to the assigned to in the corresponding catalog task.



Basically, I have a notification, event and business rule running to achieve this.



Notification:


Table: sc_req_item


Send when: Event is fired


Event Name: sc_req_item.commented


Who will receive (Users/Groups in fields): Assigned to, Watch List


Event parm 1 contains recipient: Checked



Event:


Event Name: sc_req_item.commented


Table: sc_req_item


Fired by: sc_req_item events business rule



Business Rule:


Name: sc_req_item comment events


Table: sc_req_item


When to run: after


Update: Checked


Condition: current.comments.changes()


gs.eventQueue("sc_req_item.commented", current, gs.getUserID(), gs.getUserName());


queueAssigneeEvent();




function queueAssigneeEvent() {


    var assigneeArr = [];


    var assignGroupArr = [];


    //Query for non-pending sc_task records


    var catTsk = new GlideRecord('sc_task');


    catTsk.addQuery('request_item', current.sys_id);


    catTsk.addQuery('state', '!=', -5);


    catTsk.query();


    if (!catTsk.hasNext()) {


          gs.addInfoMessage(gs.getMessage('Comment cannot be viewed by technicians until work begins on the Requested Item'));


          return;


    }


    while (catTsk.next()) {


          //notify task assignees


          if (!catTsk.assigned_to.nil())


                assigneeArr.push(catTsk.assigned_to.toString());


          else


                assignGroupArr.push(catTsk.assignment_group.toString());


          //Add Work notes watch list users


          assigneeArr.push(catTsk.work_notes_list.toString());


    }


    gs.eventQueue("sc_req_item.commented.itil", current, assigneeArr, assignGroupArr);


}




var grpList = [];


var tsk = new GlideRecord('sc_task');


tsk.addQuery('request_item',current.sys_id);


tsk.addQuery('active','true');


tsk.query();


while (tsk.next()){


  grpList.push(tsk.assigned_to+'');


}



  gs.eventQueue("sc_req_item.commented",current, grpList.join(','),gs.getUserName());




I hope this helps someone



Cheers,


Brendan