> 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/internal-developer-portal/use-idp/software-catalog/manage-catalog-1/content/manage-catalog/manage-catalog-2o.md).

# Manage Catalog 2o

The **Software Catalog** is a centralized registry for all your software assets, including components, services, websites, libraries, data pipelines, and more. Think of it as a curated directory of all your **entities**, helping you efficiently track ownership, metadata, and dependencies across your entire software ecosystem.

***

### Manage catalog <a href="#manage-catalog" id="manage-catalog"></a>

#### Edit entities <a href="#edit-entities" id="edit-entities"></a>

You can now modify your entities directly from the **Harness IDP UI**, removing the dependency on manually editing the Catalog YAML file in your Git repository. This streamlines the update process and makes entity management much easier.

To edit an entity:

1. Navigate to the **Catalog** and select the entity you want to modify.
2. In the entity details view, click on **Edit** in the top-right corner.

<figure><img src="/files/U7GZqNGZ9mYfGMyVtkKD" alt=""><figcaption></figcaption></figure>

3\. You can update the entity using either the \*\*Visual View\*\* or the \*\*YAML View\*\*. Both views are live-synced, changes made in one will instantly reflect in the other. 4. Click \*\*Save Changes\*\* to apply and save your updates.

**Entity inspector**

You can also view the **entity's YAML** by clicking **"View YAML"** from the entity details screen.

<figure><img src="/files/myDTy50x4GViL3iwarbn" alt=""><figcaption></figcaption></figure>

This opens the **Entity Inspector**, where you can review both the Raw YAML and Raw JSON representations.

<figure><img src="/files/Tt2BvYfprNhCKWzchkJM" alt=""><figcaption></figcaption></figure>

***

#### Delete entities <a href="#delete-entities" id="delete-entities"></a>

You can also **delete** any existing entity from the Software Catalog.

Here is how to do it:

1. Navigate to your **Catalog** and select the entity you want to delete.
2. In the entity details view, click the **three-dot menu** in the top-right corner.
3. From the dropdown, select **Delete**. The entity will be removed from the catalog.

<figure><img src="/files/y72XZWF4Vej0Whn0PZcm" alt=""><figcaption></figcaption></figure>

***

#### Share entities <a href="#share-entities" id="share-entities"></a>

You can also copy the **entity URL** from the same dropdown menu and share it with others, provided they have the necessary access permissions.

<figure><img src="/files/xEl9a5DMHVoLmw3KRJxR" alt=""><figcaption></figcaption></figure>

#### Use scopes & filters <a href="#use-scopes-and-filters" id="use-scopes-and-filters"></a>

With the revamped **Catalog UI**, you can now use various scopes and filters to efficiently track all your applications, services, and other entities. It offers intuitive filtering and a streamlined way to access and manage everything within your Catalog. This update also introduces visibility into scorecard data and scope-level details, right within the Catalog, so you get deeper insights without navigating away.

<figure><img src="/files/NyZQpBrRiCl6JofpLnEG" alt=""><figcaption></figcaption></figure>

***

### Manage catalog UI <a href="#manage-catalog-ui" id="manage-catalog-ui"></a>

The **Catalog table** is an all-in-one view and centralized registry of all your software entities (services, websites, APIs, libraries, etc.). It’s where you can view, manage, and search for software entities and track their ownership, dependencies, and metadata.

This guide details the steps to customize and manage **custom columns** in a Catalog table.

![](/files/bZviBt687UGX4E1HuJkH)

***

#### Customize catalog table UI <a href="#customize-catalog-table-ui" id="customize-catalog-table-ui"></a>

This feature enables you to customize and manage the columns of the Catalog table to meet your requirements. Your Catalog table can be tailored for your team to display the most relevant information for the specific **entity kind** you’re viewing.

**Before you begin**

