Create a Maximo Work-Order from an IoT device

Open a WorkOrder by sensorTag if the room's temperature is too high
Open a Work-Order by sensorTag if the room’s temperature is too high

Maximo Work-Order from an IoT device

In my previous article I shown how to connect my Texas Instrument SensorTag to the cloud. I was able to catch the environment temperature, the environment light and the air pressure and I displayed the real-time data on a web dashboard.

In this article I’m showing you how to create a Maximo Work-Order from an IoT device. I used the sensorTag to monitor the room’s temperature and if the detected temperature is more than 23° Celsius a Work-Order (WO) is opened against Maximo. The WO consists in an asset inspections for maintenance (the asset is my room conditional unit).

To implement the scenario I used node-RED on Bluemix. Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways. Node-RED is based on Node.js, the applications run as a web server, and you customize and manipulate functional “flows”. I extended my previous IoT flow with a switch node and with a http request node. When the ambient temperature is less than 23° Celsius the switch node routes the flow in the debug window, contrariwise when the ambient temperature is more (or equal) to 23° Celsius the switch node routes the flow versus the http request node. In this case a Maximo rest API is invoked to open a Work Order. Here the complete node-RED flow:

node-RED: Open Maximo WO from IoT device
node-RED: Open Maximo WO from IoT device

The input node receives events sent from devices, by lightweight MQTT messaging protocol, and it produces an object called msg and sets msg.payload to be a string containing the payload of the incoming message. I wired the input node with a debug node to check in real-time the data sent from my device:

IoT node-RED debug node
IoT node-RED debug node

In the http request node I set in the URL parameter the Maximo rest API to open a WO:

REST api by http request node in node-RED
REST api by http request node in node-RED

I wired the http request node with a debug node to check in real-time the Work-Order created, in debug windows I am able to receive the classic XML response from Maximo integration framework:

Maximo WO debug data on node-RED panel
Maximo WO debug data on node-RED panel

Of course to implement this flow type the Maximo server must be reachable from node-RED over Internet to call the rest API. Here the Maximo Work-Order from an IoT device:

Maximo WO opened from IoT device
Maximo WO opened from IoT device

According IBM estimate, by 2020 over 470 million smart connected major home appliances will be installed globally. From refrigerators, clothes dryers and dishwashers to coffee machines, robotic vacuums and electric toothbrushes, IBM is helping the electronics industry capitalize on the promise of the Internet of Things. The future is to collect data from connected devices and apply advanced analytics to reveal insights in real time.

In my simple example I addressed a real Customer scenario using a fully integrated cloud-based IoT solution, building logic around device data to enable asset maintenance on Maximo, but the possible scenarios are countless and I will try to explore it 🙂

Comments and feedbacks are welcomed.

Show More

Mario Noioso

IBMer, engineer, technology enthusiast, inventor, coder, gamer, Linux lover, bassist wannabe, TBD. Nerd since 80s.

Related Articles


  1. Hi, and nice work

    Have you tried to do the same by creating the WO based on parameters as a JSON object? I have a simular demo, using an HTTP post integration, but I try to create the WO with more data without sending everything in the URL… without success

    1. Hi, thanks for reading.
      In my node-red flow I got:

      return {payload:msg.payload.d.ambient_temp};

      and used in WO as parameter before to call http post:

      var maximoRest = “http://maximo-hostname/maxrest/rest/os/MXMETERDATA?_action=AddChange&location=MYHOME&siteid=FIDENZA&metername=TEMP&newreading=”;

      msg.url = maximoRest + msg.payload + “&newreadingdate=” + dateNow + “&_lid=maxadmin&_lpwd=XYZ”;

      it works fine.
      post your problem in details.

  2. Great idea. I feel this should be the future of Enterprise Asset Management & its so wonderful to see that its a success. All the best for your future endeavors.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

HTML Snippets Powered By :