Skip to content

Blog



Share this:

Troubleshooting Birt report performances

Sometimes I had the hard task to debug performance issues of specific Maximo reports. The main thing to understand here is that 95% of the times the problem is related to a long execution time of the underlying SQL query . What I typically do is the following: Look at the ‘Performance’ tab of the Report Administration application and take note of the ‘Last Run Duration’. Configure an Eclipse Birt Designer environment to run the reports against the production database. Import the report into Eclipse. Change the rptdesign to log in a local file: mxReportScriptContext.setDefaultLogFile(“D:/birtreport.log”); Add a row to print the SQL query into the log file: mxReportScriptContext.getReportScriptLogger().debug("»> sqlText=" + where); Run the report within Eclipse. Copy and paste the SQL query from the birt log file into a SQL client and try to execute the query straight to the database. After this you have many elements to understand what may be the problem. First you need to find the cause performance issue and then work out the solution. Here are some examples:

Read more →

February 10, 2012

Maximo Performance Best Practices White Papers

IBM has just released updated versions of Maximo Performance Best Practices White Papers. This papers provide useful information to improve the performance of all Maximo/TPAE based products wether they are deployed in small, medium, or large scale customer environments. They can be downloaded from IBM developerWorks: Best Practices for System Performance 7.5.x Best Practices for System Performance 7.x

Read more →

January 31, 2012

Listing existing Maximo/TPAE customizations

During my job assignments it often happens that I’m sent to a customer that already has Maximo in production with some customizations in place. One of the problems in such cases is to quickly get an overall picture of how many customizations have been made and what have been customized. One approach that I have found useful is to ‘diff’ the existing environment with a clean one exporting Maximo definitions into text files. The only problem with this approach is that requires a clean installation of the product. If you don’t have a clean system to compare you can use a simpler approach.

Read more →

January 24, 2012

Crontask analysis and optimization

An interesting feature of Maximo crontask is the capability of storing the task execution times. This feature must be enabled in each crontask clicking on ‘Keep history’ checkbox. This is nice feature but Maximo does not provide a graphical tool to analyze crontask performances and execution times so i have prepared a small set of SQL queries to be able to quickly gather important statistics directly from Maximo’s database. The first one extracts the start time and duration (in seconds) of each crontask execution in the last week.

Read more →

November 12, 2011

Enable lookup in report parameters selection page

In this post I will show how to enable the lookup functionality for selecting one or multiple values in a report parameter. Instead of creating a new lookup I will show all the necessary configurations looking at the built-in report ‘Inventory Balance’ (inventory_balance_tbl.rptdesign). Enabling lookup in report Open the ‘Report Administration’ application and search for ‘Inventory Balance’ report. Open the report details page and look at the ‘Parameters’ section. The ‘item’ parameter is the right example that what we are searching for.

Read more →

October 10, 2011

Application default search filters

I know that there is an official IBM Technote that already provides a solution to apply a default filter in a given Maximo application. However this solution has some drawbacks. The main problem I see is that using this technique the field filters are not displayed in the application so it could be tricky for the user to understand what’s happening. I have found a better solution customizing the application’s Java bean class (AppBean) specifying the QBE (Query By Example) parameters to the application DataBean in the initializeApp() method. Here is a practical example about how to do this on the WOTRACK application.

Read more →

September 19, 2011

Automatically display table results when application is displayed

Sometimes you may develop a custom Maximo application that shows a list of entries in a table. If the application is used frequently and the result set to show is not huge, it could be useful to automatically display the table content without the need to hit enter or click on the search icon. Here is a little tip that may solve this little usability issue. Open the application in the Application Designer and select main table, find the ‘Start Empty’ checkbox and uncheck it. If it is already unchecked you may need to first tick and then untick it.

Read more →

September 19, 2011

How to create a custom message and display it in a Maximo application

This entry is part of the Maximo Java Development series. A typical need during Maximo application customization is the ability to display a message on the GUI. The first step is to define the custom message. Open the Database Configuration application and select Messages for the Action menu. Create a new entry filling the required info: Message Group: Messages can be categorized in groups. I typically put here the name of the customer that I’m working on. This allows to quickly list all the custom entries. Message Key: Unique ID of the message. This field together with the MSGGROUP uniquely identifies the message. I typically use a short descriptive name of the message like ‘InfoMsg’ or ‘ErrorMsg’. Display Method: Can be ‘MSGBOX’ or ‘STATUS’. The ‘MSGBOX’ display a standard popup window displaying the message and a set of customizable buttons. The ‘STATUS’ displays the text above the tool bar and does not require user intervention. Message ID: Unique ID of the message. The typical format of custom messages is BMX[CC][NNNN][T] where [CC] is a two letters code that identifies your customization, [NNNN] is a four digits number and [T] is the type of message and can be E (Error), W (warning) or I (Info). Maximo suggest to use [CC]=‘ZZ’ for custom messages. For example I have started my custom enumeration with code BMXZZ1001I. Value: Text that will be displayed. Use {N} tags for parameters to be replaced at runtime (see example hereafter). Use \n to insert a newline. Here is a screenshot of the new message.

Read more →

August 31, 2011

Query groups application security

The standard Maximo ‘Security Groups’ application provides an easy way to view and modify users access to applications. However it is not always easy to have an overview of what groups are granted to access a specific application or what applications can be accessed by a specific group. With the following SQL query you can get a report of read/write permissions granted to all the groups. SELECT maxapps.app, maxapps.description, maxgroup.groupname, maxgroup.description, (SELECT COUNT(*) FROM applicationauth WHERE groupname=maxgroup.groupname AND app=maxapps.app AND optionname='READ') appread, (SELECT COUNT(*) FROM applicationauth WHERE groupname=maxgroup.groupname AND app=maxapps.app AND optionname='SAVE') appsave, (SELECT COUNT(*) FROM applicationauth WHERE groupname=maxgroup.groupname AND app=maxapps.app AND optionname='INSERT') appins, (SELECT COUNT(*) FROM applicationauth WHERE groupname=maxgroup.groupname AND app=maxapps.app AND optionname='DELETE') appdelFROM maxapps, maxgroupORDER BY maxapps.app, maxgroup.groupname; If you are using the Oracle’s than it is possible to list all sigoptions using CURSOR statement.

Read more →

August 31, 2011

Call Java method on action menu or toolbar button click

This entry is part of the Maximo Java Development series. In this post I will describe all the steps needed to execute custom Java code upon the selection of an entry in the action menu or the click of a button in the toolbar. Add a sigoption First you need to create a new sigoption. Open the Application Designer and select the application you want to modify. Select ‘Add/Modify Signature Options’ and create a new signature RUNJAVA.

Read more →

August 8, 2011