Name
sn_sow_inc.NonMLRecommendationsHelperSNC
Description
No description available
Script
var NonMLRecommendationsHelperSNC = Class.create();
NonMLRecommendationsHelperSNC.prototype = {
initialize: function() {},
getSimilarOpenPRBsWithFilters: function(incidentGR) {
var similarPRBsSysIds = [];
if (incidentGR) {
var configItem = incidentGR.cmdb_ci;
var service = incidentGR.business_service;
// Execute script only if CI or service has value
if (!gs.nil(configItem) || !gs.nil(service)) {
// Find similar problem records with the same configItem and service
var similarPRBsGR = new GlideRecord('problem');
similarPRBsGR.addQuery('state', 'NOT IN', '106,107'); // Query for Problems that are not in Resolved or Closed State
similarPRBsGR.addQuery('cmdb_ci', configItem);
similarPRBsGR.addQuery('business_service', service);
similarPRBsGR.addQuery('sys_created_on', '>=', gs.daysAgoStart(7)); // Query for problem records created in the last 7 days
similarPRBsGR.orderByDesc('sys_created_on'); // Order the result by the latest created on top
similarPRBsGR.setLimit(5); // Limit the result to top 5 records
similarPRBsGR.query();
while (similarPRBsGR.next()) {
similarPRBsSysIds.push(similarPRBsGR.getUniqueValue());
}
// If fewer than 5 records are found, find additional records with matching configItem or service
if (similarPRBsSysIds.length < 5) {
var additionalSimilarPRBsGR = new GlideRecord('problem');
additionalSimilarPRBsGR.addQuery('state', 'NOT IN', '106,107');
additionalSimilarPRBsGR.addQuery('sys_created_on', '>=', gs.daysAgoStart(7));
additionalSimilarPRBsGR.addQuery('sys_id', 'NOT IN', similarPRBsSysIds.join(','));
if (!gs.nil(configItem) && !gs.nil(service)) {
additionalSimilarPRBsGR.addQuery('cmdb_ci', configItem).addOrCondition('business_service', service);
} else if (!gs.nil(configItem)) {
additionalSimilarPRBsGR.addQuery('cmdb_ci', configItem)
} else if (!gs.nil(service)) {
additionalSimilarPRBsGR.addQuery('business_service', service)
}
additionalSimilarPRBsGR.orderByDesc('sys_created_on');
additionalSimilarPRBsGR.setLimit(5 - similarPRBsSysIds.length);
additionalSimilarPRBsGR.query();
while (additionalSimilarPRBsGR.next()) {
similarPRBsSysIds.push(additionalSimilarPRBsGR.getUniqueValue());
}
}
return similarPRBsSysIds;
}
}
return null;
},
getSimilarResolvedIncidentsWithFilters: function(incidentGR) {
var similarIncidentsSysIds = [];
if (incidentGR) {
var configItem = incidentGR.cmdb_ci;
var service = incidentGR.business_service;
// Execute script only if CI or service has value
if (!gs.nil(configItem) || !gs.nil(service)) {
// Find similar incident records with the same configItem and service
var similarIncidentsGR = new GlideRecord('incident');
similarIncidentsGR.addQuery('cmdb_ci', configItem);
similarIncidentsGR.addQuery('business_service', service);
similarIncidentsGR.addQuery('sys_created_on', '>=', gs.monthsAgo(6)); // Query for past 6 months
similarIncidentsGR.addQuery('state', 'IN', '6,7'); // Query for resolved or closed incidents
similarIncidentsGR.addNullQuery('parent_incident'); // Query for incidents that are not a child incident
similarIncidentsGR.orderByDesc('sys_created_on'); // Order by latest on top
similarIncidentsGR.setLimit(5); // Return top 5 results
similarIncidentsGR.query();
while (similarIncidentsGR.next()) {
similarIncidentsSysIds.push(similarIncidentsGR.getUniqueValue());
}
// If fewer than 5 records are found, find additional records with matching configItem or service
if (similarIncidentsSysIds.length < 5) {
var additionalSimilarIncidentsGR = new GlideRecord('incident');
additionalSimilarIncidentsGR.addQuery('sys_id', 'NOT IN', similarIncidentsSysIds.join(','));
additionalSimilarIncidentsGR.addQuery('sys_created_on', '>=', gs.monthsAgo(6));
additionalSimilarIncidentsGR.addQuery('state', 'IN', '6,7');
additionalSimilarIncidentsGR.addNullQuery('parent_incident');
if (!gs.nil(configItem) && !gs.nil(service)) {
additionalSimilarIncidentsGR.addQuery('cmdb_ci', configItem).addOrCondition('business_service', service);
} else if (!gs.nil(configItem)) {
additionalSimilarIncidentsGR.addQuery('cmdb_ci', configItem)
} else if (!gs.nil(service)) {
additionalSimilarIncidentsGR.addQuery('business_service', service)
}
additionalSimilarIncidentsGR.orderByDesc('sys_created_on');
additionalSimilarIncidentsGR.setLimit(5 - similarIncidentsSysIds.length);
additionalSimilarIncidentsGR.query();
while (additionalSimilarIncidentsGR.next()) {
similarIncidentsSysIds.push(additionalSimilarIncidentsGR.getUniqueValue());
}
}
return similarIncidentsSysIds;
}
}
return null;
},
getSimilarOpenIncidentsWithFilters: function(incidentGR) {
var similarIncidentsSysIds = [];
if (incidentGR) {
var configItem = incidentGR.cmdb_ci;
var service = incidentGR.business_service;
// Execute script only if CI or service has value
if (!gs.nil(configItem) || !gs.nil(service)) {
// Find similar incidents with the same configItem and service
var similarIncidentsGR = new GlideRecord('incident');
similarIncidentsGR.addQuery('state', 'IN', '1,2,3'); // Query for New, In Progress, and On Hold incidents
similarIncidentsGR.addQuery('cmdb_ci', configItem);
similarIncidentsGR.addQuery('business_service', service);
similarIncidentsGR.addQuery('sys_created_on', '>=', gs.monthsAgo(6)); // Query for past 6 months
similarIncidentsGR.addNullQuery('parent_incident'); // Query for incidents that are not a child incident
similarIncidentsGR.addQuery('sys_id', '!=', incidentGR.getUniqueValue()); // Exclude the current incident
similarIncidentsGR.orderByDesc('sys_created_on'); // Order by latest on top
similarIncidentsGR.setLimit(5); // Return top 5 results
similarIncidentsGR.query();
while (similarIncidentsGR.next()) {
similarIncidentsSysIds.push(similarIncidentsGR.getUniqueValue());
}
// If fewer than 5 records are found, find additional records with matching configItem or service
if (similarIncidentsSysIds.length < 5) {
var additionalSimilarIncidentsGR = new GlideRecord('incident');
additionalSimilarIncidentsGR.addQuery('state', 'IN', '1,2,3');
additionalSimilarIncidentsGR.addQuery('sys_created_on', '>=', gs.monthsAgo(6));
additionalSimilarIncidentsGR.addNullQuery('parent_incident');
additionalSimilarIncidentsGR.addQuery('sys_id', 'NOT IN', similarIncidentsSysIds.join(',') + ',' + incidentGR.getUniqueValue());
if (!gs.nil(configItem) && !gs.nil(service)) {
additionalSimilarIncidentsGR.addQuery('cmdb_ci', configItem).addOrCondition('business_service', service);
} else if (!gs.nil(configItem)) {
additionalSimilarIncidentsGR.addQuery('cmdb_ci', configItem)
} else if (!gs.nil(service)) {
additionalSimilarIncidentsGR.addQuery('business_service', service)
}
additionalSimilarIncidentsGR.orderByDesc('sys_created_on');
additionalSimilarIncidentsGR.setLimit(5 - similarIncidentsSysIds.length);
additionalSimilarIncidentsGR.query();
while (additionalSimilarIncidentsGR.next()) {
similarIncidentsSysIds.push(additionalSimilarIncidentsGR.getUniqueValue());
}
}
return similarIncidentsSysIds;
}
}
return null;
},
type: 'NonMLRecommendationsHelperSNC'
};
Sys ID
8ef618a0ff43211001b9ffffffffff71