Systems
Systems provide a way to represent Components that combine to form a unified whole or function. For example, an online retailer may have a “Checkout” System that comprises several Components working in unison. Systems are composed of Components. Utilizing Systems allows you to group together all of the Components that combine into a single unit so you can quickly see how these Components are performing.
When should I use a System instead of a Domain?
Systems should be used to group together Components that combine to form a single unit. Ideally, the personas that would make most use of Systems are Engineering Managers and Platform Operators who want a quick view into how the Components that make up their Systems are performing.
Creating Systems
Systems can be created by navigating to the Systems List page. This page can be accessed under Catalog within the side navigation.

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

Systems Empty State
You can create a new System by either clicking this prompt or by clicking the New System button. Upon clicking this button, a new modal will open up prompting you to fill out the following details for your System:
- Name (required)
- Owner
- Domain
- Description

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

Systems List Page
Systems Details
Clicking on a System from the Systems List page will bring you to the Systems Show page for that System. This page provides a bunch of details surrounding your System including:
- Who owns the System
- What tags are applied to the System
- Size of the System (Components, Teams, Users)
- Summary of the Maturity Report for the Components contained by the System

Systems Show Page
If you want to include more details about your System (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 Components, Teams, and Users that fall under a System determined?
When you access the Systems Show page for a System, one of the first things you'll see is a count of all the Components, Teams, and Users that fall under that System.
Component Count
This simply counts the number of Components the System contains. See instructions on how to add Components to Systems below.
Team Count
This is a count of all the Teams that own the Components that the System contains.
User Count
This is a count of all the Users that exist in the Teams that own the Components that the System contains.
Adding a Child Component
You can add a child Component(s) to your System by navigating to the Components card at the bottom of the Systems Show page. Clicking Add Components will open a modal where you can search through and select and existing Component(s) to be added as a child for your System.

Add Components Modal
Clicking Add Components will add that Component(s) to the table in the Components card

Component Table
Note: A Component can only have one parent System. If a Component already has a parent System you will not be able to select it from the dropdown.
You can also add a Component to a System via opslevel.yml.
Filtering by Systems
You can use Filters to easily see which Components fall under a given System and quickly write Checks or run Campaigns against those Components.

Filtering Systems
In the above example, OpsLevel will filter down to all of the Components that meet the following criteria: their Framework is "Rails" AND the System they fall under is "Cart".
Reporting by Systems
You can utilize the Maturity Report to easily see how the Components that fall under a given System(s) are performing. The reports table has a System dropdown option which can be selected to view the Maturity Report for one or many Systems.

Maturity Report for Systems
Example: Creating Systems outside of the UI
In addition to creating Systems via the UI, you can also create Systems using the:
- GraphQL API
- Terraform Provider
- Command Line Utility
all are options for configuring and maintaining your Systems. Below is an example of using the OpsLevel CLI to create a new System:
cat << EOF | opslevel create system -f -
name: "My System"
description: "Hello World System"
owner: "Z2lkOi8vb3BzbGV2ZWwvVGVhbS83NjY"
parent:
alias: "alias of domain"
note: "Additional system details"
EOF
Note: "Owner" in this example is an ID for a team or group.
Example: Creating a System via Existing Tags
Many of our customers have already been modelling Systems via tags. The OpsLevel CLI can be utilized to convert existing tags into Systems. For example, let's say you've been using a key-value pair of "system:x", "system:y" as part of a tag. The following command will create a series of Systems based on the tag value it finds:
for SYSTEM in $(opslevel list services -o json | jq '.[] | .tags.Nodes[] | if .key == "system" then .value else empty end' | uniq)
do
cat << EOF | opslevel create system -f -
name: ${SYSTEM}
EOF
done
Example: Creating a System via "Product" Field
Many of our customers have already been modelling Systems via the "Product" Field under Services. The OpsLevel CLI can be utilized to convert this field into a System. For example:
for SYSTEM in $(opslevel list services -o json | jq 'map(if .product != null then .product else empty end) | .[]' | uniq)
do
cat << EOF | opslevel create system -f -
name: ${SYSTEM}
EOF
done
Updated 21 days ago