# Pipelines

Overview&#x20;

A Pipeline in Condense is the visual and functional representation of data flow between deployed connectors, transforms, and utilities inside a workspace. \
It is automatically materialized when a connector or transform is deployed and configured with its environment parameters. \
The pipeline canvas displays these deployed components as blocks, with lines between them representing live topic-based data flows.&#x20;

Pipelines help:&#x20;

* Visualize and manage real-time event flows&#x20;
* Understand relationships between sources, processing steps, and sinks&#x20;
* Monitor the state of each component in the context of the overall data flow&#x20;
* Ensure that topic connections between components are correctly mapped

## How Pipelines Work in Condense&#x20;

* Auto-Materialization: A pipeline is not manually created. It appears automatically when at least one connector or transform is deployed in a workspace.&#x20;
* Canvas Representation:&#x20;
* Each deployed connector, transform, or utility appears as a block.&#x20;
* Lines between blocks are drawn based on matching output topics (from one block) to input topics (of another block).&#x20;
* Multiple blocks can publish to or subscribe from the same topic, enabling branching or merging flows.&#x20;
* Execution Model:&#x20;
* Each block operates independently, processing messages from Kafka topics.&#x20;
* There is no central “pipeline engine”; data movement follows Kafka’s publish–subscribe model.&#x20;
* The pipeline view is a real-time reflection of deployed components and their topic mappings.&#x20;

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/MYbXMdE9HzeEKJCMupng/image.png" alt=""><figcaption></figcaption></figure></div>

## Configuring Components in a Pipeline&#x20;

To have a component appear in the pipeline:&#x20;

1. Configure the Connector or Transform&#x20;
   1. Provide environment variables (connection endpoints, credentials, topic mapping, etc.).&#x20;
   2. Configure authentication if required (API keys, tokens, certificates).&#x20;
   3. Define input and/or output topics.&#x20;
2. Deploy the Component&#x20;
   1. Once deployed, the component block will appear on the pipeline canvas.&#x20;
   2. If its output topic matches the input topic of another deployed component, Condense will draw a connection line.&#x20;

## Updating a Pipeline&#x20;

When you update any deployed component:&#x20;

* Adding a Component&#x20;
  * A new block is added to the canvas after deployment.&#x20;
  * Any topic that matches existing blocks will automatically create new connections.&#x20;
* Changing Topic Configuration&#x20;
  * New matches: Additional connections are drawn between blocks.&#x20;
  * Removed matches: Lines are removed if topics no longer align.&#x20;
* Deleting a Component&#x20;
  * Removes the block from the canvas.&#x20;
  * Associated Kafka topics remain unless explicitly deleted in the configuration.&#x20;

## Viewing Component Details&#x20;

Clicking a block on the pipeline canvas opens its Component Detail Panel, which provides:&#x20;

* Status: Running, stopped, error state&#x20;
* Version: Active code or configuration version&#x20;
* Topics: Subscribed (input) and published (output) topics&#x20;
* Metrics: Throughput, error counts, processing latency&#x20;
* Logs: Recent operational logs for troubleshooting&#x20;
* Actions: Restart, redeploy, edit configuration, or delete&#x20;

## Key Features <a href="#id-2.-key-features" id="id-2.-key-features"></a>

### **Node Details Panel**

When a node (e.g., a connector transform) is clicked, a detailed section opens with:

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/H25z0XhRpHBV8KxHRFq0/image.png" alt=""><figcaption></figcaption></figure></div>

* **Connector Information**: Name, category, type, and status (e.g., `Teltonika` as a `Input` connector with category as `Telematics Device` type and status as `Running` ).
* **Kafka Topic Information**: Input and output topics configured by the user for the deployment of the connector.

### **Real-Time Monitoring**

* Displays real-time metrics for each node, such as resource utilization (memory and CPU utilization).

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/tJACuR1NxwHXVhkB5b0C/image.png" alt=""><figcaption></figcaption></figure></div>

* Visual indicators (e.g., colour-coded status for running, stopped, etc ) to quickly identify issues

<figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/iahIGiDqyU9mfcWJ2uH8/image.png" alt=""><figcaption></figcaption></figure>

### **Logs and Debugging**

* Access detailed logs for each node to track activities and troubleshoot issues.
* It supports **real-time log streaming** with customizable intervals (e.g., 5 seconds by default) and allows users to **play**, **stop**, and **control** the flow of logs for better monitoring and debugging.

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/pcU2LRWE74EcI6zcrNtz/image.png" alt=""><figcaption></figcaption></figure></div>

### **Edit Configurations of deployed connectors / Transforms**

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/HexceZt75hNCXypXoc37/image.png" alt=""><figcaption></figcaption></figure></div>

After a system or pipeline is deployed, issues or bugs may be discovered that require adjustments to ensure smooth operation. The **Edit Configurations** functionality allows users to resolve these problems by correcting misconfigurations.

#### **Types of Edit Configurations**

Edit Configurations are categorized into two distinct types, each serving specific use cases:

#### **Edit Configurations for Custom Transform as a Connector**

Step 1: Accessing the Edit Configuration Page

1. Navigate to the **Pipeline** section where the **custom transform** connector is deployed.
2. Click on the **custom transform** connector card that you want to “Edit”.
3. Click on the **Edit Configuration** tab to make changes.

Step 2: Editing the Configuration Fields

1. All the configurations associated with the custom transform connector are populated.
2. Make changes to the configuration field values as required.

{% hint style="info" %}

#### Example

\
**Title**

