CIS-DF Hub Part 5 CI Relationships & Dependency View
⬡ Part 5 · Topic 2

CI Relationships & Dependency View

CI Relationships connect CIs to model real-world dependencies. The Dependency View and Unified Map visualize these connections — telling you which CIs are upstream (what your CI depends on) and downstream (what depends on your CI).

📋 5 sections ~20 min read 🎯 ~10% exam weight 🏷 CMDB · Relationships · Impact
🔗
Builds On — Part 1 Topic 3 & Part 5 Topic 1 cmdb_rel_ci is a many-to-many join table — exactly the pattern covered in Part 1 Topic 3 (Relationships & Database Views). If the concept of a self-referential M2M table feels unfamiliar, review that topic first. Part 5 Topic 1 (CI class hierarchy) is the other prerequisite: both the parent and child columns in cmdb_rel_ci are references to cmdb_ci — the root class from Topic 1. CI Relationships are also what CSDM service modeling (Part 5 Topics 6–7) uses to link Business Applications to Technical Services to Infrastructure CIs.

The cmdb_rel_ci Table

CI Relationships in ServiceNow are stored in the cmdb_rel_ci table — a self-referential many-to-many (M2M) table where both parent and child reference cmdb_ci. This design means any CI can be related to any other CI.

🧩
Analogy — Train Map Think of each CI as a city on a train map. The cmdb_rel_ci table is the list of all train routes — each row says "City A connects to City B, and the type of route is 'Express'." Without this table, the cities exist but you can't know which are connected or how. The Dependency View draws the map visually.

cmdb_rel_ci Key Fields

FieldTypeMeaning
parentReference → cmdb_ciThe CI that depends on the child (the "from" end)
childReference → cmdb_ciThe CI being depended on (the "to" end)
typeReference → cmdb_rel_typeThe relationship type (e.g., "Runs on", "Connected by")

The cmdb_rel_type table defines available relationship types. Each type has an outbound descriptor (how the parent relates to the child) and an inbound descriptor (how the child relates to the parent). For example, the "Runs on" type: parent "Runs on" child, and child is "Used by" parent.

Upstream vs. Downstream

Understanding direction is crucial for impact analysis. When an incident affects a CI, you need to know which services and users are impacted (downstream) and what infrastructure components could have caused the issue (upstream).

Database Server ←—— App Server ←—— Web Frontend
   Upstream of App Server                    Downstream of App Server

  → App Server "Runs on" Database Server (DB is upstream)
  → Web Frontend "Depends on" App Server (Web is downstream)

Definitions

  • Upstream CIs — CIs that the selected CI depends on. If an upstream CI fails, the selected CI may fail. Example: The App Server's upstream is the Database Server it queries.
  • Downstream CIs — CIs that depend on the selected CI. If the selected CI fails, downstream CIs are impacted. Example: The App Server's downstream is the Web Frontend that calls it.
📘
Core Concept — Impact Flows Downstream When a CI has an outage, impact propagates downstream — the services that depend on it are affected. This is why impact analysis starts at a failed CI and traverses downstream to find affected services and users. Root cause analysis goes upstream — following the chain to find which upstream component caused the failure.

Dependency View

The Dependency View is a visual graph that opens from any CI record. It shows the selected CI at the center with its related CIs branching outward by relationship type. You can expand each branch to follow the dependency chain.

To open: navigate to any CI record → click the Dependency Views related list → choose a saved view (or use the icon in the CI header).

What You Can Do in Dependency View

  • Expand/collapse — click any CI node to show its relationships
  • Filter by relationship type — show only "Runs on" or only "Connected by" relationships
  • Highlight impact — trace downstream to identify affected services
  • Open CI records — double-click any node to open the CI record in a new tab
  • Show CI details — hover over a node to see class, status, and key attributes
Exam Trap — Dependency View Reads cmdb_rel_ci Only The Dependency View only shows relationships stored in cmdb_rel_ci. It does NOT show reference field relationships (like "assigned_to") or table hierarchy relationships (parent/child class). If you want to show that Server A "Runs" Application B, you must create a relationship row in cmdb_rel_ci — a reference field pointing from one CI to another is NOT enough to appear in Dependency View.

Unified Map

The Unified Map (also called Service Map) is an enhanced visualization that goes beyond the individual CI view. While Dependency View is CI-centric, Unified Map is service-centric — it starts from a Business Service or Application Service and shows the full infrastructure dependency map for that service.

The Unified Map is the primary tool for:

  • Service impact analysis — when an incident is raised against a CI, which business services are affected?
  • Change impact assessment — before approving a change to a server, see all services that depend on it
  • Root cause navigation — follow the graph upstream from an impacted service to find the failing CI

