Function thinklet
The Function thinklet enables custom data transformations and computations using JavaScript. While built-in thinklets handle most tasks, the Function thinklet provides flexibility for complex data manipulation and workflow logic.
How it works
Add JavaScript code to the Function thinklet to transform data, generate insights, and automate workflow decisions.
Use cases
Use the Function thinklet for:
Data transformation – Convert values, format data and compute new metrics.
Time calculations – Determine time differences and track durations.
Decision automation – Use computed outputs to drive conditional workflow logic.
Restrictions
To ensure performance, security, and predictability, the Function thinklet enforces the following rules:
The Function thinklet runs in a secure and isolated environment. It cannot make HTTP requests, access external services or APIs, or interact with any system outside the workflow. This restriction guarantees that execution remains safe, consistent and compliant with security policies.
Function thinklets must complete all logic within 5 seconds. Scripts that exceed this time limit will be automatically terminated. As a result, introducing artificial delays or using the Function thinklet to pause workflow execution is not supported.
Use the Function thinklet exclusively for fast, local data processing and decision-making. For any advanced use cases involving delays or external interactions, consider using purpose-built thinklets.

Configuring the Function thinklet
Simplify third-party integrations by converting raw data into meaningful formats to, for example, calculate the number of days between two dates, without using workarounds or external tools.

Name: Enter a unique name for the Function thinklet.
ID: The system generates the ID automatically based on the name.
Description (optional): Describe the purpose of the thinklet and what it does. This information is useful for other users of the workflow who may not be familiar with it.
Parameters: Select Add parameter to configure thinklet parameters that also become input parameters for the function logic.
ID: Define the input parameter ID. Validation logic does not allow you to enter any characters that are not supported by JavaScript.
Value: Set the corresponding parameter value—database value, output of another thinklet, global parameter or custom value.
Outputs: Select Add outputs to configure up to 5 outputs of the function.
Name: Enter a unique name for the desired output.
ID: The system generates the ID automatically based on the name.
JavaScript: Write JavaScript code that defines the function's logic based on the input parameters. The script should also define any outputs that contain the IDs of defined Outputs.
JavaScript code structure
When you author a Function thinklet in Nexthink Flow, you should follow these syntax rules to ensure your script works correctly and remains debuggable:
Access input parameters defined in the configuration using
inputs.parameter_ID
Assign output values with the syntax
outputs.output_ID
Include useful information in the Workflow execution timeline for troubleshooting by using
nxLogger.log()
// Access input parameters
const param1 = inputs.parameter_ID_1;
const param2 = inputs.parameter_ID_2;
// ...
const paramN = inputs.parameter_ID_5; // Up to 5 parameters
// Logic for transformations
outputs.output_1 = /* your logic here */;
outputs.output_2 = /* your logic here */;
// ...
outputs.output_5 = /* your logic here */;
// Output any results for troubleshooting
nxLogger.log("Name the output" + output_1);
JavaScript code example
This code example shows how to implement a password expiration checker within the Function thinklet.
// Access input parameter
const lastUpdate = inputs.last_update_date;
// Define password validity period (90 days)
const validityDays = 90;
const expirationDate = new Date(lastUpdate);
expirationDate.setDate(expirationDate.getDate() + validityDays);
// Get current date
const now = new Date();
// Calculate days left
const timeDiff = expirationDate - now;
const daysLeft = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
// Set outputs
outputs.days_left = daysLeft; // Days_to_change_password
outputs.if_expired = daysLeft <= 0; // Already_expired
// Output intermediate results for troubleshooting
nxLogger.log("Days left: " + daysLeft);
nxLogger.log("Need to notify: " + outputs.output_2);
Unsupported functions and objects
The following global functions and objects are not supported:
setTimeout
setInterval
setImmediate
clearTimeout
clearInterval
clearImmediate
process
require
Buffer
console
process.nextTick
Last updated
Was this helpful?