
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
SM - uCMDB Integration: Replace xslt files to populate uCMDB
Hello,
It's the first time I do an integration of UCMDB with SM. I have some custom CI Types and to pass the information to UCMDB I am using the "Universal CMDB Integration Guide", if I follow the steps outlined in the guide a Warning message appears and no longer let me proceed. I want to use OOB files for only replace the data i want, business_service_population for example:
<xsl:when test="file.device/Subtype='Infrastructure Service'">
<ci class="infrastructure_service">
<xsl:for-each select="file.device">
<!--import:cmdb_root_attributes_population.xslt-->
</xsl:for-each>
For this:
<xsl:when test="file.device/Subtype='MyCISubtype'">
<ci class="MyCISubtype">
<xsl:for-each select="file.device">
<!--import:cmdb_root_attributes_population.xslt-->
</xsl:for-each>
I can do this? Or i need change another file? Since when do I get completed with warning symbol and I get the bizservice CI in the Failed column. How can i populate the custom CI?
I'm usign SM 9.33, uCMDB 10.10

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Hi,
I guess you are trying to populate CIs of new type, not only new subtypes.
The file you modified can only add in new subtypes of an existing Sm type.
To support a new CI type in population, you will need (please refer to the existing OOB configuration files to make your own):
1. add a new pop mapping file for your new CIT, e.g. new_cit.xslt
2. modify smPopConfFile.xml
<tql name="SM New CI Population" xslFile="new_cit.xslt">
<request type="Retrieve" dataType="ci"
retrieveFileList="?"
retrieveKeysQueryName="?"
retrieveListQueryName="?"
basicQueryCondition="type="newcit""
fullQueryCondition="istatus~="Retired/Consumed""
changedCreationQueryCondition="created.by.date>'{fromDate}' and istatus~="Retired/Consumed""
changedUpdateQueryCondition="created.by.date<='{fromDate}' and devicemodtime>'{fromDate}' and istatus~="Retired/Consumed""
changedDeletionQueryCondition="devicemodtime>'{fromDate}' and istatus="Retired/Consumed""/>
</tql>
3. Create a pop job to test it. SM New CI Population will be displayed as the TQL name, while you don't need to create the TQL.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Please note that, value for <ci class="MyCISubtype"> , should be UCMDB ci type value.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Okay,
first I create a xslt file namened Switch.xslt and contains a copy of business_service_population.xslt but I change the values.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/RetrieveucmdbBusinessServiceListResponse">
<topology>
<xsl:for-each select="instance">
<xsl:choose>
<xsl:when test="file.device/Subtype='HCS'">
<ci class="HCS">
<xsl:for-each select="file.device">
<!--import:cmdb_root_attributes_population.xslt-->
</xsl:for-each>
</ci>
</xsl:when>
<xsl:when test="file.device/Subtype='NGN'">
<ci class="NGN">
<xsl:for-each select="file.device">
<!--import:cmdb_root_attributes_population.xslt-->
</xsl:for-each>
</ci>
</xsl:when>
<xsl:otherwise>
<ci class="Switch">
<xsl:for-each select="file.device">
<!--import:cmdb_root_attributes_population.xslt-->
<attribute name="provider" type="String"><xsl:value-of select="ServiceProvider"/></attribute>
</xsl:for-each>
</ci>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</topology>
</xsl:template>
</xsl:stylesheet>
Then i modify smPopConfFile.xml file and add the values of the xslt file that I create.
<tql name="Switch Test" xslFile="Switch.xslt">
<request type="Retrieve" dataType="ci"
retrieveFileList="file.device"
retrieveKeysQueryName="RetrieveucmdbBusinessServiceKeysListRequest"
retrieveListQueryName="RetrieveucmdbBusinessServiceListRequest"
basicQueryCondition="type="newcit""
fullQueryCondition="istatus~="Retired/Consumed""
changedCreationQueryCondition="created.by.date>'{fromDate}' and istatus~="Retired/Consumed""
changedUpdateQueryCondition="created.by.date<='{fromDate}' and devicemodtime>'{fromDate}' and istatus~="Retired/Consumed""
changedDeletionQueryCondition="devicemodtime>'{fromDate}' and istatus="Retired/Consumed""/>
</tql>
Finally I create a new integration point, add the job and run it, that was successful but not populate information.