Domains

Domains provide a way to represent large business units or verticals within OpsLevel. Domains are comprised of child Systems which contain Services. Utilizing Domains allows you to understand the overall footprint of your business verticals (how many systems, services, users) as well as report on how the Teams and Groups that fall under that Domain are performing via features like the Maturity Report.

When should I use a Domain instead of a System?

Domains should be utilized as a way to group the various Systems that make up a larger business unit or vertical. Ideally, the personas that would make most use of Domains are senior engineering leadership who want a view into how the Services, Teams, and Groups that make up this larger vertical are performing and trending.

Creating Domains

Domains can be created by navigating to the Domains List page. This page can be accessed under Catalog within the side navigation.

Domains Sidebar

If there are no active Domains within your OpsLevel account, you will see an empty state prompting you to create your first Domain.

Domains Empty State

You can create a new Domain by either clicking this prompt or by clicking the New Domain button. Upon clicking this button, a new modal will open up prompting you to fill out the following details for your Domain:

  • Name (required)
  • Owner
  • Description

Add Domain Modal

Clicking Create will create your new Domain and add it as a new row on the table.

Domains List

Domains Details

Clicking on a Domain from the Domains List page will bring you to the Domains Show page for that Domain. This page provides a bunch of details surrounding your Domain including:

  • Who owns the Domain
  • What tags are applied to the Domain
  • Size of the Domain (Systems, Services, Teams, Users)
  • Summary of the Maturity Report for the Services contained by the System that fall under that Domain

Domain Show Page

If you want to include more details about your Domain (what it is, how it functions, etc) you can click on the Notes tab and fill them out via the markdown editor.

How are the Systems, Services, Groups, Teams, and Users that fall under a Domain determined?

When you access the Domains Show page for a Domain, one of the first things you'll see is a count of all the Services, Teams, Groups, and Users that fall under that Domain.

System Count

This simply counts the number of Systems the Domain contains. See instructions on how to add Systems to Domains below.

Service Count

This is a count of all the Services that are contained within the Systems the Domain contains.

Group Count

This is a count of all the Groups that own the Systems the Domain contains.

Team Count

This is a count of all the Teams that own the Services that are contained within the Systems the Domain contains.

User Count

This is a count of all the Users that exist in the Teams that own the Services that are contained within the Systems the Domain contains.

Adding a Child System

You can add a child System to your Domain by navigating to the Related Entities card at the bottom of the Domains Show page. Clicking Add System will open a modal where you can search through and select and existing System(s) to be added as a child for your Domain.

Add System Modal

Clicking Add Systems will add that System(s) to the table in the Systems card.

Systems in Related Entities table

Note: A System can only have one parent Domain. If a System already has a parent Domain you will not be able to select it from the dropdown.

Filtering by Domains

You can use Filters to easily see which Services fall under a given Domain and quickly write Checks or run Campaigns against those Services.

Filtering Domains

In the above example, OpsLevel will filter down to all of the Services that meet the following criteria: their Tier is "Tier 1" AND the Domain they fall under is "Web".

Reporting by Domains

You can utilize the Maturity Report to easily see how the Services that fall under a given Domain(s) are performing. The reports table has a Domain dropdown option which can be selected to view the Maturity Report for one or many Domains.

Maturity Report by Domain

Example: Creating Domains outside of the UI

In addition to creating Domains via the UI, you can also create Domains using the:

  • GraphQL API
  • Terraform Provider
  • Command Line Utility

all are options for configuring and maintaining your Domains. Below is an example of using the OpsLevel CLI to create a new Domains:

cat << EOF | opslevel create domain -f -
name: "My Domain"
description: "Hello World Domain"
owner: "Z2lkOi8vb3BzbGV2ZWwvVGVhbS83NjY"
note: "Additional details"
EOF

Note: "Owner" in this example is an ID for a team or group.

Example: Creating a Domain via Existing Tags

Many of our customers have already been modelling Domains via tags. The OpsLevel CLI can be utilized to convert existing tags into Domains. For example, let's say you've been using a key-value pair of "domain:x", "domain:y" as part of a tag. The following command will create a series of Domains based on the tag value it finds:

for DOMAIN in $(opslevel list services -o json | jq '.[] | .tags.Nodes[] | if .key == "domain" then .value else empty end' | uniq)
do
    cat << EOF | opslevel create domain -f -
name: ${DOMAIN}
EOF
done

Example: Creating a Domain via "Product" Field

Many of our customers have already been modelling Domains via the "Product" Field under Services. The OpsLevel CLI can be utilized to convert this field into a Domain. For example:

for DOMAIN in $(opslevel list services -o json | jq 'map(if .product != null then .product else empty end) | .[]' | uniq)
do
    cat << EOF | opslevel create domain -f -
name: ${DOMAIN}
EOF
done