19 Jun 2024
12:32 PM
- last edited on
06 Oct 2025
07:42 AM
by
MaciejNeumann
Solved! Go to Solution.
19 Jun 2024 12:55 PM
You can access task result data in other tasks using expressions, specifically the result expression https://docs.dynatrace.com/docs/shortlink/automation-workflow-expression-reference#result
In your example, you have a task "time_validation" with a result: records[{hour: 21, even....} .. ]
So in order to access the property hour in the first item of the records list, the expression would be
{{ result("execute_dql_query_1")["records"][0]["hour"] }}
Given that the DQL query records are always a list, you might want to loop over them and grab the hour, for example
{% for record in result("execute_dql_query_1")["records"] %}
My Hour : {{ record.hour }}
{% endfor %}
Those expression can be used in any task input of any action with the exception of custom javascript, as this could lead to unwanted code injection. Therefore there is a javascript native option to access task results described here: https://docs.dynatrace.com/docs/platform-modules/automations/workflows/default-workflow-actions/run-...
Note: in order to access task results, the source task needs to be a predecessor to the task where you reference its result. However it does not have to be the immediate predecessor. Assuming a linear workflow with 5 tasks, task 5 can still access any result from task 1-4.
19 Jun 2024 01:12 PM - edited 19 Jun 2024 01:14 PM
Thank you for your answer, however it gives me an error when calling the result of the previous task as proof I am calling the total value of the previous task "request_validation" as seen in the image, the error log tells me that the variable does not exist
19 Jun 2024 01:21 PM
the expression looks good. Can you share the exact error message?
Also to make sure the tasks have a dependency with each other, can you share the conditions tab from the time_validation task?
18 Dec 2024 03:07 PM
hi there, im facing the same issue when developing a workflow that must send an email when the JVM% threshold is reached. Im using a DQL query that brings records ( jvm metric from diferent processes) and what we must do is: if the metric of any of those processes is above 80%, send the email alert (on a next step we want to alert also through ansible) so far the the DQL gives me this data:
but when doing the condition on the next step it fails
im using the records variable from the last step that brings the 8 records but on the email step it shows othe info and doesnt work.
thanks in advance 🙂
03 Oct 2025 11:06 PM
I may have the same stuborn issue here, did you solve your problem at the end?
I have two tasks the first task called input which is javascript code which simply returning a JSON and I can see it in the results showing this results
{
"to": "now()",
"from": "now()-7d",
"display_id": "P-250917044"
}
The task after that I use the following DQL:
fetch dt.davis.problems, from:now()-7d, to:now()
| filter display_id == "{{ result('input').get('display_id', "undefined") }}"
| filter event.kind == "DAVIS_PROBLEM"
| filter maintenance.is_under_maintenance == false
| filter event.status == "CLOSED" and not dt.davis.is_duplicate == "true"
| fields dt.davis.affected_users_count
Whatever I use with all the codes described in the Dynatrace documentation is failing
so I used this jinja expression but is always returning the default value I put which undefined
{{ result('input').get('display_id', "undefined") }}
What am I doing wrong? I used many workflows in loops in previous workflows and they all work
but not the input to a DQL from a previous task - something does not make sense?
The documentation gives the following but they all do not work when I tried them so I used the .get method
but it can not find my key
# result of 'task_1' in the workflow
{{ result('task_1') }}
# result attribute 'foo' of 'task_1'
# the result function allows to only return part of the object
# if the result object does not have an attribute "foo", the function will fail with an "Undefined variables" message
{{ result('task_1.foo') }}
# alternatively, the whole result object can be returned and afterwards access the attributes of the object
# if the result object does not have an attribute "foo", the expression will fail with an "Undefined variables" message
{{ result('task_1').foo }}
# both options can be combined, for example, with a default filter (see filters)
{{ result('task_1').foo | default('foo is not defined') }}`
# however for the following, at least the "foo" attribute needs to exist otherwise the same error will occour
{{ result('task_1').foo.bar | default('foo is not defined') }}`
# the get function can also be used to access object attributes
{{ result('task_1').get('foo', 'foo is not defined') }}
Your help is much appreciated.
15 Nov 2025 06:52 PM - edited 16 Nov 2025 07:59 AM
Hello @JhonU @MarwanC @MariettaAlmeida @ChristopherHejl
I have seen that the solution to get data from previous task in the next task (execute DQL Query) is given by various guys below. But to get that data in Javascript is a bit missing here. I am giving you below the instructions to get data in javascript task as well.
Lets Consider the Scenerio as shown below.
On Demand Trigger ==> Execute DQL Task(dql_query_1) ==> Javascript Task (run_javascript-task_1)
Now You want to get the data or do furthur processing from dql_query_1 to run_javascript_task_1. In the Javascript task code, paste the below snippet and replace your DQL task name with yours and execute the workflow and check the results tab of Javascript task.
Note : By Default, the result function is not imported in javascript task, only execution function is imported. So you must import result function and then use as shown below in code.
import { execution,result } from '@dynatrace-sdk/automation-utils';
export default async function ({ executionId, actionExecutionId }) {
var myResult = await result('dql_query_1');
var finalData = myResult["records"]
var prcTech = [];
for (let pointer = 0; pointer < finalData.length; pointer++){
prcTech[pointer] = finalData[pointer]["status"]
}
return {"prcTech" : prcTech}
// console.log('Workflow execution id: ', executionId);
// console.log('Action execution id: ', actionExecutionId)
}In the above example, I am fetching only the status of Logs and Put Them In Dedicated List.
[
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO",
"INFO"
]
I hope you got the idea, Thanks