Skip to content
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ This is a step-by-step guide for Platform Engineers to onboard IDP. Your mileage
- *Docs and Tutorials for Reference:* [List of curated plugins supported in the Internal Developer Portal](https://developer.harness.io/docs/category/available-plugins)
8. **Your First Scorecard**
1. Create a “Catalog Readiness” Scorecard which can help you ensure that the Catalog entries are fully updated and all annotations required by the Plugins are set
- *Docs and Tutorials for Reference:* [Getting Started with Scorecards](https://developer.harness.io/docs/internal-developer-portal/get-started/scorecard-quickstart)
- *Docs and Tutorials for Reference:* [Getting Started with Scorecards](https://developer.harness.io/docs/internal-developer-portal/scorecards/scorecard-quickstart)
9. **Invite your early users ✉️**
1. Send invites to 10-20 users that you have identified as early adopters. Collect feedback
10. **Setup Metadata Ingestion**
Expand Down
321 changes: 18 additions & 303 deletions docs/internal-developer-portal/get-started/catalog-2o.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import DocImage from '@site/src/components/DocImage';
import DocVideo from '@site/src/components/DocVideo';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

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

Let's start by adding your software components to IDP. To do this, create a `catalog-info.yaml` file in your Git repository and register its URL to add the component to your catalog.

<DocVideo src="https://www.youtube.com/embed/YgtIMDGMzJE?si=AYnisVn-lHX-4STw" />

## Create a new catalog-info.yaml (IDP 1.0)

1. To add a software component, you need to create a `catalog-info.yaml` file in its repository. In the case of a mono-repo, this file should be created at the root of the repository. While the file can technically reside anywhere (e.g., `.harness/catalog-info.yaml`), placing it in a standard location ensures consistency. You can use the following YAML code as a template:

```YAML
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: my-new-service
description: Description of my new service
tags:
- java
links:
- url: https://admin.example-org.com
title: Admin Dashboard
icon: dashboard
type: admin-dashboard
spec:
type: service
lifecycle: production
owner: team-a
system: project-x
```

Following are the key fields that you must update:

- `metadata.name`. This should be a unique name for your component. Usually, it is the name of the service.
- `metadata.description` - A description for your new component.
- `spec.type` - The new software component could be a `service`, `library`, `website`, or any other type.
- `spec.owner` - The user group identifier of the team that owns the component.

2. Once the file is created in your Git repo, copy the full URL to the file. For example, `https://github.com/harness-community/idp-samples/blob/main/catalog-info.yaml`.

## Register the software component (IDP 1.0)

1. Next, navigate to your Harness IDP module, and from the left navigation menu, select **Register**.

<DocImage path={require('./static/register-url.png')} />

<Tabs queryString="Git-Provider">
<TabItem value="other-git-provider" label="Other Git Providers">

2. Enter the URL to your new `catalog-info.yaml`.

<DocImage path={require('./static/url-on-register-page.png')} />

</TabItem>
<TabItem value="harness-code-repo-enabled" label="Harness Code Repository">

2. Copy the URL for `catalog-info.yaml` and paste it on the field to Register the component.

<DocImage path={require('./static/register-software-component-hcr.gif')} />

</TabItem>
</Tabs>

3. Select **Import**.

<DocImage path={require('./static/finished-state.png')} />

The new component will be available in your catalog.

<DocImage path={require('./static/imported-entity.png')} />

## Delete/Unregister Software Components (IDP 1.0)

1. Navigate to the Catalog page and select Component under Kind. Here, we will deregister the software component registered above.

<DocImage path={require('./static/navigate-componenet-new.png')} />

2. Select the component name you want to Unregister from the list
3. Now on the component overview page, click on the 3 dots on top right corner and select **Unregister Entity**.

<DocImage path={require('./static/unregister-entity.png')} />

4. Now on the Dialog box select **Unregister Location**.

<DocImage path={require('./static/unregister-location.png')} />

5. This will delete the software component.

## Troubleshooting (IDP 1.0)

#### Failed to register

If, after registering an entity, you're unable to find the same in your catalog, check the Devtools Plugin for Unprocessed Entities. If it's under the **Pending** tab, wait a few minutes for registration to complete. If it's under the **Failed** tab. Try re-registering the entity.

<DocImage path={require('./static/devtools.png')} />

#### Missing required fields/Invalid YAML schema.

In case of a `InputError`, check for `missingProperty` details and add the required property to your `catalog-info.yaml`.

<DocImage path={require('./static/invalid-schema.png')} />
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
import DocImage from '@site/src/components/DocImage';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

:::tip For IDP 2.0 Customers
If you're using Harness IDP 2.0, please ensure you have reviewed the [IDP 2.0 Overview guide](/docs/internal-developer-portal/idp-2o-overview/2-0-overview-and-upgrade-path) and are familiar with the key steps for [upgrading to IDP 2.0](/docs/internal-developer-portal/idp-2o-overview/migrating-idp-2o). To enable IDP 2.0, you must raise a support ticket to activate the `IDP_2_0` feature flag for your account.
:::

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

This guide walks you through the key changes introduced in IDP 2.0 and explains how to navigate the Catalog by creating and managing entities.

## Prerequisites

Before using the Software Catalog in IDP 2.0, ensure:
* You have reviewed the **[IDP 2.0 Overview](/docs/internal-developer-portal/idp-2o-overview/2-0-overview-and-upgrade-path)** and **[Upgrading to IDP 2.0](/docs/internal-developer-portal/idp-2o-overview/migrating-idp-2o)** guide.
* **IDP 2.0** is enabled behind the `IDP_2_0` Feature Flag. Contact [Harness Support](https://support.harness.io) to enable it on your account.
* You are familiar with the **[Catalog Data Model](/docs/internal-developer-portal/catalog/data-model)** and **[Catalog YAML](/docs/internal-developer-portal/catalog/catalog-yaml)** structure.

## Create an entity manually

In IDP 2.0, entity creation is simplified with full UI support and optional YAML-based creation. Entities are now "inline," which means their entire lifecycle can be managed through the UI or API, without Git integration.

There are two ways to add and create a new entity in your catalog:
- **Create an entity via the Harness IDP UI**:
Use the **Harness UI** to create entities directly—no YAML required. This method offers a streamlined, code-free experience for adding entities.
- **Create an entity using your catalog YAML**:
You can still create entities using your **existing catalog YAML** files. Harness will automatically convert **legacy Backstage YAML** into the new Harness Catalog Entity Model and register the corresponding entity.

<DocImage path={require('./static/create-entity-1.png')} />

Let's walk through both methods using a **Component** entity as an example:

<Tabs groupId="creating Entity">
<TabItem value="UI" label="Harness IDP UI">

To create a **Component** via the UI:

1. Navigate to the Harness IDP portal and click **"Create"** in the sidebar.
2. Select **Component** from the available options.
3. You'll enter the **Visual View**, where you can fill out entity details interactively.

> Ensure your `identifier` follows [naming rules](https://developer.harness.io/docs/platform/references/entity-identifier-reference/#identifier-naming-rules). Invalid identifiers may lead to entity registration errors.

:::note
The **identifier** is a unique key for your entity and cannot be changed after creation. Choose it carefully.
:::

4. Specify the **Entity Scope** (Account, Org, or Project). For this example, choose **Account scope**. [Read more about Catalog RBAC](/docs/internal-developer-portal/rbac/catalog-rbac).

5. **Link to Source Code Repository**
Configure the source code repository associated with this component. This link enables several key capabilities, such as:

* Automatically configuring plugins like **Scorecards**, **TechDocs**, and **STO**
* Displaying the **View Source** option in the UI
* Enabling advanced features like **CI/CD integration** and **security scanning**

> Harness IDP also auto-generates the legacy `backstage.io/source-location` annotation for backwards compatibility.

6. You now have two options for managing your Component configuration:
* **Inline (default):** Manage the Component YAML directly within Harness.
* **Git-based:** Store the Component YAML in your Git repository and sync it with Harness.

:::info
**Note:** **YAML validation** is performed to ensure compatibility with the **Harness-native Catalog YAML** model. Any errors will be shown in the Validation logs.
:::

8. If applicable, configure a plugin by referring to its documentation and adding the necessary **annotations** in the Catalog YAML.

9. Click **Save** to create your entity.

<DocVideo src="https://app.tango.us/app/embed/8d74bc96-331e-4460-8d0e-5d839707ea9c" title="Create an entity manually via UI" />

<details>
<summary>Example Component YAML</summary>

```yaml
apiVersion: harness.io/v1
kind: Component
metadata:
name: artist-lookup-api
identifier: artist_lookup_api
description: place to be for artists
tags:
- java
annotations:
harness.io/project-url: https://github.com/backstage/backstage
backstage.io/techdocs-ref: dir:.
spec:
type: service
lifecycle: production
owner: team-a
system: artist-engagement-portal
```
</details>

</TabItem>

<TabItem value="YAML" label="Catalog YAML">

To create a **Component** using YAML:

1. Navigate to the Harness IDP portal and click **"Create"** in the sidebar.
2. Select **Component** from the available options.
3. Switch to the **YAML View** by clicking the toggle.
4. Specify the **Entity Scope** (Account, Org, or Project). For this example, choose **Account scope**. [Read more about Catalog RBAC](/docs/internal-developer-portal/rbac/catalog-rbac).

<DocImage path={require('./static/scope-entity.png')} />

5. Define **Link to Source Code Repository** to configure the source code repository associated with this component. This link enables several key capabilities, such as automatically configuring plugins and displaying the **View Source** option in the UI.

6. Paste your **Catalog YAML** in the editor. You can use the following template:

```yaml
apiVersion: harness.io/v1
kind: Component
metadata:
name: artist-lookup-api
identifier: artist_lookup_api
description: place to be for artists
tags:
- java
annotations:
harness.io/project-url: https://github.com/backstage/backstage
backstage.io/techdocs-ref: dir:.
spec:
type: service
lifecycle: production
metadata:
tags:
- java
description: place to be for artists
```

> You can even paste your existing Backstage YAML if available. Harness will auto-convert it into the native format.

<DocImage path={require('./static/yaml-conversion.png')} />

7. You have two options for managing your Component configuration:
* **Inline (default):** Manage the Component YAML directly within Harness.
* **Git-based:** Store the Component YAML in your Git repository and sync it with Harness.

8. Click **Save** to create your entity.

</TabItem>
</Tabs>

## Delete an entity

You can remove any entity from the Catalog using the steps below:

1. Open the Software Catalog and locate the entity to delete.
2. Click the three-dot menu on the entity card or details view.
3. Select **Delete** from the dropdown. The entity will be permanently removed.

<DocVideo src="https://app.tango.us/app/embed/1bf401cd-624f-4568-868a-63db3c167a1f" title="Delete an entity" />

## Next steps

Now that you've created your first entity, explore these next steps:

* **[Configure Plugins](/docs/internal-developer-portal/plugins/overview)** to enhance your entities with additional capabilities
* **[Set up Scorecards](/docs/internal-developer-portal/scorecards/scorecard-quickstart)** to track entity quality and compliance
* **[Enable TechDocs](/docs/internal-developer-portal/techdocs/enable-docs)** to publish documentation alongside your entities
* **[Explore Workflows](/docs/internal-developer-portal/workflows/workflows-2o)** to automate common development tasks
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading