Optimize businessrule for business application for incident
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-29-2024 10:29 PM
Hi All,
we have below businessrule when we create incident , Impacted CIs updated in related list , but there are huge calculation happen backend that is impacting servicenow slowness , kindly suggest only populate the business application within the impacted services
if (!previous.cmdb_ci.nil())
removePreviousCI();
if (!current.cmdb_ci.nil()) {
addCurrentCI();
}
function removePreviousCI() {
// 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', previous.cmdb_ci);
rec.query();
while (rec.next())
rec.deleteRecord();
}
function addCurrentCI() {
//Create Affected CI record for this task and current CI
var rec = new GlideRecord('task_ci');
rec.addQuery('task', current.sys_id);
rec.addQuery('ci_item', current.cmdb_ci);
rec.query();
if (rec.next()) {
rec.u_hst_original_ci = true;
rec.update();
return;
}
rec.initialize();
rec.task = current.sys_id;
rec.ci_item = current.cmdb_ci;
rec.u_hst_original_ci = true;
rec.insert();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-29-2024 11:26 PM
Please validate before replacing your code:
if (!previous.cmdb_ci.nil()) {
removeCI(previous.cmdb_ci);
}
if (!current.cmdb_ci.nil()) {
addOrUpdateCI(current.cmdb_ci);
}
function removeCI(ci) {
// Delete Affected CI records for this task and CI more efficiently
var rec = new GlideRecord('task_ci');
rec.addQuery('task', current.sys_id);
rec.addQuery('ci_item', ci);
rec.deleteMultiple(); // Use deleteMultiple() for efficiency
}
function addOrUpdateCI(ci) {
//Create or update Affected CI record for this task and CI
var rec = new GlideRecord('task_ci');
rec.addQuery('task', current.sys_id);
rec.addQuery('ci_item', ci);
rec.query();
if (!rec.next()) {
rec.initialize();
rec.task = current.sys_id;
rec.ci_item = ci;
}
rec.u_hst_original_ci = true;
rec.upsert(); // Use upsert() if available, otherwise decide to update or insert based on the query result
}
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark