> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.itential.com/itential-cloud/studio/workflows/tasks/null-vs-undefined-values/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itential.com/_mcp/server. # Null vs. undefined values in workflows > How null and undefined values behave differently across task types and Itential Platform versions. The difference between `undefined` and `null` values is minimal, and they are often used interchangeably to represent a non-value. As a result, you may encounter unexpected behavior when designing workflows or debugging errors related to how these two values are used with various task types. This page walks through how each value behaves with specific tasks and provides a reference matrix summarizing behavior across Platform versions. ## Null vs. undefined data types Within Itential Platform, there are scenarios where `null` and `undefined` behave differently than expected when used with various task types. The examples below demonstrate these differences, followed by a [task matrix](#task-matrix-null-vs-undefined) that summarizes behavior across Platform versions. ## Merge task example The workflow in the example below includes a `newVariable` task named `test` and an eval (`eval`) task to control the job execution path. In this case, the path passes through a success transition. ![](/_fern-img/8e39873c3be7e974f4b133707291d303eaf73267bad6b5fb874b101ae9d40f6b.webp) The following examples use this workflow to demonstrate how the `merge` task returns an object across three distinct scenarios: an undefined task input, an undefined key in a task with multiple outputs (JST task), and an undefined job variable. The task type determines which key values are returned in the output. If a key value does not appear, the input used in the **outgoing task** will be `null` or `undefined`, depending on the release version you are using. ### Undefined task input The example below shows a `newVariable` task input named `fluke2` with its assigned value. ![](/_fern-img/6f020ce8ca1ccec4ca1ea87d6c3e7b04fd475621624691170c2fa8be2763f91f.webp)![](/_fern-img/f9a94818af31b87d113ad34cb697e34920c7a7f9901de5312a3ae4267d9a771d.webp) The `merge` task dialog shows the task using data from the `newVariable.fluke2` job variable in key `yo2`. ![](/_fern-img/c60c80af6fd916fb29b4c8ca24072266854e2860f3917e533595ff5a64067c8e.webp) After a successful workflow run, the incoming key/values to merge are visible in the Incoming tab. ![](/_fern-img/28fbaec66ef5abdee6c06480082ce6df4c33caa0d5e844707f9ac246ab4d20d8.webp) The merged object in the task output shows a `null` value for the `yo2` key. ![](/_fern-img/4ca45642cae15119d38d25960484714c01bc449771037d90d1f8a8886cf5ac58.webp) ### Undefined key in task with multiple outputs (JST task) Using the same workflow, this example shows a JST task input named `george2`. ![](/_fern-img/c658ca2a0914a54146d05f220715609c89778c62184beff967bad4285cb0fe8a.webp)![](/_fern-img/b9aa3419d457269fd5f1a6c8e8ea09520182d63ca1562e002c967683ea216ece.webp) The incoming schema named `yo` is assigned the value `hello`. ![](/_fern-img/f0d25a8e494196c5439598beb442bb289f26f7530e369edb8f2985d2fcb1e2fd.webp) The `merge` task uses data from the `george2` transformation task in key `yo2`. ![](/_fern-img/bbb99fd70f89e63540e9f8750a9a198df6da1a7d1ce6ecc82530e4e35eb574f1.webp)![](/_fern-img/43481b4ad82eaf0455d58ac718e4bd3172494039cadff8993c2059253e3199bc.webp) The merged object output varies by Platform version. #### Platform 2021.2 and 2022.1 The merged object shows a `null` value for the `yo2` key; however, it is stored as `undefined`. ![](/_fern-img/652ed2d4c4302f0c6a3b1e50e1bbec5aa97e09414fbe67c967e474b7a21ca171.webp) #### Platform 2023.1 and 2023.2 The merged object shows no value for the `yo2` key. ![](/_fern-img/69649be25172ff1747f313a9ea01c7a95f84458dd735cce318b16f9d85faa2e4.webp) ### Undefined job variable This example uses a `newVariable` task input named `fluke` with the assigned value `somethingfluke`. ![](/_fern-img/f7008f8787cc5f63de8ae8c21a64eabcd4a1b5612f6447e39be765264897e386.webp)![](/_fern-img/0b71a6422e5f82cff092b4cec664af3ae15783beaba9903d32fb676caefff4bd.webp) The `merge` task uses job task data from the `fluke` variable in key `yo2`. ![](/_fern-img/20ef27cc4de0a567040102a62f455f4a20d3da2b5d318dbe6c5c4c7957735200.webp)![](/_fern-img/693c173b5426a9768f155f10e18de9a6c10668e17b1827f2d1522707c827979d.webp) The merged object output varies by Platform version. #### Platform 2021.2 and 2022.1 The merged object shows a `null` value for the `yo2` key; however, it is stored as `undefined`. ![](/_fern-img/16cb3955c540360c930e6a075048d7d97d0ab551abb2951ff14a592de68473ab.webp) #### Platform 2023.1 and 2023.2 The merged object shows no value for the `yo2` key. ![](/_fern-img/69649be25172ff1747f313a9ea01c7a95f84458dd735cce318b16f9d85faa2e4.webp) ## Task matrix (null vs. undefined) The matrix below outlines the expected result for each task type across Platform versions. In the first column, three `undefined` scenarios are listed. Each outgoing task type is named in the header row. To use the matrix: choose the `undefined` scenario from the first column and the outgoing task type from the header row. The entry where the two meet shows how the input resolves for that task. **2023.2.0+** | Scenario | Merge | Eval | Transformation | Child job | WFE automated | Non-WFE automated | | :------------------------------------------------ | :-------- | :-------- | :------------- | :-------- | :------------ | :---------------- | | Undefined task input | null | null | null | null | null | null | | Undefined key in task with multiple outputs (JST) | null | null | null | null | null | null | | Undefined job variable | undefined | undefined | undefined | undefined | undefined | null | **2023.1.4 – 2023.2** | Scenario | Merge | Eval | Transformation | Child job | WFE automated | Non-WFE automated | | :------------------------------------------------ | :-------- | :-------- | :------------- | :-------- | :------------ | :---------------- | | Undefined task input | null | null | null | null | null | null | | Undefined key in task with multiple outputs (JST) | undefined | null | null | null | null | null | | Undefined job variable | undefined | undefined | undefined | null | undefined | null | **2023.1.0 – 2023.1.3** | Scenario | Merge | Eval | Transformation | Child job | WFE automated | Non-WFE automated | | :------------------------------------------------ | :---- | :-------- | :------------- | :-------- | :------------ | :---------------- | | Undefined task input | null | null | null | null | null | null | | Undefined key in task with multiple outputs (JST) | null | null | null | null | null | null | | Undefined job variable | null | undefined | undefined | null | undefined | null | **2022.1** | Scenario | Merge | Eval | Transformation | Child job | WFE automated | Non-WFE automated | | :------------------------------------------------ | :-------- | :-------- | :------------- | :-------- | :------------ | :---------------- | | Undefined task input | null | null | null | null | null | null | | Undefined key in task with multiple outputs (JST) | undefined | null | null | null | null | null | | Undefined job variable | undefined | undefined | undefined | undefined | undefined | null | **2021.2** | Scenario | Merge | Eval | Transformation | Child job | WFE automated | Non-WFE automated | | :------------------------------------------------ | :---- | :-------- | :------------- | :-------- | :------------ | :---------------- | | Undefined task input | null | null | null | null | null | null | | Undefined key in task with multiple outputs (JST) | null | null | null | null | null | null | | Undefined job variable | null | undefined | undefined | null | undefined | null | > How null and undefined values behave differently across task types and Itential Platform versions.