Carlson Computer Blog

A blog to discuss software, hardware and all things PC including mobile technology

Browsing Posts in ©IBM Maximo

IBM has released a hot fix for the CU Estimating out of memory bug that occurs when you run the estimating process on large jobs, over 200 stations. Prior to installing this hot fix, a CU Estimate with 211 stations ran for over 30 minutes and finally locked up the JVM due to an out of memory condition. After installing the hot fix, I ran the CU Estimating process on the same job with 211 stations. The process ran for 13 minutes and completed successfully. You can acquire this hot fix by contacting your IBM support representative.

Maximo 7.1 patch introduced a bug that I reported to IBM. If you have a multi-site setup and you have assets that have the same asset number in more than one site, when you try to add one of these assets to a Preventive Maintenance record, you will receive an error stating that ‘a single record query returned multiple records.’

This is an issue mainly for companies that have multiple sites where work is performed on the same asset by technicians in different sites and preventive maintenance procedures are performed on those assets.

I have requested a hot fix for this issue from IBM and will keep you posted when a fix is available.

In base Maximo, you will find that there is only one out of the box field for a crew id. This limits you to assigning only one crew to a work order. While you could add additional fields to Maximo so you could assign multiple crews, this may not give you the functionality you are looking for since you would need to add enough fields to allow for the maximum number of crews and would require additional customization of the Assignment Manager application to use the additional fields. The only other option is to create child work orders for each crew, but this may not be an optimal solution if all crews were working on the job at the same time. This would just create additional administrative work.

The Maximo for Utilities Industry Solution has solved this issue for companies that need to assign multiple crews to a single work order without the need to create children work orders. A crew field was added to the planned labor tab on the work order. So when you plan a job, you can assign as many crews as needed to a single work order. In addition, a planned crew query field was added to the Advanced Search page of the work order so you can search for all work orders that have been assigned to a particular crew.

Occasionally, you may find that work is performed on an asset by multiple departments, possibly from a different site or organization in a Maximo multi-org/multi-site setup. So, you would like to create a location that contains assets that span multiple sites. Unfortunately, you cannot add an asset from site A to a location in site B. However, there are some simple workarounds.

An common example of this is a fleet vehicle that is managed from a fleet budget, but operated by another department. The operating department is responsible for purchasing accessories for the vehicle, such as hoses for a suction truck, but the fleet department is responsible for all repairs and fuel. Let’s take this scenario, which will work for almost any other similar scenario.

The fleet department is in Org A, Site A. The operating department is in Org B, Site B. These can be in different sites within the same org, as well. Since Maximo considers a location or asset unique by a combination of its location or asset number and its site id, what you need to do is create the same location and asset in both sites with the exact same location and asset numbers. Then each area, the fleet department and the operating department, work within their own hierarchies inside their own sites. Then, you leave it to reporting, either using BIRT, your Business Intelligence solution or any other reporting tool you use, to provide management with asset-based information. For instance, if you want to know how much you spent on that asset throughout your company, you report on the asset number leaving the site out of the query. Since you named the asset exactly the same for both departments, you will get a total for both sites combined, which gives you a total asset cost. However, if you want to know what each department spent individually, you add the site id to your query to give you the separate costs.

This seems like a lot of asset duplication, but remember, it’s a database. Databases do not care about duplicate records and for a person working in site A and another in site B, using the Maximo application as their tool, they will only see one record unless they have rights to search other sites and specifically perform a search of all sites. Duplication is Ok when it is necessary in order to provide the functionality that is required to run your business and track costs. And the best thing about this workaround is that no application customizations were required.

The only other option would be to give the users in site B access to create work orders against the assets in site A using their own GL strings to charge their work against. This is not usually a favorite workaround for most companies since this would give the users in site B unlimited access to all of the records in site A and they could inadvertently alter records from the other site that could cause data integrity issues. And if site A is in a different org than site B, you would have to duplicate GL strings in both orgs since GL strings are stored at the organization level. Since preventing duplication of locations and assets would be the only positive outcome of this method, its not really a big savings in storage or effort because this method would not prevent some duplication of records.

In Maximo, depending on the application, records are either at the site-level, the org-level or you may be able to leave the org or site field blank so they can be used across multiple orgs and sites. I call this a global setting. It is important to try to determine which level best fits the record before you create the record because once the record is used, in many cases, it cannot be deleted. Your only option at that point is to inactivate the record using a status, if available, and recreate the record at the proper level. In addition, once you save a record at, let’s say the Org-level, if you duplicate the record, the duplicate is automatically applied at the Org-level as well, so in many cases, you can’t duplicate the record and apply it at a different level. You would have to recreate it from scratch.

Here are some examples.

Job Plans – Job plans can be applied at either the site or org level. But you can also leave these fields blank so that the job plan can be used globally. It is best to apply as many job plans as possible using the global option because you will find that in many cases, the same job plan can be used for the same type of asset across multiple sites and orgs. If you have all of your job plans at the site-level for instance, if any task, labor or material needs to be changed on the job plan for that asset type, you would potentially have to alter multiple job plans. If you have one job plan that is used globally, you only have to change the information once.

Labor – Labor records can only be applied at the org level. So a labor record can only be used on work orders, for instance, that are in the same org as the labor record. There is a work around for this, however, you can add the same labor record in the Labor application to all of your orgs, then it can be used in multiple orgs.

Work Orders – Work orders are at the site level. You can only create work orders in your default insert  site. So, if users need to be able to create work orders for multiple sites, they have to continuously change the default insert site in their profile. A work around for this is to have those users who create work for multiple sites use the Service Request application. The Service Request application permits a user to create a request for any site that they have permissions to in their security group. Then under the Select Action menu in the Service Request application, they can create a work order from the information on the Service Request with a couple of mouse clicks.

Failure Codes – Failure codes are global and do not allow you to set them at the org or site level. This can be a drawback because in many cases different sites have different types of assets and would prefer not to see failure codes from other sites. One work around is to place a prefix at the beginning of the failure code identifier so your users can filter by the prefix. It’s not as clean as being able to set the failure codes by org or site, but it works without requiring application customization.

These are just a few examples, but the main point is to try and determine the best level available for each record type before you create the records to keep your Maximo data clean and to best respond to your business requirements.

In Maximo 7.1, you may notice that there is no memo field in the change status dialog in Work Order Tracking. If you look in the database, you can see that the memo attribute exists. Luckily, there is an easy fix for this.

The change status dialog is not visible in Application Designer. This is because there are quite a few dialogs that are built from the LIBRARY.XML rather than existing within the application XML. The change status for Work Order Tracking is one of these dialogs.

To make the memo field visible in the change status dialog, first export the LIBRARY.XML file so you can open it in a text or XML editor such as Notepad++ or any other of your choosing. Just make sure that the text editor does not use hidden formatting characters. In other words, I do not recommend using programs like Microsoft Word unless you are editing the file then resaving it as strictly a text file.

Open the LIBRARY.XML in your editor and search for changestatus. Once you have located the change status dialog within this file, look for the memo line. You may see two lines for memo, one that exposes the memo field before the status field and one that exposes it after the status field. Choose the line that would expose the memo in the location of your preference. In that line, you will see a reference to a signature security option. This signature security option does not exist out of the box which is why the field is invisible. If you attach a signature security option reference to a line for a field in the XML and that option does not exist, it has the same affect as the option existing, but being unchecked in your security group, so in essence you are hiding the field.

The easiest way to make the memo field appear is to remove the reference to the signature security option on the line for the memo field. Once you have removed the reference, re-save the file with its original name and import the LIBRARY.XML back into Maximo using Application Designer.

The memo field should now be available in the change status dialog in Work Order Tracking.

If you are duplicating a location in Maximo 7.1, you may get an index error if you attempt to add a system before you save the record. Assuming you are adding the same system to the new location as the original one you duplicated, the reason you get the error is because the system has actually already been copied to the duplicated location. You just don’t see it on the screen because the screen refresh will not occur until you save the new location. One you save the location, you will see that a system is already been associated to the new location.

So, as best practice, always save the new location immediately after duplication, then make any necessary adjustments to the new location. This will prevent errors occurring due to a unique constraint violation.

I saw this come across my IBM Maximo RSS feed so I thought I would pass it on. The link to the IBM site referencing this issue is

According to IBM, the resolution is to ensure that the Java Plug-in for Internet Explorer 8 is upgraded to version 1.6.0_18 or higher.

Two base services patches, &, were released to correct quite a number of issues, but in themselves have caused two major issues.

Base services patch causes Maximo to slip into Admin mode without user intervention. This causes huge issues. When Maximo is in Admin mode, cron tasks are disabled, ancestor tables are not updated as new records are saved and most users cannot log into Maximo unless they are explicitly given rights to do so. IBM has released a hot fix for this issue.

Base services patch causes the ‘Download to Excel’ function on every page to fail due to an error. This is a major inconvenience since many users rely on this function to quickly extract data to Excel. IBM has release a hot fix for this issue as well.

These hot fixes should be included in later patches so if you are on or later, you may not experience these issues. If you are not planning to go to a base services patch level of or greater, you should prepare to download and install the hot fixes for the above issues along with the patches.

In Maximo, there are two methods to relate work order records to each other. One is to use a parent/child relationship and the other is to use the related records method.

Parent/Child Relationships

A Parent/Child relationship is the most common method to interrelate Maximo work order records to each other. This method allows you to relate records in a way that all of the costs roll-up to the top-level parent. To use this method, you simply have to enter the parent work order number into the Parent field on the main screen of the work order. The parent can be the top-level work order or any work order in the hierarchy. So you can have a parent with children and each child can have children and so on. This is a great method to use for large jobs that may require several areas of the company to perform tasks that require being tracked as separate line items in the budget for the job. This is the difference between having each of these as tasks on the work order work plan versus creating child work orders for each task. Task work orders do not roll costs up to the parent. You can use task work orders to track task statuses, but if you really need each of the tasks to display its separate costs, plus roll those costs up to a top-level parent work order, you need to take advantage of a parent/child hierarchy. Using this method to see the overall costs is as easy as going to the Select Action menu and under the View submenu select Costs. You will see the costs for the individual work order currently displayed, plus the costs for the entire hierarchy rolled into a cost for the entire job.

Related Records

Related records is a way to associate work order records with each other but do not associate the costs. If you want to have work orders related to each other, but want them to remain as completely separate jobs within themselves, you can use this method. To use this method, you enter a work order number in the Originating Record field on the main screen of the work order. Then the related records can be viewed on the Related Records tab of the work order. In addition, if you are using the Service Request application to initiate requests for work then creating work orders from the service request, the service request ticket will show up in the Related Records tab of the work order.

Using these methods can help you track job costs, tasks and relationships within Maximo without having to develop custom reports to provide you with this information.