Discussion:
TpaeIF connector - Failing to Update MAX users
Add Reply
t***@gmail.com
2019-09-24 17:42:52 UTC
Reply
Permalink
Good afternoon all!

Running into an issue with our TpaeIF connector and was hoping someone may have had this happen to them before.

I am receiving the glorious "CTGDJP561I Can not find a Maximo exception."

I can at least confirm we are connected end to end and can see calls to Maximo instance...but no maximo exceptions found...

It seems to be hitting HTTP correctl

Any help at all is greatly appreciated! Here is a snip of output with detailed logging, but can provide whatever is needed to help PD.

SIDENOTE: Just skimming through the output once more, I noticed a Maximo version listed as 7.1 in connector settings for 'UpdateUser_Maximo'. Should we worry about updating it to 7.6 as this would be the most current version we have integrated?

Thank you in advance!
-Scott

-----------------------------------------
12:22:41,099 INFO - CTGDIS255I AssemblyLine AssemblyLines/Maximo_TpaeIF_QA is started.
12:22:41,099 WARN - [GetMaximoActiveQAAccounts] CTGDIS043I Enabled hook script for default_fail is empty.
12:22:41,099 WARN - [FetchUserManager] CTGDIS043I Enabled hook script for default_fail is empty.
12:22:41,099 WARN - [FindITIMManager] CTGDIS043I Enabled hook script for default_fail is empty.
12:22:41,099 INFO - [UpdateUser_Maximo] CTGDIS058I Connector com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector inherits from [parent].
12:22:41,099 INFO - [UpdateUser_Maximo] CTGDIS187I Loaded com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector, 2.2-di7.1.1 %I%, 20%E%.
12:22:41,099 INFO - [UpdateUser_Maximo] CTGDIS064I Loading Attribute Map.
12:22:41,099 INFO - [UpdateUser_Maximo] CTGDIS065I Load Hooks.
12:22:42,927 INFO - CTGDIS115I Starting scripting hook of type prolog0.
12:22:42,927 INFO - CTGDIS116I Scripting hook of type prolog0 finished.
12:22:42,974 INFO - [UpdateUser_Maximo] CTGDIS044I Initializing Connector.
12:22:42,974 INFO - [UpdateUser_Maximo] CTGDJP502I Configuration parameters: com.ibm.di.connector.maximo.util.AbstractConfigurationParameters{maxobjEnterpriseService=MXPERSONInterface; maxobjObjectStructure=MXPERSON; queryCriteria=null; enterpriseServiceUpdate=UpdateMXPERSONInterface; enterpriseServiceQuery=QueryMXPERSONInterface; pageSize=100; enterpriseServiceCreate=CreateMXPERSONInterface; maximoBaseURL=http://blah.mna.corp.blah.com:9083; xmlCharacterValidation=false; maximoVersion=7 1 Harrier 072 7100-001; replaceOnUpdate=null; password=(********); queryArgs=null; errorOnExcedentSize=true; enterpriseServiceSync=null; authenticationRequired=true; transLanguage=EN; userId=tivoliprod; objectStructure=MXPERSON; externalSystem=EXTSYS1; maximoServiceBase=meaweb; mbo=null; timeout=0; }.
12:22:42,974 INFO - [UpdateUser_Maximo] CTGDIS158I Registering Script Beans.
12:22:42,974 INFO - [UpdateUser_Maximo] CTGDIS484I Connector com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector: 2.2-di7.1.1 %I%, 20%E%.
12:22:42,974 INFO - [UpdateUser_Maximo] CTGDIS046I Initialization finished.
12:22:42,974 INFO - CTGDIS087I Iterating.
12:23:23,813 INFO - [UpdateUser_Maximo] CTGDJP505I New MxConnLookup instance created.
12:23:23,813 INFO - [UpdateUser_Maximo] CTGDJP510I Performing search.
12:23:23,813 INFO - [UpdateUser_Maximo] Target URL: http://mo2u1-max-das01.mna.corp.mosaicco.com:9083/meaweb/schema/service/MXPERSONService.xsd
12:23:23,844 INFO - [UpdateUser_Maximo] CTGDJP513I Receiving HTTP response message.
12:23:23,861 INFO - [UpdateUser_Maximo] CTGDIS495I handleException , update, java.lang.NullPointerException
12:23:23,861 INFO - [UpdateUser_Maximo] CTGDJP561I Can not find a Maximo exception.
12:23:23,861 INFO - [UpdateUser_Maximo] CTGDIS350I Hook update_fail [1].
12:23:23,861 INFO - [UpdateUser_Maximo] CTGDIS353I Script is: mgrNotUpdated+=work.getString("userid")+" | "+work.getString("eruid")+"\n";
system.skipEntry();
t***@gmail.com
2019-09-24 18:15:59 UTC
Reply
Permalink
Here is the correct log for qa instance with manager found and entries being sent to max connector before failing...my apologies for the confusion...long day...

13:11:25,683 WARN - [GetMaximoActiveQAAccounts] CTGDIS043I Enabled hook script for default_fail is empty.
13:11:25,683 WARN - [FetchUserManager] CTGDIS043I Enabled hook script for default_fail is empty.
13:11:25,683 WARN - [FindITIMManager] CTGDIS043I Enabled hook script for default_fail is empty.
13:11:25,683 INFO - [UpdateUser_Maximo] CTGDIS058I Connector com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector inherits from [parent].
13:11:25,683 INFO - [UpdateUser_Maximo] CTGDIS187I Loaded com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector, 2.2-di7.1.1 %I%, 20%E%.
13:11:25,683 INFO - [UpdateUser_Maximo] CTGDIS064I Loading Attribute Map.
13:11:25,683 INFO - [UpdateUser_Maximo] CTGDIS065I Load Hooks.
13:11:25,683 INFO - CTGDIS115I Starting scripting hook of type prolog0.
13:11:25,683 INFO - CTGDIS116I Scripting hook of type prolog0 finished.
13:11:25,699 INFO - [UpdateUser_Maximo] CTGDIS044I Initializing Connector.
13:11:25,699 INFO - [UpdateUser_Maximo] CTGDJP502I Configuration parameters: com.ibm.di.connector.maximo.util.AbstractConfigurationParameters{maxobjEnterpriseService=MXPERSONInterface; maxobjObjectStructure=MXPERSON; queryCriteria=null; enterpriseServiceUpdate=UpdateMXPERSONInterface; enterpriseServiceQuery=QueryMXPERSONInterface; pageSize=100; enterpriseServiceCreate=CreateMXPERSONInterface; maximoBaseURL=http://maximoqameaweb.mosaicco.com; xmlCharacterValidation=false; maximoVersion=7 1 Harrier 072 7100-001; replaceOnUpdate=null; password=(********); queryArgs=null; errorOnExcedentSize=true; enterpriseServiceSync=null; authenticationRequired=true; transLanguage=EN; userId=tivoliprod; objectStructure=MXPERSON; externalSystem=EXTSYS1; maximoServiceBase=meaweb; mbo=null; timeout=0; }.
13:11:25,699 INFO - [UpdateUser_Maximo] CTGDIS158I Registering Script Beans.
13:11:25,699 INFO - [UpdateUser_Maximo] CTGDIS484I Connector com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector: 2.2-di7.1.1 %I%, 20%E%.
13:11:25,699 INFO - [UpdateUser_Maximo] CTGDIS046I Initialization finished.
13:11:25,699 INFO - CTGDIS087I Iterating.
13:11:25,714 INFO - [UpdateUser_Maximo] CTGDJP505I New MxConnLookup instance created.
13:11:25,714 INFO - [UpdateUser_Maximo] CTGDJP510I Performing search.
13:11:25,714 INFO - [UpdateUser_Maximo] Target URL: http://maximoqameaweb.blah.com/meaweb/schema/service/MXPERSONService.xsd
13:11:26,011 INFO - [UpdateUser_Maximo] CTGDJP513I Receiving HTTP response message.
13:11:26,042 INFO - [UpdateUser_Maximo] CTGDIS495I handleException , update, java.lang.NullPointerException
13:11:26,042 INFO - [UpdateUser_Maximo] CTGDJP561I Can not find a Maximo exception.
13:11:26,042 INFO - [UpdateUser_Maximo] CTGDIS350I Hook update_fail [1].
13:11:26,042 INFO - [UpdateUser_Maximo] CTGDIS353I Script is: mgrNotUpdated+=work.getString("userid")+" | "+work.getString("eruid")+"\n";
system.skipEntry();
13:11:32,574 INFO - CTGDIS088I Finished iterating.
13:11:32,574 INFO - [UpdateUser_Maximo] CTGDJP523I Clearing configuration parameters.
13:11:32,589 INFO - CTGDIS100I Printing the Connector statistics.
13:11:32,589 INFO - [GetMaximoActiveQAAccounts] Get:1
13:11:32,589 INFO - [FetchUserManager] Lookup:1
13:11:32,589 INFO - [SkipLocationUsers] Calls: 1
13:11:32,589 INFO - [FindITIMManager] Lookup:1
13:11:32,589 INFO - [IsManagerExists] Branch True:1, Branch False:0
13:11:32,589 INFO - [UpdateUser_Maximo] Skip:1, Errors:1
13:11:32,589 INFO - CTGDIS104I Total: Get:1, Lookup:2, Skip:1, Errors:1.
13:11:32,589 INFO - CTGDIS101I Finished printing the Connector statistics.
13:11:32,589 INFO - CTGDIS080I Terminated successfully (1 errors).
j***@gmail.com
2019-09-25 02:17:11 UTC
Reply
Permalink
Hi Scott,
The line "Receiving HTTP response message" indicates that Maximo
responded with a 200 OK code when searching for the user.
Then you get a NullPointerException, which could indicate an error in SDI,
but unfortunately there is no stacktrace, so it is hard to say more.
It could also be a configuration issue, but even then, the error message should have been better, not just a NullPointerException.

Could you please post the stacktrace?
By default, SDI will log a stacktrace, but when you write your own error handling hooks, you need to do this yourself.
Here is some code to get the stacktrace, this works in both TDI 7.1.1 and SDI 7.2, place it somewhere in your error handling hook:

ex = error.getObject("exception");
if (ex != null) {
sw = java.io.StringWriter();
pw = java.io.PrintWriter(sw);
ex.printStackTrace(pw);
pw.close();
task.logmsg("Stacktrace: " + sw)
} else {
task.logmsg("No exception?")
}

Additionally, it may be useful to know if you are using TDI 7.1.1 or SDI 7.2, and which fixpack level you are on.
t***@gmail.com
2019-09-25 16:36:21 UTC
Reply
Permalink
Thank you for your response and for the stack trace bit!

I placed in my error handling as suggested and do see output now for stack trace.

11:30:31,608 INFO - [UpdateUser_Maximo] CTGDJP510I Performing search.
11:30:31,608 INFO - [UpdateUser_Maximo] Target URL: http://mo2u1-max-das01.mna.corp.mosaicco.com:9083/meaweb/schema/service/MXPERSONService.xsd
11:30:31,624 INFO - [UpdateUser_Maximo] CTGDJP513I Receiving HTTP response message.
11:30:31,780 INFO - [UpdateUser_Maximo] CTGDIS495I handleException , update, java.lang.NullPointerException
11:30:31,780 INFO - [UpdateUser_Maximo] CTGDJP561I Can not find a Maximo exception.
11:30:31,780 INFO - [UpdateUser_Maximo] CTGDIS350I Hook update_fail [15].
11:30:31,780 INFO - Stacktrace: java.lang.NullPointerException
at org.eclipse.xsd.impl.XSDSchemaImpl.patch(XSDSchemaImpl.java:1489)
at org.eclipse.xsd.impl.XSDSchemaImpl.changeAttribute(XSDSchemaImpl.java:2343)
at org.eclipse.xsd.impl.XSDConcreteComponentImpl.eNotify(XSDConcreteComponentImpl.java:1240)
at org.eclipse.xsd.impl.XSDSchemaImpl.setSchemaLocation(XSDSchemaImpl.java:829)
at org.eclipse.xsd.util.XSDResourceImpl.doLoad(XSDResourceImpl.java:756)
at org.eclipse.xsd.util.XSDResourceImpl.doLoad(XSDResourceImpl.java:784)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1094)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:900)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:249)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:264)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:390)
at org.eclipse.xsd.ecore.XSDEcoreBuilder.generate(XSDEcoreBuilder.java:2640)
at com.ibm.di.connector.maximo.parsing.MxConnXSDEcoreBuilder.generate(MxConnXSDEcoreBuilder.java:143)
at com.ibm.di.connector.maximo.parsing.Schema.loadSchemaElement(Schema.java:318)
at com.ibm.di.connector.maximo.parsing.Schema.getInstance(Schema.java:184)
at com.ibm.di.connector.maximo.core.MxConnConfiguration.getSchema(MxConnConfiguration.java:1003)
at com.ibm.di.connector.maximo.core.MxConnLookup.setSearchCriteria(MxConnLookup.java:88)
at com.ibm.di.connector.maximo.core.SimpleTpaeIFConnector.findEntry(SimpleTpaeIFConnector.java:639)
at com.ibm.di.server.AssemblyLineComponent.executeOperation(AssemblyLineComponent.java:3374)
at com.ibm.di.server.AssemblyLineComponent.update(AssemblyLineComponent.java:1731)
at com.ibm.di.server.AssemblyLine.msExecuteNextConnector(AssemblyLine.java:3814)
at com.ibm.di.server.AssemblyLine.executeMainStep(AssemblyLine.java:3418)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3026)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3009)
at com.ibm.di.server.AssemblyLine.executeAL(AssemblyLine.java:2975)
at com.ibm.di.server.AssemblyLine.run(AssemblyLine.java:1338)
Post by j***@gmail.com
Hi Scott,
The line "Receiving HTTP response message" indicates that Maximo
responded with a 200 OK code when searching for the user.
Then you get a NullPointerException, which could indicate an error in SDI,
but unfortunately there is no stacktrace, so it is hard to say more.
It could also be a configuration issue, but even then, the error message should have been better, not just a NullPointerException.
Could you please post the stacktrace?
By default, SDI will log a stacktrace, but when you write your own error handling hooks, you need to do this yourself.
ex = error.getObject("exception");
if (ex != null) {
sw = java.io.StringWriter();
pw = java.io.PrintWriter(sw);
ex.printStackTrace(pw);
pw.close();
task.logmsg("Stacktrace: " + sw)
} else {
task.logmsg("No exception?")
}
Additionally, it may be useful to know if you are using TDI 7.1.1 or SDI 7.2, and which fixpack level you are on.
t***@gmail.com
2019-09-25 16:59:04 UTC
Reply
Permalink
Also, We are running SDI 7.2 FP3
j***@gmail.com
2019-09-27 01:48:58 UTC
Reply
Permalink
Hi Scott,

