sushpatil
Tera Contributor

I have also similar requirement to add in a glide_list field value on the change form to populate the affected CIs related list.
so i have created a before (insert-Update) BR with condition Field name Changes

 

 


(function executeRule(current, previous /*null when async*/ ) {


if (!previous.field_name.nil() || !previous.field_name.changes())
removePreviousCI();

if (!current.field_name.nil())
addCurrentCI();
function removePreviousCI() {
var arr = [];
var str = previous.field_name.toString().split(',');
arr.push(str);
var tam = arr.length;
for (var i = 0; i < tam; i++) {

var receda = new GlideRecord('cmdb_ci');
receda.addQuery("sys_id", arr[i]);
receda.query();
while (receda.next()) {
var service = receda.getUniqueValue();
// Delete Affected CI records for this task and previous CI
var rec = new GlideRecord('task_ci');
rec.addQuery('task', current.sys_id);
rec.addQuery('ci_item', service);
rec.query();
while (rec.next())
rec.deleteRecord();
}
}
}

function addCurrentCI() {
//Create Affected CI record for this task and current CI

var arr = [];
var str = current.field_name.toString().split(',');
arr.push(str);
var tam = arr.length;
for (var i = 0; i < tam; i++) {
var reced = new GlideRecord('cmdb_ci');
reced.addQuery("sys_id", arr[i]);
reced.query();
while (reced.next()) {
var service = reced.getUniqueValue();
var rec = new GlideRecord('task_ci');
rec.initialize();
rec.task = current.sys_id;
rec.ci_item = service;
rec.insert();
}

}
}
})(current, previous);

Thank you!