February 16, 2022
How to Use the For-Each Feature with DX Unified Infrastructure Management’s Monitoring Configuration Service

Written by: Steve D'Arcy
For-Each is a new feature added to the DX Unified Infrastructure Management’s (DX UIM) Monitoring Configuration Service (MCS) that uses the device attributes with one or multiple values. MCS will loop through each value and create a profile for each one. If that attribute does not exist for a device, no profile will be created. Similarly, if a new value is added or removed from a device, MCS will revaluate and add or remove profiles.
There are two kinds of device attributes, one is defined as part of the niscache for all computer systems controlled by the discovery server. The other type of attribute is known as a device custom attribute; both types of device attributes are available for the users to create and use.
A good example of when to use For-Each is for database instances. It is common to have multiple instances running on the same database server. With For-Each, you can define the name of each instance under the same device attribute and use it in a group or device profile.
In this example, we created a custom attribute: mssqlinstances. We have two devices in a group, each device has the mssqlinstance attribute defined, and one has two instances while the other has three. Now we are going to create a group profile using the For-Each option.
It is important to note the For-Each option is not available for all templates. The template must require a profile name as the value of your chosen attribute is written to the profile name to differentiate them from each other.
As shown below, to use the For-Each we need to set “Enable” to “Yes.” Now, give the For-Each Group profile a name in the “For-Each Value Of” drop-down. Select the device attribute from the list; in this example, we are using an MCS device custom attribute created in the “MCS Device Custom Attributes” section with the list of MS SQL Server instances “device.mssqlinstances.” You can also use the “Matching Expression” to filter that list even further, but for this example we don’t need to.
Now that the For-Each set up is complete, you need to associate the For-Each value to the SQL Server profile name. This value will always be {foreach-instance}. MCS will substitute the profile name with each different value it finds in the custom attribute you set up. If you need to use that same value in the profile itself, you can use {profilename}, as this is now set with that value. In the Server Name field we can use two variables, {device.ip} and the instance name which is now the {profilename}, and format this like {device.ip}\{profilename} as shown below.
For this example, one group profile has created five profiles over two devices as shown below.
If we look at one device profile below, you will see the actual values used from the attributes:
If we look at the probe UI, you can see it is configured as we wanted.
MCS Device Custom Attributes
One of the existing features in MCS, now exposed in 20.3.x and later, is the ability to define device custom attributes and allow MCS to use these in the profile. Each device can have a different value but the same named custom attribute. MCS will use the value defined for each device. This allows you to create group profile where the value of a field is different for every device in that group, whereas before you would have to create single profile for each device.
Some useful device attributes are always present for you to use in profiles. These are:
- {device.name}
- {device.ipaddress}
- {device.usertag1}
- {device.usertag2}
- {device.origin}
- {device.os_type}
Note: To reference these values in a profile they must be enclosed in curly brackets {}
Creating device custom attributes is done using the uimapi (RESTful), wherein you update the device but also must supply all values every time. Not supplying an attribute will delete it, supplying a different value to an attribute will change it, and supplying a new attribute will add it.
Any RESTful tool can be used to GET the device and PUT the updates to the device. There is also a swagger page to use:
http://<hostname>:<port>/uimapi/swagger-ui.html
Select the deviceoperations and GET / deviceoperations/{identifier}, Try it out. Enter the device name and choose the lookup by_name then Execute.
The device is returned
<device>
<robot>true</robot>
<cs_id>42</cs_id>
<device_id>27</device_id>
<csdev_id>DCD1958D97E7FB11CE163EBC76D1E9B5E</csdev_id>
<name>lvndev014756</name>
<status>OK</status>
<origin>BCRMUSA</origin>
<os_type>Windows</os_type>
<nimbus_type>1</nimbus_type>
<ip>10.74.137.116</ip>
<cs_type>A</cs_type>
<customAttribute>
<id>0</id>
<name>device.name</name>
<scope>default</scope>
<discovered>true</discovered>
<encrypted>true</encrypted>
<lastModified>0</lastModified>
<value>lvndev014756</value>
<device_Id>27</device_Id>
</customAttribute>
…
</device>
Copy the entire output and add your own custom attributes at the bottom before the </device>.
For the “foreach” example, we will create one mssqlinstance device custom attribute with two values (instance names). You can have as many as you want for each attribute:
<customAttribute>
<id>120</id>
<name>mssqlinstance</name>
<scope>default</scope>
<discovered>true</discovered>
<encrypted>true</encrypted>
<lastModified>0</lastModified>
<value>MSSQLSERVER</value>
<value>VALIDATION</value>
<device_Id>27</device_Id>
</customAttribute>
Note: everything you send overwrites the device attributes, so changing or omitting values or entire attributes will be updated for that device.
Using the Swagger page, select the “deviceoperations” and PUT / deviceoperations/{identifier}, Try it out. Enter the device name and choose the lookup by_name, paste the entire GET device output with your new device custom attribute(s), then Execute.
Note: this should get a 204 return code
Application Discovery
The Application Discovery feature in UIM allows you to create your own device attributes, which are written to the niscache on the local device and read by the discovery_server probe and saved in the CM_COMPUTER_SYSTEM_ATTR table associated with that device. Using the example of database instances, you could write an application discovery script that queries each database server for every instance and creates a device attribute. The device attribute name must be the same but you can have multiple instances of the same attribute with different values.
Using the same example, we have two database servers, one with two instances and the other with three. The output of the application discovery script is shown below.
Database server 1:
instanceName=MSSQLSERVER
instanceName=VALIDATION
Database server 2:
instanceName=MSSQLSERVER
instanceName=VALIDATION
instanceName=DEVELOPMENT
These will be written to the CM_COMPUTER_SYSTEM_ATTR table as UserPropMV.{application discovery script name}.{attribute name}, so in this example for Database Server 1:
Your device attribute will appear in the “For-Each Value Of” drop-down list for you to use:
Details on creating custom scripts for application discovery can be found here.
For more resources on infrastructure management, visit the DX UIM page on Broadcom’s Enterprise Software Academy.

