Category: Asset Management (Page 1 of 2)

Common use cases for EAM mobile solutions

In some organisations, when starting a mobile project, the stakeholders may not have prior experience with mobility solutions for EAM, as such, we are sometimes asked to implement features that do not add value to the business. As consultants, it is satisfying to see something we implement being used and helps the end-users on the field. And nothing can be more frustrating than spending time building features that are not going to be used. In this post, I will list out based on my experience some commonly used and not used functions of a mobile app:

Work Execution: despite its name is Asset Management software, 80% of activities in Maximo happen around the work management process. It is not a surprise work execution is the number one use-case for a mobile app. However, work management is a big process with several major stages and many different activities. Only certain activities need to be recorded in the field with a mobile device. Below are some common ones:

  • Change Work Order status: start work, put it on
    hold, or complete the work
  • Record actual costs: travel time, work time,
    material consumption
  • Capture and attach photos
  • Enter work log
  • Capture operational parameter (meter reading)

By having a mobile device to capture these data on the field as it happens, organizations benefit from having much more accurate data. The last one is a key enabler for a comprehensive Condition Monitoring program which is an important topic and I’ll cover in a separate post.

Physical signature: the ability to physically sign on a mobile device sounds great. Most mobile apps has this function. I have implemented this a few times. The user can physically sign on a mobile device. The signature is printed at the bottom of some BIRT reports (e.g. Work Completion form or Risk Assessment form etc.). It looked great and the customers were excited about it. But in all honesty, I find it’s not really an important feature.

Work Planning & Approval: these are the activities that can and often be done in an office setting with the user accessing Maximo on a browser. Planning process can involve 3rd party scheduling tools like Akwire, Primavera, Visual Planner etc. Who would want to go to the field to schedule and assign people to some work orders on a tiny mobile screen? Some mobile apps do have the capability to do that, but it doesn’t mean we have to use it. These features are available usually for the field user to see the planned information, and possibly edit some incorrect details.

Inspection Form: added from Maximo 7.6.0.8 as part of the Work Center module, and progressively improved in the last few releases. This is the best feature among those added to Maximo for the last 10 years. However, the Work Center interface is still too limited to be practical (UI is too slow, requires stable and fast connectivity, and not customizable). EzMaxMobile does the job very well by providing responsive online and offline UI and works well with the out-of-the-box backend in Maximo. From my limited knowledge, Datasplice had Inspection app since at least a few years back, long before Maximo. That is because Datasplice is an independent system with its own database. There are inspection mobile solutions provided by industrial vendors too (e.g. Honeywell). I don’t know how well these solutions work. My point is this is a common requirement and haven’t been addressed by Maximo until recently. By filling out inspection forms on a mobile device, data is fed directly to meter reading tables and the condition monitoring app in Maximo which raises alarms or PM work orders automatically.

Inventory Stocktake: my first three mobile projects were to address this requirement so it must be a good use-case. The task is simple: the user scans a barcode, enters a balance value, then saves. Extended feature could be adding a photo of the item, adding a new bin, or updating item specification which later can be used for cataloguing and de-duplication process. The key to getting it to work is a really smooth and efficient user experience as these steps need to be repeated a thousand times in one shift. Fast and simple UI running in full offline mode is a must.

Me counting and capturing item spec at a time mobile solution wasn’t available.
All data needed to be manually entered into Maximo by some interns later on

Inventory Issue/Transfer/Receipt: I’ve seen some projects involved these apps. In general, how often it is used and how much value it brings to the organization is not known to me. I think it does add value, but of course, not at the level of the Point-of-Sales solutions we often see in a supermarket.

Purchase Requisition/Purchase Order: Although PR and PO apps are available on some mobile solutions, I haven’t seen them used anywhere. There is some value for the field worker to be able to create Requisition. That function belongs to the Work Order module though. The data then flows to the PR application and handled by a back-office staff with a computer and a browser.

Risk Assessment/Toolbox Talk: this is a great use case for a mobile app. It is something that must be done on the field, it adds a lot of value in term of safety improvement and compliance. In many cases, it has some legal implication. Unfortunately, even the Oil & Gas (HSE) module in Maximo does not meet all of the requirement and usually needs a lot of customization. We had implemented this feature in EzMaxMobile for some clients. But the assessment forms and the compliance requirements are different in each industry and from company to company. Thus, I don’t think we can see a standard risk assessment mobile app for Maximo anytime soon. If your company needs it, you may have to pay for the customization effort.

A risk assessment form on iPad screen

SMS Notification for Maximo using Twilio

 
Every once in a while, someone would ask me if we can configure Maximo to send notifications via text messages? With Maximo, the answer to such questions is always Yes. However, with this one, it will cost some money, very cheap though.
 
