Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

Hide UI Actions for Business stakeholder role

Mujahid Sharief
Tera Contributor

How to hide UI Actions available on Incident & Request form for Business stakeholder role?
we have enabled the business stake holder role in snow and added a user to it, but few custom ui
actions are available for this role and respective user. Kindly please advise best way to hide the same
via script or any other best practice.

detailed information can help.!

1 ACCEPTED SOLUTION

that's strange. Is it in classic view or in workspace?

Could you post screenshot of one ui actions where condition is not working?

View solution in original post

11 REPLIES 11

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    var ritmNumber = request.queryParams.ritm_number;
    var ritmSysId = request.queryParams.ritm_sys_id;

    if (!ritmNumber && !ritmSysId) {
        response.setStatus(400);
        response.setBody({ error: "Provide ritm_number or ritm_sys_id" });
        return;
    }

    var ritmGR = new GlideRecord('sc_req_item');

    // Prefer sys_id if both are provided
    if (ritmSysId) {
        ritmGR.addQuery('sys_id', ritmSysId);
    } else {
        ritmGR.addQuery('number', ritmNumber);
    }
    ritmGR.query();

    if (!ritmGR.next()) {
        response.setStatus(404);
        response.setBody({ error: "RITM not found" });
        return;
    }

    var result = [];
    var grVar = new GlideRecord('sc_item_option_mtom');
    grVar.addQuery('request_item', ritmGR.sys_id);
    grVar.query();

    while (grVar.next()) {
        var option = grVar.sc_item_option.getRefRecord();
        var question = option.item_option_new.getRefRecord();

        var rawValue = option.getValue('value') || "";
        var refTable = question.getValue('reference');
        var listTable = question.getValue('list_table');
        var displayValue = "";

        try {
            // Handle list collector
            if (listTable && rawValue) {
                var ids = rawValue.split(',');
                var values = [];
                for (var i = 0; i < ids.length; i++) {
                    var refGR = new GlideRecord(listTable);
                    if (refGR.get(ids[i])) {
                        values.push(refGR.getDisplayValue());
                    }
                }
                displayValue = values.join(', ');
            }
            // Handle reference
            else if (refTable && rawValue) {
                var ids2 = rawValue.split(',');
                var values2 = [];
                for (var j = 0; j < ids2.length; j++) {
                    var refGR2 = new GlideRecord(refTable);
                    if (refGR2.get(ids2[j])) {
                        values2.push(refGR2.getDisplayValue());
                    }
                }
                displayValue = values2.join(', ');
            }
            // Handle choice / text
            else {
                displayValue = option.getDisplayValue('value') || rawValue;
            }
        } catch (e) {
            gs.log("Error resolving variable value: " + e.message);
            displayValue = rawValue; // fallback
        }

        result.push({
            name: question.getValue('name'),
            label: question.getValue('question_text'),
            value: displayValue
        });
    }

    response.setStatus(200);
    response.setBody({
        ritm: ritmGR.getValue('number'),
        variables: result
    });

})(request, response);

 
 

Mujahid Sharief
Tera Contributor

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

var ritmNumber = request.queryParams.ritm_number;
var ritmSysId = request.queryParams.ritm_sys_id;

if (!ritmNumber && !ritmSysId) {
response.setStatus(400);
response.setBody({
error: "Provide ritm_number or ritm_sys_id"
});
return;
}

var ritmGR = new GlideRecord('sc_req_item');
if (ritmSysId) {
ritmGR.addQuery('sys_id', ritmSysId);
} else {
ritmGR.addQuery('number', ritmNumber);
}
ritmGR.query();

if (!ritmGR.next()) {
response.setStatus(404);
response.setBody({
error: "RITM not found"
});
return;
}

var result = [];

// =========================
// 1. NORMAL VARIABLES
// =========================
var grVar = new GlideRecord('sc_item_option_mtom');
grVar.addQuery('request_item', ritmGR.sys_id);
grVar.orderBy('sc_item_option.item_option_new.order');
grVar.query();

while (grVar.next()) {

var question = grVar.sc_item_option.item_option_new.getRefRecord();
var questionName = question.getValue('name');
var label = question.getValue('question_text');

var displayValue = "";

try {
displayValue = ritmGR.variables[questionName].getDisplayValue();

if (!displayValue) {
displayValue = grVar.sc_item_option.value.toString();
}

} catch (e) {
displayValue = grVar.sc_item_option.value.toString();
}

result.push({
type: "single",
name: questionName,
label: label,
value: displayValue
});
}

// =========================
// 2. MRVS VARIABLES
// =========================
var variablesObj = ritmGR.variables;

for (var varName in variablesObj) {
try {
var varElement = variablesObj[varName];

// Detect MRVS (multi-row variables come as object/array-like)
if (varElement && typeof varElement === "object" && varElement.getRows) {

var rows = varElement.getRows();
var mrvsData = [];

for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var rowObj = {};

var cells = row.getCells();

for (var j = 0; j < cells.length; j++) {
var cell = cells[j];

var colName = cell.getName();
var colValue = cell.getCellDisplayValue();

rowObj[colName] = colValue;
}

mrvsData.push(rowObj);
}

result.push({
type: "mrvs",
name: varName,
value: mrvsData
});
}

} catch (e) {
// ignore non-MRVS safely
}
}

response.setStatus(200);
response.setBody({
ritm: ritmGR.getValue('number'),
variables: result
});

})(request, response);