Category: Maximo (Page 7 of 12)

IBM App Connect – Integrate Maximo with Google Sheet, SalesForce, and ServiceNow

While having a break between projects, I have some free time to play around with IBM’s new toy: App Connect. After several years of working with Enterprise applications, I’ve got to a point where I can tell if a system is great or not after playing around with it for a short time.  Some examples of great systems or platforms I have experience with is Maximo (of course), React Native (for mobile development), and SAP. Some examples of *not so great* systems I played with include Oracle EBS, Infor SunSystems, and Maximo Anywhere mobile platform.
With App Connect, I can tell this is an excellent tool after going through a few beginner tutorials. I can immediately come up with some useful use case using it to enhance Maximo by integrating it with other cloud applications. Below are two examples:
1 – Using shared Google Sheets to collect project data such as Asset register, Spare-part BOM from vendors:
An operator can create different Google Sheets and then share them with EPC contractor or sub-contractor, asking them to copy/paste data from their internal design database, and the data will be sent over to Maximo automatically. This continuous data provision process will ensure a more complete and accurate asset database after the system is handed over to the operator.

2 – Linking Maximo with a Service Provider’s CRM or ticketing system to automate Service Request workflow: 

Obviously, companies have been integrating Maximo with other systems in similar scenarios for ages, but with App Connect, the implementation is so much simpler and effortless. The above scenarios took me less than 10 minutes to configure everything without writing a single line of code. For an enterprise-grade integration solution, which needs to be robust, secure, and has high performance, it will take a lot more effort than that, but surely, it will not take weeks or months using traditional methods which involve coding. This is great news for companies that need to react fast to changing processes.
I haven’t looked into details on the cost of this solution, but IBM’s cost model charging is based on the volume of messages exchanged via App Connect. It will be relatively cheap and easy to get started. The cost will only increase as you scale up your operation. For small operators which only need to send out a few hundred tickets a month, I guess they can even get away with the free Lite plans. So this is definitely worth considering.

Hope you enjoy it.

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.

Basic steps integrating Maximo Spatial and ArcGIS

Due to many changes in different versions, the documentation provided by IBM for Maximo Spatial integration is scattered and inconsistent. This video is a quick demo on how to carry out the most basic configuration to enable integration between Maximo Spatial version 7.6 and ArcGIS.

In the video, what we have is a sample non-secured ArcGIS online server, made publicly available by ESRI. However, enterprise GIS map services are often provided via an SSL layer and can use token-based authentication. Thus, below are some of the common problems that you can have when configuring Map Manager with a secured map services:

  • If HTTPS is used, the SSL Certificate must be added to WebSphere trust store for Maximo to be able to send requests to the GIS server. If you don’t add the Certificate, when trying to add Map Service in Map Manager, it will give you a ‘BMXAA4199E – The remote object of the server cannot be accessed. A network error has occurred…’. You can follow the steps in this link to add the certificate. After that remember to restart the WebSphere for the change to take effect
  • If Map Server uses Token-based authentication, it doesn’t work with HTTP. Thus, you must use HTTPS, otherwise, it will give you a confusing error: ‘BMXAS0467E – Token is required to access this Map Service. Enable token security for this Map Manager’. Some old IBM sources mention that you have to add the ‘tokenEnabled’ and some other properties to System Properties. With Maximo Spatial 7.6.0.1 or newer, it is not required as you can tick the check box and enter username and password directly in the Map Manager app.
  • If you have a strange java.lang.ArrayIndexOutOfBoundsException when trying to add Map Service with HTTPS, it is because WebSphere is using TLSv1 and doesn’t support 2048DH key. Follow the steps in this link to change SSL protocol to TLSv1.2 or v2.
  • If your GIS provider uses self-signed certificate instead of a certificate issued by a Certificate Authority, users may get a blank screen when opening the Map tab. It is because the browser doesn’t trust the source (GIS service) and blocks it from loading. To work around this issue, try to open the GIS Map service directly on the browser, it will ask if you like to add the untrusted certificate to your exception list. After that, the map will be able to load in Maximo. The best solution is to use an SSL certificate provided by a Certificate Authority. In this case, Maximo users don’t have to worry about adding exceptions to the browsers. You can also enable the “Use Proxy” flag in Map Manager to address this issue.

If you have any other problems with the map control and integration, the first step would be to see the SystemOut.log file and the logs displayed in the ‘Developer Console’ of the browser. Most of the time it will give you some extra information to identify the cause of the problem.

I hope this helps.

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. 

How to modify (almost) any Maximo data with no database access

Being Maximo consultants, we often come into a scene where the client gives us MAXADMIN access to the system but access to the database is an absolute No-No. This is usually the case with companies that have a clear separation of the App Admin and DB Admin roles. This is also one of the key restrictions with Maximo as a Service.
 
If you have been doing a bit of admin and config activities, you will surely understand the limitation of having no database access. It’s like having to work with tied hands. Luckily, we can use MXLoader to query/update almost any data tables in Maximo. Below is an example on how to do it.
 