Since it is not free, I would say for most Maximo notification scenarios, the user would be ok with email notification which is free. However, there are certain scenarios where SMS notifications can add value such as:
  • Notify a field worker when a new high priority Work Order is assigned to him/her
  • Notify an asset owner when the asset deviates from the normal operating parameter range or when downtime is reported
  • Notify Maximo admin when there are repeated login attempts from an uncommon IP address or when there is a major problem tracked by the Escalation app.

Below are the steps on how we can set up a trial Twilio account and send notifications from Maximo:

 
A –Setup a Twilio trial account:
With your trial account, Twilio will give you a small initial balance to buy a phone number and use the service. I got $15, and it will cost me $6 to buy a phone number, and 5 cents to send a text message.
 
1 – Create a trial account on Twilio.com: you’ll have to use your real mobile phone number to verify the account.
 
2 – Login using your trial account, go to Console, then create a new Project. Select “Products”, then choose “Programmable SMS”. Give your project a name, for example: “Maximo”. Then skip the rest of the steps to create the project.
 

 3 – On the left menu, click on the icon with the title “Programmable SMS”. In this menu, open the “SMS” submenu, open the “Messaging Services” page, then click on “Create new Messaging Service

 
 
4 – Give the messaging service a name, such as “MaximoNotification”. For use case, choose “Notifications, Outbound Only”. Then click on Create.
 
 
 
 5 – After the messaging service is created, open it. On the left menu, click on Number to open it, then click on “Buy a Number” to purchase a telephone number. On the pop-up, select your country code, then click on “Search”. It will give you a list of numbers to choose from
 
 
 
6 – Choose a number with SMS capability, and click on Buy. Depends on the country you live in, you may have to enter some details for your new number. I’m in Australia, so I have to enter my address.
 
7 – After purchasing a number, you are ready to send SMS messages from your Twilio account.

Please note: with Trial account, it can only send SMS messages to a Verified Number. Your mobile number which you entered when registering is automatically added to this list. So you will be able to send SMS to that number. But if you like to send SMS to a different number, you’ll have to add it to the ‘Verified Caller ID’ list first.
 
8 – Go to “Console Dashboard”, open the “Settings” sub-menu, then open “General” page to take note of your Account SID, and Authentication Token. You will need it to send an SMS from Maximo.
 
 
 
B – Configure Maximo to send REST requests to Twilio
 
There are different ways to set this up depending on your requirement. In this example, I’ll create an ‘Action’ automation script, and send a REST request using Apache HTTPClient library. Action auto script can be used with Workflows or Escalation. In this example, I’ll send out an SMS when the workflow is initiated on the Service Request application.
 
The setup steps are as follows:
 
1 – Go to Automation Script application, create an ‘Action launch point’ automation script. Give the launch point a name, for example: “SENDSMS”. Set the action name as “SENDSMS” too. Set “SR” as the main object. Select “Jython” for script language. For the script, copy/paste the example code below to the “Source Code”

2 – With the code above, replace {YOUR_ACCOUNT_SID}, {YOUR_AUTH_TOKEN}, {YOUR_PURCHASED_PHONE_NUMBER} with actual details of your Twilio account. For testing purposes, replace {RECIPIENT_PHONE_NUMBER} with your phone number. Later on, once it works, you can replace it with a variable retrieved from your record using mbo.getString()

3 – Create a new workflow “SEND_SMS” for the SR object, connect the Start and Stop node with one line. And set the line to use ‘SENDSMS’ action. After that, Enable and Activate the Workflow. And remember to Add Workflow to SR application using the Select Action menu if you haven’t done so.

4 – Open an SR record, then click on the route button to initiate the “SEND_SMS” workflow

5 – After clicking on the Route workflow button, you should be able to receive an SMS message on your phone:

Good luck with spamming your end-users with endless work requests 🙂

Maximo Crash Course on Youtube – Starting point for a complete beginner

After posting a bunch of Maximo training videos in Vietnamese on Youtube, I got some requests for similar contents in English. On the web, there are plenty of Maximo resources in English; so I didn’t think it is necessary to create new duplicated content. But someone recently pointed out to me that as a beginner, he doesn’t know where to start. So here it is, a bunch of *super short* videos to get you started with Maximo. After going through these, I’m sure you will have a better idea on which direction you want to learn more about the software.

 Basic concepts in Maximo asset management: These tutorials are done on the IBM public Maximo preview site, so you don’t need to set up anything to do some exercises




 Basic Maximo configuration tutorials: 



Setting up development environment and writing customized java code for Maximo:

For configuration and customization, you’ll need MAXADMIN access to a Maximo environment to do the exercises. This shouldn’t be a problem if you are working for a company that already has Maximo. But if you are a student or freelance developer, at this point I don’t know of an easy and relatively cheap way to get this. The cheapest option is to buy an IBM Value Package for $999 which will give you access to *all* IBM software and support services. But I guess that’s too expensive for an individual just to learn about a system.
I guess you can ask somebody you know who have a development environment VM to give you a copy. Although this may not be completely legitimate. I believe IBM should allow free download to a trial version or demo VM like Microsoft or Oracle. It only helps them to expand the popularity of the product. Anyway, that’s enough for complaining. 
I hope these stuffs help you get started.

