Set an Incident field as true or false via business rule
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-19-2023 10:14 AM - edited 12-19-2023 10:49 AM
Hello,
I have a field named 'Non Business' on the Incident table, and I am trying to set it to true when an Incident is created between 5 PM to 8 AM using a business rule. However, it is not working as expected.
(function executeRule(current, previous /*null when async*/) {
gs.info("Script is executing. Current time: " + new GlideDateTime());
// Check if incident creation time is after 5 PM and before 8 AM
var createdTime = new GlideDateTime(current.sys_created_on);
var fivePM = new GlideDateTime();
fivePM.setDisplayValue('17:00:00');
var eightAM = new GlideDateTime();
eightAM.setDisplayValue('08:00:00');
// Log the values for debugging
gs.info("Incident creation time: " + createdTime.getDisplayValueInternal());
gs.info("5 PM time: " + fivePM.getDisplayValueInternal());
gs.info("8 AM time: " + eightAM.getDisplayValueInternal());
if (createdTime.after(fivePM) || createdTime.before(eightAM)) {
// Set the Non Business field to true
current.u_non_business = true;
gs.info("Incident created during non-business hours. Setting u_non_business to true.");
} else {
// Set the Non Business field to false
current.u_non_business = false;
gs.info("Incident created during business hours. Setting u_non_business to false.");
}
gs.info("Script execution completed.");
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-19-2023 10:30 AM
Hi @Reddy ,
As per ur ask I think the BR should only run after insert n u can try below code if it works or not.(untested)
(function executeRule(current, previous /*null when async*/) {
// Get the current date and time
var currentDate = new GlideDateTime();
// Set the time boundaries for Non-Business hours (5 PM to 8 AM)
var nonBusinessStart = new GlideDateTime();
nonBusinessStart.setDisplayValue('17:00:00'); // 5 PM
var nonBusinessEnd = new GlideDateTime();
nonBusinessEnd.setDisplayValue('08:00:00'); // 8 AM next day
// Check if the current date and time is within Non-Business hours
if (currentDate.compareTo(nonBusinessStart) >= 0 || currentDate.compareTo(nonBusinessEnd) < 0) {
// Set 'Non Business' field to true
current.non_business = true;
}
})(current, previous);
Thanks,
Danish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-19-2023 10:45 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-19-2023 10:30 AM
Can you make it clear if you want this BR to work from 5pm-8am of from 8am-5pm?
Also in your scenerio you dont need the BR to run on update. It should work fine on Insert only.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-19-2023 10:48 AM
BR should only work from 5:00 PM to 8:00 AM and it should only work on insert.