Steve D'Arcy
Steve D’Arcy is one of Broadcom’s trusted advisors, learning about the challenges customers face and helping overcome them to ensure customers’ business goals are met. He has worked with unified infrastructure management since 2010, and during this time has collaborated closely with engineering and field operations to...
Other Resources You might be interested In
Observability and Monitoring Governance (Part 1 of 4)
Find out how strong monitoring governance can help IT teams cut through the noise, see what truly matters, and act with precision.
Observability and Monitoring Governance (Part 2 of 4)
Read this post and discover some of the top downstream benefits of establishing strong monitoring governance. Gain best practices on how and where to start.
DX UIM Hub Interconnectivity and the Benefits of Static Hubs
Find out how using static hubs is a powerful way to enhance observability. Discover when and how to use static hubs, and the benefits they can provide.
Broadcom Recognized as a Leader: Engineering the Future of Service Orchestration
Read this post and see why Broadcom was named a Leader in the 2025 Gartner® Magic Quadrant™ for Service Orchestration and Automation Platforms.
Customer Spotlight: Global Bank MUFG Saves Millions of Dollars
MUFG’s Bruce Frank discusses how the global bank invokes Broadcom's Automated Analytics & Intelligence (AAI) to manage SLAs and ensure regulatory compliance, saving millions of dollars annually.
The "Lighthouse" of Strategy: Guiding Your Organization Through Decision Chaos
Strategic clarity is key. See how strategic portfolio management (SPM) helps align resources and decisions for better business outcomes and ROI.
4 Ways AppNeta Enhances Cost-Focused Cloud Planning
See how AppNeta delivers insights that enable cloud architects to correlate wasted spending with performance degradation and proactively relocate resources.
Automic Automation Cloud Integrations: Azure Functions Agent Integration
Broadcom's Azure Functions Automation Agent lets you easily execute Azure Functions, monitor and manage them with your existing enterprise workload automation, as well as other cloud-native...
The Public Internet Is Not Your WAN
Moving beyond MPLS was a strategic necessity. To succeed in modern environments, you need to stop guessing about internet performance and start measuring it.