the stacktrace indicates that the connector is trying to retrieve a schema
and parse it, and somehow that fails. The schema seems to be located at
http://mo2u1-max-das01.mna.corp.mosaicco.com:9083/meaweb/schema/service/MXPERSONService.xsd

and for some reason the org.eclipse.xsd library fails to load and parse this,
throwing a NullPointerException.

One thing that strikes me as odd, is that the line numbers in the
stacktrace does not match what I would expect.
When I look at jars/3rdparty/others/emf/org.eclipse.xsd.jar in the SDI 7.2
distribution, and decompile the org.eclipse.xsd.impl.XSDSchemaImpl class,
the patch() method begins at line 1562. But you get
an exception thrown at line 1489. Also, the changeAttribute method
begins at line 2455, while your stacktrace shows a call at line 2343.

Could you possibly have an old version of the org.eclipse.xsd library in the SDI jars folder?
If so, maybe that old version has a bug that is fixed in newer versions?

If you use Linux, you can locate files with this command from the
SDI install directory:
find jars -name org.eclipse.xsd\*.jar

If you use Windows, you probably know some similar command.

The org.eclipse.xsd.jar distributed with SDI has a size of 994077 bytes,
and the content is from 2013.
Please verify that there are no old versions of the library hanging around.
I am only guessing that old versions would have a name matching the above
pattern, but it seems like a reasonable guess.

