- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2023 08:29 AM
Hi All,
->I need to add incident to the Ci's Incident related list, if the ci is added in the outages related list. If I add ci to outages, in that ci's related list I want to add the Incident number.
-> In the below images "*BOW-IBM" is added in Outages related list, I want to add the incident "INC0009009" to "*BOW-IBM" ci's incident related list.
Can anyone please suggest. how to achieve this?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 05:01 AM
I was thinking something more like this for the after Insert Business Rule on the cmdb_ci_outage table:
(function executeRule(current, previous /*null when async*/ ) {
var affci = new GlideRecord ('task_ci');
affci.addQuery('ci_item', current.cmdb_ci);
affci.addQuery('task', current.task_number);
affci.query();
if (!affci.hasnext()) {
affci.initialize();
affci.ci_item = current.cmdb_ci;
affci.task = current.task_number;
affci.insert();
}
})(current, previous);
So on an incident, when an Outage record is created, you will now see a new record on the Affected CIs Related List on that same Incident with the CI used in the Outage - provided it wasn't already listed as an Affected CI, and the Configuration item field on the Incident remains unaffected.
Next create a Relationship. Name it whatever you want to appear on the tab. Applies to table = cmdb_ci. Queries from table = incident. Query with =
(function refineQuery(current, parent) {
var incArr = [];
var affci = new GlideRecord('task_ci');
affci.addQuery('ci_item', parent.sys_id);
affci.query();
while (affci.next()) {
incArr.push(affci.task.toString());
}
current.addQuery('sys_id', 'IN', incArr.join(','));
})(current, parent);
Once you add this new Related List to the CI form(s) you will see all of the incidents that have an Outage, and hence an Affected CI - or were otherwise added to the Affected CI Related List.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2023 12:00 PM
You could start with an after Insert Business Rule on the cmdb_ci_outage table, that has a script to update the incident record for the current.task_number. Where this approach falls apart is how it needs to update the incident record. The OOB Incidents Related List on the cmdb_ci_* table shows incidents that have this CI in the Configuration item field. So in your scenario when BOW-IBM is added in the Outages Related List, the new BR would need to update the Configuration item field on the related Incident to BOW-IBM - where it probably already had BETH-IBM. I don't think you want to do that, so it would be better if the Business Rule script adds a record to the Affected CIs related list, on which there is already one record for the CI that's populated in the Configuration item field. Then you would need to create a new (Relationship) Related List that Queries from the task_ci table to show records that match the ci_item field on this table - so you would see all of the incidents where one of the affected CIs is this configuration item record. Give that a shot and let me know if you get stuck on the BR script or the relationship.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 03:44 AM
Hi Brad,
Thanks for your reply. I have started with creating after insert/update BR on incident table. I have written below script. I am not much familiar with the scripting part. can you please help me?
After Insert/Update BR:
(function executeRule(current, previous /*null when async*/ ) {
var outageArr = [];
var outGR = new GlideRecord('cmdb_ci_outage');
outGR.addQuery('task_number', current.sys_id);
outGR.query();
while (outGR.next()) {
outageArr.push(outGR.cmdb_ci.sys_id.toString());
}
gs.log("out array" + outageArr);
for (var i = 0; i < outageArr.length; i++) {
var rec = new GlideRecord('cmdb_ci_service');
rec.addQuery('sys_id', outageArr[i]);
//rec.addQuery('ci_item', current.cmdb_ci);
rec.query();
if (rec.next()) {
gs.log("cmdb service" + rec.sys_id);
var ci_service = new GlideRecord('incident.cmdb_ci');
ci_service.initialize();
ci_service.task_number = current.sys_id;
ci_service.insert();
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 05:01 AM
I was thinking something more like this for the after Insert Business Rule on the cmdb_ci_outage table:
(function executeRule(current, previous /*null when async*/ ) {
var affci = new GlideRecord ('task_ci');
affci.addQuery('ci_item', current.cmdb_ci);
affci.addQuery('task', current.task_number);
affci.query();
if (!affci.hasnext()) {
affci.initialize();
affci.ci_item = current.cmdb_ci;
affci.task = current.task_number;
affci.insert();
}
})(current, previous);
So on an incident, when an Outage record is created, you will now see a new record on the Affected CIs Related List on that same Incident with the CI used in the Outage - provided it wasn't already listed as an Affected CI, and the Configuration item field on the Incident remains unaffected.
Next create a Relationship. Name it whatever you want to appear on the tab. Applies to table = cmdb_ci. Queries from table = incident. Query with =
(function refineQuery(current, parent) {
var incArr = [];
var affci = new GlideRecord('task_ci');
affci.addQuery('ci_item', parent.sys_id);
affci.query();
while (affci.next()) {
incArr.push(affci.task.toString());
}
current.addQuery('sys_id', 'IN', incArr.join(','));
})(current, parent);
Once you add this new Related List to the CI form(s) you will see all of the incidents that have an Outage, and hence an Affected CI - or were otherwise added to the Affected CI Related List.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 06:58 AM
Hi Brad,
-> I have tried the above code, it is working as you said. We need to add the new related list to all CI forms right?
-> Can we apply this logic in OOTB related list "Incidents", without creating new related list. Is it possible?
Thanks.