Business Rules
Create Related Records
Automatically create related records when certain conditions are met (e.g., create change request when major incident is detected).
(function executeRule(current, previous /*null when async*/) {
// Configuration: Define when to create related record
var shouldCreateChange = false;
// Example: Create change for high-priority infrastructure incidents
if (current.priority.toString() === '1' && // Critical priority
current.category.toString() === 'hardware' &&
current.cmdb_ci.sys_class_name.toString().indexOf('server') !== -1) {
shouldCreateChange = true;
}
if (!shouldCreateChange) {
return;
}
// Create a new change request
var grChange = new GlideRecord('change_request');
grChange.initialize();
// Copy relevant fields from incident
grChange.short_description = 'Change required: ' + current.short_description;
grChange.description = 'This change was automatically created from incident ' +
current.number + '.\n\n' +
'Incident description: ' + current.description;
// Set change-specific fields
grChange.type = 'emergency'; // Emergency change
grChange.priority = current.priority;
grChange.assignment_group = current.assignment_group;
grChange.assigned_to = current.assigned_to;
grChange.cmdb_ci = current.cmdb_ci;
// Set requested by and opened by
grChange.requested_by = current.caller_id;
grChange.opened_by = gs.getUserID();
// Calculate implementation date (e.g., 24 hours from now)
var gdt = new GlideDateTime();
gdt.addHours(24);
grChange.start_date = gdt;
gdt.addHours(4); // 4-hour implementation window
grChange.end_date = gdt;
// Insert the change request
var changeId = grChange.insert();
if (changeId) {
gs.info('Created emergency change ' + grChange.number + ' from incident ' + current.number);
// Link the incident to the change
current.problem_id = changeId; // Or use a custom field for change reference
current.work_notes = 'Emergency change request created: ' + grChange.number;
current.update();
// Optional: Send notification
gs.eventQueue('change.emergency.created', grChange, current.sys_id, current.assignment_group);
}
})(current, previous);How to use it
1. Create an after Business Rule on your parent table 2. Check "Insert" and/or "Update" checkboxes as needed 3. Customize the conditions for creating related records 4. Update field mappings for your data model 5. Test thoroughly to avoid creating unwanted records
Adapt the table names, fields, and conditions to your instance. Test the behavior in a development environment before using it in production.