Category: Limit

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