Maximo Open Forum

 View Only

 Result Set in the application is not downloading successfully though the result set returns records

  • Procurement
Swapna Shimpi's profile image
Swapna Shimpi posted 09-14-2023 01:32

Hi Team ,

When i try to download the result set from the list view using the download option, its downloading empty .xlsx file (0KB).

Webclient.maxdownloadrows is set to -1

mxe.db.fetchResultStopLimit is 5000 

It is happening only with one particular application 

Download works fine when i turn ON the Admin Mode

I disabled all the automation script,disabled all event listeners on publish channel on the Object 'INVOICE' still facing same issue with the download.

Here is the log trace :

14/09/23 15:01:58:186 AWST] 00001c36 SystemErr     R Logged an exception at: psdi.webclient.system.beans.DataBean.getRemoteForDownload(DataBean.java:8230)
[14/09/23 15:01:58:186 AWST] 00001c36 SystemErr     R psdi.util.MXApplicationException:
 BMXAA0031E - The INVOICE object is read only. Verify the business rules for the MBO or MBOSET object.
[14/09/23 15:01:58:186 AWST] 00001c36 SystemErr   
  R psdi.util.MXApplicationException: BMXAA0031E - The INVOICE object is read only. Verify the business rules for the MBO or MBOSET object.
    at psdi.mbo.MboValue.setValue(MboValue.java:823)
    at psdi.mbo.MboValue._setValue(MboValue.java:1623)
    at psdi.mbo.MboValue.setValue(MboValue.java:1608)
    at psdi.mbo.Mbo.setValue(Mbo.java:2930)
    at com.ibm.tivoli.maximo.script.AbstractScriptDriver.setValue(AbstractScriptDriver.java:957)
    at com.ibm.tivoli.maximo.script.AbstractScriptDriver.evalOUTParams(AbstractScriptDriver.java:794)
    at com.ibm.tivoli.maximo.script.AbstractScriptDriver.runScript(AbstractScriptDriver.java:156)
    at com.ibm.tivoli.maximo.script.ScriptMboEventListener.eventAction(ScriptMboEventListener.java:190)
    at psdi.server.event.EventTopic$Subscription.eventAction(EventTopic.java:723)
    at psdi.server.event.EventTopic.eventAction(EventTopic.java:291)
    at psdi.server.event.EventTopicTree.eventAction(EventTopicTree.java:698)
    at psdi.mbo.Mbo.initialize(Mbo.java:1019)
    at psdi.mbo.MboSet.generateMboInstance(MboSet.java:2319)
    at psdi.mbo.MboSet.getDiscardableMbo(MboSet.java:2253)
    at psdi.mbo.MboSet.getMbo(MboSet.java:2074)
    at psdi.webclient.system.beans.DataBean.getRemoteForDownload(DataBean.java:8201)
    at psdi.webclient.system.controller.TableDownload.export(TableDownload.java:283)
    at psdi.webclient.system.controller.TableDownload.generatexlsx(TableDownload.java:206)
    at psdi.webclient.system.controller.RequestManager.manageRequest(RequestManager.java:212)
    at psdi.webclient.servlet.WebClientServlet.handleRequest(WebClientServlet.java:141)
    at psdi.webclient.servlet.WebClientServlet.doGet(WebClientServlet.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)
    at psdi.webclient.system.filter.HttpCrossSiteScriptingSecurity.doFilter(HttpCrossSiteScriptingSecurity.java:66)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at psdi.webclient.system.filter.MXCorrelationFilter.doFilter(MXCorrelationFilter.java:137)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at psdi.webclient.system.filter.PerformanceMonitor.doFilter(PerformanceMonitor.java:126)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at com.ibm.tivoli.maximo.filter.UnSupportedMethodBlockFilter.doFilter(UnSupportedMethodBlockFilter.java:60)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at psdi.webclient.system.filter.HttpXFrameOptionsFilter.doFilter(HttpXFrameOptionsFilter.java:38)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at psdi.webclient.system.filter.MTContextFilter.doFilter(MTContextFilter.java:53)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1109)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4198)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2208)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)

Any inputs would be highly appreciated.

Thanks and Regards,

Swapna

Steven Shull's profile image
Steven Shull

You have an object launch point automation script on initialize that has OUT or INOUT variables defined on the script. Generally speaking, you don't want to use initialize launch point on the object but rather the attribute you are trying to set. This is because the object initialize fires frequently (such as the list page, table download, etc.) when you may not even be displaying the data. If this requires opening additional sets, reaching out to external systems, or even performing certain calculations, you'll negatively impact performance of your application. 

I would look for any automation script you have on INVOICE initialize and look to see if you need the logic for this use case. If you don't need it for this use case but want to keep the automation script on object initialize, you can check that it's a table download by the following code:

if mbo.getThisMboSet().isDownloadSet():