16.03.2018

Demystifying vertical vs. horizontal discovery

Michael Skov Thomsen

Michael Skov Thomsen

Solution Architect

There are numerous posts and blogs describing the features and differences between horizontal and vertical discovery in ServiceNow, and even though this is another one, I will dig a little deeper into the differences.

Basically, horizontal discovery is CI discovery using the Discovery module. Vertical discovery is service mapping. For now, forget about vertical discovery/Service mapping. Let me elaborate…

Horizontal discovery

For horizontal discovery we have two options:

Option 1: process detection

This is the most basic way of discovering a CI type – with a corresponding depth. This means that we can quickly identify an application based on the process, but we will not be extracting further information. I have created a TeamViewer process classification, to find the servers running TeamViewer.

Discovery of server

After a quick discovery of the server, I can now see the TeamViewer CI on my server, along with the other applications:

CI's on server


Option 2: CI patterns

Patterns are what ServiceNow is switching more and more to. This is also what ServiceMapping uses to create maps. This means that we can use the same patterns for both Discovery and ServiceMapping.

When using a pattern, we can define a number of steps to go through in order to collect the required information – version, installation directory etc. This is called the “identification section”. Furthermore, we can define outgoing connections and inclusion (keep reading for an example). This is called the “connectivity section”. A good show case is the Microsoft SQL pattern.

In the identification section we collect relevant information for the CI, such as instance name, version and edition.

Relevant information on the CI

This information can be published on the CI:

Published information on CI

In the connectivity section we can define outgoing connections and inclusions. Inclusions are a part of the application, on another layer. An outgoing connection is the connection from one system to another. In this example all databases on the SQL instance are inclusions, as they are hosted by the instance.

Pattern-based or process-based you will get a horizontal overview of your server CI:

Horizontal overview CI

So! That was extensive. Now, what should you use?

I will always recommend using patterns, as we can retrieve more information and, very important, we can use the patterns for ServiceMapping. If you want even the slightest information on the CI (version etc.) you should use pattern based discovery. Note that you can always develop these patterns further down the road.

If you JUST want to know if the application is running on your servers, without any information or depth, go ahead with process-based discovery.

Vertical discovery

Now, what’s vertical discovery? In other words, it is ServiceMapping.

As the word reveals, it is vertical – meaning we will display all layers of an application and their relationships. For this we use patterns.

To start displaying the application, we provide an entry point which is generally the one used by the users – www.syspeople.dk/sales, for instance. Based on a nice combination of information in our CMDB and patterns, we will find the website and which load balancer we hit when entering the site. From there we find which IIS servers we connect to, down to the backend SQL servers. All this done using patterns (identification and connectivity).

Connections on servers

Note that vertical discovery relies on the Discovery module.

Want a dialogue with the author of this article?

Get in touch with Michael