> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/supported-expressions.md).

# Supported Expressions

Release Orchestration supports Harness expressions for dynamically referencing inputs, outputs, and variables across releases, processes, phases, and activities. These expressions are evaluated at runtime, allowing you to pass values between execution contexts and use runtime data to control release behavior.

***

### What you will learn from this topic <a href="#what-you-will-learn-from-this-topic" id="what-you-will-learn-from-this-topic"></a>

* How to [reference release and process inputs](#release-and-process-inputs) in your configurations.
* How to [reference phase and activity outputs](#phase-and-activity-outputs) to chain workflows.
* How to [use conditional expressions](#conditional-expressions-ifcondition) to control activity execution.

***

### Expression syntax <a href="#expression-syntax" id="expression-syntax"></a>

Use Harness JEXL expressions wrapped in `<+...>`.

Example:

```
<+releaseInput.global.DeployVersion>
```

Expressions are evaluated at runtime and resolve to the actual values from your release inputs, activity outputs, or variables.

***

### Release and Process Inputs <a href="#release-and-process-inputs" id="release-and-process-inputs"></a>

Use these expressions to reference input values provided when creating or executing a release.

| Expression                      | Description                                                                    | Example                                |
| ------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------- |
| `<+releaseInput.global.<name>>` | References a global release input available across all phases and activities   | `<+releaseInput.global.DeployVersion>` |
| `<+releaseInput.phase.<name>>`  | References a phase-scoped input available only to activities within that phase | `<+releaseInput.phase.Region>`         |
| `<+activityInput.<name>>`       | References an activity-specific input available only within that activity      | `<+activityInput.environment>`         |

***

### Phase and Activity Outputs <a href="#phase-and-activity-outputs" id="phase-and-activity-outputs"></a>

Use these expressions to reference outputs from completed phases or activities.

| Expression                                        | Description                                                  | Example                                           |
| ------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- |
| `<+process.<phaseId>.output.<name>>`              | References an output produced by an entire phase             | `<+process.phase1.output.phaseOutput1>`           |
| `<+process.<phaseId>.<activityId>.output.<name>>` | References an output from a specific activity within a phase | `<+process.phase1.activityA.output.pipelineName>` |

***

### Conditional Expressions (`ifCondition`) <a href="#conditional-expressions-ifcondition" id="conditional-expressions-ifcondition"></a>

Use conditional expressions in the `ifCondition` field to control whether an activity executes based on runtime values.

| Expression | Description                                                    | Example                                                                                 |
| ---------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Boolean    | Compares values against `true` or `false`                      | `<+<+activityInput.shouldDeploy> == true>`                                              |
| String     | Compares text values using `==` or `!=`                        | `<+<+activityInput.env> == "prod">`                                                     |
| Combined   | Uses `&&` (AND) or `\|\|` (OR) to evaluate multiple conditions | `<+<+<+activityInput.deploy> == true> && <+<+releaseInput.global.enableProd> == true>>` |

***

### Related Topics <a href="#related-topics" id="related-topics"></a>

* [Inputs and Variables Overview](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/overview.md) - Learn about the input and variable system
* [Variable Mapping](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/variables/variable-mapping.md) - Map variables between activities and pipelines
* [Input Store](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/input-store.md) - Manage input sets for releases
* [Global Variables](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/variables/variable-types/global-variables.md) - Release-level variables
* [Phase Variables](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/variables/variable-types/phase-variables.md) - Phase-scoped variables
* [Activity Variables](/release-orchestration/use-release-orchestration/release-orchestration-inputs-variables/variables/variable-types/activity-variables.md) - Activity-scoped variables
