> 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/harness-platform/3.0/in-harness-3.0/pipelines/expressions.md).

# Expression Mapping

This guide provides a comprehensive mapping of built-in expressions between Harness NG and Harness 3.0 (Unified Pipeline). Use this reference when migrating your pipelines to the new expression syntax.

### Key syntax changes <a href="#key-syntax-changes" id="key-syntax-changes"></a>

| Aspect             | Harness NG      | Harness 3.0         |
| ------------------ | --------------- | ------------------- |
| Expression wrapper | `<+expression>` | `${{ expression }}` |
| Naming convention  | camelCase       | snake\_case         |

{% hint style="info" %}
**MIGRATION TIP**

When migrating pipelines from NG to 3.0, use find-and-replace to update the expression wrapper from `<+...>` to `${{ ... }}`, then update individual property names from camelCase to snake\_case. The Harness pipeline converter can handle most of these transformations automatically.
{% endhint %}

### Pipeline expressions <a href="#pipeline-expressions" id="pipeline-expressions"></a>

| Description               | Harness NG                                                        | Harness 3.0                                             |
| ------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------- |
| Pipeline Identifier       | `<+pipeline.identifier>`                                          | `${{ pipeline.id }}`                                    |
| Pipeline Name             | `<+pipeline.name>`                                                | `${{ pipeline.name }}`                                  |
| Pipeline Tags             | `<+pipeline.tags>`                                                | `${{ pipeline.tags }}`                                  |
| Execution ID              | `<+pipeline.executionId>`                                         | `${{ pipeline.execution_id }}`                          |
| Sequence ID               | `<+pipeline.sequenceId>`                                          | `${{ pipeline.seq_id }}`                                |
| Resumed Execution ID      | `<+pipeline.resumedExecutionId>`                                  | `${{ pipeline.resume_execution_id }}`                   |
| Execution Mode            | `<+pipeline.executionMode>`                                       | `${{ pipeline.execution_mode }}`                        |
| Start Time (ms)           | `<+pipeline.startTs>`                                             | `${{ pipeline.started_at }}`                            |
| Selected Stages           | `<+pipeline.selectedStages>`                                      | `${{ pipeline.selected_stages }}`                       |
| Delegate Selectors        | `<+pipeline.delegateSelectors>`                                   | `${{ pipeline.delegate_selectors }}`                    |
| Store Type                | `<+pipeline.storeType>`                                           | `${{ pipeline.store_type }}`                            |
| Repository                | `<+pipeline.repo>`                                                | `${{ pipeline.repo }}`                                  |
| Branch                    | `<+pipeline.branch>`                                              | `${{ pipeline.branch }}`                                |
| Org Identifier            | `<pipeline.orgIdentifier>`                                        | `${{ pipeline.org_id }}`                                |
| Triggered By Name         | `<+pipeline.triggeredBy.name>`                                    | `${{ pipeline.triggered_by.name }}`                     |
| Triggered By Email        | `<+pipeline.triggeredBy.email>`                                   | `${{ pipeline.triggered_by.email }}`                    |
| Step Status (cross-stage) | `<+pipeline.stages.STAGE_ID.spec.execution.steps.STEP_ID.status>` | `${{ pipeline.stages.stage_id.execution.step.status }}` |

***

### Stage expressions <a href="#stage-expressions" id="stage-expressions"></a>

| Description        | Harness NG                   | Harness 3.0                       |
| ------------------ | ---------------------------- | --------------------------------- |
| Stage Identifier   | `<+stage.identifier>`        | `${{ stage.id }}`                 |
| Stage Name         | `<+stage.name>`              | `${{ stage.name }}`               |
| Stage Description  | `<+stage.description>`       | `${{ stage.description }}`        |
| Stage Tags         | `<+stage.tags>`              | `${{ stage.tags }}`               |
| Stage Execution ID | `<+stage.executionId>`       | `${{ stage.execution.id }}`       |
| Stage Start Time   | `<+stage.startTs>`           | `${{ stage.started_at }}`         |
| Output Hosts       | `<+stage.output.hosts>`      | `${{ stage.output.hosts }}`       |
| Execution URL      | `<+stage.executionUrl>`      | `${{ stage.execution_url }}`      |
| Delegate Selectors | `<+stage.delegateSelectors>` | `${{ stage.delegate_selectors }}` |

***

### Step expressions <a href="#step-expressions" id="step-expressions"></a>

| Description       | Harness NG             | Harness 3.0                 |
| ----------------- | ---------------------- | --------------------------- |
| Step Identifier   | `<+step.identifier>`   | `${{ step.id }}`            |
| Step Name         | `<+step.name>`         | `${{ step.name }}`          |
| Step Execution ID | `<+step.executionId>`  | `${{ step.execution.id }}`  |
| Step Start Time   | `<+step.startTs>`      | `${{ step.started_at }}`    |
| Execution URL     | `<+step.executionUrl>` | `${{ step.execution_url }}` |

