Upgrade report utility for BIRT 2.3.2

If you are upgrading your Maximo to the latest fixpack version 7.1.1.5, you are gonna be using the new BIRT version 2.3.2.  Of course, along with any new version comes the tedious task of upgrading old files.  By upgrading to the latest version of BIRT, the patch just overwrites the out-of-the-box reports with the new version so everything should be working fine.  Well, most of us have customized reports, if not more than a hand full of custom reports, that need to be upgraded.  Now you are burdened with the task of finding out all the reports that were customized, then rewrite them so they continue to work.  Well, IBM has provided us with an easy way to find out what reports need to be upgraded with their Upgrade Report Utility.  It’s actually a BIRT report that you can run within Maximo that will display a list of reports that need to be fixed and what exactly needs to be done.  It analyzes your custom code and identifies potential report upgrade issues.

There are 8 potential upgrade areas, and this utility finds 5 of those areas which can be identified.  The 5 areas are:

  • Null Date Parameter
  • Comment Formatting
  • Any Data Type
  • Null Comparison
  • Date Time Calendar Formatting

The other 3 areas – Report Graphics, Chart Multiplier and Expression Builder Null Values – are not identified in the report as each must be evaluated individually to determine if there is an issue or not.

So all you have to do to use this utility is to basically register a new report in Report Administration module.

First download the rtpdesign file:

Report Upgrade UtilityReport Upgrade Utility

Go to the Report Administration module and register a new report with these settings:

Report File Name: report_upgrade.rptdesign
Description: Report Upgrade Listing
Application: Report
Report Folder: Report

Next, import the Report Upgrade Report into the Repository. Do this by accessing the Import Report Action from Report Administration.

Finally, Execute the Report Upgrade Report from within the Report Administration Application.  If the report has any entries, then you will have to made changes to those reports according.  Here is a complete list of the 5 areas and how to resolve them.

1.  Null Date Parameter

If your report contains a date time parameter value, an exception error may occur which includes text like….

A BIRT Error occurred: Error evaluating Javascript expression. Script engine error: TypeError: Cannot convert null to an object.

This error occurs because BIRT handles blank values and null differently, like null and empty string. BIRT 2.3.2 will throw an exception if a DATETIME parameter has blank value – but it will allow null for the DATETIME parameter.

Resolution

In order to avoid these exceptions with 2.3.2, code has been added to Base Services 7.1.1.5. The code will check if a parameter is a datetime parameter. Datetime parameters are identified where

REPORTLOOKUP.LOOKUPNAME = 'datelookup'

If the parameter is a datetime (and user does not enter a value in Request Page), null values will be passed. This will occur if the parameter is optional or required, and bound or unbound. However, to enable this code to function correctly, any DATETIME parameters you have in your custom reports MUST use the datelookup. This value is set for the specific report within its reports.xml file, and available thru the UI in the Report Administration Application.

2.  Comment Formatting

Developers often add comments to their report design files to explain logic or define changes they have made. Prior releases enabled single forward slashes to be used to identify comments. However, now in BIRT 232, only double forward slashes can be used. Therefore, if a report design contains comments enclosed in /* and */, it may now fail with a java.lang.StackOverflowError message.

Resolution

Either remove the comment, or use // on each line to indicate comments entries.

3.  Any Data Type

The ‘Any’ Data Type was available in BIRT 212, however, it is no longer available in BIRT 232. Therefore, errors may be seen when reports are executed containing fields using ‘Any’ Data Type.

Resolution

Change Type from Any to a defined data type.

4.  Null Comparison

When executed from the browser, either no data is seen in a report, or unexpected data is displayed. This is caused by a null failure comparison.

Resolution

Update null comparison expressions.  Change from expressions using:

java object standard == or != null

To

BirtComp.equalTo(<value>,null), BirtComp.notEqual(<value>,null)

An example:

( !BirtComp.equalTo(params["enddate"],null) && params["enddate"] != "" )

5.  Date Time Calendar Formatting

If DateTimeSpan Method used to perform data calculations, you may receive incorrect date values in report. This was seen when the data calculations involved addition or subtraction.

Resolution

Use GregorianCalendar Method.

6.  Report Graphics

Due to the new graphics packages introduced in BIRT 23, we found that approximately 50% of the graphic reports created in BIRT 212 had to have their graphics modified for them to display properly in BIRT 232. These changes including swapping axis or changing the way columns were mapped. Additionally, the changes were found to impact all report graphic types – whether bar, pie, line or column.

Resolution

Due to the unique nature of each report design’s graphic, this has to be handled on a report-by-report basis. The level of changes required was found to vary significantly.

7.  Chart Multiplier

Chart Values display improperly as 0 and 1% instead of proper values of 45 % (example) and 100%

Resolution

Multiply graphic values by 100% as in the text below

<FormatSpecifier xsi:type="attribute:NumberFormatSpecifier">
<Prefix></Prefix>
<Suffix>%</Suffix>
<Multiplier>100.0</Multiplier>
<FractionDigits>0</FractionDigits>

8. Expression Builder Null Values

When reports execute thru multiple tables – often seen in hierarchy reports like Job Plan Hierarchy or Work Order Hierarchy – null values are returned.

Resolution

Update syntax used in Expression Builder.

From:

row._outer["classstructureid"]

To:

row["classstructureid"]

**Update must be done on column binding data set parameters to outside

Did You Know...

As Maximo Experts, we have developed several add-on products for Maximo that mobilize the work force, simplifies assignments, provides ad-hoc reporting capabilities and facilitates the seamless integration of Service Requests into Maximo.

Check out our products by clicking on the following links: EZMaxMobile, EZMaxPlanner and EZMaxRequest.

Find Out More

One thought on “Upgrade report utility for BIRT 2.3.2

Leave a Reply