Unboxing Maximo SaaS Flex

I had never been a big fan of Maximo SaaS due to my background comes from a market where labour cost is cheap while license cost is outrageous. As such, we consultants prefer to spend some time building customized apps rather than spending lots of money buying more licenses or add-ons. (To give you a bit of perspective, in Australia, one Maximo license is worth about 15 days cost of an average engineer. In Vietnam, it is equivalent to about 1 year. Which means if you give an engineer a Maximo account; after a year, if it helps to save him or her 15 days, it worth the cost. But in Vietnam, it must save the engineer 1 year of labour to break even).

Anyway, back to the main point, I was not a big fan of Maximo SaaS mainly due to many restrictions on what you can do with it in term of configuration and customization. I’m surprised to find that there aren’t many sources on the web discuss about this. When looking at vendor presentations, we know what a new product offering can do. But it is much harder to find out the limitations a product can have. Most of the time, we learn about it the hard way and it seems people don’t openly talk about it. 
In this post, I’ll share some experience I got with the latest Maximo SaaS Flex product. Hopefully, the information helps you to make the right purchase decision or make the right preparation for your SaaS project.
Product package: 3 environments were provided: Production, Test, and Development. PROD and TEST run on Linux and DB2 with latest Websphere and Maximo feature/fix pack. DEV has the same configuration except it runs on a Windows VM
Performance: I find performance is pretty good for TEST and PROD environment. You can click on a link and expect a response in less than a second most of the time. DEV is a bit slower, but I usually don’t notice if I’m not paying attention. Remote access to DEV server is very slow, but it is workable.

Access: initially, you are given web access to Maximo using a sub-domain: https://[your-max-env].maximo.com with Maxadmin account details. Static IP addresses for three environments are also provided. If you ask for more access (by raising a ‘case’ using IBM support portal), you can get full admin access to DEV environment including remote desktop, DB2, Websphere, file folders. For TEST and PROD, you can get read-only access to DB2, and read-only sFTP access to a few important folders like Websphere’s Log, IntGlobalDir etc. Remote access to servers, access to Websphere admin console, or write access to DB2 are not given.

Other Restrictions: DEV server is not connected to the internet by default for security reason. And if you need to integrate Maximo with another cloud-based service, you need to raise a ‘case’ asking IBM support to open a VPN tunnel/Firewall exception to allow connection to a specific IP address/port (or range). Exception on domain name and port 80 (it seems) are not supported.

Dependency on IBM support: with the above restriction, you can’t do certain admin/config tasks on TEST/PROD environment. To carry out these tasks, you have to raise a case with IBM:
  • Restarting of Server OS, Websphere, MXServer, or DB2.
  • Changing WebSphere configuration – e.g. adding an SSL certificate to trust store so Maximo can send request to a secured cloud-based API.
  • Build/deployment of customized codes to TEST/PROD
  • Updating data in DB2
  • Transferring a large file to servers
  • Back-up/Restore database and refresh DEV/TEST environment from PROD

IBM Support: support on this product goes to IBM CDS team and I find them knowledgeable, thorough and supportive. For example, when I request to get access to DEV environment, I got a 30-page document prepared specifically for me, with detailed steps to set up everything like VPN, remote, WebSphere, DB2, BIRT development IDE, sFTP, and the details are accurate to the level that I got access to everything I need without having to ask any further question. CDS team is also ready to help you carry out many admin tasks like the ones listed above.
However, if you have experience working with IBM support, you know what to expect. If your ticket goes to a guy in a different time zone, for none emergency issue, it takes a day to get an email reply. Sometimes a ticket can take many replies over many days to solve if the problem is vague or if you don’t provide enough information for them to act.
So you can see that although it is a ‘Flex’ offering, there are still many limitations and you may find it difficult to work with, especially if you always work with on-premise system and have full access to both DB and App servers like me.  To overcome these limitations, following are some of my tips:

  • Get access to IBM support early: for cloud environment, you rely on IBM CDS team to handle many basic admin tasks, as such having access to IBM support for your specific client is crucial. You or someone in your team should be able to raise and check the status of tickets directly. This should be done as soon as you first get the welcome pack.
  • Be specific with your support request: for example, if you like to get some access to TEST server, list out the things you need like ‘Read access to DB2’, and ‘Access to MXServer’s Log folder’ and ‘DocLinks folder’. Don’t ask for general access to the server’s file systems as it can be refused. Or like an instance when I got stuck in Admin Mode; when raising a request, I also mention they can restart the server at any time. Otherwise, they will come back asking for what time is suitable for a restart.
  • Database access on TEST/PROD: get a read-only database account so you can query the data you need. For data upload/update, use MXLoader (See my other post)
  • Mass upload attachments: to upload Doclinks, refer to this excellent BPDZenith’s blog post; To upload images, see my other post here if you have Maximo 7.6 and here if you have 7.5 or older
  • Transfer large files from/to DEV: because remote connection to DEV is very slow, while actual HTTP access to Maximo is quite fast, compress the large files or folders to a zip file, rename it to pdf then upload it as an attachment. Then you can copy the file from DEV’s Doclinks folder, rename it back to zip to decompress. You can do the reverse to download large files by first attaching a dummy pdf file, then in the DEV server, replace it with the ‘fake pdf’ large file. In Maximo, download the attachment to your local drive rename it back to .zip to decompress. Using this method, upload/download speed is at least 20-30 times faster than copying over remote desktop session.