***

### Step group expressions <a href="#step-group-expressions" id="step-group-expressions"></a>

| Description           | Harness NG                | Harness 3.0                             |
| --------------------- | ------------------------- | --------------------------------------- |
| Step Group Identifier | `<+stepGroup.identifier>` | `${{ step_group.id }}`                  |
| Step Group Name       | `<+stepGroup.name>`       | `${{ step_group.name }}`                |
| Step Group Variables  | `<+stepGroup.variables>`  | `${{ group.steps.variables.var_name }}` |

***

### Service expressions <a href="#service-expressions" id="service-expressions"></a>

| Description                | Harness NG                                  | Harness 3.0                                    |
| -------------------------- | ------------------------------------------- | ---------------------------------------------- |
| Service Identifier         | `<+service.identifier>`                     | `${{ service.id }}`                            |
| Service Name               | `<+service.name>`                           | `${{ service.name }}`                          |
| Service Description        | `<+service.description>`                    | `${{ service.description }}`                   |
| Service Type               | `<+service.type>`                           | `${{ service.type }}`                          |
| Service Tags               | `<+service.tags>`                           | `${{ service.tags }}`                          |
| Service Git Branch         | `<+service.gitBranch>`                      | `${{ service.git_branch }}`                    |
| Service Variables          | `<+serviceVariables.VARIABLE_NAME>`         | `${{ service.variables.<var_name> }}`          |
| Service Variable Overrides | `<+serviceVariableOverrides.VARIABLE_NAME>` | `${{ service.variables_override.<var_name> }}` |

***

### Environment expressions <a href="#environment-expressions" id="environment-expressions"></a>

| Description             | Harness NG           | Harness 3.0                      |
| ----------------------- | -------------------- | -------------------------------- |
| Environment Identifier  | `<+env.identifier>`  | `${{ environment.id }}`          |
| Environment Name        | `<+env.name>`        | `${{ environment.name }}`        |
| Environment Description | `<+env.description>` | `${{ environment.description }}` |
| Environment Type        | `<+env.type>`        | `${{ environment.type }}`        |

***

### Infrastructure expressions <a href="#infrastructure-expressions" id="infrastructure-expressions"></a>

| Description               | Harness NG                 | Harness 3.0                           |
| ------------------------- | -------------------------- | ------------------------------------- |
| Infrastructure Identifier | `<+infra.infraIdentifier>` | `${{ infrastructure.id }}`            |
| Infrastructure Name       | `<+infra.name>`            | `${{ infrastructure.name }}`          |
| Connector Ref             | `<+infra.connectorRef>`    | `${{ infrastructure.connector_ref }}` |
| Namespace                 | `<+infra.namespace>`       | `${{ infrastructure.namespace }}`     |
| Release Name              | `<+infra.releaseName>`     | `${{ infrastructure.release_name }}`  |

***

### Artifact expressions <a href="#artifact-expressions" id="artifact-expressions"></a>

| Description                 | Harness NG                                    | Harness 3.0                                  |
| --------------------------- | --------------------------------------------- | -------------------------------------------- |
| Primary Artifact Tag        | `<+artifacts.primary.tag>`                    | `${{ artifact.tag }}`                        |
| Primary Artifact Image      | `<+artifacts.primary.image>`                  | `${{ artifact.image }}`                      |
| Primary Artifact Image Path | `<+artifacts.primary.imagePath>`              | `${{ artifact.image_path }}`                 |
| Artifact Digest             | `<+artifacts.primary.digest>`                 | `${{ artifact.digest }}`                     |
| Artifact Type               | `<+artifacts.primary.type>`                   | `${{ artifact.type }}`                       |
| Artifact Connector Ref      | `<+artifacts.primary.connectorRef>`           | `${{ artifact.connector_ref }}`              |
| Artifact Metadata           | `<+artifacts.primary.metadata>`               | `${{ artifact.metadata }}`                   |
| Artifact Label              | `<+artifacts.primary.label.get("key")>`       | `${{ artifact.label.key }}`                  |
| Artifact SHA                | `<+artifacts.primary.metadata.SHA>`           | `${{ artifacts.SHA }}`                       |
| Artifact SHAV2              | `<+artifacts.primary.metadata.SHAV2>`         | `${{ artifacts.SHAV2 }}`                     |
| Image Pull Secret           | `<+artifacts.primary.imagePullSecret>`        | `${{ artifacts.image_pull_secret }}`         |
| Docker Config JSON Secret   | `<+artifacts.primary.dockerConfigJsonSecret>` | `${{ artifacts.docker_config_json_secret }}` |
| Rollback Artifact Image     | `<+rollbackArtifact.metadata.image>`          | `${{ rollback.artifact.image }}`             |

