- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-28-2025 07:07 PM - edited 07-28-2025 10:57 PM
Hi,
I have a requirement to autopopulate variable fields when 'Create request' button is clicked on SOW. Once button is clicked, a catalog item will open on a new tab. The expectation is based from incident details, it will populate the variable item on the catalog (e.g. Caller - Requested for, Short Description - Short description of your request....)
Here's the script for my UI Action:
function createRequest() {
var confirmation = confirm("Confirm Action: Convert Incident to Service Request.");
if (!confirmation) {
return;
}
var requested_for = g_form.getValue('caller_id');
var shortDesc = encodeURIComponent(g_form.getValue('short_description'));
var desc = encodeURIComponent(g_form.getValue('description'));
var incidentSysId = g_form.getUniqueValue();
var redirectUrl = '/employeehub?id=sc_cat_item&sys_id=45c51348dbe76d10867d9517f39619e9' +
'&sysparm_caller=' + requested_for +
'&sysparm_shortDesc=' + shortDesc +
'&sysparm_desc=' + desc +
'&sysparm_inc=' + incidentSysId;
g_navigation.open(redirectUrl, "_blank");
}
Here's my catalog client script to populate the variable items:
function getParameterValue(name) {
var queryString = top.location.href.split('?')[1];
if (!queryString) return "";
var params = new URLSearchParams(queryString);
var value = params.get(name);
return value ? decodeURIComponent(value) : "";
}
function onLoad() {
g_form.setValue("requested_for", getParameterValue("sysparm_caller"));
g_form.setValue("short_description_of_your_request", getParameterValue("sysparm_shortDesc"));
g_form.setValue("additional_information", getParameterValue("sysparm_desc"));
g_form.setValue("incident_number", getParameterValue("sysparm_inc"));
}
Scripts are working when clicking the button on native view but not on SOW. Sharing as well the script on declarative action assignment.
function onClick() {
var incidentSysId = g_form.getUniqueValue();
var caller = g_form.getValue('caller_id');
var shortDes = g_form.getValue('short_description');
var desc = g_form.getValue('description');
var params = {};
params.sysparm_parent_table = "incident";
params.sysparm_parent_sys_id = incidentSysId;
params.sysparm_caller = caller;
params.sysparm_shortDesc = shortDes;
params.sysparm_desc = desc;
params.sysparm_inc = incidentSysId;
// Open the catalog item
g_service_catalog.openCatalogItem('sc_cat_item', '45c51348dbe76d10867d9517f39619e9', '-1', params);
}
Does autopopulation of variable item is supported on SOW? Thank you.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-28-2025 11:46 PM
the way how parameters are passed and grabbed is different for native and SOW/Workspace.
check my blog on how to handle this
1) check if it's native or sow and then handle the logic to grab/fetch the values.
Invoke record producer within Configurable workspace, send parameter & fetch the value
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2025 01:10 AM
updated client script
function getParameterValue(name) {
var url = decodeURIComponent(top.location.href); //Get the URL and decode it
if (url.indexOf('extra-params') > -1) { //workspace
var workspaceParams = url.split('extra-params/')[1]; //Split off the url on Extra params
var allParams = workspaceParams.split('/'); //The params are split on slashes '/'
//Search for the parameter requested
for (var i = 0; i < allParams.length; i++) {
if (allParams[i] == name) {
return allParams[i + 1];
}
}
} else { //native
var url = new URL(self.location.href);
var value = url.searchParams.get(name);
return value ? decodeURIComponent(value) : "";
}
}
function onLoad() {
g_form.setValue("requested_for", getParameterValue("sysparm_caller"));
g_form.setValue("short_description_of_your_request", getParameterValue("sysparm_shortDesc"));
g_form.setValue("additional_information", getParameterValue("sysparm_desc"));
g_form.setValue("incident_number", getParameterValue("sysparm_inc"));
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-28-2025 11:46 PM
the way how parameters are passed and grabbed is different for native and SOW/Workspace.
check my blog on how to handle this
1) check if it's native or sow and then handle the logic to grab/fetch the values.
Invoke record producer within Configurable workspace, send parameter & fetch the value
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2025 12:16 AM
Hi @Ankur Bawiskar, I have checked and updated my script but similar result. It is working on default view, variable items are populated but not on SOW. Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2025 12:23 AM
it worked fine for me when I have written the blog
did you try adding alert and see what came in URL for SOW?
that will help you to determine and perform string manipulation.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-01-2025 01:10 AM
Thank you very much @Ankur Bawiskar and @Pranesh072 for your help. You are both amazing!