In the spirit of all those top however many number lists we see populate the internet these days I have complied a top 6 list of things to check if your integration is not working in Maximo. So, no, this is not an article on how to set it up and if you follow these steps it all works great! This is the uncommon article that addresses what to do when something might have gone wrong.
Number 1: Logs, Logs, Logs, Logs, Logs
The very first thing you should check when anything in Maximo is not working are the Logs. Specifically, the WebSphere SystemOut.log and the SystemErr.log logs. These files are a running tally of what is going on in Maximo and a running list of what is erroring in Maximo. They are the first source to find out what is actually going on in the system. Also, if you need something more specific, go to Maximo’s logging application and look up the Integration Root Logger. Set it to DEBUG (remember to go back and set it to a lower level) then get those logs ready and test your integration!
Number 2: Admin Mode is on
I know, everyone knows this one. It’s that old saying that is redundantly used and we have heard any number of times in life. “Did you do/check this?” Just double check it, especially if the integration was worked on recently. You and your colleagues may have been working in the system as well as on the integration and it could have been turned on. As you know the Cron Tasks are not going to run with Admin Mode on.
Number 3: Cron Tasks are not running
Many, many working parts go into the creation of an integration. Cron Tasks are an integral part in that. They control the processing of queues or the processing of flat file transfers. Checking the JMSQSEQCONSUMER Cron Task if you are using WebSphere messaging queues or one of the file consumer (FLATFILECONSUMER and XMLFILECONSUMER) Cron Tasks is one of the first places to check if things are not processing. If you are in a clustered environment check to make sure the Cron Task is not stuck on a specific server. Do not runs may be set up and the server the Cron Task is running on may not be doing it. One of the very reasons I wrote this article stemmed from a general discussion we had where an integration was not running. A question was asked “Could the Do Not Run system properties be in the maximo.properties file?” That’s right folks, those can be passed to the system through the properties file and it is quite possibly the trickiest place to find something stopping an integration from working. Cron Tasks can get stuck and can sometimes stop running at their designated time. Stopping and starting them is the first thing to try, but sometimes you need to check that server to see why the Cron Task may not be running.
Number 4: WebSphere messaging queues
The WebSphere messaging queues go hand in hand with the Cron Tasks for processing or checking the queue traffic. Many times, your Cron Tasks are running, but you see no changes to the data in the system. The queues may be receiving data but not pushing them out of the queue itself and they are piling up messages. Checking your queues can be done in two places. First and foremost, the queues can be checked under the intjmsbus in WebSphere (you remember those buses you set up right.) If you built out your integration with more than one intjmsbus then you will have to check the other ones you have created to confirm where the messages may be sticking in the queues. If you just created one intjmsbus then you will only need to check one place. In trouble shooting a tricky integration that does not want to work this is where creating more than one intjmsbus can be tremendously helpful in pinpointing where a breakdown may be as well as limiting the effect of a poorly performing integration. I would highly recommend this strategy in a Maximo environment that would be clustered and built to handle integrations. When you navigate into WebSphere and look at the queues for your bus or buses if you see one (whether its inbound or outbound) with the numbers piling up that is where the “bottleneck” is.
That is not the only place to check the queues. One can check the queues that have been used in an integration in Maximo under the Integration’s module. This leads me into the last section which is a kind of an add on from WebSphere’s queues, but these things tend to build from Cron Tasks to Queues, to application message tracking and processing.
Number 5: Message Tracking and Reprocessing
In the Integrations module whether you set up a Published channel or an Enterprise Service under the More Actions menu you will see a choice for Message Tracking. Once you have opened the dialog box and checked off the Enable Message Tracking option Maximo will retain a record in the database. This is very useful option for tracking what it is going on with your integration. In the External Systems app of the Integration module if you build out an External System with you Published Channels or Enterprise Services under the More Actions menu you have the option of choosing Add/Modify Queues. This will show you what kind of queues have been built out in WebSphere and can show you the same data that is buried in the intjmsbus of the WebSphere administration site. This menu choice has the ability to allow you to see message data as well as clear queue data. So, you can operate your message queues from Maximo much the same way you can in WebSphere. Message Tracking goes hand in hand with Message Reprocessing, which will work in with your queues the way you set them up. If you built the queue to try to process the message 5 times it will try to process a message that many times before dropping it, and you can see the messages awaiting reprocessing in the Message Reprocessing application.
Number 6: Endpoints
Endpoints and their handlers are what actually deliver the messages to the destination side of an integration. One of the things that trips people up is managing the different Endpoints between the environments. Meaning DEV, TEST, and PROD environments usually will have different systems they are bound to and when creating your integrations each environment points to a unique server acting as the Endpoint for an integration. Getting your Endpoint set up can be a challenge but pointing one system to the other system’s Endpoint will just result in questions of why this integration is not working.
Each one of these topics can get much more in depth and I encourage everyone to dive right into that depth, but the next time you’ve got an integration not working think about these points and see if that may be affecting your integration.