Could you help on API to create a change request including ctask and outage record
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2025 09:39 AM
Could you help me with a service now API to create a change request including change tasks and outage record using scripted rest api? Below script is only creating change request, not ctask and outage.
(function process(request, response) {
try {
var reqBody = request.body.data;
gs.info('Received Request Body: ' + JSON.stringify(reqBody)); // Debugging log
// === 1️⃣ Create Change Request ===
var changeGr = new GlideRecord('change_request');
changeGr.initialize();
changeGr.short_description = reqBody.short_description || 'Default Change Request';
changeGr.description = reqBody.description || 'Generated via API';
changeGr.type = reqBody.type || 'normal';
changeGr.risk = reqBody.risk || '3';
changeGr.assignment_group = reqBody.assignment_group;
var changeSysId = changeGr.insert();
if (!changeSysId) {
response.setStatus(500);
response.setBody({ error: 'Failed to create change request' });
return;
}
gs.info('Change request created with sys_id: ' + changeSysId);
// === 2️⃣ Create Change Tasks ===
var taskSysIds = [];
if (Array.isArray(reqBody.tasks) && reqBody.tasks.length > 0) {
gs.info('Received tasks array: ' + JSON.stringify(reqBody.tasks));
reqBody.tasks.forEach(function(task) {
var taskGr = new GlideRecord('change_task');
taskGr.initialize();
taskGr.parent = changeSysId; // FIXED: Correct relationship
taskGr.short_description = task.short_description || 'API Task';
taskGr.description = task.description || 'Task Description';
taskGr.assigned_to = task.assigned_to || '';
taskGr.assignment_group = task.assignment_group || '';
//taskGr.priority = task.priority || '3';
taskGr.state = task.state || '1';
var taskSysId = taskGr.insert();
gs.info('Task insertion attempt, sys_id: ' + taskSysId);
if (taskSysId) taskSysIds.push(taskSysId);
});
}
// === 3️⃣ Create Outage Record ===
var outageSysId = null;
if (reqBody.outage && reqBody.outage.ci) {
gs.info('Received outage data: ' + JSON.stringify(reqBody.outage));
var outageGr = new GlideRecord('cmdb_ci_outage');
outageGr.initialize();
// outageGr.ci = reqBody.outage.ci;
// outageGr.outage_start = reqBody.outage.start || gs.nowDateTime();
// outageGr.outage_end = reqBody.outage.end || '';
// outageGr.impact = reqBody.outage.impact || '3';
// outageGr.description = reqBody.outage.description || 'Outage due to change';
outageGr.change_request = changeSysId;
outageSysId = outageGr.insert();
gs.info('Outage insertion attempt, sys_id: ' + outageSysId);
}
// === ✅ Return All sys_ids ===
response.setBody({
status: 'success',
change_request_sys_id: changeSysId,
task_sys_ids: taskSysIds,
outage_sys_id: outageSysId
});
} catch (ex) {
response.setStatus(500);
response.setBody({ error: ex.message });
}
})(request, response);
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-01-2025 09:30 AM
Can you please share the payloads and logs