Let’s say we’re working with a Maximo SaaS and IBM only gives us front-end admin access, but no access to the back-end. Sometimes, Maximo is stuck while applying DB config, and we cannot turn off Admin Mode. This is usually not a big problem when we have full DB access. To fix this, we simply have to update the CONFIGURING flag in MAXVARS table to 0. However, with Maximo on the cloud, under standard procedure, we’ll need to raise a support ticket asking for IBM to update the flag. This could take a few days to resolve. It’s a horrible situation since we cannot do anything while Maximo is in Admin Mode.
 
Without DB access, we can update the MAXVARS table using MXLoader using the steps below:
 
1 – Create an Object Structure for the MAXVARS table:
  • OS Name: DBMAXVARS
  • Consume By: Integration
  • Add a new row, set Object Name: MAXVARS
 
 2 – Use MXLoader, add
a new ‘PEOPLE’ sheet:
 
 
 
With the new ‘People’ sheet added, replace ‘MXPERSON’ object structure with ‘DBMAXVARS’ and ‘PERSON’ object with ‘MAXVARS’ object. To identify what columns are available MAXVARS table we can open the ‘DBMAXVARS’ object
structure, and open the ‘Exclude/Include fields’ dialog from the Select Action
menu. In this case, I only need two fields: VARNAME and VARVALUE
 
3 – Set operation method to ‘Query’ and where clause to VARNAME
= ‘CONFIGURING’
, then execute the query by clicking on the ‘Run’ button to retrieve
the record.
 
 
 
4 – After we get the record for ‘CONFIGURING’ variable, set VARVALUE to 0, then change the operation method to ‘Sync-Change’ then execute the operation. We will now be able to turn off Admin Mode.
 
 
 
Some other examples of using MXLoader to update the system
tables include:
 
  • MAXMENU – To move/add an app to a different module menu
  • APPFIELDDEFAULTS – To set a default value when inserting new
    record
  • MAXSESSION – To release user sessions that got stuck in Admin
    mode and the user cannot log in
  • MAXDOMAIN – To create a new Synonym Domain
In case we do not have permission to use the Object Structure application, another method is to create a new single-page application using Application Designer to expose data of the object on GUI. It would enable us to achieve the same result and only take a few minutes to do. However, I like MXLoader a lot more as we can use it to bulk insert/update normal app data, and it doesn’t leave a bunch of junk apps in the system which is quite difficult to remove.
 
The policy to restrict DB access is usually there for a good reason. And MXLoader is an extremely powerful tool. I find it a lot easier to make mistakes updating the wrong data or to the wrong environment. So please be very careful when using it and you should always have a backup of the before and after versions of the data set that you work on.

[Update 2023]: an easier and more powerful way to achieve this task is using API Automation script

OutOfMemory error when deploying Maximo in Websphere

For every client I work with, I always keep a copy of the SMP folder if I can. And every time I need a standard demo instance with the same configuration as the client, I simply deploy it on my local Websphere and Oracle DB.

My current Websphere version is 8.5.5.3, and I had problems whenever I deploy a Maximo 7.6 instance with lots of add-ons. I gave up the attempt the last few times as I didn’t really need it.

Recently, as I was working with Maximo Flex (on the cloud), having a local instance is necessary as Maximo on the cloud has lots of limitations in terms of what you can do. As such, when I had the same problem deploying Maximo, I had to investigate and fix the issue.

OutOfMemory when deploying big Maximo.ear file to Websphere

Turned out it is an OutOfMemory issue during the deployment process and it took me quite a bit of time to fix it, so I leave the note here as I’m sure many others will have similar problems.

  • PROBLEM: when deploying Maximo 7.6 with many add-ons, Websphere keeps running or stops with a failure.
  • TROUBLESHOOT: if it takes more than 1 hour, I restart the system and re-deploy Maximo. In many cases, it immediately returns a failure. If it returns a failure, I look at the SystemOut.log file under
[Websphere Home]/AppServer/profiles/ctgDmgr01/logs/dmgr/
  • SOLUTION: if the problem is an OutOfMemory error, it can be tricky as there are many different processes in Websphere using Java. I ended up employing the spray and pray approach:
    • Increase heap size for WAS Admin console to 2GB: edit the wsadmin.bat under [Websphere Home]/AppServer/bin to update this parameter: PERFJAVAOPTION=-Xms512m -Xmx1024m –Xquickstart
    • Increase Application Server heap size: in Websphere admin console, go to Servers section (on the left side menu) -> Server Types -> Websphere Applicaton Servers -> [MXServer] -> Java Process Management (link on the right side menu) -> Process Definition -> Java Virtual Machine. Set both Initial and Maximum heap size to 2048 MB
    • Increase deployment manager heap size: in Websphere admin console, go to System Administration section (on the left side menu) -> Deployment manager -> Java and Process management -> Process definition -> Java Virtual Machine. Set both initial and maximum heap size to 2048 MB
    • Increase heap for deploy tool: edit the ejbdeploy.bat file under [Websphere Home]/AppServer/deploy/tool/itp to update this parameter: EJBDEPLOY_JVM_HEAP=-Xms512  -Xmx1024m

With these updates, I managed to deploy the EAR file. But Maximo and Websphere alone consume 6GB of my laptop memory. I had to remind myself to reduce them back to probably 1024MB each to save valuable real estate.

« Older posts Newer posts »