---
title: Set Up Software Catalog
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Internal Developer Portal > Software Catalog > Set Up Software Catalog
---

# Set Up Software Catalog

{% callout %}
# Important note for users on the following Datadog sites: app.ddog-gov.com

{% alert level="danger" %}
This product is not supported for your selected [Datadog site](https://docs.datadoghq.com/getting_started/site.md). ().
{% /alert %}

{% /callout %}

## Overview{% #overview %}

Software Catalog entities are defined through [Entity Definitions](https://docs.datadoghq.com/internal_developer_portal/software_catalog/entity_model.md), which are Kubernetes-style YAML configuration files.

To populate Software Catalog, you can:

- Set up Datadog Application Performance Monitoring (APM), Universal Service Monitoring (USM), Real User Monitoring (RUM), infrastructure metrics, or logs, which automatically feed entity data into Software Catalog.
- Create entity definitions manually or through automation.
- Import existing entity definitions from third parties.

## Automatically discover entities from Datadog{% #automatically-discover-entities-from-datadog %}

By default, Software Catalog is automatically populated with entries discovered from APM, USM, and RUM. You can also manually import entries from other Datadog telemetries, like logs.

- [Discover from APM, USM, and RUM](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/discover_entities.md#automatic-discovery-with-apm-usm-and-rum)
- [Import from Infrastructure and Logs](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/discover_entities.md#import-entities-from-infrastructure-and-logs)

### APM{% #apm %}

When you instrument your application code with Datadog APM SDKs or OpenTelemetry, your applications emit traces and generate unsampled trace metrics. These traces and metrics power the entity discovery and dependency mapping capabilities in IDP. Your instrumentation choices (for example, your Datadog Agent version, your SDK version, and whether you use custom instrumentation or service overrides) affect the quality and accuracy of your dependency maps. See [Discover from APM, USM, and RUM](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/discover_entities.md#automatic-discovery-with-apm-usm-and-rum) for details.

### USM{% #usm %}

USM detects Golden Signal metrics (for example, requests, errors, and durations) and maps out application dependencies based on eBPF. It does not require instrumentation of your application code.

### RUM{% #rum %}

RUM provides frontend user experience data, including page performance, errors, session events, and views. If you have RUM applications, they appear in Software Catalog as **Frontend Apps** in the component selector.

### Other Datadog telemetries{% #other-datadog-telemetries %}

You can also import entities that are identified from Datadog telemetries like logs, host metrics, container metrics, network metrics, and process metrics.

When you use [**Import Entities**](https://app.datadoghq.com/software/settings/get-started) and choose a data source, Datadog queries that source and searches for valid `DD_SERVICE` tags. Entities are marked with the `kind:service` attribute.

**Note**: You should only do this if the `DD_SERVICE` tags are well maintained and do not contain irrelevant or incorrect tag values.

## Create entities{% #create-entities %}

[Entity definitions](https://docs.datadoghq.com/internal_developer_portal/software_catalog/entity_model.md), defined in entity YAML files, are the canonical source of truth in Software Catalog. You can:

- Create entity definitions manually through Datadog.
- Store definitions in a version control system like Git, and set up [Source Code Integration](https://docs.datadoghq.com/integrations/guide/source-code-integration.md) to sync definitions with IDP. Changes made to your files are reflected in Datadog within minutes.

- [Create through the Datadog UI](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/create_entities.md#through-the-datadog-ui)
- [Create through code automation](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/create_entities.md#through-automation)

**Note**: To automatically correlate an entity to its telemetry, the `name` field in your definition must exactly match the primary identifier from the telemetry data. For most services, this is the `service` tag as defined in Datadog's Unified Service Tagging. See examples for [`kind:datastore`](https://docs.datadoghq.com/internal_developer_portal/software_catalog/entity_model/entity_types.md?tab=datastore#datastore-peer-tags), [`kind:queue`](https://docs.datadoghq.com/internal_developer_portal/software_catalog/entity_model/entity_types.md?tab=queue#datastore-peer-tags), and other [`entity types`](https://docs.datadoghq.com/internal_developer_portal/software_catalog/entity_model.md?tab=v30).

## Import entities{% #import-entities %}

If you maintain software inventories in Backstage or ServiceNow CMDB, you can sync these inventories into Datadog's Software Catalog.

- [Import from Backstage](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/import_entities.md#import-from-backstage)
- [Import from ServiceNow](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/import_entities.md#import-from-servicenow)

### Backstage{% #backstage %}

You can bring your Backstage entities into Datadog's IDP in one of two ways:

1. Install [Datadog's Backstage plugin](https://www.npmjs.com/package/@datadog/backstage-plugin-datadog-entity-sync-backend).
1. Import entity descriptor files from Backstage to IDP using the Datadog API, Terraform, or Datadog's GitHub integration.

### ServiceNow{% #servicenow %}

Sync your ServiceNow CMDB inventories with Datadog's Software Catalog by setting up a regular query against your ServiceNow CI tables.

## Define entity ownership{% #define-entity-ownership %}

Link entities to teams to enable team-based filtering across Datadog products, route notifications to the right owners, and drive accountability through Scorecards and Campaigns. For details, see [Define ownership for Software Catalog entities](https://docs.datadoghq.com/internal_developer_portal/software_catalog/set_up/ownership.md).

## Verify configuration completeness{% #verify-configuration-completeness %}

Following monitoring best practices such as tracing, logging, and code profiling helps you ensure that you have all the data you need during incident triage. Software Catalog provides automatic checks for these recommended setups.

To view the configuration completeness for an entity, click the entity in the [Software Catalog](https://app.datadoghq.com/software), then find the **Setup Guidance** tab:

{% image
   source="https://docs.dd-static.net/images/tracing/software_catalog/software-catalog-setup-guidance.556ea6abb1d8339ef6108719759f8407.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/software_catalog/software-catalog-setup-guidance.556ea6abb1d8339ef6108719759f8407.png?auto=format&fit=max&w=850&dpr=2 2x"
   alt="Software Catalog with the Setup Guidance tab highlighted." /%}

The Setup Guidance table does not necessarily reflect billing for individual products, but rather activity for the entity you are presently examining. For example, if the service does not emit infrastructure metrics for a long time, `Infrastructure Monitoring` might have `Not Detected` specified, even if you have hosts or containers running infrastructure monitoring.

## Configure role based access and permissions{% #configure-role-based-access-and-permissions %}

For general information, see [Role Based Access Control](https://docs.datadoghq.com/account_management/rbac.md) and [Role Permissions](https://docs.datadoghq.com/account_management/rbac/permissions.md).

### Read permission{% #read-permission %}

The Software Catalog read permission allows a user to read Software Catalog data, which enables the following features:

- Software Catalog list
- Discover UI
- Service Definition endpoint: `/api/v2/services/definition/<service_name>`

The permission is enabled by default in the **Datadog Read Only Role** and **Datadog Standard Role**.

### Write permission{% #write-permission %}

The Software Catalog write permission allows a user to modify Software Catalog data. The write permission is required for the following features:

- Inserting or updating a service definition with the `POST /api/v2/services/definitions` endpoint
- Deleting a service definition with the `DELETE /api/v2/services/definition/<service_name>` endpoint
- Completing the onboarding process in the Discover Services UI
- Updating service metadata in the UI

The permission is enabled by default in the **Datadog Admin Role** and **Datadog Standard Role**.

## Further reading{% #further-reading %}

- [Manage Service Catalog entries with the Service Definition JSON Schema](https://www.datadoghq.com/blog/manage-service-catalog-categories-with-service-definition-json-schema/)
- [Easily add tags and metadata to your services using the simplified Service Catalog setup](https://www.datadoghq.com/blog/service-catalog-setup/)
- [I use GitHub Ac­tions for Data­dog's Service Catalog, and you should, too](https://www.datadoghq.com/blog/github-actions-service-catalog/)
- [Best practices for end-to-end service ownership with Datadog Service Catalog](https://www.datadoghq.com/blog/service-ownership-best-practices-datadog/)
