# Variables and Expression editor

> Switch between text, variables, and expressions in the Properties panel, and build complex expressions or JSON inputs using the Expression editor.

Use the tune selector next to a Properties panel input field to switch between text, variables, and expressions.

![text, variables, expressions](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-text-variables-expressions-538411-617bc734.webp)

* **Use variable** - select existing variable or element output value
* **Open expression editor** - build complex expression
* **Use JSON editor** - use JSON editor to create inputs or outputs
* **Use datetime** - use date time picker
* **Use [Data Fabric](https://docs.uipath.com/data-service/automation-cloud/latest/user-guide/introduction)** - use properties from Data Fabric entity

Use **Text builder** to provide free form text entries.

  ![data fabric attachments](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-data-fabric-attachments-587203-03e7b8c2.webp)

## Variables

Use **Variables** to configure element properties and pass values between your elements, automations, agents, app tasks, and connections. Element outputs are automatically available as variables throughout the process.

Open the **Variable** selection panel to select a variable, argument, or property. Provide and test values by using the **Test** button on the top-right of the **Validate expression** panel.

Test input values verify expression accuracy and ensure it produces the anticipated output based on the provided inputs.

  ![Properties - Variables Dropdown](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-properties-variables-dropdown-586558-5e92d0f6.webp)

:::tip
The variable picker includes outputs from tasks within collapsed subprocesses.

You can reference subprocess variables directly regardless of whether the subprocess is displayed in collapsed or expanded view, making it easier to work with modular process designs.
:::

:::note
When you rename a variable, its underlying ID updates to match the new name. Expressions that referenced the old ID will break after a rename.

Use the **Fix variables** dialog to identify and update broken references across the process.
:::

## Expression editor

Use the **Expression editor** to write more complex expressions to configure element properties. It features intelligent code completion for variables, arguments, methods, properties, objects, or keywords.

Use `Ctrl + Space` to see the list of available options while writing expressions.

Use the text bar on the bottom of the **Expression editor** to describe your expression and get instant help from Autopilot.

:::note
Read the [DynamicExpresso GitHub documentation](https://github.com/dynamicexpresso/DynamicExpresso) for information on authoring expressions.
:::

:::warning
C# expressions are deprecated. Migrate to JavaScript expressions.

For migration guidance, see [Transitioning from C# to JavaScript expressions](https://docs.uipath.com/maestro/automation-suite/2.2510/user-guide/transitioning-to-javascript).
:::

  ![expression editor](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-expression-editor-555381-f5bea15e.webp)

## JSON editor

Start by adding a raw JSON object in the **Variables** view to define your input payload. Once added, switch to the **JSON editor** to explore and interact with the data in a structured format.

This view automatically organizes nested objects and arrays, allowing you to inspect, expand, and reference values easily. Use it to validate data shape, map fields to expressions, or supply inputs to downstream components with clarity and precision.

  ![docs image](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-docs-image-586538-10864e89.webp)

  ![docs image](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-docs-image-586542-05a5232e.webp)

## Date and time picker

Use the **Date and Time picker** to capture specific scheduling details within your automation flow. This component lets you define date and time values in a standardized format.

Use it for timestamping submissions, setting deadlines, or scheduling downstream activities. Manually enter values or use the calendar and clock controls for quick selection, ensuring consistency and reducing formatting errors.

  ![date time picker](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-date-time-picker-586516-4e4eebde.webp)

  ![add variable](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-add-variable-586525-536083b6.webp)

Follow these steps to configure data integration for your process:

1. Open the **Data Fabric editor**.
2. Choose an **Entity** from the dropdown list, then specify a **Record Match** using a unique identifier like an ID or key.
3. Select the appropriate **Field** to retrieve or update specific data points. These inputs determine the scope of data interaction within the process.

   ![data fabric editor](https://dev-assets.cms.uipath.com/assets/images/maestro/maestro-data-fabric-editor-586499-4603fba9.webp)

### Querying Data Fabric entities by field value

Use the `qes:` prefix syntax to look up a Data Fabric entity by field value instead of by internal record ID:

```
datafabric.EntityName["qes:FieldName=Value"].FieldToRead
```

For example: `datafabric.LoanApplicationCase["qes:CaseId=HL-999"].LoanAmount`

Use this syntax when you know a business-meaningful field value but do not have the internal record ID. The `qes:` syntax supports the equals operator only.

### Writing activity outputs back to Data Fabric

Activity outputs can target a DataFabric entity directly using the `target` attribute syntax:

```
target="=datafabric.EntityName[...]"
```

When an activity completes, Maestro automatically writes the output value back to the entity, without any additional configuration steps.