Maximo SaaS offering certainly has some restrictions. However, with Flex offering, the client can implement any add-ons or customization they like. And with some clever tricks, 3rd party implementers can help their clients roll-out an asset management system in a much shorter time and free them from worrying about many technical aspects of operating the system to spend more time on business problems. 

Maximo with Oracle’s InMemory (Part 2) – Huge Performance Gain

Last week, I played around with Oracle’s new toy: the InMemory feature available in Enterprise Edition. Although it made Maximo runs 1.25x faster, but it didn’t meet my expectation which was from 2x to 5x. This has bothered me for the whole week and I kept thinking about it.

If you’ve read my previous blog post, the one thing I pointed out which could lead to no performance improvement is that I ran the test on a tiny demo version. It has only a few hundred assets and less than a thousand work orders. So, any heavy processes or poorly written queries couldn’t make the database 1 second slower. This week, I set out to do a more elaborate test with a setting that looks more similar to a real production environment.
At first, I setup my system as follows:

  • For Maximo: v7.5 with several industry solutions and add-ons. The data includes 4M work order records, 200k Assets & Locations, 200k Issue Transactions, and 1M Labor Transactions. Total size of the DB is more than 50GB.
  • For DB Server
    • HP EliteBook 840: Core i7-6600U 2.7 Ghz, 16GB RAM, SSD 512. 
    • Oracle 12c Enterprise: 3GB allocated to PGA, 11 GB allocated to SGA (which includes 6GB allocated to InMemory data store)
  • For App Server: Virtual Box running on Mac OS host: Core i5 2.3 GHz, 16GB RAM, SSD 512GB
    • VBox configuration: Windows 2012 x64, 12GB RAM
    • Websphere: Cluster with 3 JVMs x 3GB each.

I got one problem though. The two machines connected wirelessly to each other via a home wifi router which gave a latency of between 5ms to 20ms, sometimes it went up to 100ms or even timeout. This resulted in the system ran with unpredictable performance. In practice, network connection between Application Server and DB Server usually have a latency of  < 1 ms. So I abandoned the idea of having the system runs on two separate boxes, and returned to a configuration with everything runs on one laptop as follows:

  • Database: PGA – 3G, SGA – 8G (5G of which is InMemory)
  • Only one MXServer JVM with 3 GB

I intended to test and compare following operations:

  • Run a Saved Query on Work Order Tracking app
  • Generate 7 PM Work orders at once
  • Change status of 27 Work orders at once
  • Run a simple Report created by “Create Report function” which joins two tables: Work Order and Asset
  • Run a more complex report which joins a few tables including Work Order and Actual Labor and Actual Material

For each of the operations above, I ran test three times to get the average execution time (I ignored the first run as it is usually longer since data hasn’t been populated and cached to memory yet). Below is the result:

For the running saved query, I don’t understand why it took longer to load (result was consistent, not random)

For other expensive operations, Maximo ran 2-3 times faster.

For the more complex report, it never finishes. I tried several times and with the longest one I waited for 50 minutes before killing the process (I checked and Oracle was still processing, not hang). Even after turning on InMemory, it took more than 20 minutes, then I killed it as I was too tired to wait.

For the simple report, it is 5 times faster. If we pay close attention here, the BIRT report window took more than a second to open already, which means DB query returned result almost instantly. This made me believe that we could get a 10-15x performance gain for reports that take several minutes to run.

Since I had to abandon my original setting with two laptops, and also, because I was too lazy to build a new report which will take around 5-20 minutes to run on this environment, I couldn’t test a heavier load scenario with several expensive read/write operations like PM Gen, WO Change Status, and  running several slow reports at once. This kind of load is what we normally see in production and usually slow down the system significantly because operations and queries have to wait for each other to release resource lock. But this situation is exactly where InMemory will make a huge difference.

Anyway, even with this result, I am happy, and from now on, I will be all out selling “memory upgrade” to whomever Maximo users I meet.


An afterthought note: I used to consider DB2 a second choice for Maximo due to the difficulty of finding a good DB2 DBA, and thus, usually only suggested it to small clients with low budget. But now considering the significant cost of Enterprise version of Oracle or SQL if users want to implement this feature, the free bundled DB2 license offered with Maximo is an attractive option. For large enterprise client, I guess I will now present DB2 as an option for them to consider too.

