Approver comments on Task

Brian Lancaster
Tera Sage

I have a request to make it so that the approvers comments they put in the comments section.   How to I go about placing the approver comments into the task?

1 ACCEPTED SOLUTION

This is what our Approval Events (Task) business rule look like.   It was modified by the company that helped us setup ServiceNow.   How ever even if you want to use a group for approve you still have to use the approval user task in the workflow as that one works for both individuals and groups.   That is the only time that approval comments show up.



function checkRequest() {
      var task = current.sysapproval.sys_class_name;
      return (task == 'sc_request');
}


function checkSCTask() {
      var task = current.sysapproval.sys_class_name;
      return (task == 'sc_task');
}


var isRequest = checkRequest();
var isSCTask = checkSCTask();


if (current.state.changes() && current.state=='cancelled') {
      var event = "approval.cancelled";
      if (isRequest)
              event = "request.approval.cancelled";
      else if (isSCTask)
              event = "sc_task.approval.cancelled";
     
      gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
}


if (current.state.changes() && current.state=='requested') {
      var event = "approval.inserted";
      if (isRequest)
              event = "request.approval.inserted";
      else if (isSCTask)
              event = "sc_task.approval.inserted";
     
      gs.eventQueue(event, current, gs.getUserID(), gs.getUserName());
      updateTask(current, current.approver.getDisplayValue() + " requested to approve task");
}


if (current.state.changes() && current.state=='rejected') {
      var event = "approval.rejected";
      if (isRequest)
              event = "request.approval.rejected";
      else if (isSCTask)
              event = "sc_task.approval.rejected";
     
      gs.eventQueue(event, current, current.state, previous.state);
      updateTask(current, gs.getUserDisplayName()+ " rejected the task.", current.comments.getJournalEntry(1));
      notifyMyFriends(current);
}


if (current.state.changes() && current.state=='approved') {


      updateTask(current, gs.getUserDisplayName() + " approved the task.", current.comments.getJournalEntry(1));
}


function notifyMyFriends(me) {
      var friends = new GlideRecord('sysapproval_approver');
      friends.addQuery('sysapproval', me.sysapproval);
      friends.query();
      while(friends.next()) {
              if (friends.approver.toString() != me.approver.toString()) {
                      gs.eventQueue("approval.rejected.by.other", me, friends.approver);
              }
      }
}


function updateTask(me, journal, comments) {
      // if this is for a group approval, don't log this user action since the Group Approval Activity will handle the logging
    // if (!current.group.nil())
        //     return;
     
      // only log the user approval activity for workflows when specifically turned on
      // otherwise, we spam the approval history log when it is almost never desired to track via the approval history journal field
      var isWorkflow = !current.wf_activity.nil();
      if (isWorkflow && (gs.getProperty("glide.workflow.user_approval_history") != "true"))
              return;
     
      if (comments)
  journal += " Comments: " + comments;
     
      var task = new GlideRecord('task');
      if (task.get(me.sysapproval)) {
              if (isWorkflow)
                      task.setWorkflow(false);
             
              task.approval_history.setJournalEntry(journal);
              task.update();
      }
}



View solution in original post

44 REPLIES 44

Actuallz there should be no need to script at all.



On task is a field called "approval_history" which gets the comments already copied over vie a business rule on the approval table.


Try adding it to the activity log and you should see the content.


Hello eican,


When I add approval_history to the form it is a blank comments box.   I am looking at one in our dev that I added comments to when I approved it.


The approver_history box is a journal field and therefore works the same way as comments or work_notes.


Looking at the business rule on the approval table it copies over the comments when the approval is approved or rejected.


You made me retry (just in case) but the comments don't come to the activity log or approval history log (I tried on a sc_request table on a demo)


Maybe you modified the approval_history field directly or made this business rule, no?



find_real_file.png


Looking at your screenshot the activity log shows the approval history field.


Did I misunderstand something?