Recently I was tasked with creating a flat file export (csv) when receipt transactions are completed on POs within Maximo 7.6. I started as I would any integration, by looking through the Object Structures, Publish Channels, and External systems. I could not get a file to generate, and with the MXRECEIPT object structure being non-persistent, I wasn’t able to test it from the External System, which meant continually revising and adding lines to a PO. As I was digging around the bowels of the internet trying to figure out how to do this, I realized there were no direct references to this solution. Now that I’ve figured it out, I decided it’s time to put it all into one convenient location.
There were a few main issues I needed to resolve. First off, I did not want to modify any OOTB integration objects. Second, I knew eventually I would need to limit the number of fields I would pass with the integration. Third, I needed to be able to test.
One of the first sites I came across in my searches was this article published in the IBM Knowledge Center, Receipt Object for materials and services. This actually pointed me down a rabbit hole that lead me to a dead end, which was trying to use the REP_RECEIPT object structure, as it utilizes the PO, MATRECTRANS, and SERVRECTRANS tables. My thought was since the data would be in these tables, it would be easier to just use this OS with real data instead of the non-persistent MXRECEIPT. That did not end up working. It also shed some light on my eventual direction. The non-persistent MXRECEIPT Object Structure was what I used, along with a duplicate of the MXRECEIPTInterface Publish Channel. It was the rules within this PC that helped me to eventually get this to work. I was attempting to create my own publish channel without rules. That resulted in no output.
So I went back to the start. I duplicated the MXRECEIPT object structure, which allowed me to set it to use flat files, and I could also limit the Include/Exclude fields to my liking. Next, I duplicated the MXRECEIPTInterface publish channel and added my new object structure. The one thing I made sure of was that the rules that were a part of the publish channel came across also. There were 3 rules. (below)
When I duplicated the rules, I was not able to get the same setup with all being sequence 1. I had 1, 2, and 3, but it seems to work the same. Here is what mine looks like:
The next step was to add my Publish Channel to my External System. I create a duplicate of EXTSYS1 so I can handle any newly created Publish Channels or Enterprise Services so I do not clog up the OOTB EXTSYS1 with misc and testing information.
Great, everything should work now. I have the following:
Object Structure: CUS_MXRECEIPT (Duplicated of MXRECEIPT)
Publish Channel: CUS_MXRECEIPTInterface (Duplicate of MXRECEIPTInterface)
External System: CUS_EXTSYS (Duplicate of EXTSYS1)
On to Testing
Now that I have everything order, it’s time to test. I revised my PO and added new PO lines. I then APPR the PO. Go into the Receiving application, and receive one of the lines. I check the folder where I expect the file to save (set in the mxe.int.globaldir system property) and WALA! NOTHING!
What have I done wrong? What is missing? I’m not getting any errors, but I’m also getting no output. Another search out in the ether that is Maximo on the internet pointed me to one of the missing links. It was within this post on the IBM forum that all that was missing was revealed. It was actually a comment, not even the post itself. There are some very important settings in an external system, and when those pieces aren’t enabled, the external system is as good as a paperweight.
You see, the queues are driven by a Cron Task, the JMSQSEQCONSUMER. What was it that had not yet been turned on? The Cron Task! This is one of those things that you don’t touch every day and can cause you hours of headaches. But what do you know, once this is activated, the rest of the process works like a charm. The file generates and my receipts file is processed into the desired folder.
To wrap this up, make sure you have all of your pieces for your integration in place. Even the tiniest of checkboxes can cause you hours of headaches and testing. I hope my pain, and its documentation, could possibly help save others hours of testing.
If you have any comments or questions, feel free to ask away.
Are you using Maximo Work Centers and Inspections yet? If not, we can help!
Are you using Public Queries within Maximo correctly? We can get you headed in the right direction!