Add Advanced reference qualifier using script include

babarat1
Tera Contributor

Hello all,

I have a custom table - u_m2m_sys_user_cmdb_ci_service with 3 fields - User(sys_user), CI 1(u_cmdb_ci_service) and CI 2 (u_dev_prod_ci_secondary)

 

I need to create a variable on a catalog item to reference this table. However I need to query the table based on the logged in user and get to display the list of Application Names  (a field on CI 1) to show up the value from 1 particular field from CI 1 (u_cmdb_ci_service.u_application_name)

 

I need help to achieve the same.

Below is the Script Include I am trying to build.

I tried from background and it returns expected result. How do I use it on Script Include?

 

var usersCmdbCIList = [];
var grUserCmdbCI= new GlideRecord('u_m2m_sys_user_cmdb_ci_service');
		grUserCmdbCI.addQuery('sys_user','8d9b33fa4718919075211711e36d43c3'); // this should have current logged in user name
		grUserCmdbCI.query();

		while(grUserCmdbCI.next()) {
			//usersCmdbCIList.push(grUserCmdbCI.getUniqueValue());
			//var userCI = usersCmdbCIList.push(grUserCmdbCI.getDisplayValue('u_cmdb_ci_service.u_application_name'));
                        gs.print(grUserCmdbCI.getDisplayValue('u_cmdb_ci_service.u_application_name'));
			//Your not pushing it so it will only take the last of the query
			//var list = gruser_list.getDisplayValue('u_cmdb_ci_service.u_application_name');
		}

@Peter Bodelier @Sandeep Rajput @Ankur Bawiskar @Anand Kumar P 

2 REPLIES 2

OlaN
Giga Sage
Giga Sage

Hi,

If you want to use this script include as an advanced reference qualifier for a variable,

then you will need to return something that can be used as a encoded query on the table.

 

In this case I would suggest something like this:

var usersCmdbCIList = [];
var grUserCmdbCI= new GlideRecord('u_m2m_sys_user_cmdb_ci_service');
grUserCmdbCI.addQuery('sys_user', gs.getUserID());
grUserCmdbCI.query();

while(grUserCmdbCI.next()) {
    usersCmdbCIList.push(grUserCmdbCI.getUniqueValue());
}

return 'sys_idIN' + usersCmdbCIList.join(',');

Anand Kumar P
Giga Patron
Giga Patron

Hi @babarat1,

You can use below script to call in script include.

initialize: function() {},

getApplicationNamesForCurrentUser: function() {
var userCmdbCIList = [];

var grUserCmdbCI = new GlideRecord('u_m2m_sys_user_cmdb_ci_service');
grUserCmdbCI.addQuery('sys_user', gs.getUserID());
grUserCmdbCI.query();

while (grUserCmdbCI.next()) {
userCmdbCIList.push(grUserCmdbCI.u_cmdb_ci_service.u_application_name);
}

return userCmdbCIList;
},

Thanks,

Anand