# Deploy a Custom Transform

### Overview

A **Custom Transform** in Condense is a fully code-based processing component that you build in the built-in IDE, version-control through Git, and deploy into a workspace pipeline. Unlike prebuilt transforms, custom transforms let you implement domain-specific logic, advanced event processing, and cross-event correlation in any programming language supported by the Condense IDE.

Once built and published, a custom transform appears alongside prebuilt transforms in the pipeline editor and is ready to deploy.

{% hint style="info" %}
Custom transforms are created through **Applications** in Condense — the built-in development environment where you write, build, and publish your logic before it becomes deployable.
{% endhint %}

***

### What You Can Do with a Custom Transform

* Implement domain-specific rules, enrichment, or routing not covered by prebuilt options.
* Write logic in any programming language supported in the Condense IDE.
* Perform advanced processing, cross-event correlation, or domain-specific analytics.
* Version-control all logic through Git, with immutable published versions.
* Roll back to earlier versions at any time from the pipeline editor.

***

### Custom Transform Lifecycle

Every custom transform follows this lifecycle:

**Create → Develop → Build → Publish → Deploy → Update/Rollback → Delete**

***

### Step 1 - Create an Application

{% hint style="info" %}
**Who can create:** Workspace Admins, Maintainers, Developers
{% endhint %}

1. Go to **Applications** in your workspace → click **Create Application**.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FBkKjp236GPNazIcMwR0f%252Fimage.png%3Falt%3Dmedia%26token%3D7c45e62e-65db-4f32-ab37-98a82982fac4&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=a04f072c&#x26;sv=2" alt="Create Application screen"></div>

2. **Version Control**: Connect a Git provider (GitHub / GitLab / Bitbucket), then select your **Repository** and **Branch**.
3. **Application Info**: Fill in the following fields:

| Field               | Description                                                                | Required |
| ------------------- | -------------------------------------------------------------------------- | -------- |
| Application Name    | Unique name within the workspace (3–63 characters, lowercase letters only) | Yes      |
| Publish as a custom | Select **Transform** (not Input/Output Connector)                          | Yes      |
| Version             | Human-readable version label e.g. `v1`, `v1.1.0`                           | Yes      |
| Expiry              | Draft retention period — drafts are auto-cleaned after this                | Yes      |
| About               | Optional description shown in details and summaries                        | No       |

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FhZYMRXzZyo2lzXoz0w1u%252Fimage.png%3Falt%3Dmedia%26token%3D360c5bad-e411-4bf0-989d-a0aca71f6ee1&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=5221b2a6&#x26;sv=2" alt="Application Info Fields"></div>

4. Click **Develop Application** to open the IDE.

***

### Step 2 - Develop in the IDE

{% hint style="info" %}
**Who can edit drafts:** Admins, Maintainers, Developers
{% endhint %}

The IDE has the following structure:

| Element              | Description                                              |
| -------------------- | -------------------------------------------------------- |
| File Explorer (left) | Navigate and manage your project files                   |
| Code Editor (center) | Write code with inline linting and error highlighting    |
| ENVs panel (side)    | Set runtime configuration — secrets are masked           |
| Publish tester       | Send a test message to a workspace topic                 |
| Subscribe tester     | Fetch messages from a workspace topic to validate output |
| Build Application    | Opens the image name and tag dialog                      |

**In the IDE, you can:**

* Navigate and edit code via File Explorer and Code Editor.
* Configure ENVs (environment variables) for build/runtime.
* Optionally enable **Expose HTTP(s) Server** or **Expose TCP Server** for local testing.
* Validate topic flow with **Publish** and **Subscribe** testers.
* Commit and push to the connected Git repository.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FnrLuC9RQGPwFKMj51sNS%252Fimage.png%3Falt%3Dmedia%26token%3Ddce6d6b1-b9eb-4fc0-8ee4-01cbc9988f15&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=efcef521&#x26;sv=2" alt="IDE screen"></div>

**Best practice:** Use Publish/Subscribe testers before building to catch schema or mapping issues early. {% endhint %}

***

### Step 3 - Build the Application

**Who can build:** Admins, Maintainers, Developers

1. Click **Build Application**.
2. Enter the **Docker Image Name** (registry path, e.g. `registry/acme/my-transform`) and **Tag** (e.g. `v1.0.0`).
3. Click **Start Build** and monitor the **Build Logs** in real time.
4. If the build fails, review the error output, fix code/ENVs/Dockerfile, and rebuild.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252Fz1MnLXcILEJTZj9v7mvX%252Fimage.png%3Falt%3Dmedia%26token%3D3524570d-7c2b-4f93-bcf4-36ac8611108a&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=a7ce9f4&#x26;sv=2" alt="Build Application Dialog Box"></div>

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FKAHVfGFKT5P9tsg7czxg%252Fimage.png%3Falt%3Dmedia%26token%3D60a72788-6af3-4b08-80d6-83c4c1d6c0ed&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=374105fe&#x26;sv=2" alt="Build Logs Screen"></div>

{% hint style="info" %}
**Build tips:**

* Use a fully qualified image name for external registries.
* Some registries enforce lowercase tags - prefer lowercase alphanumerics, dots, and dashes.
* Pass secrets via ENVs; do not bake them into the image.&#x20;
  {% endhint %}

***

### Step 4 - Publish the Application

{% hint style="info" %}
**Who can publish:** Admins, Maintainers
{% endhint %}

1. Click **Publish Application**.
2. Confirm **Publish as a custom**: select **Transform**.
3. Confirm the **Version** and add optional release notes.
4. Click **Publish**.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FLCmB1ewnMBT6k7fSNAud%252Fimage.png%3Falt%3Dmedia%26token%3D454f2740-7c87-49a8-b359-0f5411e9116c&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=7b6545b7&#x26;sv=2" alt="Publish Application Screen"></div>

