Software catalog

Software catalog centralizes all your software data in one place, with a flexible modeling system, robust filtering, and details on key metadata like ownership and relations. Use Software catalog to record the software components that make up your business - such as Services, Teams, APIs, and cloud infrastructure.

Software catalog helps teams by:

  • Providing context on your organization’s software to your AI tooling and the rest of your stack
  • Clarifying ownership of services to leverage during incident management or research
  • Highlighting dependencies between services to help determine blast radius and the effects of changes made
  • Centralizing connections to external tooling like source code management, alerting, cloud infrastructure, and more

Software catalog Interface

Entities

Software catalog is built upon entities. Each entity represents an individual piece of your software organization, and has a specific type, such as Service or Team. Each entity also has various properties that provide important context, such as ownership, relationships to other entities, and more.

Populating the Software catalog

When you enable a connection to a source code management tool in Admin > Connections, entities are discovered and imported into DX (see Entity Discovery).

Additionally, Software catalog can be fully managed via API endpoints for easily syncing data from multiple systems. Visit our API docs to learn how to programmatically manage your catalog.

Entity types

All entities must have a type. DX includes these built-in entity types:

  • Service - Available to all customers. Services are automatically created from DX deployment tracking and then used in report filtering.
  • Team - Available to Fabric customers. Team entities are synced from your DX teams automatically.

You can also create custom entity types to catalog different types of entities in your business that DX doesn’t have out of the box. This may include APIs, Cloud Infrastructure, User Journeys, Kubernetes Clusters, GitHub Repositories, etc.

Custom entity types can be added from the Catalog Admin page. There you can manage properties, aliases, and relations for the entity type. If desired, each entity type can be marked as API-only, which will prevent users from modifying any entity of that type in the UI.

Custom entities are only available for Fabric customers.

Entity type settings

Ownership

All entities (regardless of type) support multiple owners. Owners can be a DX team, a DX user, or a combination of both.

Ownership becomes especially helpful in DX when Initiatives on scorecards are created to drive improvements to your systems.

Owners are automatically assigned to entities based on DX Deployment data using PR authorship, but can be edited if desired.

Aliases

Entities can be connected external resources through an alias. For example, for any given entity, you can add an alias to its corresponding PagerDuty service, GitHub repository, Datadog service, or Jira project, and more. This centralizes all entity information in one place and makes it easy to drill into the entity in third‑party services when needed.

When you enable a connection to a third-party service in Admin > Connections, aliases appear in your catalog entity type settings. DX will then continually monitor the possible aliases from those systems and automatically add them to your Software catalog when the name or identifier matches exactly.

Auto alias assignment can be disabled from the service entity type settings page.

For aliases that support URLs, the alias is linked to the external system from within Software catalog.

Supported aliases

Expand for a full list of supported aliases
System Alias type key Database table Supports URLs?
ADO repositories ado_repository ado_repositories Yes
Bitbucket Server repositories bitbucket_server_repository bitbucket_server_repositories Yes
Bitbucket repositories bitbucket_repository bitbucket_repositories Yes
BugSnag projects bugsnag_project bugsnag_projects
Datadog Monitors datadog_monitor datadog_monitors
Datadog SLOs datadog_slo datadog_slo_tags
Datadog services datadog_service datadog_services
DX Deployments dx_deployment_service deployment_services
Dynatrace entities dynatrace_entity dynatrace_entities
Dynatrace SLOs dynatrace_slo dynatrace_slos
Firehydrant services firehydrant_service firehydrant_services
GitHub repositories github_repo github_repositories Yes
GitLab repositories gitlab_repo gitlab_projects Yes
Incident.io services incident_io_service incident_io_services
Jira service management services jsm_services jsm_services
Launchdarkly projects launchdarkly_project launchdarkly_projects
Opsgenie services opsgenie_service opsgenie_services
PagerDuty services pagerduty_service pagerduty_services
Rollbar projects rollbar_project rollbar_projects
Rootly services rootly_services rootly_services
Sentry projects sentry_project sentry_projects
ServiceNow services servicenow_services servicenow_services
Snyk projects snyk_project snyk_projects
SonarCloud projects sonarcloud_project sonarcloud_projects
SonarQube projects sonarqube_project sonarqube_projects
New Relic entities newrelic_entity newrelic_entities

Properties

Properties are the best way to extend and customize catalog entities. A property has a name, identifier, description, and type. The following property types are supported:

Type Description
Boolean A True or False value.
Computed Use a SQL query to compute a value for an entity using the $entity_identifier variable. Re-computed every 1 hour.
Date A valid date in ISO8601, MM/DD/YYYY or MM/DD/YYYY HH:MM:SS format.
JSON Any JSON object.
List A JSON array of strings (e.g., ["a", "b", "c"]).
Select A pre-defined list of string values. Limited to selecting one option.
Multi-select A pre-defined list of string values. Multiple selections allowed.
Number A number value.
Text Any text value.
URL A string in URL format.
User A DX user.
OpenAPI spec A JSON object containing an OpenAPI or Swagger specification.
File matching rule Reads file contents from a connected repository and extracts pattern matches. Requires a Repository Integration.

For more information about advanced property types, see the Advanced properties page.

Individual properties can be API-only, meaning users cannot edit them from the UI. They can only be managed via the entities APIs.

