Maximo Integration and Scripting

Expand all | Collapse all

Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

  • 1.  Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

    Posted Thu September 09, 2021 03:49 PM
    Edited by System Tue August 22, 2023 04:42 PM
    I thought I'd share a solution to a problem that my organization grappled with for months. I wasn't directly involved, but I thought it would still be worth sharing, since this issue caused us so much grief. Hopefully this will save someone some headache down the road.


    TS005979560 - MIF not sending data to outbound sequential queue in a clustered environment.

    Assorted notes:

    • The issue transactions should send out of Maximo using sequential outbound queue (UI JVM). But this is not happening.
    • The problem is intermittent. We can see some transactions in the outbound queue but there are other transactions that are missing. Sometimes it takes 3+ days for transactions to send.
    • We have removed all customizations and it's still not working in the clustered environment. We have compared the logs with a non-clustered environment and everything seems the same except the message is not propagating to the queue in the clustered environment.

    Solution:

    From IBM:
    "Continuous queues use MDBs [i.e. message driven beans?] which use container transactions. So when the transaction completes it is automatically committed.
    Sequential queues, on the other hand, have a cron task which delivers messages to Maximo and is not transacted. Therefore the automation script needs to commit the transaction explicitly."


    We had to add two lines to the automation script to commit the transaction:
    issueItem.getThisMboSet().save()
    invMbo.getThisMboSet().save()

    We are now committing transactions before writing data into the queue. As of now, all transactions are processing as expected.
    (We explicitly call the save() method to save the issue transaction and the inventory transaction since we are sending data through the sequential queue.)


    I haven't found any tech notes yet that describe this issue/solution.




    #AssetandFacilitiesManagement
    #Maximo
    #MaximoIntegrationandScripting


  • 2.  RE: Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

    Posted Thu September 09, 2021 03:50 PM
    Edited by System Tue August 22, 2023 04:38 PM


  • 3.  RE: Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

    Posted Tue September 14, 2021 01:43 PM
    The information here is pretty confusing - if a message is not going out there are only 2 explanations:
    1. recurrence is not enabled
    2. transaction is not commited.

    If its the latter - the transaction would not even be in maximo db. If its in maximo db - save/commit has been called. Can you pls confirm if u see the data in maximo tables?
    There is as such no difference in this aspect from cqin or sqin - both of them have save and commit in their tx - so it should not make any difference.

    ------------------------------
    Anamitra Bhattacharyya
    IBM
    Bedford MA
    ------------------------------



  • 4.  RE: Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

    Posted Wed September 15, 2021 12:47 AM
    Edited by System Tue August 22, 2023 04:42 PM


  • 5.  RE: Tip: MIF was not sending data to outbound queue (intermittent; clustered environment)

    IBM Champion
    Posted Fri September 10, 2021 03:22 AM
    Hi User1971,

    I could not understand couple of things in your post:

    1. Was your actual issue that the Sequential outbound queue was not processing data from the queue into the end point ? End points are destination of a integration message ( mostly xml or json). These end points can be a folder, web service , db table etc. 
    2.  Or  was save required to trigger a message out of your Maximo system? Publish channels listens to the add, modify events of the object/table on which integration is configured. Thus, the object has to be saved to trigger this event which in turn tells publish channel to send data to End points. Explicit save as mentioned in your post is not required if your script is called from an ui event but even you are using it for saving some data then be careful with using it as it might cause the object updated by another process issue.
    So, the question here is - was the message not sent out because of not calling explicit save ? Then, I would assume that the data was never saved into DB.


    ------------------------------
    Biplab Choudhury
    Maximo Consultant
    Tata Consultancy Services
    Melbourne
    ------------------------------