- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 01:26 AM
Hi,
I am trying to pass a variable from business rule to workflow, but it does not receive it.
This is the business rule:
(function executeRule(current, previous /*null when async*/) {
var u_vars = {};
u_vars.u_met = 'Test 2';
var w = new Workflow();
var context = w.startFlow('ea52870687239e10d111646e8bbb357d', current, current.operation(), u_vars);
})(current, previous);
This is the workflow input:
And here is the workflow script:
var input = workflow.variables.u_vars;
var testing = new GlideRecord('incident');
testing.addQuery('number', 'INC0295583');
testing.query();
if (testing.next())
{
testing.comments = 'TEST 1';
testing.comments = input.u_met;
testing.update();
}
The workflow runs, since the TEST 1 comment is appear in the incident, but the test 2 value is not received.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 04:33 AM
"Test 2" appeared in the log, so the workflow received the value. From this I realized that toString() should be used:
var inputValue = workflow.inputs.u_met.toString();
Finally the value appeared in the incident as well.
Business rule:
(function executeRule(current, previous /*null when async*/) {
var vars = {};
vars.u_met = 'Test 2';
var w = new Workflow();
var context = w.startFlow('ea52870687239e10d111646e8bbb357d', '', 'FIG_ignored_emails', vars);
})(current, previous);
Workflow inputs:
Type: String
Label: Email Sys ID
Column name: u_met
Max length: 60
Workflow script:
var inputValue = workflow.inputs.u_met.toString();
var testing = new GlideRecord('incident');
testing.addQuery('number', 'INC0295583');
testing.query();
if (testing.next())
{
testing.comments = inputValue ;
testing.update();
}
Thank you all for your help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 01:42 AM
I hope business rule and workflow are in same scope
(function executeRule(current, previous /*null when async*/) {
var obj = {};
obj.u_met = 'Test 2';
var w = new Workflow();
var context = w.startFlow('ea52870687239e10d111646e8bbb357d', current, current.operation(), obj);
})(current, previous);
correct way to get the value is this
var input = workflow.inputs.u_vars; // don't use workflow.variables
var testing = new GlideRecord('incident');
testing.addQuery('number', 'INC0295583');
testing.query();
if (testing.next())
{
testing.comments = 'TEST 1';
testing.comments = input.u_met;
testing.update();
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 01:54 AM
Yes, it is the same scope, but still but still only "TEST 1" is appear 😞
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 03:51 AM
same has worked in the past as per my solution
Trouble Accessing variables from inbound action
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2025 01:49 AM - edited 02-09-2025 01:50 AM
Hello @DoDo labs___
Check this thread
Solved: Need to call a workflow from the business rule and... - ServiceNow Community
If my response has helped you hit helpful button and if your concern is solved do mark my response as correct.
Thanks & Regards
Viraj Hudlikar.