Once published, the custom transform appears in the **Transforms → Custom** section of the pipeline editor and is ready to deploy.

{% hint style="warning" %}
Published versions are **immutable**. To change logic, you must edit the code, rebuild, and publish a new version.
{% endhint %}

***

### Step 5 - Deploy to the Pipeline

{% hint style="info" %}
**Who can deploy:** Workspace Admins, Maintainers
{% endhint %}

1. Go to the **workspace pipeline editor**.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FvQrFUvuumUjUrL2OB6JS%252Fimage.png%3Falt%3Dmedia%26token%3Dbd8c76d5-f424-47b3-878a-68e98cf5ca2b&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=fdb6e556&#x26;sv=2" alt="Pipeline Editor"></div>

2. Click **Add Transform**.
3. Select **Custom** category → choose your published application and version.
4. Configure ENVs and parameters.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FG5fgdg2KkMUabii8krPC%252Fimage.png%3Falt%3Dmedia%26token%3Dad626fcb-8b40-4f93-977f-b8c7b54a76a0&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=601f60c0&#x26;sv=2" alt="Configure Transform"></div>

5. Click **Save and Deploy**.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FqWLNIQKN1YxxYFTVI0Fx%252Fimage.png%3Falt%3Dmedia%26token%3D59a6f6b4-013a-459d-b43e-c2425d27c3cc&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=e97501d0&#x26;sv=2" alt="Deployed Transform"></div>

***

### Step 6 - Update or Roll Back a Version

To update the logic of a deployed custom transform:

1. Go to **Applications** in the workspace.
2. Edit the application code in the IDE.
3. Rebuild and publish a **new version**.
4. In the pipeline editor, select the deployed transform block → click **Edit** → switch the **Version** to the new release.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FAhnRuC6J5Akn9GYesyrA%252Fimage.png%3Falt%3Dmedia%26token%3D6dcd1936-842a-4a6f-9bde-e92c8b713ebe&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=2be55e6b&#x26;sv=2" alt="Edit Deployed Transform"></div>

To **roll back**, simply select an older published version from the Version dropdown - no rebuild is needed.

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252F8XdoQl92fiRjZBcIQwXX%252Fimage.png%3Falt%3Dmedia%26token%3Dcaa10038-8c1a-48c6-a4af-7fb02f237b10&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=4b6c0a1&#x26;sv=2" alt="Adding a New Version"></div>

***

### Roles and Permissions

| Operation                      |                                                                                                                          Admin                                                                                                                         |                                                                                                                       Maintainer                                                                                                                       |                                                                                                                        Developer                                                                                                                       |                                                                                                                         Viewer                                                                                                                         |
| ------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Create application             | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Edit code / ENVs               | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Build application              | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Publish application            | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Deploy transform to pipeline   | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Edit deployed transform config | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| Delete transform / application | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fr2zbjtbFoQojuTTPJ3Rg%2Fimage.png?alt=media&#x26;token=c1acde9c-43f4-4e3d-b218-a1a79a744a2a" alt="" data-size="line"> |
| View transform list / config   | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> |
| Access transform logs          | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> | <img src="https://3716651141-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrwKRGO3QthZ6EMqqYblg%2Fuploads%2Fvzb7BqqdPegDEdjO8T5c%2Fimage.png?alt=media&#x26;token=bb9b9c73-cbc2-40f9-8453-37cdfa98fb04" alt="" data-size="line"> |

***

### Monitoring and Audit

In the pipeline view, click on a deployed transform block to open its detail page. Here you can view:

* **Status** (active, error)
* **Execution metrics** (throughput, processing latency, error rate)
* **Resource utilization** metrics
* **Version history** for each transform
* **Activity logs** for creation, modification, and deletion events
* **Runtime logs** (stdout/stderr) via the Logger/observability stack

<div data-with-frame="true"><img src="https://docs.zeliot.in/condense/~gitbook/image?url=https%3A%2F%2F1775139360-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvbacpakLuL4x2VBp2174%252Fuploads%252FekkU1DRmwUXQYZcWWPa4%252Fimage.png%3Falt%3Dmedia%26token%3Dc38bbd1e-4763-4eec-9646-04b5d8f8cea9&#x26;width=768&#x26;dpr=3&#x26;quality=100&#x26;sign=5a150f53&#x26;sv=2" alt="Monitoring Deployed Transform"></div>

***

### Best Practices

* Keep each application focused on a **single responsibility** for simpler testing and review.
* Use **ENVs** over hardcoding - configure ports, credentials, and endpoints via environment variables.
* Map Git branches to deployment stages: `dev`, `staging`, `main`.
* Align Version labels, image tags, and Git tags/commits for full traceability.
* Always **test using Publish/Subscribe** testers before building.
* Keep custom transform logic **modular and version-controlled** in Git.
* Regularly review **transform performance metrics** to detect bottlenecks early.

***

### Common Pitfalls

| Problem                                      | Cause                                            | How to Avoid                                                                |
| -------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------- |
| Published transform not visible in pipeline  | Wrong publication type selected                  | Always confirm **Transform** (not Input/Output Connector) before publishing |
| Unreachable HTTP/TCP during testing          | Server not exposed or wrong port binding         | Enable the correct toggle and match the port ENV in code                    |
| "No messages yet" in Subscribe               | Topic/partition/offset mismatch                  | Use First/Last/Size presets and verify topic and partition                  |
| Build failures due to missing dependencies   | Dependencies not in project config               | Add to dependency file (e.g. `requirements.txt`) and rebuild                |
| Runtime errors after deleting an application | Active pipeline still references the application | Update or remove dependent pipeline deployments first                       |

***
