Showing Relationships Between Entities

Published on June 13th, 2022

Adding relationships to your catalog entities can provide a lot of value for an organisation.

Relationships can be added manually through YAML files or in some cases they can be built automatically for you such as when importing Groups and Users from an IdP or AWS resources.

Backstage provides a limited set of possible relationships between different entity kinds which Roadie has expanded to give you more flexibility.

Viewing Relationships

view_full_graph.webp

Relationships can be visualised through plugins like the Catalog Graph plugin or through cards on an entity Overview page like EntityRelationsCard which can be easily added by a Roadie admin using our UI editor.

The EntityRelationsCard can show all relations if the all relationship option is selected, or only specific relationship types.

Available input relationships:

The following relationships are available to add to your YAML to describe relationships between entities in your catalog. This is not an exhaustive list of all relationships in the catalog, but rather a list of keys that you can use in your input YAML.

You only need to define one side of a relationship for it to appear on both sides in the catalog.

YAML KeyDescriptionValue TypeValue KindsApplicable Kinds
spec.owner-stringAnyComponent,API,Resource,System,Domain,Product,Template
spec.system-stringAnyComponent,API,Resource,Product
spec.dependsOn-string arrayAnyComponent,Resource,API,System,Domain,Product
spec.dependencyOf-string arrayAnyComponent,Resource,API,System,Domain,Product
spec.providesApis-string arrayAnyComponent
spec.apiProvidedBy-string arrayAnyAPI
spec.consumesApis-string arrayAnyComponent,Product
spec.subcomponentOf-stringAnyComponent
spec.memberOf-string arrayAnyUser
spec.parent-stringAnyGroup
spec.parentOf-string arrayAnySystem,Domain,Product
spec.children-string arrayAnyGroup
spec.childOf-string arrayAnySystem,Domain,Product
spec.members-string arrayAnyGroup
spec.subdomainOf-stringAnyDomain
spec.domain-stringAnySystem
spec.hasPart-string arrayAnyComponent,Resource,System,Domain,Product
spec.partOf-string arrayAnyComponent,Resource,API,System,Domain,Product
spec.managedBy-string arrayAnyUser,Group,Product
spec.manages-string arrayAnyUser

These relationship names can be used as you see fit to describe your organisation. Backstage provides some suggestions on usage but this is in fact arbitrary and only limited by the Applicable Kinds in the above table.

If you require additional flexibility in relationships between entity kinds that is not supported in the above table, you can request this to be added via the Roadie support channels.

Further reading

You can find a thorough guide to modelling relationships or dependencies between entities in Roadie Backstage in this blog post.