Table Name: Task
Record Producer Script:
current.setAbortAction(true); //Prevent normal function of this record producer.
//Initialize "global constants"
var serviceNowPlatformTeam = "fd6ba5e81bd555"; //You can provide your grp sys_id
var defect = "1";
var incident = "3";
var enhancement = "4";
var defect_table = "rm_defect";
var enhancement_table = "rm_enhancement";
var incident_table = "incident";
var option = producer.how_can_we_help;
(function() {
var portal_redirect = "sp?id=ticket&table=";
var record_sys_id = "";
switch (true) {
case option == defect:
record_sys_id = createRecord(defect_table);
portal_redirect += defect_table;
break;
case option == incident:
record_sys_id = createRecord(incident_table);
portal_redirect += incident_table;
break;
case option == enhancement:
record_sys_id = createRecord(enhancement_table);
portal_redirect += enhancement_table;
break;
default:
break;
}
if (record_sys_id) {
portal_redirect += "&sys_id=" + record_sys_id;
producer.portal_redirect = portal_redirect;
}
})();
/**
* createRecord - creates a record on the supplied table.
* @param tableName
*/
function createRecord(tableName) {
var new_record = new GlideRecord(tableName);
new_record.initialize();
new_record.urgency = producer.what_issue;
new_record.impact = producer.impact_of_this_issue;
new_record.short_description = producer.short_description;
if (option == defect) {
new_record.description = "Details: " + producer.please_provide_details + "\n";
new_record.description += "When: " + producer.issue_happening;
} else {
new_record.description = producer.description;
}
if (option != incident) { //Incidents do not have a "product" field.
new_record.product = serviceNowProduct;
} else { //They do, however, take other parameters
new_record.caller_id = gs.getUserID(); // caller_id (Contact)
new_record.contact_type = "Self-Service"; //contact_type (Channel)
new_record.category = "inquiry"; // category
}
new_record.assignment_group = serviceNowPlatformTeam;
var new_record_sys_id = new_record.insert();
var attachment = new GlideRecord("sys_attachment");
attachment.addQuery("table_sys_id", current.sys_id);
attachment.addQuery('table_name', 'task');
attachment.query();
while (attachment.next()){
attachment.table_sys_id = new_record_sys_id;
attachment.table_name = tableName;
attachment.update();
}
//OR //GlideSysAttachment.copy('task', current.sys_id, 'tableName',new_record_sys_id);
if (!new_record_sys_id) {
gs.error("sc_cat_item_producer - ServiceNow Platform Team Contact Form: Error Creating Record - Provided Values: " + JSON.stringify(producer));
} else {
return new_record_sys_id;
}
}
Create target record in Multiple table via single Record producer
Working Code Edited question August 22, 2023
Sorry, you do not have permission to read comments.