- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 08:38 AM
Hi Experts,
I have a requirement to show an error message when a ITIL user try to schedule a Change request, when exist a specific "Conflict" in Change Request.
I tried to resolve this with an onBefore Business Rule when the confict status is "Conflict" and the user have the ITIL role.
Here the Business Rule:
Condition: g_user.hasRole('itil')
var change = new GlideRecord('change_request');
change.addQuery('sys_id', current.change);
change.query();
var conflict = new GlideRecord('conflict');
conflict.addQuery('change',current.change);
conflict.query();
while (g.next()){
if (conflict.schedule == 'Fiscal Freeze'){
current.setAbortAction(true);
gs.addInfoMessage('No change allowed in fiscal freeze. Please alter the schedule.');
}
}
My Business Rule doesn't work and I don't know what I am missing.
I hope that you can help me.
Regards
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 01:10 PM
The key to business rules is understanding that they are triggered by database operations. If nothing has updated that conflict record, then running the business rule there isn't going to do any good.
Here's a thought... rather than an if, incorporate that in to the query. Your business rule should actually look like this (inside a function)
Name: Check for conflict
When: Before
Insert: true
Update: true
Condition: Conflict status | is | Conflict
(function executeRule(current, previous /*null when async*/) {
var conflict = new GlideRecord('conflict');
conflict.addQuery('change', current.sys_id);
conflict.addQuery('schedule.name', 'Fiscal Freeze 2017');
conflict.query();
if (conflict.next()) {
gs.addErrorMessage('No change allowed in fiscal freeze. Please alter the schedule');
current.setAbortAction(true);
}
})(current, previous);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 09:31 AM
Not clear what the first three lines are for, Crhistopher. What are you expecting to get by querying the change_request table?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 09:38 AM
I was trying from the beginning do the business rule in the [conflict] table
Actually I tried changing the table again to the conflict table and I'm still without success

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 09:44 AM
Do you want to check specifically for that one type (fiscal freeze) or just check if ANY conflicts are in the embedded/related list of conflicts?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 09:54 AM
Just specifically for fiscal freeze type
The idea is IF the ITIL user tries to schedule the Change Request in the range of the "fiscal freeze" period, show a message that the change is not allowed and the itil user has to change the schedule planned start/end date to continue with the change request.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 10:21 AM
Then the script above should be doing what you expect. You just need to change the if statement to look for 'Fiscal Freeze 2017' instead of just 'Fiscal Freeze'.