Test Oracle InMemory Database with Maximo

For the last few years, SAP has been pushing hard on its HANA
InMemory data platform and everybody talks about it. For me it makes sense
because SAP’s ERP is such a huge system usually used by super large enterprises
and is both a data intensive and mission critical system.
 
 
Maximo on the other hand is usually much less data intensive
and for most clients I work with in Vietnam, they have small systems with
databases of less than 10-20GB. Thus, I believe InMemory database is not a big
deal for Maximo users. As I recently moved to Australia and got a chance to
work with a much bigger client. Their Maximo runs on a cluster of more than two
dozen JVMs yet somehow is still a bit slow considering the number of active
users that they have. I suspect (since I don’t have visibility to their DB server)
the bottle neck is the database in this case. Besides from the standard
suggestions of looking at disk storage/SAN, network, memory allocation etc., I
also mentioned they can consider implementing InMemory. Then I realized I never
seen it implemented with Maximo, it would be a huge embarrassment if they look
at it and find out that it doesn’t work.
 
This week I have some free time, so I decided to play around
with InMemory database for Maximo to (1) confirm if it is possible and (2) see
if it gives any real performance gain for Maximo.
 
Here is my system configuration:
 
  • Host laptop: Processor Core i7-6600U – 2 cores x
    2.6 Ghz, 16GB RAM, SSD 500GB. Windows 7
  • VMWare: I gave it 10G Ram, 4 cores, Windows 7
  • Database: Oracle 12c R2 x64 Enterprise Edition.
    I gave it 1G for PGA, 4G for SGA (of which, 2G is given to INMEMORY store)
  • Maximo 7.6.0.0 – Demo database. I setup only one
    MXServer and gave it 2G heap size
 
 
 
As you can see, this is very different to a real production
environment and thus the result found in this test may not reflect what you will
find if implemented in production. Some key elements that I can think of that
could lead to differences in results of this setup and real-world production
system include:
 
  • Standard Maximo’s demo database is super small,
    less than 500MB. Thus, InMemory may not lead to any improvement at all
  • Maximo App and Database deployed on the same box.
    Thus, there’s no network latency between App and DB server as usually seen in production
    environment where DB server and App server are placed in two different subnets,
    and can have a firewall in between. This makes resource retrieval process much more
    expensive.
  • This has only one session instead of hundreds if
    not thousands of concurrent sessions as can be seen in production.
  • DB servers on production usually use superfast storage
    systems through SAN/RAID configuration, thus InMemory may not improve
    processing time in that case.
 
 
 
As mentioned, Maximo demo system is very small and most
operations will complete almost instantly (less than .5 second). Thus, I
decided to test two operations:
 
  • Generating Work Order from PM
  • Changing Work Order status
 
The data I chose is the Job Plan: “PMBULKTR – Bulk Trailer PM
Servicing”
, which applies to 5 trailers with Assetnum “44416x” (belong to ‘FLEET
site). The reason I chose this job is because it has 70 tasks. It is a common
problem for Maximo users when changing status of a Work Package with large
number of child WO or tasks is that this operation is very resource intensive
and can take a lot of time to complete. I have seen in many cases, such as in
plant turn-around, changing WO status took so much time that the browser’s
session timed out. So I decided to carry out a test following these steps: Select
the 5 PMs, generate WO at once. Do it three times to measure the time it takes
to complete. After I got 15 new WOs, I move to the Work Order Tracking app, and
select all 15 of them, then try to change status to WAPPR, then to APPR, then
WAPPR again to measure the time it takes each time.
 
After I finished timing the above steps, I will turn on
INMEMORY for the whole ‘MAXIMO’ tablespace by issuing a command: ‘ALTER
TABLESPACE maximo DEFAULT INMEMORY;’
Restart the system, then do the same test again
to measure execution time with INMEMORY enabled.
 
Anyway, my expectation for this configuration would be a 2x
to 5x in term of improved processing speed. The reason is when we built an
add-on for inventory cataloguing, there was a process to compare technical specification
of one item with the spec of thousands of other items to find similarity. This
process took a lot of time to execute. The developer then cached the data in
memory and run the operation with cached data only. This resulted in a boost of
more than 100x in performance. So instead of hours, it takes only a few seconds
to complete. Thus, I think an expectation of 2x to 5x performance gain in this case
is reasonable.
 
Below is the result I got from the test:
 
 
For each operation, I got only about 20% reduction in
execution time. I tried a few other quick tests with other processes while
switching on/off the INMEMORY feature and the result is consistent. Obviously
with this result, my expectation of 2x – 5x improvement is proven to be
unrealistic.
 
