Pass the input Variable from Script Include to Workflow for Remove AD Remove Group

MD AQUIB KHAN
Giga Guru

Hi All, 

I am working on the reclamation workflow . I have to pass four input variables and triggered the workflow from script include. The four input variables are 1. Domain Controller, User Name, AD GroupName and Shared Domain .

I am able to get all the input using Glide Query from different table . My only issue is how to send all the inputs to workflow inputs (Remove AD Group). Please find the script include which I have written for the above mentioned logic. 

Script Include:

var RemoveAD = Class.create();
RemoveAD.prototype = {
initialize: function() {},

type: 'RemoveAD'
};
RemoveAD.revokeAD = function(softwareGr) {

var UserAdDomain;
var ADDomain;
var ADUserName;
var domainController = 'wmservice.corpnet1.com';
var gr_install = new GlideRecord("cmdb_sam_sw_install");
gr_install.addQuery('sys_id', softwareGr);
gr_install.query();
//gr_install.get('03f31264dbc658942973d844ca96198b');
if (gr_install.next()) {
var discoModel = gr_install.getValue('discovery_model');
//gs.print('Discovery Model:' +discoModel );
var softwaremodelids = SAMPremiumUtils.getSoftwareModelsFromDiscModel(discoModel);
//gs.print('SW Model IDs:' + softwaremodelids);
var gr = new GlideRecord('sn_client_sf_dist_application');
gr.addEncodedQuery('modelIN' + softwaremodelids);
gr.query();
if (gr.next()) {

// AD Domain, User AD Domain , AD UserName & Domain Controller(Pending )
ADDomain = gr.getValue('display_name');
UserAdDomain = gr_install.installed_on.assigned_to.u_ad_domain;
ADUserName = gr_install.installed_on.assigned_to.user_name;


gs.print(ADDomain);
}
// Condition to be applied for Domain Controller

}
//calling the workflow GSK AD - Remove User from Group
// Have to get the workflow input to pass & triggered the workflow

// Not sure about the syntax how to pass the input:ADDomain, UserAdDomain, ADUserName and domainController
var wfVars = {}; 
wfVars.
RemoveAD.startWorkflow("GSK AD - Remove User from Group", softwareGr, "", wfVars);

};

 

 

RemoveAD.startWorkflow = function(wfName, record, operation, wfVars) {
var wf = new global.Workflow();
var workflowId = wf.getWorkflowFromName(wfName);

if (gs.nil(workflowId)) {
gs.info('workflow: ' + wfName + ' not found');
return;
}
var contextId = wf.startFlow(workflowId, record, operation, wfVars);
return contextId;
};

 

Please help me in this regard.

@Ankur Bawiskar  : Please help

Regards,

Aquib

 

 

1 ACCEPTED SOLUTION

Try to run once and verify

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

8 REPLIES 8

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

I have shared solution for how to pass inputs to workflow and how to get them in workflow

check this link where I shared the answer

Trouble Accessing variables from inbound action

sharing the script here again

1) Create workflow input variable

find_real_file.png

2) Then send the data like this

var inc = new GlideRecord('incident');
inc.get('8d44ecd62ff56010aedd55f62799b691');
inc.short_description = 'test';
inc.update();
var wflow = new Workflow();
var wfId = wflow.getWorkflowFromName("Incident") ;

var vars= {};

// you need to set the value in the same column name u_username

vars.u_username = 'my_id_to_workflow';

wflow.startFlow (wfId, inc, inc.operation() , vars) ;

3) Then access it like this

// u_username is the column name which you need to use to access the value

gs.info("workflow value"+ workflow.inputs.u_username);

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur,

 

Thank you for the much needed help. Appreciate your effort . I have updated my scripts. 

Please review the scripts . I reviewed the link which you have shared and tried to replicate the same .

Please let me know if any modification is required.

 

if (gr_install.next()) {
var discoModel = gr_install.getValue('discovery_model');
var softwaremodelids = SAMPremiumUtils.getSoftwareModelsFromDiscModel(discoModel);
var gr = new GlideRecord('sn_client_sf_dist_application');
gr.addEncodedQuery('modelIN' + softwaremodelids);
gr.query();
if (gr.next()) {

// AD Domain, User AD Domain , AD UserName & Domain Controller(Pending )
ADDomain = gr.getValue('display_name');
UserAdDomain = gr_install.installed_on.assigned_to.u_ad_domain;
ADUserName = gr_install.installed_on.assigned_to.user_name;
gs.print(ADDomain);
}
// Condition to be applied for Domain Controller

}
//calling the workflow GSK AD - Remove User from Group
// Have to get the workflow input to pass & triggered the workflow

// Part which is modified
var wfVars = {};
wfVars.u_domaincontroller=domainController; 
wfVars.u_remove_user=ADUserName;
wfVars.u_groupname = UserAdDomain;
wfVars.u_share_domain=domainController; 
RemoveAD.startWorkflow("GSK AD - Remove User from Group", softwareGr, "", wfVars);

};

RemoveAD.startWorkflow = function(wfName, record, operation, wfVars) {
var wf = new global.Workflow();
var workflowId = wf.getWorkflowFromName(wfName);

if (gs.nil(workflowId)) {
gs.info('workflow: ' + wfName + ' not found');
return;
}
var contextId = wf.startFlow(workflowId, record, operation, wfVars);
return contextId;
};

Also I will add run script activity to verify the inputs in the workflow's AD - Remove User from Group

Regards,

Aquib

Try to run once and verify

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

The Issue has been resolved . Issue with line:var removeADInclude = new global.RemoveAD.revokeAD(gr_install);

when updated to global.RemoveAD.revokeAD(gr_install); it worked . The workflow is getting triggered.