THE BPD Blog

From blogs to case studies to news, we love sharing our tips and tricks for asset management, cloud, IoT and smarter operations.

by | May 31, 2017

The Dangers of DOCLINKS and Integration

It is possible to Import and Export attached documents (DOCLINKS) records using the Maximo Integration Framework (MIF). However, care needs to be taken to ensure that these messages don’t cause problems.
Maximo controls the size of a single DOCLINKS record (using System Properties mxe.doclink.maxfilesize and mxe.int.doclink.maxfilesize), but there is nothing in place to restrict the number of records that can be attached to a single Maximo Record (e.g. Workorder, Location, etc.) This means that there is no limit to the maximum size of the set of associated DOCLINKS records. This is not a problem during the normal operation of Maximo as the attachments are accessed one at a time, but it can lead to issues when interfacing to other systems.
For Example:
There is a WORKORDER in Maximo with 200 x 10Mb DOCLINKS records attached to it. 10Mb is the default value for the System Properties. This means that there are 2000Mb of files associated with the WORKORDER.
An Object Structure is setup in the following configuration:

and this is linked to a Publish Channel with the Event Listener Enabled.
When the WORKORDER record is saved, the event listener fires and tries to generate an XML file containing the details of the WORKORDER, as well as a BASE64 Encoded representation of all the files referenced by the DOCLINKS records. This could result in a file that is potentially larger than the size of the original files combined due to the nature of the BASE64 Encoding.
The generation of this message causes the WebSphere Application Server to crash and restart as before it writes the XML data to a file, it must first build it in Memory. So the simple act of saving a single WORKORDER can cause the whole Application Server to crash.
Another potential outcome from this operation is that the Application Server is capable of building the XML in Memory, but when it writes the message to the JMS Queue, it either fills up the Message Store or causes the Messaging Engine to crash. The same problem could also occur when inbound messages are presented to Maximo.
A potential solution to this problem can be handled through the design of the Object Structure used by the Publish Channel. If it is switched round so that DOCLINKS is the Primary Object and WORKORDER is a Secondary Object associated with it:

When the DOCLINKS record is saved, the event listener fires and the XML file that is attempted to generate will now be approximately the size of the value set in the System Property (by default this will be around 10Mb). This shouldn’t cause problems for the Application Server or the Messaging Engine. The file will also be much easier to handle by whatever the External System is at the other end of the interface, be it Biztalk or even another Maximo System.
The change in approach to the interface can sometimes break the required business rules that are in place. Sometimes you only want the WORKORDER and associated DOCLINKS to be sent out once the WORKORDER is set to the APPR status. If the interface is changed so that it will fire when the DOCLINKS record is saved, then this could cause the records to not be sent across if they were added before the WORKORDER status reached APPR. If this is the case, then a different approach needs to be taken, but it is still possible using the following steps:

  • Create Object Structure with DOCLINKS as Primary and WORKORDER as Secondary
  • Associate this Object Structure with a Publish Channel, but ensure that the Event Listener is disabled
  • Edit the associated Java Class for the WORKORDER Object (the same could be achieved with a Object Launch Point Automation Script associated with the WORKORDER Object) so that the following logic is triggered when the record is saved and the STATUS has changed to APPR
    • Using the desired relationship to get hold of the DOCLINKS set from the WORKORDER loop through each of the records
      • For each record trigger the Publish Channel in code

An example snippet of code for this would be:
doclinksWith a bit of consideration to the design of the interfaces, this problem can easily be avoided.

If your organization needs help understanding the dangers of DOCLINKS and integration, please contact us.

Marc Jenkins

Marc Jenkins

0 Comments

Custom servlet in Maximo

Custom servlet in Maximo

What is a servlet? Servlets are Java classes which service HTTP requests and implement the ‘javax. servlet. HttpServlet’, an abstract class that implements the servlet interface and is specially designed to handle HTTP requests. A  servlet accepts the request,...

9 Recommendations For A Successful SAP & IBM Maximo EAM Interface

9 Recommendations For A Successful SAP & IBM Maximo EAM Interface

Integration is often a key component for getting the most out of your critical IT applications. Modern Enterprise Asset Management systems such as IBM Maximo are designed for integration which can expand their capabilities and allow the flexibility that the industry...

Reinvent the Wheel with BPD Zenith’s Maximo Accelerators

Reinvent the Wheel with BPD Zenith’s Maximo Accelerators

I was recently involved in preparing a business case for a Maximo implementation, and as a part of process I spent considerable time analyzing and evaluating the best approach. In essence, I was trying to find the optimum balance between minimizing the length of the...

Defence Seaworthiness – A session from AMPEAK 2021

Defence Seaworthiness – A session from AMPEAK 2021

I recently got the opportunity to attend Asset Management Council of Australia’s AMPEAK conference. It has been a great experience interacting directly with the true practitioners of Asset Management, and understanding some of the technology challenges that they are...

Sign up to our free newsletter to explore emerging technologies, industry events and Maximo best practice.

Come with BPD Zenith to the future of Asset Management

Partner Ecosystem

BPD Zenith partners with a diverse array of the world’s top Technology, Business and Solution Integration leaders.