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
Updated over 1 year ago