Skip to main content

Digital Experience

Maximo – Receipts Flat File Export

The Task

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.

Maximo Receiving

Maximo Receiving

The Research

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.

Link to IBM Forum post

Summary

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.

Previous Articles

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!

Thoughts on “Maximo – Receipts Flat File Export”

  1. Hi Chad,
    It is nice article. I need your input regarding similar requirements I have. We have receipts already created and need to transfer them to another environment. I performed same steps as you have mentioned here. But when I try to export receipt records, I get following error message,

    BMXAA6078E – Cannot export data for the selected publish channel because the the main object specified for the object structure is a MXRECEIPT non-persistent object.

    Any ideal how to resolve it? I need to export and import receipts to another Maximo environment.

    I appreciate any help!

  2. Hi sir.. it’s very useful information. Thank you so much for posting this.

    Similarly we are trying to re-trigger the receipts to an external system from Maximo but as of now it’s not happening since the related publish channel is used MXRECEIPT object which has the non persistent object in it.

    So we thought to store the data to a custom persistent object from MXRECEIPT table during the initial receipt triggering happened. But for this we are not able to find out the class file in which the OOB code is adding the receipts data from MATRECTRANS and SERVRECTRANS tables.

    Once it’s stored in a custom table we thought to create one check box (to select the list of receipts needs to be re-trigger) and a push button (to add the selected receipts data to MXRECEIPT from a created custom table so that the related interface will re-trigger the selected receipts to an external system).

    Could you please suggest with your valuable inputs to achieve this process.

    Thank you in advance!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Chad Stringer, Lead Technical Consultant

I have 18 years of Maximo experience from installations, upgrades, data loading, process improvement consultation, and all around system usage. I have over 20 years of experience in the IT industry including data ETL, warehousing, process control systems, system administration, and much more.

More from this Author

Follow Us