- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-04-2021 07:13 AM
Hello All,
On incident form i have created a new field called "Number of incidents caused by change" which is an integer.
This filed should auto populate with the count of incident caused by change
1. New Field which gets the count of incidents
2.incidents caused by change related list
3. Edit is the place where we can add incidents or remove incidents
The issue is created a business rule with the below code, it works only when new incidents are added, but when we remove the incidents the count is not getting updated.
BR code: for testing purpose i was using the info message to show on the form:
NOTE: Both the business rules work and update when new incidents are added but when removed from edit count not getting updated.
Script1 : written on the change form
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
var TaskInc = new GlideRecord('incident');
TaskInc.addQuery('caused_by', current.sys_id);
//TaskInc.addEncodedQuery('caused_by!=NULL');
TaskInc.query();
var count = TaskInc.getRowCount();
gs.addInfoMessage("Total incidents caused by change before if condition --" + TaskInc.getRowCount());
//alert("change happened");
if (TaskInc.next()) {
if (count > 0) {
gs.addInfoMessage("Total incidents is greater than zero --" + TaskInc.getRowCount());
// current.u_number_of_incidents_caused_by_change = TaskInc.getRowCount();
// current.update();
} else {
gs.addInfoMessage("total incident count is Zero");
// current.u_number_of_incidents_caused_by_change = 0;
// current.update();
//gs.addInfoMessage(test)
}
}
})(current, previous);
Script 2: written on the incident form
(function executeRule(current, previous /*null when async*/ ) {
var task = new GlideRecord('incident');
task.addQuery('caused_by', current.caused_by);
task.query();
//gs.addInfoMessage("Incident count was --" + task.getRowCount());
var Chg = new GlideRecord('change_request');
Chg.addQuery('sys_id', current.caused_by);
Chg.query();
if (Chg.next()) {
Chg.u_number_of_incidents_caused_by_change = task.getRowCount();
Chg.update();
}
})(current, previous);
Solved! Go to Solution.
- Labels:
-
Change Management
-
Incident Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2021 04:51 PM
Hello Sree,
You can achieve this by an after business rule applied to incident table.
Script :
(function executeRule(current, previous /*null when async*/ ) {
var sys_id_ch = '';
var op = '';
if(gs.nil(current.caused_by)&&!gs.nil(previous.caused_by)){
sys_id_ch =previous.caused_by;
op = 'descrease';
}else if(!gs.nil(current.caused_by)&&gs.nil(previous.caused_by)){
sys_id_ch = current.caused_by;
op = 'increase';
}
var change_sys_id = current.caused_by;
var change_rec = new GlideRecord('change_request');
change_rec.addQuery('sys_id', sys_id_ch);
change_rec.query();
if (change_rec.next()) {
if(op == 'increase'){
change_rec.u_number_incident = change_rec.u_number_incident +1;
change_rec.update();
}
else if(op == 'descrease'){
change_rec.u_number_incident = change_rec.u_number_incident -1;
change_rec.update();
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2021 02:20 PM
Hello,
I have already created a Fix script for the old tickets to get updated and it worked out.
Is there a way to update the records count without opening the change form. with the client script being used on load will udpate the count. if you dont open the change form the count will not get udpated. I cannot run all the time background script to update the count.
Thanks
Sree
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2021 04:51 PM
Hello Sree,
You can achieve this by an after business rule applied to incident table.
Script :
(function executeRule(current, previous /*null when async*/ ) {
var sys_id_ch = '';
var op = '';
if(gs.nil(current.caused_by)&&!gs.nil(previous.caused_by)){
sys_id_ch =previous.caused_by;
op = 'descrease';
}else if(!gs.nil(current.caused_by)&&gs.nil(previous.caused_by)){
sys_id_ch = current.caused_by;
op = 'increase';
}
var change_sys_id = current.caused_by;
var change_rec = new GlideRecord('change_request');
change_rec.addQuery('sys_id', sys_id_ch);
change_rec.query();
if (change_rec.next()) {
if(op == 'increase'){
change_rec.u_number_incident = change_rec.u_number_incident +1;
change_rec.update();
}
else if(op == 'descrease'){
change_rec.u_number_incident = change_rec.u_number_incident -1;
change_rec.update();
}
}
})(current, previous);