Thinking of putting this into practice, if your organization
already have Oracle Enterprise Edition, setting up would be really simple.
Throw in some extra bars of memory, select a few key tables that got queried
the most such as the Work Order – related tables to populate them into INMEMORY
area. If it can give you 20% reduction in execution time, I believe it is still
very attractive to consider.
 
For Microsoft SQL Server, what I found on the web, we need
SQL Server 2016 or 2017 Enterprise Edition which works with Maximo. (I tested
installing Maximo 7.6.0.9 on SQL 2017 and it works well). The free Developer or
Evaluation edition can also be used to test at home. However, I found the configuration
steps seem to be more complex for Maximo as you have to review data structure
to modify/exclude columns with specific datatypes such as XML, BLOB etc. Thus,
if my company is using Maximo with SQL Server, I would think twice about implementing
INMEMORY feature.
 
(Note: I don’t provide detailed steps to configure INMEMORY
feature in Oracle 12c here because it is super simple, all you have to do is
set INMEMORY_SIZE parameter to something other than 0 such as 2G or 4G. Make
sure your SGA is larger than this, e.g. if INMEMORY_SIZE is 2G, SGA should be 3G
or more. Otherwise, you will not be able to start the database service. Once
INMEMORY_SIZE is allocated, issue the ALTER TABLESPACE or ALTER TABLE command
to enable/populate the tablespace or table into INMEMORY area. Also make sure that
you have Oracle 12c Enterprise Edition)
 

Barcode/RFID Scanning for Maximo Everyplace

I’m in love with Maximo Everyplace. It is so simple and easy to use. And guess what, it is totally free now with Maximo 7.6.

Recently I worked with a client and while the team still discussing various options for mobility solutions, I quickly duplicated and produced an Everyplace mobile app on Test environment and demonstrate a smooth workflow with barcode scanning on my iPhone, all done within 15 minutes. I understand there are certain reasons for choosing a more complex online/offline, even native app solutions. However, since everyplace is so easy and cheap to implement, so why not have it as a backup solution just in case the more complex one doesn’t work. If you have experienced the use of such offline, installed app solution, you will know what I’m talking about. Things like app crashes or hang are quite common. Those things are usually quite difficult to support as the programmers, who for 99% of the time are present not onsite and do not have access to log files to see what happened to investigate and provide timely bug fix. In this case, for the end-users it is extremely frustrating as they cannot proceed with their work.

One of the most common requirements with mobile app is ability to scan barcode to quickly search for asset, location, inventory item code, or work order number. Since Everyplace runs on browser, it doesn’t have a way to work directly with smart phone or tablet’s camera to read barcode. One solution is to use barcode scanner custom keyboard. This has been mentioned earlier in other blog posts such as by Bruno Portaluri (link) on how to use Barcode scanner keyboard app or IBM Android app for Everyplace. These are all Android solution.

With iOS, for many years, the only option is to use external barcode scanners because Apple restricted its custom keyboard API from accessing the camera. However, I recently found out about this app: ScanditWedge which does exactly the same thing, but now on iOS. The license for the use of their app is quite expensive though. But at least, now we know something like this is possible on iOS. I tried their trial license which allows the use of the keyboard on 20 devices for 2 weeks and it works like charm on my iPhone. So, this is definitely something you can consider.

For RFID, with built-in NFC reader on many Android devices and NFC scanner keyboard, it is possible to work with Everyplace. I have built native app and utilize the internal NFC reader of the ECOM Tab-EX (designed based on the Samsung Tab Active) and the ECOM Smart-Ex 01, and 02. All of those have been implemented and proven to work well under industrial settings. However, currently I do not have access to such device to test the newer NFC scanner keyboard apps. But I believe they would work the same with barcode scanner keyboard (You may need a separate field to store RFID tag’s ID string for this purpose).

On iOS, it’s been a long story. Apple introduced NFC support since iPhone 6, but the hardware acts as a passive RFID tag, used for ApplePay only. They restricted API access to 3rd party developers. Only in the latest iPhone 7, iPhone 8, and iPhone X, the hardware can actually act as a scanner, and with recent release of iOS 11, Apple have opened API access to 3rd party developer to read stored information in RFID tag (not tag ID). The demo video below by Serialio clearly demonstrated this capability.

I’ve personally tested this capability on iPhone 6 Plus and iPhone 7 plus using GoToTags and can confirm it works with iPhone 7. So this is another great news because we now know that it is technically possible to use iPhone to scan RFID and identify Asset/Check Point/Labor etc. (although not very convenient to setup).

