Hi Theo,
Looking at the error message it looks like the code is expecting another clause to be included.
You would need to check the java code to understand what the missing sql is and what triggers it's inclusion.
Looking at the stack trace I would check these class/methods
psdi.plusd.app.plusdcuest.PlusDFldStationDetailCUVersion.validateCuVerStatus(PlusDFldStationDetailCUVersion.java:226) [businessobjects.jar:?]
psdi.plusd.app.plusdcuest.PlusDFldStationDetailCUVersion.validate(PlusDFldStationDetailCUVersion.java:76) [businessobjects.jar:?]
Have you applied the latest fix packs?
The problem java class(es) may have already been fixed.
Have you raised a case with ibm?
They will have access to the java code and they should be able to investigate this.
Best regards Mark
------------------------------
Mark Robbins
Support Lead/Technical Design Authority / IBM Champion 2017 - 2023
Cohesive (previously Vetasi Limited)
https://www.linkedin.com/pulse/maximo-support-advice-from-non-ibm-engineer-article-mark-robbins/------------------------------
Original Message:
Sent: Thu October 10, 2024 02:39 PM
From: Theo Pozzy
Subject: Error adding compatible unit to CU estimate using Maximo API
I didn't see any responses to this API question, so I'm going to try to bump it again with a response. Please let me know if you have any ideas what is causing this error.
Thanks,
------------------------------
Theo Pozzy
Original Message:
Sent: Sat September 21, 2024 03:48 PM
From: Theo Pozzy
Subject: Error adding compatible unit to CU estimate using Maximo API
I am using the Maximo REST API to update compatible unit (CU) estimates (CUs are part of the Maximo T&D industry solution). I am using the SYNC method to update existing CU estimates, using the primary key values in the JSON message body. For example, here is the message body of a message that successfully updates the descriptions on the CU estimate header, the estimate version and the station:
{
"requestnum": "1007",
"description": "HDS_CUESTIMATE2 update test 2024-09-21-1",
"orgid": "EAGLENA",
"plusdestversion": [
{
"requestnum": "1007",
"estversion": 1,
"description": "Design estimate version update 2024-09-21-1",
"plusdstation": [
{
"requestnum": "1007",
"estversion": 1,
"description": "Design station 1 2024-09-21-1",
"stationkey": 1,
"station": "1",
"siteid": "BEDFORD",
"plusdstndetail": [
{
"requestnum": "1007",
"estversion": 1,
"quantity": 20.0,
"stndetailkey": 1,
"cuseq": 1,
"cuname": "TESTCU2",
"expandflag": false,
"workfunction": "I",
"cuversion": 1,
"parameterset": 0,
"station": "1",
"siteid": "BEDFORD",
"plusdstndetailid": 302
}
]
}
],
}
],
"siteid": "BEDFORD"
}
I now need to add a new CU item to an the existing station. Here is the JSON message:
{
"siteid": "BEDFORD",
"requestnum": "1007",
"plusdestversion": [
{
"estversion": 1,
"plusdstation": [
{
"stationkey": 1,
"plusdstndetail": [
{
"_action": "Add",
"parameterset": "0",
"station": "1",
"cuname": "TESTCU3",
"status": "ACTIVE",
"quantity": "5.0"
}
]
}
]
}
]
}
This API call generates a 400 error. Here is the output in SystemOut.log:
[9/21/24 14:24:35:275 EDT] 00000163 SystemOut O 21 Sep 2024 14:24:35:275 [ERROR] [MXServerc1] [CID-MXOSLC-4477] BMXAA6714E - The data for the next record in the mboset could not be retrieved for the SQL query select * from plusdcu where and cuname = 'TESTCU3' and cuversion = 1 OPTION (FAST 1000) . See the log file for more details about the error.
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'and'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1676) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteCursored(SQLServerStatement.java:2074) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:881) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:802) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7730) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3786) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:268) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:242) ~[sqljdbc.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:724) ~[sqljdbc.jar:?]
at psdi.mbo.MboSet.getNextRecordData(MboSet.java:3375) [businessobjects.jar:?]
at psdi.mbo.MboSet.fetchMbosActual(MboSet.java:2983) [businessobjects.jar:?]
at psdi.mbo.MboSet.fetchMbos(MboSet.java:2940) [businessobjects.jar:?]
at psdi.mbo.MboSet.getMbo(MboSet.java:2130) [businessobjects.jar:?]
at psdi.mbo.MboSet.isEmpty(MboSet.java:4455) [businessobjects.jar:?]
at psdi.plusd.app.plusdcuest.PlusDFldStationDetailCUVersion.validateCuVerStatus(PlusDFldStationDetailCUVersion.java:226) [businessobjects.jar:?]
at psdi.plusd.app.plusdcuest.PlusDFldStationDetailCUVersion.validate(PlusDFldStationDetailCUVersion.java:76) [businessobjects.jar:?]
at psdi.mbo.MboValue.validate(MboValue.java:1757) [businessobjects.jar:?]
at psdi.mbo.MboValue.setValue(MboValue.java:939) [businessobjects.jar:?]
at psdi.mbo.MboValue._setValue(MboValue.java:1153) [businessobjects.jar:?]
at psdi.mbo.MboValue.setValue(MboValue.java:1138) [businessobjects.jar:?]
at psdi.mbo.Mbo.setValue(Mbo.java:2733) [businessobjects.jar:?]
at psdi.plusd.app.plusdcuest.PlusDFldStationDetailCUName.action(PlusDFldStationDetailCUName.java:254) [businessobjects.jar:?]
at psdi.mbo.MboValue.validate(MboValue.java:1783) [businessobjects.jar:?]
at psdi.mbo.MboValue.validate(MboValue.java:1660) [businessobjects.jar:?]
at psdi.mbo.Mbo.validateAttributes(Mbo.java:5148) [businessobjects.jar:?]
at psdi.mbo.Mbo.validate(Mbo.java:4686) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.checkValidateErrors(MosProcessImpl.java:2443) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.setAdditionalTableData(MosProcessImpl.java:1761) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.createChildrens(MosProcessImpl.java:990) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.createChildrens(MosProcessImpl.java:1002) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.createChildrens(MosProcessImpl.java:1002) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.fillMaximoTables(MosProcessImpl.java:827) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.processExternalData(MosProcessImpl.java:360) [businessobjects.jar:?]
at psdi.iface.mos.MosProcessImpl.processObjectStructureService(MosProcessImpl.java:255) [businessobjects.jar:?]
at psdi.iface.mic.MicService.processObjectStructureData(MicService.java:934) [businessobjects.jar:?]
at psdi.iface.mic.MicService.processOSLCAsJSON(MicService.java:638) [businessobjects.jar:?]
at com.ibm.tivoli.maximo.oslc.provider.OSPOSTRouteHandler.handleRequest(OSPOSTRouteHandler.java:914) [businessobjects.jar:?]
at com.ibm.tivoli.maximo.oslc.provider.MaximoOslcProviderServlet.handleRoute(MaximoOslcProviderServlet.java:1300) [commonweb.jar:?]
at com.ibm.tivoli.maximo.oslc.provider.MaximoOslcProviderServlet.processPostPut(MaximoOslcProviderServlet.java:1412) [commonweb.jar:?]
at com.ibm.tivoli.maximo.oslc.provider.MaximoOslcProviderServlet.doPost(MaximoOslcProviderServlet.java:266) [commonweb.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) [javax.j2ee.servlet.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [javax.j2ee.servlet.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1233) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:782) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.tivoli.maximo.filter.UnSupportedMethodBlockFilter.doFilter(UnSupportedMethodBlockFilter.java:60) [commonweb.jar:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:?]
at psdi.webclient.system.filter.HttpXFrameOptionsFilter.doFilter(HttpXFrameOptionsFilter.java:38) [classes/:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:?]
at psdi.webclient.system.filter.MTContextFilter.doFilter(MTContextFilter.java:53) [classes/:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:?]
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [log4j-web-2.17.1.jar:2.17.1]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:952) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:213) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) [?:CCX.CF [o2228.02]]
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) [?:CCX.CF [o2228.02]]
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [com.ibm.ws.runtime.jar:?]
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) [com.ibm.ws.runtime.jar:?]
It looks like the generated SELECT query is missing a criteria before the "AND". What is causing this error? Am I not setting one or more attributes correctly in the message?
-Theo Pozzy
------------------------------
Theo Pozzy
------------------------------