- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2020 06:52 AM
Requirement - When task (child) is re-assigned, case (parent) state should be updated to "In Progress" and comments should be added <task> has been re-assigned from <previous.assignment_group> to <current.assignment_group>
Created Business Rule
When - before and Update
===============================
(function onBefore(current, previous) {
var gr = new GlideRecord('sn_customerservice_case');
var parentstate = "In Progress";
var casestate = state[current.state];
var parentcase = current.parent.getRefRecord();
var prevasngrp = previous.assignment_group;
var currasngrp = current.assignment_group;
if (parentcase.isValidRecord() && prevasngrp != currasngrp) {
parentcase.state.changesTo(parentstate);
current.work_notes = "[code]<a href='/" + current.sys_class_name + ".do?sys_id=" + current.sys_id + "'>" + current.number + "</a>[/code]" + "has been re-assigned from" + prevasngrp + "to" + currasngrp;
gr.update();
}
})(current, previous);
Could you please help in fixing this.
Solved! Go to Solution.
- Labels:
-
Service Level Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-07-2020 06:15 AM
I found the solution for the requirement however there are few more features which I incorporated
1. When comments is added in child case, parent case get updated
2. If there is a change in 'assignment group' or 'assigned to', comments get added in parent case
======================================================================
function onBefore(current, previous) {
var states = {
"1": "Open",
"2": "In Progress",
"3": "Pending",
"4": "Closed"
};
var currentState = states[current.state];
var previousState = states[previous.state];
var parentcase = current.parent.getRefRecord();
var task = "[code]<a href='/" + current.sys_class_name + ".do?sys_id=" + current.sys_id + "'>" + current.number + "</a>[/code]";
var notes = current.work_notes.getJournalEntry();
var parentState = current.parent.state.getDisplayValue();
var subject = current.short_description;
var closedat = current.closed_at;
var asngrp = current.assignment_group.getDisplayValue();
var asnto = current.assigned_to.getDisplayValue();
if (parentcase.isValidRecord()) {
if (current.state.changesTo(4)) {
parentcase.work_notes = gs.getMessage("{0} assigned to {1} has been Closed.\n\n" + "Subject: {2}\n\n" + "Closed Notes: {3}\n\n" + "Closed at :{4}\n\n", [task, asngrp, subject, notes, closedat]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.state.changesTo(2) || current.state.changesTo(3) && current.work_notes.changes() && (current.assignment_group.changes() || current.assigned_to.changes())) {
parentcase.work_notes = gs.getMessage("{0} Updated:\n\n" + "State: {1} to {2}\n\n" + "Assignment Group: {3}\n\n" + "Assigned To: {4}\n\n" + "Notes: {5}\n", [task, previousState, currentState, asngrp, asnto, notes]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.state.changesTo(2) || current.state.changesTo(3) && current.assignment_group.changes()) {
parentcase.work_notes = gs.getMessage("{0} Updated:\n\n" + "State: {1} to {2}\n\n" + "Assignment Group: {3}\n\n" + "Assigned To: {4}\n", [task, previousState, currentState, asngrp, asnto]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.state.changesTo(2) || current.state.changesTo(3) && (current.assignment_group.changes() || current.assigned_to.changes())) {
parentcase.work_notes = gs.getMessage("{0} Updated:\n\n" + "State: {1} to {2}\n\n" + "Assignment Group: {3}\n\n" + "Assigned To: {4}\n", [task, previousState, currentState, asngrp, asnto]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.state.changesTo(2) || current.state.changesTo(3) && current.work_notes.changes()) {
parentcase.work_notes = gs.getMessage("{0} Updated:\n\n" + "State: {1} to {2}\n\n" + "Notes: {3}\n", [task, previousState, currentState, notes]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.state.changesTo(2) || current.state.changesTo(3)) {
parentcase.work_notes = gs.getMessage("{0} Updated:\n\n" + "State: {1} to {2}\n", [task, previousState, currentState]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.comments.changes() || current.work_notes.changes()) {
parentcase.work_notes = gs.getMessage("{0} Updated: \n\n" + "Notes: {1}\n", [task, notes]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
} else if (current.assignment_group.changes() || current.assigned_to.changes()) {
parentcase.work_notes = gs.getMessage("{0} Updated: \n\n" + "Assignment Group: {1}\n\n" + "Assigned To: {2}\n", [task, asngrp, asnto]);
//Set Parent case state to In Progress
current.parent.state.setValue(10);
parentcase.update();
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2020 06:58 AM
Try below:
(function onBefore(current, previous) {
var gr = new GlideRecord('sn_customerservice_case');
var parentstate = "StateNumberHere"; // replace with Inprogress state value
var casestate = state[current.state];
var parentcase = current.parent.getRefRecord();
var prevasngrp = previous.assignment_group;
var currasngrp = current.assignment_group;
if (parentcase.isValidRecord() && prevasngrp != currasngrp) {
parentcase.state = parentstate;
current.work_notes = "[code]<a href='/" + current.sys_class_name + ".do?sys_id=" + current.sys_id + "'>" + current.number + "</a>[/code]" + "has been re-assigned from" + prevasngrp + "to" + currasngrp;
gr.update();
}
})(current, previous);
Please mark my response as correct and helpful if it helped solved your question.
-Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2020 07:33 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2020 07:44 AM
Your Business rule should be on child task table and should be an after BR.
(function onBefore(current, previous) {
var gr = new GlideRecord('sn_customerservice_case');
gr.addQuery('sys_id', current.sys_id);
gr.query();
var parentstate = "StateNumberHere"; // replace with Inprogress state value
if(gr.next()){
var prevasngrp = previous.assignment_group;
var currasngrp = current.assignment_group;
gr.state = parentstate;
gr.work_notes = "[code]<a href='/" + current.sys_class_name + ".do?sys_id=" + current.sys_id + "'>" + current.number + "</a>[/code]" + "has been re-assigned from" + prevasngrp + "to" + currasngrp;
gr.update();
}
})(current, previous);
Please mark my response as correct and helpful if it helped solved your question.
-Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2020 07:59 AM