RFID/Barcode and Integrated Mobile Solutions for Maximo

      I had to look at RFID/Barcode options for Maximo mobility solution recently. Although these technologies have been around for decades and have become a commodity, when integrating with other systems like Maximo Anywhere or Everyplace, there are certain problems that we have to deal with. In this post, I’ll discuss a few concerns related to this topic, hopefully it helps Maximo consultants to save some time when considering the solution. These are just a brain dump of different things related to the topic that I have in mind. Thus, you can read them at any order or only look that the part that you are most interested in.

  • Barcode vs QR code: When it comes to barcode reading, many people think that they can simply use the built-in camera of the phone or tablet to read barcode, as seen in many product comparing apps. However, in industrial setting, one should consider various extreme conditions that field workers have to work in. For example, in construction or in oil & gas, working at night is common. In such case, the camera doesn’t do well in reading barcode. In some of our tests, under pretty good ambient light, reading barcode takes up to 3-5 seconds while QR code reads almost instantly. In poorer conditions though, the camera simply couldn’t focus and can’t read anything. Thus, if the requirement is to work in environment where lighting condition is always ideal, Barcode or QR codes doesn’t matter, I’m a bit lean toward QR code as it read faster and enable higher workflow efficiency. Otherwise, we should consider other options such as RFID or using laser barcode reader.
  • Barcode vs RFID: When it comes to barcode (QR code is included in this category) versus RFID, they have very different attributes that one should really think carefully before deciding on which one suits their requirements the most. Many of the better features of RFID do not apply in certain asset management application. For example, RFID tags don’t need line of sight to be read or RFID can be read in bulk simultaneously. However, in asset identification, these are usually not required. However, one feature of RFID that is a clear advantage when compare to Barcode is that RFID tags can be a lot more durable under extreme conditions such as in processing plants where conditions usually involve high temperature, high moisture, and can be tampered with chemical/oil, even the some of best weather-resistant barcode label brands can wear out/fade out pretty quick (in few months). In this case, RFID tag is a clear winner. On the other hand, if working under extreme conditions is not a requirement, I would generally suggest using barcode as it is much cheaper and simpler to use. For example, we can encode Asset Number or Inventory Item Number directly to print out barcode labels, and on Maximo apps, we will just scan and lookup barcode using the standard “assetnum” and “itemnum” fields. If RFID is to be used, we generally need a separate custom field to store the tag’s ID string. Then we have to customize the app to lookup asset/item using this field instead of the standard asset/item number. We also need an extra step of reading and updating the tag’s ID string into the record in Maximo before it can be used.
  • Built-in camera/NFC reader vs specialized reader: Here I’m discussing about the pros and cons of using built-in camera or NFC reader (NFC is one form of RFID) versus using a specialized, external Barcode/RFID device. Built-in reader is obviously simple and more compact, thus it is suitable for occasional use. However, if your application requires frequent reading of barcode/RFID, you should go for a specialized laser barcode reader or RFID reader. These tools are designed specifically for the job, as such, it is a lot more efficient and easier to use. As mentioned above, using the camera to read barcode under poor ambient light can be problematic, but if a laser reader is utilized, poor ambient light is not a problem as the device has its own laser light source, and thus can read under any lighting condition. When it comes to industrial use, invest in specialized tool can be a bit more costly but almost always give a much better return in term of improved productivity and user acceptance. One thing to consider with external reader is that, field workers usually has to wear/carry many accessories such as PPE equipment, walkie-talkie, safety-belt, and other work-related tools. The idea of having to carry an extra phone/tablet and an external reader doesn’t sound convenient. As such, one should consider higher level of resistance from field workers if external reader is introduced. Another drawback if you consider external bluetooth scanner is that the pairing-up process between bluetooth devices and smart phones sometimes aren’t straightforward, these kind of glitches can sometimes create additional reasons for the workers who resisted to change to pushback and refuse to use the solution. As such, if possible, choose devices with built-in or connected laser barcode/RFID reader over wireless devices
  • iOS vs Android: Almost everyone prefers using an iPhone or iPad over Android devices. However, iPhone and iPad is designed for consumer market. When it comes to industrial use, iOS devices have many shortcomings such as they are not designed to work under extreme conditions such as under rain, hash sunlight, or sensible to touches when worker wearing thick gloves. Apple is also more restrictive in term of providing API for 3rd party developers, as such, there are less options provided by 3rd party vendor when it comes to industrial application. In the Energy and Mining industries, the use of intrinsically-safe/non-explosive (EX) electronic equipment is mandatory. This make Android platform the only option as currently, there is no iOS device on the market that can meet this safety requirement. Over the last few years, many companies introduce various computing devices such as smart phones, tablet, and even laptop meeting this standard. Some of those companies includes ECOM, Honeywell, Motorola etc. Therefore, if you design a solution for use in Hazardous areas that requires intrinsically-safe equipment, forget about iOS.
  • Online only vs Offline support: Here I’m only talking about Maximo Everyplace versus Maximo Anywhere. From Maximo version 7.6, Everyplace become a built-in feature. As such, it doesn’t cost anything to use. The process to produce a simplified app by duplicating an existing Maximo application then modify it to fit into small mobile  screen and to do a specific task generally takes only a few hours to a few days maximum. The users who are already familiar with Maximo will virtually don’t need any training at all. As such, if working environment has available wireless LAN or 3G/4G internet connection (which is pervasive and very cheap now), you should go for this solution, it’s a no-brainer. However, in certain conditions, stable connection is not always available, such as inside deep tunnel for infrastructure company or inside confined-space/basement of a large building. In this case, we need to use Anywhere to support offline/online working mode. However, let’s be realistic here. Do your field workers really need to use Maximo app when going in a confined space? In a client who I had chance to work with recently, they said they need offline solution because Everyplace won’t work inside underground tunnels. I went around to check and found out that in most areas inside underground tunnels, 4G network is fast and stable. Some areas may have poor signal. But with standard work order process, we generally only need access to the app to check-in when starting the work, and to check-out after the work is done. In this case, identify and designate several safe areas where network connection is available to check-in and check-out would do the job. With the widespread of 3G/4G repeaters installed by network companies,
    you might not realize that 3G/4G network is now available in many areas
    where it was not possible before like inside tunnels, underground train
    stations, or parking basements of big buildings.

          For other applications such as asset audit/inspection, where users need to use the app to scan the equipment or check-point, if network connection is unstable, offline solution will be required. 

    Maximo Anywhere is a great offline solution because it provides very smooth experience when transition between online/offline working mode. However, it comes with a price. It is very expensive in term of license fee. It is also a complex platform that requires MobileFirst development skills to configure/customize. Keep in mind that this is still a relatively new solution and not widely proven in the industry, especially when it comes to integration with other 3rd party hardware/software. However, IBM team have been moving really fast with the development of this solution. In the past few year, the solution has seen considerable improvement and level of adoption by the asset management community. So kudos for IBM R&D team for this progress.
    Considering the significant cost of Anywhere product, we should carefully survey the work environment and take these aspects into account when considering the two solutions.

  • IBM Mobility vs 3rd Party Solutions: When it comes to mobility solutions for Maximo, most people immediately think of IBM’s mobility solutions which includes Maximo Mobile Suites (gone), Maximo Everyplace, and Maximo Anywhere. However, to make objective evaluation, one must go further than that to evaluate 3rd party mobility solutions such as EzMaxMobile, Datasplice, Syclo Work Manager (now SAP), and many other lesser known custom-built systems. (eLogBook mobile is one of such solutions which I and my team built when working for Avenue Business Solutions). The advantage of IBM mobile solutions is that they are open platform. Therefore, any Maximo consultant with the right skill can customize the apps without IBM’s restriction as long as the users have the right license (which can be very expensive). The problem with IBM solutions is that they don’t always work in practice (e.g. the notorious Maximo Mobile Suites), too complex (Anywhere/MobileFirst solutions), having limited support from IBM (tickets generally take months to resolve or not resolved at all), or having limited material available for developers to customize/integrate. Gartner over the last several years have been putting IBM mobility solution under the “Cautions” section. Only in the recent 2017 report they say something a bit more positive about it which reflects recent development in IBM Mobile First strategy and the Anywhere solution . Third-party vendors on the other hand usually have consultants available to come in and guide clients to design process and implement their product properly and with much lower cost. They are usually smaller companies with dedicated people working in mobility space, as such they can provide a much better integrated solution with proven integration modules, software, hardware options and best practice recommendation for processes. Mobile apps provided by 3rd party companies can be less customizable than IBM’s product, and client usually have to rely directly to the vendor to provide 3rd level support, but they are usually very well designed to achieve high efficiency and smooth user experience. Overall, implementing these solutions are usually much more cost effective, provide better ROI, and client usually see much higher success rate.