Layers in the Unified Map

LayerWhat It Shows
Business ServicesTop-level services visible to business users (Email, HR Portal)
Application ServicesTechnical implementations powering Business Services
Application TierApplication servers, web servers, middleware
Database TierDatabase instances and servers
Infrastructure TierPhysical/virtual servers, storage, network
💡
Tip — Relationship Quality Determines Map Quality The Unified Map is only as good as the relationships in cmdb_rel_ci. If Discovery hasn't run Service Mapping, or if relationships weren't created during import, the map will be incomplete. A CMDB with poor relationship coverage will show isolated nodes with no connections — the map is a diagnostic for relationship data quality.

Common Relationship Types

The exam tests which relationship type to use for given scenarios. These are the most commonly tested:

Relationship TypeOutbound (Parent → Child)Inbound (Child → Parent)Example
Runs onRuns onHostsApplication "Runs on" Server
Depends on::Used byDepends onUsed byService "Depends on" Database
Connected byConnected byConnectsServer "Connected by" Switch
Members ofMembers ofContainsVMs "Members of" Cluster
Virtualized byVirtualized byVirtualizesVM "Virtualized by" Hypervisor
Uses::Used byUsesUsed byApp "Uses" Shared Library
Exam Trap — Relationship Direction in cmdb_rel_ci In cmdb_rel_ci, the parent field is the CI that "does" the relationship (e.g., the Application that "Runs on" the Server). The child is the target. This can be counterintuitive: the Application (parent) runs on the Server (child) — but in physical terms, the Server is the foundation. Think of parent/child as "who initiates the relationship," not who is physically on top.

Common Exam Traps — CI Relationships & Dependency View

  • All CI relationships stored in cmdb_rel_ci (M2M table with parent, child, type)
  • Dependency View only shows cmdb_rel_ci data — reference fields don't appear there
  • Upstream = what a CI depends on; Downstream = what depends on the CI
  • Impact propagates downstream; root cause analysis goes upstream
  • Unified Map is service-centric (starts from Business/Application Service); Dependency View is CI-centric
  • In cmdb_rel_ci: parent "does" the relationship to child (App parent "Runs on" Server child)
  • Relationship type is in cmdb_rel_type — has outbound and inbound descriptors
  • Map quality depends entirely on relationship completeness — missing relationships = disconnected nodes

Practice Questions

4 questions · Select an answer to see the explanation immediately.

CI Relationships & Dependency Quiz 1 / 4

A server CI has its assigned_to field pointing to a technician's User record. Will this relationship appear in the Dependency View?

💡 Explanation

B is correct. Dependency View reads exclusively from the cmdb_rel_ci table (the Many-to-Many relationship table with parent, child, and type columns). Reference fields (like assigned_to, managed_by, owned_by) are regular database foreign keys but are NOT stored in cmdb_rel_ci. To show a "CI managed by person" relationship in Dependency View, you must create a row in cmdb_rel_ci — a reference field alone is insufficient.

In cmdb_rel_ci, a relationship is recorded as: parent=Application CI, child=Server CI, type="Runs on::Hosted by". Which CI "does" the relationship and in which direction does impact propagate?

💡 Explanation

B is correct. In cmdb_rel_ci, the parent CI "does" the relationship to the child. The Application (parent) "Runs on" the Server (child). Impact propagates downstream — from what a CI depends on, up to the CI itself. If the Server (child, the dependency) fails, the Application (parent, which runs on it) is impacted. Think: root cause is upstream (at the dependency); impact flows downstream to everything depending on it.

The Unified Map for the "HR Portal" Business Service shows isolated CI nodes with no connections. What is the most likely cause?

💡 Explanation

B is correct. The Unified Map's quality depends entirely on the completeness of cmdb_rel_ci relationship records. Isolated nodes with no connections indicate that Service Mapping hasn't populated the application service relationships. When Service Mapping runs for the HR Portal Application Service, it creates cmdb_rel_ci records linking web servers, app servers, and databases — these then appear as connections in the Unified Map.

An administrator wants to model that a Virtual Machine is hosted on a physical Hypervisor server. Which relationship type from cmdb_rel_type should they use?

💡 Explanation

B is correct. "Virtualized by::Virtualizes" is the standard CMDB relationship type for the VM-to-Hypervisor relationship. The VM (parent) is "Virtualized by" the Hypervisor (child). This relationship type accurately describes the virtualization hosting relationship. "Depends on" (A) is more generic; "Members of" (D) is for cluster membership. Using the correct relationship type ensures proper display in Dependency View and correct impact analysis behavior.

Discovery & IRE Deep Dive →