Skip to content

Grouping Patterns

Mat Davis edited this page Nov 6, 2019 · 1 revision

TADDM 7.3 introduced a new way of mapping business applications known as grouping patterns. The following are some best practices for use with this new tool.

Disable Backwards Compatibility

With the addition of the simplified model in TADDM 7.3, business applications are no longer represented by the Application class. Instead they are represented by the CustomCollection class. If upgrading from a previous version of TADDM or if selected during installation, TADDM will still create these old/deprecated classes when building business applications via the grouping composer. This feature is needed if IBM Control Desk is integrating with TADDM, if another CMDB is integrating with the Application class, or if custom reporting is being done against the Application class. This feature causes overhead if not needed so it is recommended to disable this feature.

  1. On the PSS, change the following property to false

    com.ibm.cdb.serviceinfrastructure.earlier.ver.compatibility=false

  2. Also make the same change on all of the secondary storage servers.

  3. Restart the PSS and all secondary storage servers.

  4. Delete all existing Application components that were previously created (this might run long if there are a lot of components to delete).

    dist/sdk/bin/api.sh -u administrator -p xxxxxxx delete -m "SELECT * FROM ONLY Application"

Add a New Grouping Patterns Configuration to Control Data Traversal (7.3.0.2+)

The power of the new grouping patterns is the data traversal tool that automatically traverses dependencies to add related components to a mapping. However, this power can cause problems by adding too many components. This is controlled through "grouping patterns configurations" that are loaded via the command line bizappscli tool. Provided here is a best practices configuration file named gpConfig.xml for TADDM 7.3.0.2 that has many important exclusions added to control the data traversal creep that may occur. New sections for the configuration were added in FP1 and FP2. Download the configuration and load it into TADDM using the bizappscli tool. Use myCompanyConfig instead of ibmConfig.

dist/sdk/bin/bizappscli.sh importConfiguration -c ibmConfig -f /opt/IBM/taddm/dist/custom/gpConfig.xml

Then while using the grouping patterns tool select this new configuration instead of the default.

You may need to tinker with this configuration to get what you need from your environment. There are comments in the gpConfig.xml file explaining the purpose and result of each change from the default configuration. Share below in the comments section any lessons learned.

See the section in the user's guide for more information about grouping patterns configurations.

Simple Lower-Down Method

One method for using the data traversal is to keep it simple by only using the Lower-Down template. In this case, you would still need a selector for each type of software component that makes up your application (e.g. WebSphere, DB2). The Lower-Down template, in conjunction with the grouping pattern configuration above will automatically add the hardware layer and this will allow the proper relationships to display in the topology graph.

Adding Computer System Components

It is not recommended to add computer system components through a selector, but rather to use the Lower-Down template when adding software components. The exception to this rule is the case where a computer system component does not host any software components. For example, a computer system may be used for storage or may run a batch job that can't be discovered. In this case, you can add a "Computer System" selector to include the hardware layer manually. You may still select the Lower-Down template to include any virtual hardware layer and/or networking layer.

Increase Interval for Default Schedule

Each grouping pattern executes in the background on a default schedule of 4 hours. TADDM runs the selectors and data traversal again to look for any new components and rebuilds the application structure. The default of 4 hours is too often, especially for a production environment and will just cause constant thrashing. Discovery doesn't occur in 4 hour intervals, and business application changes usually don't occur in 4 hour intervals. For this reason it is recommended to increase the interval for the default schedule to at least 24 hours. It should be increased to the maximum amount of time reasonable for your environment.

Here is the command to list the schedules and see the GUID that you will need to update the schedule.

dist/sdk/bin/bizappscli.sh listSchedules -G
GUID   EXECUTION_GROUP   NAME   INTERVAL   DESCRIPTION
22B7AB1EAAF9399BA75BF4973E160776   default   default   INTERVAL: 4h

Here is the command to update the default schedule to 24 hours.

dist/sdk/bin/bizappscli.sh updateSchedule -g 22B7AB1EAAF9399BA75BF4973E160776 -i 24

Helpful Troubleshooting Queries

MQL query to list grouping patterns that are using the 'default' grouping patterns configuration.

SELECT name FROM GroupingPattern WHERE configuration.name == 'default'

MQL query to find active grouping patterns where traversal is enabled and configured to use something other than the the simple Lower-Down method described above.

SELECT GroupingPattern.name FROM Selector, GroupingPattern 
WHERE Selector.useTraversalTemplate AND ( Selector.goHigherUp OR Selector.goHigherDown OR Selector.goLowerUp ) 
AND NOT Selector.isDisabled AND NOT GroupingPattern.ignore AND Selector.parent.guid == GroupingPattern.guid

MQL query to find grouping patterns that start or end with a blank space. This is helpful for finding copy/paste errors.

SELECT name FROM GroupingPattern WHERE name STARTS-WITH ' ' OR name ENDS-WITH ' ' AND NOT ignore

MQL query to find grouping patterns where a selector grouping name expression has been changed from the default but does not match the pattern name. This could be a typo or if grouping name expressions are being used then these might be valid.

SELECT name FROM GroupingPattern, Selector 
WHERE Selector.groupingNameExpression != '\${patternName}' AND NOT Selector.isDisabled 
AND Selector.parent.guid == GroupingPattern.guid AND NOT GroupingPattern.ignore 
AND Selector.groupingNameExpression != GroupingPattern.name

SQL query to list all business applications with nodes and types.

SELECT CSTCOL.GUID_C AS SOURCEGUID, CSTCOL.NAME_C AS NAME, 'Application' AS SOURCECLASS, 'federates' AS RELATIONSHIP, 
NODE.SOURCEGUID_C AS DESTGUID, NODE.SOURCECOLLATIONTYPE_C AS DESTCLASS FROM BB_NODE84_V NODE, BB_CUSTOMCOLLECTION23_V CSTCOL 
WHERE NODE.PK__PARENTNODE_C = CSTCOL.PK_C AND CSTCOL.HIERARCHYTYPE_C = 'BusinessApplication'

SQL query to find orphaned business application nodes. This occurs when a static selector is used and the underlying component is deleted.

SELECT CSTCOL.NAME_C AS NAME, CSTCOL.GUID_C AS SOURCEGUID, 'Application' AS SOURCECLASS, 'federates' AS RELATIONSHIP, 
NODE.SOURCEGUID_C AS DESTGUID, NODE.SOURCECOLLATIONTYPE_C AS DESTCLASS FROM BB_NODE84_V NODE, BB_CUSTOMCOLLECTION23_V CSTCOL 
WHERE NODE.PK__PARENTNODE_C = CSTCOL.PK_C AND CSTCOL.HIERARCHYTYPE_C = 'BusinessApplication' 
AND NODE.SOURCEGUID_C NOT IN ( SELECT GUID_X FROM PERSOBJ )
Clone this wiki locally