Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Copy Request Function on RITM

Community Alums
Not applicable

Is there a way to have "copy Request" function for Service catalog so that users doesn't have to type the value every time, when the forms are big

1 REPLY 1

Suraj Sharma
Giga Guru

So What exect you want like form the form of request item you want a button/ui action where you will get to copy request??

UI action script 
function copyRequest() {
var ga = new GlideAjax('CopyRequestScript');
ga.addParam('sys_id', g_form.getUniqueValue());
ga.getXMLAnswer(function(response) {
var newRequestSysId = response.responseXML.documentElement.getAttribute("answer");
if (newRequestSysId) {
g_navigation.openRecord('sc_request', newRequestSysId);
} else {
alert('Failed to copy request.');
}
});
}


script include

var CopyRequestScript = Class.create();
CopyRequestScript.prototype = Object.extendsObject(AbstractAjaxProcessor, {
copyRequest: function() {
var originalRequestSysId = this.getParameter('sys_id');
var originalRequest = new GlideRecord('sc_request');
if (originalRequest.get(originalRequestSysId)) {
var newRequest = new GlideRecord('sc_request');
newRequest.initialize();
newRequest.short_description = originalRequest.short_description + ' (Copy)';
newRequest.requested_for = originalRequest.requested_for;
newRequest.requested_by = originalRequest.requested_by;
var newRequestSysId = newRequest.insert();

if (newRequestSysId) {
this.copyRequestedItems(originalRequestSysId, newRequestSysId);
return newRequestSysId;
}
}
return '';
},

copyRequestedItems: function(originalRequestSysId, newRequestSysId) {
var originalItems = new GlideRecord('sc_req_item');
originalItems.addQuery('request', originalRequestSysId);
originalItems.query();
while (originalItems.next()) {
var newItem = new GlideRecord('sc_req_item');
newItem.initialize();
newItem.short_description = originalItems.short_description;
newItem.request = newRequestSysId;
newItem.cat_item = originalItems.cat_item;
newItem.quantity = originalItems.quantity;
var newItemSysId = newItem.insert();

if (newItemSysId) {
this.copyItemVariables(originalItems.sys_id, newItemSysId);
}
}
},

copyItemVariables: function(originalItemSysId, newItemSysId) {
var originalVars = new GlideRecord('sc_item_option_mtom');
originalVars.addQuery('request_item', originalItemSysId);
originalVars.query();
while (originalVars.next()) {
var newVar = new GlideRecord('sc_item_option_mtom');
newVar.initialize();
newVar.request_item = newItemSysId;
newVar.sc_item_option = originalVars.sc_item_option;
newVar.value = originalVars.value;
newVar.insert();
}
},

type: 'CopyRequestScript'
});