- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
3 weeks ago
The Question
A community member asked:
"When we use the Create Connection step towards Oracle DB in the Extension Section, it is creating a relationship type of Applicative To::Applicative From. Is it possible to have the relationship type as DEPENDS ON::USED BY when creating a connection from a Tomcat WAR to Oracle instances?"
This is a great architectural question that comes up frequently when teams want their CMDB service topology to reflect functional dependency semantics ("Depends on") rather than the default application flow semantics ("Applicative Flow To").
Investigation — Replicated Using the Perplexity AI Assistant
To answer this definitively, I replicated the steps directly inside a ServiceNow instance using the Perplexity AI browser assistant, which navigated the Pattern Designer and inspected the actual pattern language and UI options. Here is what we found.
Step 1 – How the Existing Tomcat WAR → Oracle Connection Works
Inside the Tomcat war Discovery Pattern (CI Type: cmdb_ci_app_server_tomcat_war), there are two places where Oracle DB connections are created:
Connection Section → "Connection to Oracle DB":
step {
name = "Create Connection to Oracle DB"
create_connection {
connection_type = APPLICATION_FLOW
entry_point_type = "cmdb_ci_endpoint_oracle_db"
attributes { ... }
}
}Connection Section → "Connectivity to Relational Database Systems":
step {
name = "Create connection db_conn Oracle"
create_connection {
connection_type = APPLICATION_FLOW
entry_point_type = "cmdb_ci_endpoint_oracle_db"
attributes { ... }
}
}Both use connection_type = APPLICATION_FLOW, which is exactly why the resulting CMDB relationship is Applicative Flow To :: Applicative Flow From.
Step 2 – What Connection Types Are Available?
When adding a Create Connection step inside the Extension Section of any Application pattern in the Pattern Designer, the "1. Select Connection Type" dropdown exposes only four options:
| Connection Type | CMDB Relationship Created |
|---|---|
| Application Flow | Applicative Flow To :: Applicative Flow From |
| Cluster | Cluster of :: Cluster |
| Inclusion | (containment-style) |
| Storage Flow | (storage-related) |
Step 3 – Does "Depends On::Used By" Exist in the CMDB?
Yes. The CI Relationship Types table (cmdb_rel_type) confirms that Depends on :: Used by is a valid, out-of-box relationship type. However, it is not exposed as a selectable connection type in the Create Connection step — neither in the Extension Section nor in the Connection Section of the Pattern Designer.
The Answer: No — Not Natively Through the Pattern Designer
The create_connection step in the Discovery/Service Mapping pattern language only supports the four connection types coded into the engine. "Depends On" is not one of them. There is no way to configure the Create Connection step to produce a DEPENDS ON :: USED BY relationship through the standard Pattern Designer UI.
Workarounds
If your use case specifically requires DEPENDS ON :: USED BY between Tomcat WAR CIs and Oracle Instance CIs, here are three approaches:
Option 1 – Post-Discovery Business Rule or Script Include
After Discovery runs and the CIs are created/updated, a Business Rule on cmdb_rel_ci (or a Scheduled Script) can traverse the "Applicative Flow To" relationships created by the pattern and insert a corresponding "Depends on :: Used by" entry in the cmdb_rel_ci table.
Option 2 – Service Mapping Manual Override
In Service Mapping, after the service map is generated, you can manually adjust or enrich CI relationship types at the map level to reflect dependency semantics.
Option 3 – Direct cmdb_rel_ci Manipulation via MID Server Script
A custom pattern step using an eval block with a Groovy/JavaScript snippet can insert directly into cmdb_rel_ci via the ServiceNow API, bypassing the create_connection abstraction entirely. This is an advanced approach and should be thoroughly tested before use in production.
Summary
| Question | Answer |
|---|---|
| Does the Create Connection step support DEPENDS ON? | ❌ No |
| Can you see DEPENDS ON in the Connection Type dropdown? | ❌ No — only Application Flow, Cluster, Inclusion, Storage Flow |
| Does DEPENDS ON::USED BY exist as a CMDB relationship type? | ✅ Yes, in cmdb_rel_type |
| Can you achieve it via a workaround? | ✅ Yes, via post-processing script or direct cmdb_rel_ci insert |
Hope this helps the community! If you have found another approach, drop it in the comments below.
— Investigated and validated using the Perplexity AI browser assistant against a live ServiceNow Zurich instance.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bill maybe I am getting something wrong, but testing your statement, using pattern designer on an extension section, at least the Create Relation/Reference dialog shows me the option to add this Depends on::Used By on the drop-down:
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Thank you @danielherre for sharing, You may want to improve the post with the correct answers with the step by step screenshot for our future reference?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Bill Martin, I did not perform any special step here.
It is a fresh installed instance, just added a test extension for the "tomcat - war" pattern and tried to add a draft relation (having seen you posy I was feeling curious about this limitation nad wanted to confirm it). And shared it so you can compare with what you see.
Unfortunately I have no idea of what would the cause for you not being able to see this relation type in your environment. Maybe you have previous steps on you Extension section?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @danielherre ,
thanks a lot for taking the time to try this out and share your screenshot, that’s exactly the kind of follow‑up that makes these threads useful in the long run.
Just to clarify what I originally tested: my article was focused on the Create Connection step in the Tomcat WAR application pattern, where the pattern uses create_connection with connection_type = APPLICATION_FLOW to build the Oracle DB relationship. In that specific flow, the platform only offers the four built‑in connection types (Application Flow, Cluster, Inclusion, Storage Flow), so Depends on::Used By doesn’t show up as an option.
What you’re showing in your screenshot is the Create relation/reference operation in an extension section. That’s a different mechanism: it talks directly to the CMDB relationship model, which is why you can pick Depends on::Used By from the dropdown there. Same Pattern Designer, different tool under the hood.
So for anyone reading this later, the nuance is:
-
If you’re using Create Connection on the application pattern, you’re still limited to the four predefined connection types and you won’t see Depends on::Used By there.
-
If you use Create relation/reference in an extension, you can choose Depends on::Used By (as Daniel’s example shows), because it’s pulling from the CMDB relationship types.
I’ll go back and tighten up the wording in the article so it’s clear that my “no” answer applies specifically to the Create Connection step, not to every pattern operation.
Really appreciate you jumping in with a fresh instance and sharing what you see, feel free to keep the screenshots coming, they help a lot of people who find this thread later