Major Incident Communication plan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 hours ago
While creating a incident communication plan from major incident, how is the status being set to 'Approved' by default, is it using any OOB business rule? Just want to make the status to 'Open'. Can i know from where it is set to Approved, rather than writing a business rule to set the status to 'Open'.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 hours ago
Hello Rohit,
The status is not set by a Business Rule. It is set directly inside the Script Include: MajorIncidentCommunicationPlan (or in some versions MajorIncidentUtils) when the communication plan record is created programmatically from the Major Incident workbench.
Specifically — what to check in your instance
Navigate to System Definition → Script Includes and search for:
MajorIncidentCommunicationPlan
Inside that Script Include, look for the method that creates the plan record — typically named something like createCommunicationPlan or createPlan. You will find a line similar to:
commPlan.setValue('state', 'approved'); // or the integer value e.g. '2'
// or
commPlan.state = 'approved';
This is the OOB source of the default value being set to Approved at creation time.
How to Confirm It in Your Instance
Rather than guessing, run this in Scripts - Background to find every location that writes to the state field on the communication plan table:
// Find the communication plan table name first
var gr = new GlideRecord('sys_db_object');
gr.addQuery('name', 'CONTAINS', 'comm');
gr.addQuery('name', 'CONTAINS', 'plan');
gr.query();
while (gr.next()) {
gs.info(gr.getValue('name') + ' — ' + gr.getDisplayValue('name'));
}
Once you have the exact table name (likely mel_communication_plan or major_inc_comm_plan), search for what sets the state:
// Check Business Rules on the table
var br = new GlideRecord('sys_script');
br.addQuery('collection', 'YOUR_TABLE_NAME');
br.addQuery('script', 'CONTAINS', 'state');
br.query();
while (br.next()) {
gs.info('BR: ' + br.getValue('name'));
gs.info('Script: ' + br.getValue('script'));
gs.info('---');
}
// Check Script Includes that reference the table
var si = new GlideRecord('sys_script_include');
si.addQuery('script', 'CONTAINS', 'YOUR_TABLE_NAME');
si.addQuery('script', 'CONTAINS', 'state');
si.query();
while (si.next()) {
gs.info('SI: ' + si.getValue('name'));
}
The Right Way to Override It (Without a Business Rule)
Since it originates in a Script Include rather than a Business Rule, your options in order of preference are:
Option 1 — Override the Script Include (Cleanest)
Copy the OOB Script Include into your custom application scope, modify the line that sets state to approved, and change it to open (or whatever the correct choice value is). The scoped version takes precedence over the global OOB one.
// Change this
commPlan.setValue('state', 'approved');
// To this
commPlan.setValue('state', 'open'); // verify exact choice value in your instance
✅ This is upgrade-safe if done in a custom scope and is the most direct fix.
Option 2 — Check for a Table Default Value
Navigate to your communication plan table in sys_dictionary and check if there is a default value set on the state field itself:
System Definition → Dictionary
Table: YOUR_COMM_PLAN_TABLE
Field: state
If the default value is set to approved here, simply changing it to open in the dictionary entry resolves it with zero code — this is the easiest fix if it applies.
Option 3 — Check UI Policy / Data Policy
Navigate to:
System UI → UI Policies (filter by your comm plan table)
System Policy → Data Policies (filter by your comm plan table)
Occasionally a UI Policy sets the initial value on form load. Less likely for a status field but worth ruling out.
Recommended Investigation Order
1. Check Dictionary default value on state field ← easiest, check first
2. Check MajorIncidentCommunicationPlan Script Include ← most likely source
3. Check MajorIncidentUtils Script Include
4. Check Business Rules on the table ← unlikely but rule it out
5. Check UI Policies on the table ← least likely
Finding it in the Script Include is the most probable outcome — once you locate the exact line, Option 1 above gives you a clean override without writing a new Business Rule from scratch.
