Grc: control issues and indicator results
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2025 10:32 AM
I have a requirement related to Controls, Indicators, and Issues in ServiceNow. Currently, when I open an Indicator and execute it, if the Indicator fails, it automatically creates an Issue.
But my requirement is that the Issue should not be created automatically when the Indicator fails. Instead, the Issue should only be created when I click the “Non-Compliant” button from the Control table.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-15-2025 05:21 AM
This is going to require customization. I would start by looking at the Business rule called "Create issue when result fails". There may be more, but this is the place to start.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-15-2025 06:03 PM
You should deactivate the OOTB business rule ( Create issue when result fails ) that creates the issues, and customize your process, I'm not sure if this Ui Action already exists or you created it, but either way, you should put the logic of the issue creation in an Script Include and as soon as the Ui Action is executed, it will run your process, Like...
var GRCControlIssueHelper = Class.create();
GRCControlIssueHelper.prototype = {
initialize: function () {},
createIssueForControl: function (controlSysId) {
if (!controlSysId) {
gs.error('Control sys_id not provided');
return null;
}
var control = new GlideRecord('sn_compliance_control');
if (!control.get(controlSysId)) {
gs.error('Control not found: ' + controlSysId);
return null;
}
var existingIssue = new GlideRecord('sn_grc_issue');
existingIssue.addQuery('related_control', controlSysId);
existingIssue.query();
if (existingIssue.next()) {
gs.info('An Issue already exists for this control.');
return existingIssue.sys_id;
}
var issue = new GlideRecord('sn_grc_issue');
issue.initialize();
issue.short_description = 'Non-compliance in Control: ' + control.name;
issue.related_control = controlSysId;
issue.state = 'open';
issue.opened_by = gs.getUserID();
issue.insert();
gs.info('Issue created successfully.');
return issue.sys_id;
},
type: 'GRCControlIssueHelper'
};