Additionally, properties can be marked as “hidden”, which will put them in a collapsed section on the entity details page and they will be hidden in the table of entities.

Property settings

Relations

Relations define how different entities in your system are connected to each other. They establish meaningful relationships between entity types and provide a structured way to model dependencies, hierarchies, and associations in Software catalog.

Relations are defined between entity types and edited from the Software catalog administration page as shown here:

Relation settings

Once a relation definition is created, it can be applied to specific entities on the entity settings page:
Entity Relation settings

For example, you can define a relation where entities of type API Endpoint can depend on entities of type Service. You can then apply this relation to specific entities, such as declaring that the Create Order API endpoint depends on the Checkout Service.

Relation properties

  • Identifier: A unique identifier for the relation (letters, numbers, underscores, periods, and hyphens only)
  • Source Entity Type: The type of entity that the relation originates from
  • Target Entity Type: The type of entity that the relation points to
  • Relation Type: One of the six standard relation types
  • Cardinality: The relationship cardinality (one-to-one, one-to-many, many-to-one, or many-to-many)
  • Description (optional): Detailed description of what the relation represents

Standard relation types

Relations support six standard relation types that cover the most common relationship patterns in enterprise systems. Each relation type is automatically assigned a corresponding inverse relation type.

Relation Type Description Common Use Cases Inverse
consumes Indicates that one entity uses or consumes another Services consuming APIs, applications using databases consumed by
depends on Shows a dependency relationship Applications depending on infrastructure, services depending on other services dependency of
parent of Establishes a hierarchical parent-child relationship Organizational structures, component hierarchies child of
part of Indicates membership or composition Components being part of larger systems contains
provides Shows that one entity provides something to another APIs providing data to applications, services providing functionality provided by
manages Indicates management or control relationship Systems managing resources, administrators managing systems managed by

How inverse relations work

When you create a relation from Entity A to Entity B with type “depends on”, the system automatically creates the inverse relationship from Entity B to Entity A with type “dependency of”. This ensures that:

  • The relationship is visible from both perspectives
  • Data consistency is maintained
  • Navigation between related entities works in both directions

Relation cardinality

Cardinality defines how many entities can be involved in a relationship. Relations support four cardinality options:

  • One-to-one (1:1): Each source entity can be related to only one target entity, and each target entity can be related to only one source entity
  • One-to-many (1:N): Each source entity can be related to multiple target entities, but each target entity can be related to only one source entity
  • Many-to-one (N:1): Multiple source entities can be related to one target entity, but each source entity can be related to only one target entity
  • Many-to-many (N:N): Multiple source entities can be related to multiple target entities

Cardinality enforcement

The system automatically enforces cardinality rules to maintain data integrity. When you attempt to create a relationship that would violate the cardinality constraints, the system will automatically remove existing relationships to make room for the new one.

This enforcement ensures that your relationship data always conforms to the defined cardinality rules and prevents inconsistent or invalid relationship states.

Cardinality enforcement applies to source and target separately. So if a relation is between two entities of the same type and has one-to-one cardinality, each entity can have a relation to up to two other entities (one as source, one as target). For example, with a relation “a service depends on a service” (1:1 cardinality), Service A can depend on Service B, and Service B can depend on Service C. This is valid because Service B is the source of one relation and the target of another; cardinality is enforced per source and per target. It is not possible, however, for both Service A and Service B to depend directly on Service C with 1:1 cardinality.

Examples

Service dependencies

Service "Payment Service" → depends on → Service "User Service"
Service "Payment Service" → provides → API "Payment API"

Organizational structure

Team "Backend Team" → parent of → Team "API Team"
Application "E-commerce App" → part of → System "Customer Platform"

Technical notes

  • Relations are automatically validated to ensure they only connect compatible entity types
  • Inverse relations are automatically maintained and cannot be manually edited
  • The system prevents circular dependencies in hierarchical relationships
  • All relations are scoped to your account and cannot conflict with other accounts

Identifiers

DX uses unique identifiers for parts of Software catalog to provide a stable, human-readable reference for use in external systems. Entities, Entity Types, Properties, and Relations each have an identifier that is unique across your entire account. These identifiers allow easy API access, enable automations, and provide stable references for you to use in external systems.

Identifiers must only contain letters, numbers, underscores, periods, and hyphens.

Repository integrations

Repository integrations are different from data connectors in DX, as they are built specifically for Software catalog to read file contents directly from your source code repositories. This allows DX to extract data from your repos and surface it across Software catalog.

File matching rules

File matching rules let you define patterns (either substrings or regular expressions) that are matched against the file contents of a connected repository. To create a file matching rule, a repository integration must be connected.

For example, file matching rules can answer questions like:

  • Does this service have a “Local development” section in its README?
  • Does this service run unit tests in a GitHub Actions workflow?
  • Does this service have an up-to-date version of a critical internal library dependency?

Supported providers

Support for additional providers is coming soon.

Feature availability by plan

All DX customers have access to Software catalog, but purchasing Fabric (whether standalone or part of a bundle) provides deeper customization and functionality - see below:

Feature All customers Fabric
Service entity type Yes Yes
Team entity type - Yes
Ownership Yes Yes
Aliases Yes Yes
API management Yes Yes
Entity Discovery Yes Yes
Custom Entity Types - Yes
Properties - Yes
Relations - Yes