* Users with **Create/Edit** permissions on the **Layout** resource in Harness IDP, or users with the **IDP Admin** role, can customize the Catalog table UI. Go to [Scopes, Roles & Permissions](/internal-developer-portal/admin-and-customization/rbac/scopes.md#permissions--resources-idp-20) to learn more about configuring these permissions.

**Customize columns**

To customize the columns of the Catalog table, go to your **Catalog** view and click **Customize Columns** in the top-right corner. Each customization view in the Catalog table is tied to a specific entity `kind`. This means every **entity kind** has its own unique **customization view**, allowing different column configurations for different entity kinds.

![](/files/FgsZyfNrF7E1DweKatvo)

Follow these steps to customize columns:

1. Select the entity kind you want to customize from the top filters.
2. Click **Customize Columns**.
3. Customize columns in the following ways:
   * **Reorder Columns:** Drag and drop columns to reorder them. You can also reorder columns by opening **Manage Columns** (top-right of the table) and dragging the column name.
   * **Hide/Show Columns:** Toggle the visibility of columns. Click any visible column in the table and select **Hide**. You can also control visibility in **Manage Columns** by checking/unchecking the column name.
   * **Pin Columns:** Pin columns to the left side of the table to keep them visible while scrolling. Click the column and select **Pin**. You can pin up to three columns. You can also pin columns in **Manage Columns** by clicking the pin icon next to the column name.
   * **Resize Columns:** Adjust column widths by dragging the divider on the column header.
4. Click **Save Changes** to save the customization view.

{% hint style="info" %}
Ensure to edit and save the customization view for each entity kind you want to modify. Changes apply only to the entity kind that’s currently selected.
{% endhint %}

{% embed url="<https://app.tango.us/app/embed/a790a86e-3665-4cf5-bf2e-fbe2e4a93e75>" %}
Customize Catalog Table Columns
{% endembed %}

**Add custom columns**

You can define custom columns in the Catalog table using entity metadata. This feature lets you add columns based on custom Catalog properties.

Follow these steps to add custom columns to your Catalog table:

1. Select the entity kind you want to customize from the top filters.
2. Click **Customize Columns** → **Manage Columns**.
3. Scroll down and click **Create new column** at the bottom of the card.
4. Provide the following details:
   * **Catalog Custom Property**: Enter the custom property to display in the column, for example, `spec.lifecycle` or `metadata.description`.
   * **Column Name**: Enter the name that will appear in the table.
   * **Data Type**: Select the data type of the custom property. Supported types:
     * `String`
     * `Number`
     * `URL`
   * **Column Description** (optional): Enter a description for the column.
5. Select the checkbox at the bottom if you want the column to be shown in the table.
6. Click **Save Changes** to save the custom column.

You can also edit or delete custom columns in the same **Manage Columns** view. Click the **Edit** or **Delete** icons next to the custom column name to modify it.

{% embed url="<https://app.tango.us/app/embed/20361426-54e3-4e9c-a2e2-c1fe74445899>" %}
Add and Manage Custom Columns
{% endembed %}

***

#### Understand catalog entity UI <a href="#understand-catalog-entity-ui" id="understand-catalog-entity-ui"></a>

Whenever you register an entity in your software catalog, you can view all its details from the Catalog Entity page in your Harness IDP UI. Every section on the entity page is uniquely designed to present the most relevant information for the specific type of entity you are viewing.

For a full reference of all tabs, cards, and integration signals available on the entity details page, go to [Entity Details Page](/internal-developer-portal/use-idp/software-catalog/create-entity/entity-details.md).

Here’s how to access the catalog entity details page:

1. In your Harness IDP, navigate to **Catalog**.
2. Select the entity you want to view. You’ll be redirected to the entity details page.

![](/files/pq2m4L7KQqZy8UjRnli6)

The Catalog Entity Details Page is divided into multiple **tabs**, each showing different **components**, **cards**, and **views** relevant to that entity.

* Each **tab** represents a specific section.
* You can **customize and edit** tabs by modifying the entity layout.
* All views inside a tab are powered by **out-of-the-box components** like the "About Card," "Scorecard Card," and the Plugins configured for your instance.

![](/files/5FpZafnacTIASxewarvd)

When you enable a plugin (or create a custom one), you can choose where the plugin’s components appear by modifying the Layout YAML of the catalog entity.

* When a plugin is enabled, the default layouts are auto-updated.
* You can always make changes manually by checking the exported UI components from that plugin (documented under each plugin's section).

***

#### Manage catalog entity UI <a href="#manage-catalog-entity-ui" id="manage-catalog-entity-ui"></a>

You can manage and edit Catalog Entity UI layouts directly using the **Layout Editor**.

* Each Catalog Layout is uniquely designed for a specific `Kind` and `Type` of application.
* Learn more about `Kinds` in the Catalog YAML documentation and understand the **System Model** for different use-cases.

![](/files/yzPrxSuWJCbroNHBJUCf)

For example:

* A typical microservice will have `kind: Component` and `spec.type: service`.

> Note: Entity kinds (such as Component, API, Resource) are fixed. However, you can create any arbitrary **types** under them (e.g., `spec.type: micro-frontend`).

**Use the layout editor**

**Access the layout editor**

{% tabs %}
{% tab title="Interactive guide" %}
{% embed url="<https://app.tango.us/app/embed/f0f1e522-bc37-430c-b5f5-ab82d8afb649>" %}
Accessing the Layout Editor
{% endembed %}
{% endtab %}

{% tab title="Step-by-step" %}

1. In Harness IDP, go to **Configure** → **Layout**.
2. Select **Catalog Entities**.
3. Choose the **Entity Kind** you want to modify.
4. Layouts are organized by:
   * `Kind` (e.g., Component)
   * `Type` (e.g., service, website)
   * A **default layout** acts as a fallback if a specific type layout isn’t defined.
     {% endtab %}
     {% endtabs %}

**Create a new layout**

{% tabs %}
{% tab title="Interactive guide" %}
{% embed url="<https://app.tango.us/app/embed/d3d0ca5a-85eb-4b78-87fd-00bee8f57688>" %}
Accessing the Layout Editor
{% endembed %}
{% endtab %}

{% tab title="Step-by-step" %}

1. Duplicate an existing layout or click **New Catalog Layout**.
2. Select the **Entity Kind** and **Entity Type** this layout will apply to.
3. Click **Continue** to create the new layout.
4. Start editing the Layout YAML to configure it.
   {% endtab %}
   {% endtabs %}

**Edit an existing layout**

1. In the Layout Editor, select the relevant **Entity Kind** and **Entity Type**.
2. Click **Edit Layout** and modify the YAML.

![](/files/zHFL5cdZP0zPyuK9ju6B)

{% hint style="info" %}
**View Applied Entities:**\
You can see which entities a specific layout applies to by clicking **View Applied Entities**.
{% endhint %}

***

**Understand layout YAML**

Entity Page Layouts are defined in a hierarchical structure, starting with the `page` key, which represents the entity page. Each `page` consists of `tabs`, an array that controls the rendered tabs for the entity page.

| Key         | Description                                                        |
| ----------- | ------------------------------------------------------------------ |
| `page`      | Represents the entity page configuration.                          |
| `tabs`      | Defines the tabs shown on the entity page.                         |
| `contents`  | Specifies components rendered inside each tab.                     |
| `component` | Defines an individual component.                                   |
| `specs`     | Contains additional configurations for the component.              |
| `props`     | Properties for the component.                                      |
| `gridProps` | Grid settings for arranging components.                            |
| `cases`     | (Specific to `EntitySwitch`) Conditional rendering based on logic. |

***

**Example: Entity layout YAML**

```yaml
page:
  name: EntityLayout
  tabs:
    - name: Overview
      path: /
      title: Overview
      contents:
        - component: EntityOrphanWarning
        - component: EntityRelationWarning
        - component: EntityProcessingErrorsPanel
        - component: EntityAboutCard
          specs:
            props:
              variant: gridItem
            gridProps:
              md: 6
        ...
    - name: ci-cd
      path: /ci-cd
      title: CI/CD
      contents:
        ...
    - name: Deps
      path: /dependencies
      title: Dependencies
      contents:
        ...
    - name: TechDocs
      path: /docs
      title: Docs
      contents:
        ...
```

***

#### Advanced use cases <a href="#advanced-use-cases" id="advanced-use-cases"></a>

**Add links**

You can also add a list of **external hyperlinks** related to the entity on the catalog entity's UI page. **Links** can provide additional contextual information that may exist outside of Harness itself, such as an admin dashboard or an external CMS page.

Here’s how **"Links"** show up in your Catalog entity details page. The **Links Card** serves as a navigational tool, and these links can point to anything. Here are some examples:

* User and Group Management
* Infrastructure and Cloud
* Operational Dashboards
* Support and Help
* General Web and Information
* Notifications and Alerts and more, serving as quick bookmarks for developers corresponding to the entity.

![](/files/Qm5Mruf4CkAx5kQD9q2Y)

You can add links for an entity by using the `metadata.links` field in your Catalog YAML. Here is the list of fields required:

| Field   | Type              | Description                                             |
| ------- | ----------------- | ------------------------------------------------------- |
| `url`   | String            | Destination URL.                                        |
| `title` | String            | Display name for the link.                              |
| `icon`  | String (Optional) | Icon name from [SimpleIcons](https://simpleicons.org/). |

Here’s how you can add links in your catalog entity page:

1. Go to your **Catalog**, and select the entity you want to add links for.
2. Click on the **Edit** button and switch to the **YAML view** to edit the YAML. ![](/files/U7GZqNGZ9mYfGMyVtkKD)
3. Add a `links` reference in your entity YAML under the `metadata` field. You can refer to the Example YAML for the `links` reference.

**Example YAML:**

```yaml
metadata:
  name: artist-lookup
  links:
    - url: https://example.com/user
      title: Example User
      icon: user
    - title: Prometheus
      url: https://example.com/prometheus
      icon: prometheus
    ...
```

**Add an additional info card**

You can add an **Additional Info Card** to display additional details about the catalog entity on the **"Overview"** page. You can populate this card using the catalog entity's YAML metadata for fields like apiVersion, kind, metadata, and spec, including additional values ingested.

![](/files/iIlTzQLYU9yFUVN49sNd)

**Additional info in `metadata`**

To add custom information beyond the default root fields, use the `additionalInfo` key under `metadata`. This supports adding key-value pairs, with the value sourced dynamically.

**Example:**

```yaml
metadata:
  name: demo-catalog-datasource
  additionalInfo:
    onShoreTeamLead: Jane Doe
    offShoreTeamLead: Dan John
```

**Use this card in layout editor**

You can refer to the detailed demo linked here.

Here are the steps to add the Additional Info Card:

1. Go to the **Layout Editor** and choose the entity kind where you want to add the additional info card.
2. Add the `EntityAdditionalInfoCard` component as shown below:

```yaml
- component: EntityAdditionalInfoCard
  specs:
    props:
      title: Additional Info Card
      headerItems:
        - icon: SaveRounded
          label: Save Details
          url: https://artifactregistry.com
      items:
        - label: On-Shore Team Lead
          value: <+metadata.additionalInfo.onShoreTeamLead>
          type: string
          style:
            bold: true
        - label: Off-Shore Team Lead
          value: <+metadata.additionalInfo.offShoreTeamLead>
          type: string
          style:
            bold: true
    gridProps:
      md: 6
```

All the fields mentioned here support sourcing data from the `catalog-info.yaml` file as strings.

**items:**

Contains information sourced from `catalog-info.yaml`:

* `label:` A `string` providing information about the value being displayed.
* `value:` The value to display against the added label, typically sourced from `catalog-info.yaml`.
* `type:` Defaults to `string`, but also supports `link` type.
* `style:` Used for text styling, as demonstrated in the example above.

**headerItems (optional):**

Contains information to be displayed in the header section of the card:

* `icon:` Supports any Material icon.
* `url:` Adds a `link` to the Material icon.
* `label:` A `string` providing information about the icon.

***
