Highlighted
Absent Member.. Absent Member..
Absent Member..
168 views

UCMDB Support Tip: Service Management population fails with error mapping in XSLT file

If using uCMDB 10.01 CUP3 CP12 and moving towards integration with SM 9.31. Running the out of the box SM population, and encountering a series of errors:

CMDB Operation Internal Error: class com.mercury.topaz.cmdb.shared.fcmdb.dataAccess.exception.AdapterAccessGeneralException : The Universal CMDB attribute "sm_id" of CI type "node" is mapped to an empty value, please check this mapping in XSLT file.

If one didn't customize this field, this error is probably generated because the UCMDB enhancements CP wasn't properly installed on the SM server : operation Data Access Adapter Query: Retrieve Changed Data

 

In order to address such issue, several actions are required to be troubleshoot:

“UCMDB CI attribute sm_id not mapped to the right Service Manager field in XSLT

The Service Manager CI ID must be mapped to Universal CMDB CI attribute sm_id, since it is used to push the Universal CMDB CI ID back to Service Manager. Out-of-the-box, this attribute mapping is configured in XSLT file cmdb_root_attributes_population.xslt, which is imported by the other XSLT files as a common field mapping, and the Service Manager CI ID field is exposed as the caption “CIName”.

 

Sample configuration

If one configured the mapping for “sm_id” in one of the following ways:

One did not configure the mapping for “sm_id”;

One did not expose the Service Manager CI ID field in the Service Manager web service;

One exposed the Service Manager CI ID field with a caption other than “CIName”;

The Service Manager CI ID field was exposed in the web service as the caption “CIName”,

but one configured a wrong name (for example, “CIName_wrong”) in the XSLT file (see

the following figure).

 

<attribute name="name" type="String"><xsl:value-of select="CIIdentifier"/></

attribute>

<attribute name="sm_id" type="String"><xsl:value-of select="CIName_wrong"/></

attribute>

<attribute name="global_id" type="String"><xsl:value-of select="UCMDBId"/></

attribute>

 

Error message

When one run the population job, one will get a “Failed” status. In addition, from both the population log file and the Universal CMDB studio, one will get an error message similar to the following:

 

java.lang.RuntimeException: The Universal CMDB attribute "sm_id" of CI type "business_service" is mapped to an empty value, please check this mapping in XSLT file.

at

com.mercury.topaz.fcmdb.adapters.serviceDeskAdapter.population.PopChunkGetter.addOr

DelCIToTopology(PopChunkGetter.java:198)

at

com.mercury.topaz.fcmdb.adapters.serviceDeskAdapter.population.PopChunkGetter.addOr

DelCIsToTopology(PopChunkGetter.java:184)

at

com.mercury.topaz.fcmdb.adapters.serviceDeskAdapter.population.PopChunkGetter.getNe

xtResultChunk(PopChunkGetter.java:164)

at

com.mercury.topaz.fcmdb.adapters.serviceDeskAdapter.ServiceDeskAdapter.getChanges(ServiceDeskAdapter.java:1149)

at

 

Solution

Search for text “The Universal CMDB attribute "sm_id" of CI type” to find the CI type, and then configure the attribute mapping for this CI Type in the XSLT file.”

With debughttp:1 and notice that the id field was missing from the extaccess record, as a result it was added.

Log file showed:

 

24233( 24950) 06/07/2013 11:48:18 RTE D RADTRACE 8 [ 0] ddm.processData start process CPU( 0 25 ) 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD953AE0) DBACCESS - Cache Find against file ScriptLibrary found 1 record (name="discoveryEvent") 24233( 24950) 06/07/2013 11:48:18 RTE D SCRIPTTRACE: discoveryEvent.populateCompany entered, line 406 24233( 24950) 06/07/2013 11:48:18 RTE D SCRIPTTRACE:Parameter type:STRING2 value:1 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD953AE0) DBACCESS - Cache Find against file ScriptLibrary found 1 record (name="discoveryEvent") 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD953AE0) DBACCESS - Cache Find against file ScriptLibrary found 1 record (name="uCMDBConfiguration") 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scjs" and message.id="0") 24233( 24950) 06/07/2013 11:48:18 RAD E Script 'discoveryEvent' line 407: ERROR TypeError: lib.uCMDBConfiguration.isEnable is not a function at char 1 24233( 24950) 06/07/2013 11:48:18 RTE D SCRIPTTRACE: discoveryEvent.populateCompany exited, elapsed: 1 ms 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scev" and message.id="1") 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scev" and message.id="5") 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scev" and message.id="1")
24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scev" and message.id="1") 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="scev" and message.id="149") 24233( 24950) 06/07/2013 11:48:18 RTE D RADTRACE 10 [ 0] ddm.processData exit.error.msg process CPU( 0 25 ) 24233( 24950) 06/07/2013 11:48:18 RTE D (0xDD96DCD0) DBACCESS - Cache Find against file scmessage found 1 record (syslanguage="en" and class="error" and message.id="10") 24233( 24950) 06/07/2013 11:48:18 RTE D RADTRACE 10 [ 0] ddm.processData exit.error.msg.1 userdefn CPU( 0 25 )

In the new uCMDB Content pack included in Service Manager 931 application, it was added a new javascript called lib.uCMDBConfiguration.isEnabled, but when use the code, it call lib.uCMDBConfiguration.isEnable, the last character "d" is missed

To fix this specific error, one should Manually change a JavaScript and compile it in Service Manager: 1. Log in to Service Manager as a system administrator. 2. Go to Tailoring > Script Library, and open the "discoveryEvent 3. In this file, replace all instances of strings "lib.uCMDBConfiguration.isEnable" with "lib.uCMDBConfiguration.isEnabled", SAVE Note: You can find the string in lines 43, 86 and 407. 4. Click "Compile" to make sure the code is correct and click "Save". 5. Log off and log back in.

After applying these changes, the push job worked correctly from uCMDB to SM.

"HP Support
If you find this or any post resolves your issue, please be sure to mark it as an accepted solution."

Click the KUDOS star on the left to say 'Thanks'
Labels (1)
Tags (1)
0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.