- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-10-2017 12:34 AM
Hi All,
I have a requirement to design a catalog item which will automate the process of
1) Creating a new group
2) Add Members to that group
3) Add Role to that group depending on the Type selected from the Item
I am done with the first two requirements but unable to add role to the group dynamically which will be added depending on the Type selected(If the type is "Fulfillment" the role should be "itil" and if the type is "Approval" the role should be "approval_user"). I also want to add the variables that I have used in my item as well as in the "Run Script".
1) Group Name >>(groupname) >>(Single Line Text)
2) Description of the group >> (desc_group) >> (Single Line Text)
3) Select Members >>(select_members) >>(List Collector)
4) Group email >>(group_email) >>(Single Line Text)
5) Support area >>(support_area) >>(Select Box)
5) SA Manager >> (sa_manager) >> (Reference)
6) Vendor Manager >> (vendor_manager) >> (Reference)
7) Type >> (type) >> (Reference)
These all are the variables that I have used in "Run Script" to "Create a new group" and "Add Members to that group".
var gr = new GlideRecord("sys_user_group");
gr.initialize();
gr.name = current.variables.groupname;
gr.description = current.variables.desc_group;
gr.email = current.variables.group_email;
gr.u_support_area = current.variables.support_area;
gr.u_sa_manager = current.variables.sa_manager;
gr.u_vendor_manager = current.variables.vendor_manager;
gr.type = current.variables.type;
var sys_id = gr.insert();
var user = current.variables.select_members;
var user_gr = user.toString().split(",");
for(var i = 0;i<user_gr.length;i++){
var gr1= new GlideRecord("sys_user_grmember");
gr1.initialize();
gr1.user = user_gr[i];
gr1.group = sys_id;
gr1.insert();
}
if(gr.type == 'Fulfillment'){
var gr2 = new GlideRecord("sys_user_role");
gr2.addQuery('name' , 'itil');
gr2.query();
if (gr2.next()){
var gr3 = new GlideRecord('sys_user_group');
gr3.addQuery('name' , gr.name);
gr3.query();
while (gr3.next()){
var gr4 = new GlideRecord('sys_group_has_role');
gr4.addQuery('group', gr.sys_id);
gr4.addQuery('role', gr2.sys_id);
gr4.query();
if (gr4.getRowCount() == 0){
var gr5 = new GlideRecord('sys_group_has_role');
gr5.initialize();
gr5.group = gr.sys_id;
gr5.role = gr2.sys_id;
gr5.inherits = true;
gr4.insert();
gr4.insert();
}
}
}
}
Please go through with the code and make me correct if I made any mistake. Any help will be highly obliged.
Thanks in advance.
Regards,
Sreeja
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 06:10 AM
Hi Sebastian and Ganesan,
Thanks for your response.
I just added a delay in between Creation of a group and to add Role. Now its working fine.
Regards,
Sreeja
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-10-2017 03:31 AM
Hi Ganesan,
Thanks for your response. The script you wrote will be applied for all groups which are having type Fulfillment or Approval even if they are created manually. But I want only for this catalog item.
Can we restrict that in anyway?
Regards,
Sreeja
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-10-2017 03:56 AM
Hi Sreeja,
Then you could use the same code with slight modification in your Run Script original script, you could replace from the line 24 to the below script
if (current.variables.type == 'Fulfillment' || current.variables.type == 'Approval')
{
var addrole = new GlideRecord('sys_group_has_role');
addrole.initialize();
addrole.setValue('group', sys_id);
if (current.variables.type == 'Fulfillment')
{
addrole.setDisplayValue('role', 'itil');
}
else if (current.variables.type == 'Approval')
{
addrole.setDisplayValue('role', 'approval_user');
}
addrole.insert();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-10-2017 05:06 AM
Hi Ganesan,
I tried this one and the previous code as well but don't have any idea why this is not working.
Regards,
Sreeja
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-10-2017 11:01 AM
Hi Sreeja,
Can you get a screen shot of the workflow. And on what condition is the workflow set. I mean on which table the workflow is created upon.
Regards
Param
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2017 06:10 AM
Hi Sebastian and Ganesan,
Thanks for your response.
I just added a delay in between Creation of a group and to add Role. Now its working fine.
Regards,
Sreeja