approval based on reference field

Anubhav Srivas1
Tera Expert

Hello Guys,

based on the Divison selected , i.e. a (reference field) from the department table, I want to trigger approvals based on the below selections. I'm not able to achieve it and require your help in creating a workflow that checks the current value of the division ( which is fetching from department table) and trigger approvals accordingly.

 

the conditions are as follows: 

DivisionLEVEL 1 APPROVERLEVEL 2 APPROVER
Australia CommercialLine Manager( of the requester)Approval Group Name: Australia Commercial BCD
Australia RetailLine Manager( of the requester)Approval Group Name: Australia Retail BCD
Corporate Centre and ServicesLine Manager( of the requester)Approval Group Name: Corporate Centre and Services BCD
Group ServicesLine Manager( of the requester)Approval Group Name: Group Services BCD
Group TechnologyLine Manager( of the requester)Approval Group Name: Group Tech BCD
InstitutionalLine Manager( of the requester)Approval Group Name: Institutional BCD
New ZealandLine Manager( of the requester)Approval Group Name: New Zealand BCD
PacificLine Manager( of the requester)Approval Group Name: Pacific BCD
Technology COO DomainsLine Manager( of the requester)Approval Group Name: Technology COO Domains BCD

 

 

I'm using the below script for this but it's not working for me. can someone please help.

 

 

var division = current.division.getDisplayValue(); // Division value fetched from the Department table
var answer = [];
var approvalGroup = '';

// Set the appropriate approval group based on the division
switch (division) {
case 'Australia Commercial':
approvalGroup = 'Australia Commercial BCD';
break;
case 'Australia Retail':
approvalGroup = 'Australia Retail BCD';
break;
case 'Corporate Centre and Services':
approvalGroup = 'Corporate Centre and Services BCD';
break;
case 'Group Services':
approvalGroup = 'Group Services BCD';
break;
case 'Group Technology':
approvalGroup = 'Group Tech BCD';
break;
case 'Institutional':
approvalGroup = 'Institutional BCD';
break;
case 'New Zealand':
approvalGroup = 'New Zealand BCD';
break;
case 'Pacific':
approvalGroup = 'Pacific BCD';
break;
case 'Technology COO Domains':
approvalGroup = 'Technology COO Domains BCD';
break;
default:
// No matching division, handle the case if needed
break;
}

var groupSysID = '';

var groupGR = new GlideRecord('sys_user_group');
groupGR.addQuery('name', approvalGroup);
groupGR.query();

if (groupGR.next()) {
groupSysID = groupGR.getValue('sys_id');
}

answer.push(groupSysID);

1 ACCEPTED SOLUTION

Rahul Talreja
Mega Sage
Mega Sage

Hi @Anubhav Srivas1 ,
Try using ,

 

 

var division = current.variables.division.getDisplayValue(); // Division value fetched from the Department table
var answer = [];
var approvalGroup = '';

// Set the appropriate approval group based on the division
switch (division) {
case 'Australia Commercial':
approvalGroup = 'Australia Commercial BCD';
break;
case 'Australia Retail':
approvalGroup = 'Australia Retail BCD';
break;
case 'Corporate Centre and Services':
approvalGroup = 'Corporate Centre and Services BCD';
break;
case 'Group Services':
approvalGroup = 'Group Services BCD';
break;
case 'Group Technology':
approvalGroup = 'Group Tech BCD';
break;
case 'Institutional':
approvalGroup = 'Institutional BCD';
break;
case 'New Zealand':
approvalGroup = 'New Zealand BCD';
break;
case 'Pacific':
approvalGroup = 'Pacific BCD';
break;
case 'Technology COO Domains':
approvalGroup = 'Technology COO Domains BCD';
break;
default:
// No matching division, handle the case if needed
break;
}

var groupSysID = '';
if(approvalGroup!=''){
var groupGR = new GlideRecord('sys_user_group');
groupGR.addQuery('name', approvalGroup);
groupGR.query();

if (groupGR.next()) {
groupSysID = groupGR.getValue('sys_id');
}
}

answer.push(groupSysID);

 

 

Assuming your field name is 'division'!

Please mark my response correct/helpful as applicable!
Thanks and Regards,
Rahul

View solution in original post

2 REPLIES 2

Rahul Talreja
Mega Sage
Mega Sage

Hi @Anubhav Srivas1 ,
Try using ,

 

 

var division = current.variables.division.getDisplayValue(); // Division value fetched from the Department table
var answer = [];
var approvalGroup = '';

// Set the appropriate approval group based on the division
switch (division) {
case 'Australia Commercial':
approvalGroup = 'Australia Commercial BCD';
break;
case 'Australia Retail':
approvalGroup = 'Australia Retail BCD';
break;
case 'Corporate Centre and Services':
approvalGroup = 'Corporate Centre and Services BCD';
break;
case 'Group Services':
approvalGroup = 'Group Services BCD';
break;
case 'Group Technology':
approvalGroup = 'Group Tech BCD';
break;
case 'Institutional':
approvalGroup = 'Institutional BCD';
break;
case 'New Zealand':
approvalGroup = 'New Zealand BCD';
break;
case 'Pacific':
approvalGroup = 'Pacific BCD';
break;
case 'Technology COO Domains':
approvalGroup = 'Technology COO Domains BCD';
break;
default:
// No matching division, handle the case if needed
break;
}

var groupSysID = '';
if(approvalGroup!=''){
var groupGR = new GlideRecord('sys_user_group');
groupGR.addQuery('name', approvalGroup);
groupGR.query();

if (groupGR.next()) {
groupSysID = groupGR.getValue('sys_id');
}
}

answer.push(groupSysID);

 

 

Assuming your field name is 'division'!

Please mark my response correct/helpful as applicable!
Thanks and Regards,
Rahul

Alp Utku
Mega Sage

If I would be you, I would create custom table to hold all data to trigger approvals. Make sure that custom table extends from "Data Lookup Matcher Rules" table to be able to use data lookup definition. Then by using data lookup definitions, you could achieve your goal to trigger approvals. Then you need to adjust workflow / flow designer to send the approval accordingly.

https://docs.servicenow.com/en-US/bundle/utah-platform-administration/page/administer/field-administ...