UI action condiion isn't working.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi,
Sys_properties: x_telu6_th_lenovo.send_to_lenovo_allowed_groups
Type:string
Value: { "TH Digital Workplace - Asset Management": "c17e6401933842106402bfbd1dba1014",
"TH Digital Workplace - Australia": "897e6401933842106402bfbd1dba1016",
"TH Digital Workplace - Canada": "497e6401933842106402bfbd1dba1017",
"TH Digital Workplace - India": "4d7e6401933842106402bfbd1dba101e",
"TH Digital Workplace - UK": "c97e6401933842106402bfbd1dba1029",
"TH Digital Workplace - US": "417e6401933842106402bfbd1dba102c",
"TH TSM - Canada": "d97e6401933842106402bfbd1dba109c",
"TH TSM - Global": "997e6401933842106402bfbd1dba109d"}
Script Include: THLenovoUtils
API Name: x_telu6_th_lenovo.THLenovoUtils
Client Callable: Yes
Script:
var THLenovoUtils = Class.create();
THLenovoUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
isUserInAllowedGroups: function() {
var property = gs.getProperty('x_telu6_th_lenovo.send_to_lenovo_allowed_groups'); // Use your actual property name
if (!property) return false;
try {
var groupMap = JSON.parse(property);
var groupIds = [];
for (var groupName in groupMap) {
groupIds.push(groupMap[groupName]);
}
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user', gs.getUserID());
gr.addQuery('group', 'IN', groupIds.join(','));
gr.setLimit(1);
gr.query();
return gr.hasNext();
} catch (e) {
gs.error('Error in function :: isUserInAllowedGroups ', "THLenovoUtils");
return false;
}
},
_getTroubleShootingWorkNotes: function(incSysId) {
var grTSNote = new GlideRecord('sys_journal_field');
grTSNote.addQuery('value', 'STARTSWITH', 'Additional details:');
grTSNote.addQuery('value', 'LIKE', '%Troubleshooting Steps:%');
grTSNote.addQuery('element_id', incSysId);
grTSNote.query();
if (grTSNote.next()) {
return grTSNote.value;
} else {
return null;
}
},
sendTroubleShootingCommentAfterCaseCreation: function(current) {
var parts = current.correlation_id.split('-');
var sysId = parts[1];
try {
var inputs = {};
inputs['th_incident'] = current; // GlideRecord of table: incident
inputs['correlation_id'] = sysId; // String
//inputs['comments'] = current.description.toString(); // String
inputs['comments'] = this._getTroubleShootingWorkNotes(current.sys_id);
// Start Asynchronously: Uncomment to run in background. Code snippet will not have access to outputs.
// sn_fd.FlowAPI.getRunner().subflow('x_telu6_th_lenovo.send_incident_updates_to_lenovo').inBackground().withInputs(inputs).run();
// Execute Synchronously: Run in foreground. Code snippet has access to outputs.
var result = sn_fd.FlowAPI.getRunner().subflow('x_telu6_th_lenovo.send_incident_updates_to_lenovo').inForeground().withInputs(inputs).run();
var outputs = result.getOutputs();
// Current subflow has no outputs defined.
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
},
createCaseViaSubflow: function() {
var sys_id = this.getParameter('sysparm_sys_id'); // 1st param
var mandatory_json = this.getParameter('sysparm_mandatory_json'); // 2nd param
var work_notes = this.getParameter('sysparm_work_notes'); // 3rd param
// gs.info('THLenovoUtils Parameters:\n sys_id: ' + sys_id +'\n mandatory_json: ' + mandatory_json + '\n work_notes: ' + work_notes);
var mandatoryData = {};
try {
mandatoryData = JSON.parse(mandatory_json);
} catch (e) {
gs.error('THLenovoUtils: Error parsing mandatory JSON: ' + e.message);
}
var incGR = new GlideRecord('incident');
if (!incGR.get(sys_id)) {
gs.warn('THLenovoUtils: Incident not found for sys_id: ' + sys_id);
return "Incident not found";
}
var fieldLabels = {
street_address: "Street Address",
city: "City",
state_province: "State / Province",
country: "Country",
pincode: "Zip/Postal Code",
phone_number: "Phone Number"
};
// Convert JSON to readable string
var mandatoryDataStr = "";
for (var key in mandatoryData) {
if (mandatoryData.hasOwnProperty(key)) {
var label = fieldLabels[key] || key; // fallback to key if not in map
mandatoryDataStr += label + ": " + mandatoryData[key] + "\n";
}
}
// Add to work notes
incGR.work_notes = "Additional details:\n" + mandatoryDataStr + "\nTroubleshooting Steps:\n" + work_notes;
//incGR.description += "\nAdditional details:\n" + mandatoryDataStr + "\nTroubleshooting Steps:\n" + work_notes;
incGR.update();
// 5️⃣ Prepare inputs for Subflow
var inputs = {
th_incident: incGR, // Full GlideRecord
address_info: mandatoryData, // JSON of mandatory fields
troubleshooting_steps: work_notes // raw work_notes string
};
// 6️⃣ Run the subflow
try {
var result = sn_fd.FlowAPI.getRunner()
.subflow('x_telu6_th_lenovo.create_case_for_lenovo') // Subflow sys_id or name
.inForeground()
.withInputs(inputs)
.run();
// gs.info('THLenovoUtils: Subflow executed. Outputs: ' + JSON.stringify(result.getOutputs()));
return "Subflow triggered successfully for Incident " + sys_id;
} catch (ex) {
gs.error('THLenovoUtils: Error triggering Subflow: ' + ex.getMessage());
return "Error triggering Subflow: " + ex.getMessage();
}
},
getIDPTokenParameters: function() {
var prop = gs.getProperty("x_telu6_th_lenovo.x_th_lenovo.oauth.credentials");
if (!prop) {
gs.error("[TH Lenovo] System property x_telu6_th_lenovo.x_th_lenovo.oauth.credentials not found or empty");
throw "Missing system property x_telu6_th_lenovo.x_th_lenovo.oauth.credentials";
}
try {
var configJson = JSON.parse(prop);
// Detect environment based on instance name
var instanceName = gs.getProperty("instance_name") || "";
var env = 'dev'; // default fallback
if (instanceName === 'telushealthflow') env = 'prod';
else if (instanceName === 'telushealthflowqa') env = 'qa';
else if (instanceName === 'telushealthflowtest') env = 'test';
else if (instanceName === 'telushealthflowdev') env = 'dev';
var result = configJson[env] || {};
//gs.info('[THLenovoUtils] Environment resolved: ' + env + ', Config: ' + JSON.stringify(result));
if (!result.base_url || !result.client_id || !result.client_secret || !result.resource_path) {
throw "[TH Lenovo] Missing required fields (base_url, client_id, client_secret, resource_path) for environment: " + env;
}
return {
environment: env,
base_url: result.base_url,
resource_path: result.resource_path,
full_url: result.base_url + result.resource_path,
grant_type: "client_credentials",
client_id: result.client_id,
client_secret: result.client_secret
};
} catch (e) {
gs.error("[TH Lenovo] Failed to parse or resolve sys_prop x_telu6_th_lenovo.x_th_lenovo.oauth.credentials: " + e);
throw e;
}
},
getIntegrationConfig: function() {
var configStr = gs.getProperty('x_telu6_th_lenovo.integration.environment.config');
if (!configStr) {
gs.error('Missing system property: x_telu6_th_lenovo.integration.environment.config');
return {};
}
var configJson = {};
try {
configJson = JSON.parse(configStr);
} catch (e) {
gs.error('Invalid JSON in system property: x_telu6_th_lenovo.integration.environment.config');
return {};
}
var instanceName = gs.getProperty('instance_name');
// Examples: telushealthflow, telushealthflowqa, telushealthflowtest, telushealthflowdev
var env = 'dev'; // default fallback
if (instanceName === 'telushealthflow') env = 'prod';
else if (instanceName === 'telushealthflowqa') env = 'qa';
else if (instanceName === 'telushealthflowtest') env = 'test';
else if (instanceName === 'telushealthflowdev') env = 'dev';
var result = configJson[env] || {};
// gs.info('[THLenovoUtils] Environment resolved: ' + env + ', Config: ' + JSON.stringify(result));
return result;
},
getSubscriptionConfig: function() {
var configStr = gs.getProperty('x_telu6_th_lenovo.integration.subscriptions.config');
if (!configStr) {
gs.error('Missing system property: x_telu6_th_lenovo.integration.subscriptions.config');
return {};
}
var configJson = {};
try {
configJson = JSON.parse(configStr);
} catch (e) {
gs.error('Invalid JSON in system property: x_telu6_th_lenovo.integration.subscriptions.config');
return {};
}
var instanceName = gs.getProperty('instance_name');
// Examples: telushealthflow, telushealthflowqa, telushealthflowtest, telushealthflowdev
var env = 'dev'; // default fallback
if (instanceName === 'telushealthflow') env = 'prod';
else if (instanceName === 'telushealthflowqa') env = 'qa';
else if (instanceName === 'telushealthflowtest') env = 'test';
else if (instanceName === 'telushealthflowdev') env = 'dev';
var result = configJson[env] || {};
// gs.info('[THLenovoUtils] Environment resolved: ' + env + ', Config: ' + JSON.stringify(result));
return result;
},
//for Get GCP Token-------------------------------------------------------------
getGCPTokenConfig: function() {
var propName = "x_telu6_th_lenovo.gcp.token.config";
var propValue = gs.getProperty(propName);
if (!propValue) {
gs.error("[THLenovoUtils] Missing system property: " + propName);
return {};
}
var config = {};
try {
config = JSON.parse(propValue);
} catch (e) {
gs.error("[THLenovoUtils] Invalid JSON in property " + propName + ": " + e.message);
return {};
}
// Determine environment
var instanceName = gs.getProperty('instance_name') || '';
var env = 'dev';
switch (instanceName) {
case 'telushealthflow':
env = 'prod';
break;
case 'telushealthflowqa':
env = 'qa';
break;
case 'telushealthflowtest':
env = 'test';
break;
case 'telushealthflowdev':
env = 'dev';
break;
default:
gs.warn('[THLenovoUtils] Unknown instance: ' + instanceName + ', defaulting to DEV');
}
var result = config[env] || {};
if (!result.producer_account || !result.consumer_account || !result.iam_url) {
gs.error("[THLenovoUtils] Incomplete GCP token config for environment: " + env);
}
gs.info("[THLenovoUtils] GCP token config resolved for environment: " + env);
return result;
},
getSTSTokenParameters: function() {
var prop = gs.getProperty("x_telu6_th_lenovo.sts_token_config");
if (!prop) {
gs.error("[TH Lenovo] System property x_telu6_th_lenovo.sts_token_config not found or empty");
throw "Missing system property x_telu6_th_lenovo.sts_token_config";
}
try {
var configJson = JSON.parse(prop);
// Detect environment based on instance name
var instanceName = gs.getProperty("instance_name") || "";
var env = 'dev'; // default fallback
if (instanceName === 'telushealthflow') env = 'prod';
else if (instanceName === 'telushealthflowqa') env = 'qa';
else if (instanceName === 'telushealthflowtest') env = 'test';
else if (instanceName === 'telushealthflowdev') env = 'dev';
var result = configJson[env] || {};
// gs.info('[THLenovoUtils] Environment resolved (STS): ' + env + ', Config: ' + JSON.stringify(result));
if (!result.audience || !result.base_url || !result.resource_path) {
throw "[TH Lenovo] Missing required fields (audience, base_url, resource_path) for environment: " + env;
}
return {
environment: env,
audience: result.audience,
base_url: result.base_url,
resource_path: result.resource_path,
full_url: result.base_url + result.resource_path
};
} catch (e) {
gs.error("[TH Lenovo] Failed to parse or resolve sys_prop x_telu6_th_lenovo.sts_token_config: " + e);
throw e;
}
},
getAssetDetailsforAssignedTo: function() {
var userSysID = this.getParameter('sysparm_caller_id');
var serialNumbers = []; // 1. Use an array to collect values
if (!userSysID) {
return "No Caller ID provided";
}
var grComputer = new GlideRecord('cmdb_ci_computer');
grComputer.addQuery('assigned_to', userSysID);
grComputer.addActiveQuery();
grComputer.query();
// 2. Use 'while' instead of 'if' to iterate through all matching records
while (grComputer.next()) {
var sn = grComputer.getValue('serial_number');
if (sn) {
serialNumbers.push(sn); // 3. Add to the list
}
}
// 4. Return the array joined by commas
return serialNumbers.join(', ');
},
type: 'THLenovoUtils'
});
UI Action name :Send to Lenovo
table: incident
condition: !current.isNewRecord() && current.active == true && current.correlation_id.indexOf('Lenovo') != 0 && new x_telu6_th_lenovo.THLenovoUtils().isUserInAllowedGroups()
script: function sendIncidentTolenovo() {
if (g_form.getValue('work_notes') == '') {
var workNotes = g_form.getValue("work_notes");
var affectedUser = g_form.getValue("u_affected_user"); // Get the caller
var gm = new GlideModal("x_telu6_th_lenovo_modal_popup_for_work_notes");
gm.setTitle("Incident Details");
gm.setPreference("work_notes", workNotes);
gm.setPreference("u_affected_user", affectedUser); // Pass the caller to the UI Page
gm.setSize(600, 400);
gm.render();
return false;
}
//!current.isNewRecord() && current.active == true && current.correlation_id.indexOf('Lenovo') != 0 && new x_telu6_th_lenovo.THLenovoUtils().isUserInAllowedGroups()
}
UI Action condition : !current.isNewRecord() && current.active == true && current.correlation_id.toString().indexOf('Lenovo') == -1 && new x_telu6_th_lenovo.THLenovoUtils().isUserInAllowedGroups()
isn't working and making "Send to Lenovo " button visible false for everyone.
How i can make "send to lenovo" ui action button visible for TH Digital Workplace - Asset Management, TH Digital Workplace - Australia, TH Digital Workplace - Canada,
TH Digital Workplace - India, TH Digital Workplace - UK, TH Digital Workplace - US,
TH TSM - Canada, TH TSM - Global?
Thanks in advance.
Regards,
Dusmanta.