The current title is set to **data-validator**. If you need to change the title, enter the new title in the **Title** field.

\
**Port Number**

The current port number is set to **9000**. If you need to change the port number, enter the new port number in the **Port Number** field.
{% endhint %}

Step 3: Saving or Cancelling Changes

**Save Changes**:

If you are satisfied with the changes, click the **Save Changes** button to apply the new configurations. Note that once you save, the previously added configurations will be overwritten.

**Cancel**

If you do not wish to save the changes, click the **Cancel** button to exit without making any modifications.

#### **Edit Configurations for Telematics Device Type**

Step 1: Accessing the Edit Configuration Page

1. Navigate to the **Pipeline** section where the **telematics device type** connector is deployed.
2. Click on the **telematics device type** connector card that you want to “Edit”.
3. Click on the **Edit Configuration** tab to make changes.

Step 2: Editing the Configuration Fields

1. All the configurations associated with the telematics device type connector are populated.
2. Make changes to the configuration field values as required.

{% hint style="info" %}
**Example**&#x20;

**Title**

The current title is set to **data-validator**. If you need to change the title, enter the new title in the **Title** field.

**Output Topic**

The current output topic is set to **user data**. If you need to change the output topic, enter the new output topic in the **output topic** field.
{% endhint %}

Step 3: Saving or Cancelling Changes

**Save Changes**

If you are satisfied with the changes, click the **Save Changes** button to apply the new configurations. Note that once you save, the previously added configurations will be overwritten.

**Cancel**

If you do not wish to save the changes, click the **Cancel** button to exit without making any modifications.

### **Delete Connector**

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/rwKRGO3QthZ6EMqqYblg/blobs/iZjx02dJviwHnyg6IDPk/image.png" alt=""><figcaption></figcaption></figure></div>

The **Delete Connector** functionality allows users to remove a connector that is no longer needed or is causing issues in the pipeline. However, deleting a connector can have significant consequences, including:

1. **Disruption of Data Flow**: Removing a connector may break the flow of data in the pipeline, affecting downstream processes and applications.
2. **System Integrity**: Deleting a connector without proper consideration can lead to errors or failures in deployed applications that rely on the connector.
3. **Resource Cleanup**: Deleting unused or obsolete connectors helps free up system resources, such as memory and CPU, improving overall system performance.

### **Steps to Delete a Connector**

Step 1: Access the Connector Information\
Navigate to the **Pipeline** section where the connector that you wish to delete is listed.

Step 2: Confirm the Connector to Delete\
Click on the **Delete Connector** option associated with the connector.

Step 3: Review the Warning Message

{% hint style="danger" %} <mark style="color:red;">**A warning message will appear, stating:**</mark>\
\
"***Are you sure you want to delete the connector Title?***"\
\
"***If you delete the Connector title, you might break the flow of data in the pipeline and might cause problems in your deployed applications.***"
{% endhint %}

Carefully read the warning to understand the potential impact of deleting the connector.

#### Step 4: Proceed or Cancel  **Delete Connector** If you are certain that deleting the connector will not affect your system, click **Delete Connector** to proceed.

**Cancel**\
If you are unsure or want to reconsider, click **Cancel** to abort the deletion process.

## Roles and Permissions in Pipelines&#x20;

Only workspace members with appropriate roles can modify pipelines:&#x20;

|                 Operation                |                                                                                                                          Admin                                                                                                                         |                                                                                                                       Maintainer                                                                                                                       |                                                                                                                        Developer                                                                                                                       |                                                                                                                         Viewer                                                                                                                         |
| :--------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|        Deploy pre-built connectors       | <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 custom connectors/transforms   | <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"> |
| Configure deployed connectors/transforms | <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"> |
|        Delete deployed components        | <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 pipelines and connections      | <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"> |
|     View component logs/configuration    | <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 Pipelines&#x20;

From the pipeline view, you can:&#x20;

* See the health status of each component&#x20;
* Inspect live throughput and latency metrics&#x20;
* Identify broken or disconnected topic links&#x20;
* Access logs for deployed connectors and transforms&#x20;
* Track active vs. idle topic flows&#x20;

## Best Practices&#x20;

* Use clear topic naming to make the pipeline canvas self-explanatory.&#x20;
* Group related connectors and transforms logically to simplify understanding.&#x20;
* Avoid unused topic links to reduce visual clutter.&#x20;
* Regularly check component logs to catch issues early.&#x20;
* Document the pipeline purpose in the workspace for long-term maintainability.&#x20;

## Common Pitfalls and How to Avoid Them&#x20;

1. Misaligned Topic Names \
   **Avoidance**: Double-check topic mappings in each component’s configuration to ensure intended connections appear.&#x20;
2. Unused Components Left Running \
   **Avoidance**: Remove or disable unused connectors and transforms to prevent unnecessary processing and costs.&#x20;
3. Overcrowded Canvas \
   **Avoidance**: Use multiple workspaces or separate flows logically when a single pipeline becomes visually dense.&#x20;

## Related Links&#x20;

* [Connectors](https://docs.zeliot.in/condense/v2.4.0/condense-guide/condense-core/deploy-an-input-connector)&#x20;
* [Transforms & Utilities ](https://docs.zeliot.in/condense/v2.4.0/deep-dive/transforms)
* [Workspace](https://docs.zeliot.in/condense/v2.4.0/condense-guide/condense-core/create-your-workspace) &#x20;
* [RBAC](https://docs.zeliot.in/condense/v2.4.0/condense-guide/condense-console/roles-and-permissions) &#x20;