***

### Sidecar expressions <a href="#sidecar-expressions" id="sidecar-expressions"></a>

| Description           | Harness NG                                      | Harness 3.0                                  |
| --------------------- | ----------------------------------------------- | -------------------------------------------- |
| Sidecar Tag           | `<+artifacts.sidecars.sidecarId.tag>`           | `${{ sidecars.sidecarId.tag }}`              |
| Sidecar Image         | `<+artifacts.sidecars.sidecarId.image>`         | `${{ sidecars.sidecarId.image }}`            |
| Sidecar Image Path    | `<+artifacts.sidecars.sidecarId.imagePath>`     | `${{ sidecars.sidecarId.image_path }}`       |
| Sidecar Connector Ref | `<+artifacts.sidecars.SIDECAR_ID.connectorRef>` | `${{ sidecar.<sidecar_name>.connector_id }}` |
| Sidecar Type          | `<+artifacts.sidecars.SIDECAR_ID.type>`         | `${{ sidecar.<sidecar_name>.type }}`         |

***

### Manifest expressions <a href="#manifest-expressions" id="manifest-expressions"></a>

| Description            | Harness NG                                          | Harness 3.0                              |
| ---------------------- | --------------------------------------------------- | ---------------------------------------- |
| Manifest Identifier    | `<+manifests.MANIFEST_ID.identifier>`               | `${{ manifests.MANIFEST_ID.id }}`        |
| Manifest Type          | `<+manifests.MANIFEST_ID.type>`                     | `${{ manifests.MANIFEST_ID.type }}`      |
| Manifest Store         | `<+manifests.MANIFEST_ID.store>`                    | `${{ manifests.MANIFEST_ID.store }}`     |
| Manifest Commit ID     | `<+manifests.MANIFEST_ID.commitId>`                 | `${{ manifests.MANIFEST_ID.commit_id }}` |
| Manifest Branch        | `<+manifests.MANIFEST_ID.branch>`                   | `${{ manifests.MANIFEST_ID.branch }}`    |
| Helm Chart Name        | `<+manifests.MANIFEST_ID.helm.name>`                | `${{ manifest.name }}`                   |
| Helm Chart Description | `<+manifests.MANIFEST_ID.helm.description>`         | `${{ manifest.description }}`            |
| Helm Chart Version     | `<+manifests.MANIFEST_ID.helm.version>`             | `${{ manifest.version }}`                |
| Helm API Version       | `<+manifests.MANIFEST_ID.helm.apiVersion>`          | `${{ manifest.api_version }}`            |
| Helm App Version       | `<+manifests.MANIFEST_ID.helm.appVersion>`          | `${{ manifest.app_version }}`            |
| Helm Kube Version      | `<+manifests.MANIFEST_ID.helm.kubeVersion>`         | `${{ manifest.kube_version }}`           |
| Helm Chart URL         | `<+manifests.MANIFEST_ID.helm.metadata.url>`        | `${{ manifest.chart_url }}`              |
| Helm Base Path         | `<+manifests.MANIFEST_ID.helm.metadata.basePath>`   | `${{ manifest.base_path }}`              |
| Helm Bucket Name       | `<+manifests.MANIFEST_ID.helm.metadata.bucketName>` | `${{ manifest.bucket_name }}`            |

***

### Config file expressions <a href="#config-file-expressions" id="config-file-expressions"></a>

| Description                     | Harness NG                                | Harness 3.0                      |
| ------------------------------- | ----------------------------------------- | -------------------------------- |
| Config File Content (as string) | `<+configFiles.getAsString("CONFIG_ID")>` | `${{ files.CONFIG_ID.content }}` |
| Config File Content (base64)    | `<+configFiles.getAsBase64("CONFIG_ID")>` | `${{ files.CONFIG_ID.base64 }}`  |

***

### Secret expressions <a href="#secret-expressions" id="secret-expressions"></a>

| Description          | Harness NG                        | Harness 3.0               |
| -------------------- | --------------------------------- | ------------------------- |
| Secret by Identifier | `<+secrets.getValue("secretId")>` | `${{ secrets.secretId }}` |

***

### Trigger expressions <a href="#trigger-expressions" id="trigger-expressions"></a>