MaxConnect – real-time integration between IBM Maximo and Infor SunSystems

Maximo EAM is a comprehensive software for Oil & Gas operators to manage and control all types of their assets including equipment, infrastructure, facility and inventory. The system however does not include the accounting and finance functionalities. The O&G operators that successfully implemented Maximo system often find themselves having two software systems that do not talk to each other. The accountants at these companies have to manually process and post invoices and other financial transactions manually. This process is time consuming, error prone and often lack of transparency.

MaxConnect is a software package developed as an extension module to Maximo that enables seamless data transferring between Maximo and SunSystems – the accounting and finance management software used by many Oil & Gas operators in Vietnam. Using standard Maximo’s and SunSystems’s integration platforms, the module allows two-way information sharing between the two systems in real time. For example, once an invoice has been created, verified again PO and Receipt, and approved in Maximo, a Posting Journal is created automatically in MaxConnect’s Journals application. The journal can be routed through several reviewer/approver steps using Maximo workflow engine and automatically posted into SunSystems once approved. Financial analysts can run report in SunSystems and immediately see the lastest data.

This add-on module is designed and developed by me. If you like to see how it works, please leave a message on LinkedIn. I’ll contact you back to setup a demo.

Download Full Document

« Older posts

© 2024 Maximo Consultant

Theme by Anders NorenUp ↑