An end user reported he was unable to enter meter readings on two assets. The issue only happens on two particular assets to the best of my knowledge. The assets have HOUR meters, the Meter Types are CONTINUOUS, the Average Calculation Method is ALL, the Reading Type is ACTUAL, and the Accept Rolldown From is ASSET. The user searches for and pulls up the asset in Assets, opens the Meters tab, clicks on Enter Meter Readings under More Actions on the left sidebar, enters the new reading and date and clicks OK. Then he gets this error: BMXAA4214E - An unknown error has occurred. Please contact your system administrator for assistance. Gather the logs from the <HOME> directory and determine where and why the error occurred.
null.
The issue happens in our production environment with the following system information:
App Server: IBM WebSphere Application Server 9.0.5.10
Version: Tivoli's process automation engine 7.6.1.3 Build 20220823-0909 DB Build V7613-344
IBM Maximo Application Framework 8.8.0 Build 20220823-1257 DB Build V7600-23
IBM Tpae Integration Framework 7.6.1.3 Build 20220823-0909 DB Build V7613-61
IBM Maximo Asset Management 7.6.1.3 Build 20220823-0909 DB Build V7611-01
IoT Connection Utility 7.6.0.4 Build 20220303-1642 DB Build V7604-01
Server OS: Windows Server 2016 10.0
Server DB: Microsoft SQL Server 13.0 (13.00.4001)
I was able to replicate the issue in our test environment with the following system information:
App Server: IBM WebSphere Application Server 9.0.5.10
Version: Tivoli's process automation engine 7.6.1.3-IFIX20241227-1242 Build 20220823-0909 DB Build V7613-344 HFDB Build HF7613-164
IBM Maximo Application Framework 8.8.0 Build 20220823-1257 DB Build V7600-23
IBM Tpae Integration Framework 7.6.1.3 Build 20241227-0549 DB Build V7613-61
IBM Maximo Asset Management 7.6.1.3 Build 20220823-0909 DB Build V7611-01
IoT Connection Utility 7.6.0.4 Build 20220303-1642 DB Build V7604-01
Server OS: Windows Server 2016 10.0
Server DB: Microsoft SQL Server 13.0 (13.00.4001)
In our test environment I deleted the meter from the assets, created new meters using the same properties and I received the same error when trying to update the hours on the new meters. When reviewing the logs, I found this entry and I do not understand it.
[2/26/25 15:04:58:461 EST] 00000147 SystemOut O 26 Feb 2025 15:04:58:461 [INFO] [MAXIMO] [] BMXAA6719I - USER = (DASKEW) SPID = (53) app (null) object (ASSET) : select * from asset where assetnum = '700-5006' and siteid = 'GA' and orgid = 'THIELEGA' OPTION (FAST 1000)
[2/26/25 15:04:58:462 EST] 00000147 SystemOut O 26 Feb 2025 15:04:58:462 [INFO] [MAXIMO] [] BMXAA6719I - USER = (DASKEW) SPID = (53) app (null) object (METERREADING) : select max(readingdate) from meterreading where metername= 'HOURS' and assetid= 56836 and readingdate < { ts '2025-02-26 15:04:58.459' }
[2/26/25 15:04:59:610 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:610 [INFO] [MAXIMO] [] Remote host: maxdev
[2/26/25 15:04:59:611 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:611 [INFO] [MAXIMO] [] BMXAA6719I - USER = (MAXADMIN) SPID = (52) app (null) object (MAXSESSION) : select * from maxsession where maxsessionuid = 376652 and adminlogout = 1 OPTION (FAST 1000)
[2/26/25 15:04:59:612 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:612 [INFO] [MAXIMO] [] Content Type: text/xml
[2/26/25 15:04:59:613 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:613 [WARN] [MAXIMO] [] BMXAA7785W - Property mxe.routewfcleanup does not exist.
[2/26/25 15:04:59:627 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:627 [INFO] [MAXIMO] [] BMXAA6719I - USER = (DASKEW) SPID = (53) app (null) object (METERREADING) : select min(readingdate) from meterreading where readingtype in ( 'ACTUAL' , 'RESET' ) and metername= 'HOURS' and (assetid=56836 and readingdate > { ts '2025-02-26 15:04:58.459' })
[2/26/25 15:04:59:633 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:633 [INFO] [MAXIMO] [] BMXAA6698I - Mbo debug: Getting record from appfielddefault table for App: ASSET ,Object: METERREADING ,Site:GA ,User:DASKEW ,Groups: TKC_GA_SV_WHSE TKC_CRYSTAL_REPORTS TKC_SYSADM TKC_WOTRACK_WO_CLOSE MAXEVERYONE TKC_GA_RC_WHSE MAXADMIN TKC_WI_WHSE TKC_PRLIM_GA_200 TKC_GA_DRP_WHSE
[2/26/25 15:04:59:633 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:633 [INFO] [MAXIMO] [] BMXAA6719I - USER = (DASKEW) SPID = (53) app (null) object (METERREADING) : select * from meterreading where metername= 'HOURS' and (assetid=56836 and readingdate > { ts '2025-02-26 15:04:58.459' }) order by readingdate asc OPTION (FAST 1000)
[2/26/25 15:04:59:639 EST] 00000147 SystemOut O 26 Feb 2025 15:04:59:638 [ERROR] [MAXIMO] [] java.lang.NullPointerException
java.lang.NullPointerException: null
at psdi.app.asset.AssetMeter.processChildren(AssetMeter.java:532) ~[businessobjects.jar:?]
at psdi.app.asset.AssetMeter.processContinuousReadings(AssetMeter.java:658) ~[businessobjects.jar:?]
at psdi.app.meter.DeployedMeter.save(DeployedMeter.java:2827) ~[businessobjects.jar:?]
at psdi.app.asset.AssetMeter.save(AssetMeter.java:1225) ~[businessobjects.jar:?]
at psdi.mbo.MboSet.saveMbos(MboSet.java:7961) ~[businessobjects.jar:?]
at psdi.mbo.MboSet.validateTransaction(MboSet.java:7941) ~[businessobjects.jar:?]
at psdi.txn.MXTransactionImpl.validateTransaction(MXTransactionImpl.java:375) ~[businessobjects.jar:?]
at psdi.txn.MXTransactionImpl.saveTransaction(MXTransactionImpl.java:207) ~[businessobjects.jar:?]
at psdi.txn.MXTransactionImpl.save(MXTransactionImpl.java:156) ~[businessobjects.jar:?]
at psdi.mbo.MboSet.save(MboSet.java:7587) [businessobjects.jar:?]
at psdi.mbo.MboSet.save(MboSet.java:7511) [businessobjects.jar:?]
at psdi.webclient.system.beans.AppBean.save(AppBean.java:680) [classes/:?]
at psdi.webclient.beans.asset.AssetAppBean.save(AssetAppBean.java:807) [classes/:?]
at psdi.webclient.system.beans.DataBean.execute(DataBean.java:6704) [classes/:?]
at psdi.webclient.system.beans.DataBean.execute(DataBean.java:6700) [classes/:?]
at psdi.webclient.beans.common.AutoWogenBean.execute(AutoWogenBean.java:158) [classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) ~[?:1.8.0]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[?:1.8.0]
at java.lang.reflect.Method.invoke(Method.java:508) ~[?:1.8.0]
at psdi.webclient.system.beans.DataBean.callBeanMethod(DataBean.java:6938) [classes/:?]
at psdi.webclient.system.beans.DataBean.callMethod(DataBean.java:6740) [classes/:?]
at psdi.webclient.system.beans.DataBean.callMethod(DataBean.java:6716) [classes/:?]
at psdi.webclient.system.session.WebClientSession.handleDialogOK(WebClientSession.java:4225) [classes/:?]
at psdi.webclient.controls.Dialog.dialogok(Dialog.java:151) [classes/:?]
at psdi.webclient.controls.Dialog.dialogok(Dialog.java:132) [classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) ~[?:1.8.0]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[?:1.8.0]
at java.lang.reflect.Method.invoke(Method.java:508) ~[?:1.8.0]
at psdi.webclient.system.controller.BaseInstance.handleEvent(BaseInstance.java:431) [classes/:?]
at psdi.webclient.system.controller.BaseInstance.handleEvent(BaseInstance.java:425) [classes/:?]
at psdi.webclient.system.controller.ControlInstance.handleEvent(ControlInstance.java:1009) [classes/:?]
at psdi.webclient.system.session.WebClientSession.handleEvent(WebClientSession.java:1373) [classes/:?]
at psdi.webclient.system.session.WebClientSession.processRequestEvent(WebClientSession.java:6219) [classes/:?]
at psdi.webclient.system.session.WebClientSession.handleClientSideQueueRequest(WebClientSession.java:6175) [classes/:?]
at psdi.webclient.system.session.WebClientSession.handleRequest(WebClientSession.java:892) [classes/:?]
at psdi.webclient.system.session.AsyncRequestManager.handleRequest(AsyncRequestManager.java:555) [classes/:?]
at psdi.webclient.system.session.AsyncRequestManager.manageRequest(AsyncRequestManager.java:253) [classes/:?]
at psdi.webclient.system.controller.RequestManager.manageRequest(RequestManager.java:327) [classes/:?]
at psdi.webclient.servlet.WebClientServlet.handleRequest(WebClientServlet.java:141) [classes/:?]
at psdi.webclient.servlet.WebClientServlet.doPost(WebClientServlet.java:52) [classes/:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.j2ee.servlet.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.j2ee.servlet.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96) [com.ibm.ws.webcontainer.jar:?]
at psdi.webclient.system.filter.HttpCrossSiteScriptingSecurity.doFilter(HttpCrossSiteScriptingSecurity.java:66) [classes/:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [com.ibm.ws.webcontainer.jar:?]
at psdi.webclient.system.filter.MXCorrelationFilter.doFilter(MXCorrelationFilter.java:137) [classes/:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [com.ibm.ws.webcontainer.jar:?]
at psdi.webclient.system.filter.PerformanceMonitor.doFilter(PerformanceMonitor.java:126) [classes/:?]
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [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:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [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:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [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:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [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:197) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:979) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1119) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:82) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:966) [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:382) [com.ibm.ws.webcontainer.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318) [com.ibm.ws.runtime.jar:?]
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88) [com.ibm.ws.runtime.jar:?]
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:1909) [com.ibm.ws.runtime.jar:?]
I opened a ticket with IBM Support and they could not replicate the issue in their environment. They suggested duplicating the asset to see if the issue happens afterwards. I duplicated both assets in our test environment and was able to update the meter readings on the duplicated assets, which indicates there is a data issue with the original assets. However, I cannot simply duplicate the assets in our production environment due to the assets being tied to a closed capital project work order, which I was advised should not be opened due to potential financial impact. In our test environment, I manually updated the asset detail's fields from the database backend to the same values that appear on the front end web interface, in the hopes of fixing a possible data integrity issue, but doing so did not resolve the issue.
Does anyone have any more suggestions? Thanks in advance!