| Description                | Harness NG                                | Harness 3.0                                   |
| -------------------------- | ----------------------------------------- | --------------------------------------------- |
| Trigger Type               | `<+trigger.type>`                         | `${{ trigger.type }}`                         |
| Trigger Source Type        | `<+trigger.sourceType>`                   | `${{ trigger.source }}`                       |
| Trigger Event              | `<+trigger.event>`                        | `${{ trigger.event }}`                        |
| Trigger Payload            | `<+trigger.payload>`                      | `${{ trigger.payload }}`                      |
| PR Number                  | `<+trigger.prNumber>`                     | `${{ trigger.pull_request.id }}`              |
| PR Title                   | `<+trigger.prTitle>`                      | `${{ trigger.pull_request.title }}`           |
| Source Branch              | `<+trigger.sourceBranch>`                 | `${{ trigger.pull_request.source_branch }}`   |
| Target Branch              | `<+trigger.targetBranch>`                 | `${{ trigger.pull_request.target_branch }}`   |
| Git User                   | `<+trigger.gitUser>`                      | `${{ trigger.git.author_name }}`              |
| Commit SHA                 | `<+trigger.commitSha>`                    | `${{ trigger.commit.sha }}`                   |
| Artifact Build             | `<+trigger.artifact.build>`               | `${{ trigger.artifact.build }}`               |
| Artifact Source Connector  | `<+trigger.artifact.source.connectorRef>` | `${{ trigger.artifact.source.connector.id }}` |
| Artifact Source Image Path | `<+trigger.artifact.source.imagePath>`    | `${{ trigger.artifact.source.image_path }}`   |

***

### Codebase expressions <a href="#codebase-expressions" id="codebase-expressions"></a>

| Description      | Harness NG                    | Harness 3.0                          |
| ---------------- | ----------------------------- | ------------------------------------ |
| Branch           | `<+codebase.branch>`          | `${{ codebase.branch }}`             |
| Tag              | `<+codebase.tag>`             | `${{ codebase.tag }}`                |
| Build Type       | `<+codebase.build.type>`      | `${{ codebase.build.type }}`         |
| Commit SHA       | `<+codebase.commitSha>`       | `${{ codebase.sha }}`                |
| Short Commit SHA | `<+codebase.shortCommitSha>`  | `${{ codebase.short_sha }}`          |
| Commit Message   | `<+codebase.commitMessage>`   | `${{ codebase.commit_message }}`     |
| Commit Ref       | `<+codebase.commitRef>`       | `${{ codebase.commit_ref }}`         |
| Repo URL         | `<+codebase.repoUrl>`         | `${{ codebase.repo_url }}`           |
| Source Branch    | `<+codebase.sourceBranch>`    | `${{ codebase.source_branch }}`      |
| Target Branch    | `<+codebase.targetBranch>`    | `${{ codebase.target_branch }}`      |
| PR Number        | `<+codebase.prNumber>`        | `${{ codebase.pull_request.id }}`    |
| PR Title         | `<+codebase.prTitle>`         | `${{ codebase.pull_request.title }}` |
| PR Body          | `<+codebase.pullRequestBody>` | `${{ codebase.pull_request_body }}`  |
| PR Link          | `<+codebase.pullRequestLink>` | `${{ codebase.pull_request_link }}`  |
| State            | `<+codebase.state>`           | `${{ codebase.state }}`              |
| Git User         | `<+codebase.gitUser>`         | `${{ codebase.author_name }}`        |
| Git User Email   | `<+codebase.gitUserEmail>`    | `${{ codebase.author_email }}`       |
| Git User Avatar  | `<+codebase.gitUserAvatar>`   | `${{ codebase.author_avatar }}`      |
| Git User ID      | `<+codebase.gitUserId>`       | `${{ codebase.git_user_id }}`        |
| Base Commit SHA  | `<+codebase.baseCommitSha>`   | `${{ codebase.base_sha }}`           |
| Merge Commit SHA | `<+codebase.mergeSha>`        | `${{ codebase.merge_sha }}`          |

***

### Variable expressions <a href="#variable-expressions" id="variable-expressions"></a>

| Description       | Harness NG                                                      | Harness 3.0                        |
| ----------------- | --------------------------------------------------------------- | ---------------------------------- |
| Pipeline Variable | `<+pipeline.variables.VAR>`                                     | `${{ inputs.VAR }}`                |
| Stage Variable    | `<+stage.variables.VAR>`                                        | `${{ stage.inputs.VAR }}`          |
| Step Output       | `<+pipeline.stages.STAGE.spec.execution.steps.STEP.output.VAR>` | `${{ steps.STEP.outputs.VAR }}`    |
| Stage Output      | `<+pipeline.stages.STAGE.output.VAR>`                           | `${{ stages.STAGE.outputs.VAR }}`  |
| Account Variable  | `<+variable.account.VARIABLE_NAME>`                             | `${{ variable.account.var_name }}` |
| Org Variable      | `<+variable.org.VARIABLE_NAME>`                                 | `${{ variable.org.var_name }}`     |
| Project Variable  | `<+variable.VARIABLE_NAME>`                                     | `${{ variable.var_name }}`         |