It is also possible to specify additional jar files with the property
com.ibm.di.loader.userJars in solution.properties. If anything is mentioned
there, you could check that as well. And of course there are other ways
of adding jar files to the Java class path, if you have used any of those,
you could also check that there are no old versions used there.
Franzw
2019-09-30 10:08:19 UTC
Reply
Permalink
Post by j***@gmail.com
Hi Scott,
the stacktrace indicates that the connector is trying to retrieve a schema
and parse it, and somehow that fails. The schema seems to be located at
http://mo2u1-max-das01.mna.corp.mosaicco.com:9083/meaweb/schema/service/MXPERSONService.xsd
and for some reason the org.eclipse.xsd library fails to load and parse this,
throwing a NullPointerException.
One thing that strikes me as odd, is that the line numbers in the
stacktrace does not match what I would expect.
When I look at jars/3rdparty/others/emf/org.eclipse.xsd.jar in the SDI 7.2
distribution, and decompile the org.eclipse.xsd.impl.XSDSchemaImpl class,
the patch() method begins at line 1562. But you get
an exception thrown at line 1489. Also, the changeAttribute method
begins at line 2455, while your stacktrace shows a call at line 2343.
Could you possibly have an old version of the org.eclipse.xsd library in the SDI jars folder?
If so, maybe that old version has a bug that is fixed in newer versions?
If you use Linux, you can locate files with this command from the
find jars -name org.eclipse.xsd\*.jar
If you use Windows, you probably know some similar command.
The org.eclipse.xsd.jar distributed with SDI has a size of 994077 bytes,
and the content is from 2013.
Please verify that there are no old versions of the library hanging around.
I am only guessing that old versions would have a name matching the above
pattern, but it seems like a reasonable guess.
It is also possible to specify additional jar files with the property
com.ibm.di.loader.userJars in solution.properties. If anything is mentioned
there, you could check that as well. And of course there are other ways
of adding jar files to the Java class path, if you have used any of those,
you could also check that there are no old versions used there.
Looks strange - but the first thing I would check when I see an NPE working with XML is whether there is data returned - no data very often ends in strange NPE...

Regards
Franz Wolfhagen

Loading...