Wednesday 5 February 2020

Clearing WebSphere temporary file caches for Maximo Asset Management

This document shows the correct directories to delete to clear the WebSphere 7.0, 8.0, 8.5.5 and 9.0 Maximo application server cache.

Symptom

New changes, such as Fix Pack, Interim Fix Pack, LAFIX/hot fix or XML changes do not take effect after deploying a new maximo.ear file.

Resolving The Problem

Follow the steps below to clear the WebSphere application server cache when deploying the maximo.ear.
Add this procedure of clearing WebSphere cache every time you rebuild and redeploy the ear files.


Note: If you are not going to redeploy the MAXIMO.ear, skip steps 3 and 5 through 7.

1. Log into the WebSphere Integrated Solutions Console.

2. Shut down the Maximo application server (default name MXServer).

3. Under Applications > Application Types > WebSphere enterprise applications, select and uninstall the Maximo enterprise application (maximo.ear) completely.

4. Delete cached files from temp and wstemp and, optionally, logs directories:

Windows (where the WebSphere location is C:\Program Files\IBM\WebSphere\AppServer, the application server profile is called ctgAppSrv01, the node is called ctgNode01, and the Maximo server is called MXServer). *.* means contents of the named directory:
  • C:\Program Files\IBM\WebSphere\AppServer\profiles\ctgAppSrv01\temp\ctgNode01\MXServer\*.*
    C:\Program Files\IBM\WebSphere\AppServer\profiles\ctgAppSrv01\wstemp\*.*
    (optional) C:\Program Files\IBM\WebSphere\AppServer\profiles\ctgAppSrv01\logs\MXServer\*.*

Unix (where the WebSphere location is /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01, the application server profile is called ctgAppSrv01, the node is called ctgNode01, and the Maximo server is called MXServer). *.* means contents of the named directory:
  • /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/temp/ctgNode01/MXServer/*.*
    /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/wstemp/*.*
    (optional) /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/logs/MXServer/*.*

5. Delete MAXIMO.ear from /installedApps, both the contents of the directory and the directory itself:

Windows (locations as above):
  • C:\Program Files\IBM\WebSphere\AppServer\profiles\ctgAppSrv01\installedApps\ctgCell01\MAXIMO.ear

Unix (locations as above):
  • /opt/IBM/WebSphere/AppServer/profiles/ctgAppSrv01/installedApps/ctgCell01/MAXIMO.ear

You do not need to delete MXIEHS.ear directory.

6. Deploy the Maximo enterprise application. If using LDAP server authentication, make sure that the security permissions are set as previously for the MAXIMO Enterprise Application.

7. Synchronize nodes. System Administration > Nodes, check the node to synchronize, then click the Synchronize button.
[Use Full resynchronize if you have made manual file edits on the node. Deploying a Maximo ear does not make manual file edits on the node, so it should not be necessary to use this function. Full synchronize can take a much longer to complete. If Synchronize fails immediately, manual synchronization will be necessary.]

8. Restart MXServer.

Note: In WebSphere 8.0 and 8.5.5 on Windows, the default installation directories may be in C:\Program Files (x86)\IBM rather than C:\Program Files\IBM.

See also the WebSphere Java SDK technote on how to clear the WebSphere class caches . Clearing the WAS class and OSGi caches may resolve class mismatch problems.

How to clear the WebSphere class caches

Problem

Instructions on clearing the java class caches in IBM WebSphere Application Server. Both the JVM's shared class cache and WebSphere Application Server's OSGi class cache.

Resolving The Problem

IBM Support may ask you to clear the class cache. There are several reasons for this. After an upgrade, it is possible that the class cache's are still holding onto previous versions of classes. It is also possible that the caches became corrupted.

Please remember there are two caches that will need to be cleared, the JVM's cache and the OSGi cache. The server has to be stopped before clearing the cache.

To clear the OSGi class cache:
  • For UNIX platforms, run the following script in each profile:
    <WebSphere_HOME>/profiles/profile_name/bin/osgiCfgInit.sh

    For Windows platforms, run the following script in each profile:
    <WebSphere_HOME>\profiles\profile_name\bin\osgiCfgInit.bat

To clear the JVM's class cache (Linux, AIX, z/OS and Windows):
  • For UNIX and z/OS platforms, run the following script:
    <WebSphere_HOME>/bin/clearClassCache.sh

    For Windows platforms, run the following script:
    <WebSphere_HOME>\bin\clearClassCache.bat

    And clear the following directory contents:
    <WinUsers_home>\Local Settings\ApplicationData\javasharedresources\

    where WinUsers_home is either C:\Documents and Settings\DefaultUser OR C:\Users depending on your current version of Windows.

    Please note:

    1. You should not delete the cache while any of the JVM's are running and using the cache. The server has to be stopped before clearing the cache.

    2. You must be logged in as the user who started WebSphere Application Server.

    3. For Windows the clearClassCache.bat may not work if you are using Windows Services. Please follow these steps:

    Clear the following directory contents:

    For Windows XP/Windows 2003:

    C:\Documents and Settings\DefaultUser\Local Settings\ ApplicationData\javasharedresources\

    For Window Vista/Windows 7/Windows 2008:

    C:\Users\[WSAS_User]\AppData\Local\javasharedresources\
     
       For Windows 2008/Windows 2012/Windows 2016:
       C:\Windows\System32\config\systemprofile\AppData\Local\javasharedresources
       or
       C:\Windows\SysWOW64\config\systemprofile\AppData\Local\javasharedresources

Maximo Health Check Report

Is your Maximo database in good health?

Maximo Health Check report is a utility for IBM Maximo that can help identify and analyze issues, errors, or incorrect configurations that can lead to unsatisfying system performances.
Adding more JVMs to your application server cluster seldom solves Maximo performance issues. In our experience, the most effective performance improvement techniques are on the database side.
  • Data archiving – After several years of usage, Maximo systems may become slow because of the volume of data accumulated. Moving unnecessary data out of the main Maximo tables can greatly improve overall system performances.
  • Database indexes optimization – Adding the right indexes and removing the wrong ones is a complex activity that requires deep skills but can produce outstanding results in many cases.
  • SQL queries optimization – SQL queries are everywhere in Maximo: start center portlets, application queries, escalations and reports. Those SQL statements are seldom optimized and can lead to slow response times and increased system load.
  • Database tuning – Last chance is to fine tune the database server with the support of experienced DBAs. The Maximo Best Practices for System Performance document describes the main settings for supported databases but sometimes specific tuning may be needed.

Installation instructions

  • Download MxDevReports.zip file and extract it in a folder of your choice.
  • Open Administration > Report Administration application and create a new record.
  • Enter the following information:
    • Report file name: mxdev_healthcheck.rptdesign
    • Description: Health Check (MxDev)
    • Application: CONFIGUR (Database Configuration)
  • Save the record.
  • Select Import Report action from the menu and import CONFIGUR/mxdev_healthcheck.rptdesign file.
  • Click on Generate Request Page and then on Preview to test the report.
The report may be quite heavy to run on large production environments so we suggest to schedule the execution during non-work hours.
Maximo Health Check report has been tested on Maximo 7.5 and 7.6.
Support is not officially provided but you can post problems or enhancement requests in the community forums and we will do our best to help users get the most out of it.

Report Information

The report is divided in the following sections:
  • Environment overview
  • Sites breakdown
  • Data Volume
  • Data growth
  • Reports
  • Crontasks and escalations
  • Users Activity
Here are few examples of charts available in the report.

Screenshots

Improved Automation Scripts application

Maximo automation scripts are a very useful tool to implement custom business logic for your customer. After time you may have many scripts to maintain and it may become hard to understand all the logic you have implemented on a specific object. I easy and useful trick I always use is to modify the Automation Scripts application to be able to display and filter script’s launch points.
You can see in this screenshot how easy it  to understand what scripts are running on each business object.

The Automation Scripts app can be modified in just few minutes and can be a lifesaver in many cases.
Open the Application Designer, search for AUTOSCRIPT application and make the following changes.
Remove the following table columns definitions:
  • SCRIPTLANGUAGE – Typically you always use one scripting language so there is no need to search for this field.
  • VERSION – I don’t think this is really helpful.
  • USERDEFINED – Maximo has no built-in script and you probably use a project-specific prefix.
Add the following columns:
  • SCRIPTLAUNCHPOINT.LAUNCHPOINTTYPE
  • SCRIPTLAUNCHPOINT.OBJECTNAME
  • SCRIPTLAUNCHPOINT.ATTRIBUTENAME
If you prefer to modify the application definition XML instead of using the graphical editor, here is is how the XML will look like.
<tablebody displayrowsperpage="20" filterable="true" filterexpanded="true" id="autoscript_results_showlist_tablebody">
  <tablecol dataattribute="autoscript" filterable="false" id="autoscript_results_showlist_column1" mxevent="toggleselectrow" mxevent_desc="Select Row {0}" sortable="false" type="event"/>
  <tablecol dataattribute="autoscript" id="autoscript_results_showlist_column2" mxevent="selectrecord" mxevent_desc="Go To %1" type="link"/>
  <tablecol dataattribute="description" id="autoscript_results_showlist_column3"/>
  <tablecol dataattribute="active" id="autoscript_results_showlist_column5"/>
  <tablecol dataattribute="SCRIPTLAUNCHPOINT.LAUNCHPOINTTYPE" id="mxd_LAUNCHPOINTTYPE"/>
  <tablecol dataattribute="SCRIPTLAUNCHPOINT.OBJECTNAME" id="mxd_OBJECTNAME"/>
  <tablecol dataattribute="SCRIPTLAUNCHPOINT.ATTRIBUTENAME" id="mxd_ATTRIBUTENAME"/>
  <tablecol filterable="false" id="autoscript_results_bookmark" mxevent="BOOKMARK" mxevent_desc="Add to Bookmarks" mxevent_icon="btn_addtobookmarks.gif" sortable="false" type="event"/>
</tablebody>

Scripting with Maximo

Today I am going to introduce you to the world of scripting with Maximo. Maximo scripting let you customize a slew of Maximo components. These components include these kinds of customizations:
  • Customizing MBOs through save-point and initialization-point validations and actions and MBO field validations and actions.
  • Customizing workflow, escalation, conditional UI, menus, and push-button actions via scripted actions and conditions.
It is important to understand that the Automation scripts are a server-side artifact, as opposed to a client-side one. So all your scripts are executed on the server side as opposed to say in the browser.
The cool part about scripting is that you can use it without writing a line of Java code, or without restarting the server or rebuilding the EAR file. We understand that sometimes you need to customize using MBO code or the Maximo SDK and the scripting framework does not remove that power. You still have access to all of Maximo APIs as well the MBO instances in context. You can use a MBO to access any related MBO or set and can call all public APIs, such as those to invoke a Web service or a send an email from a script.
As for languages, you can code the script in the language of your choice. Jython and JavaScript are enabled by default. However, you should be able to use any JSR-223 compliant scripting engine or language, provided that you add the java-engine.jar file to the Maximo classpath (either ear or system). So if you are a JRuby or Groovy geek, try the version of those languages that supports JSR-223 and start grooving in Maximo. Just so you know, Maximo Support supports questions about scripts written only in JavaScript and Jython.

Monday 21 August 2017

Maximo Asset Management 7.6.0.7 Interim Fix 005 released


The Interim Fix (IFIX) is available at Fix Central.

As with all IFIXes, MAM 7607 IFIX 005 is cumulative and includes all fixes provided with Maximo Asset Management 7.6.0.7 Interim Fix 004, with these additions:

APAR
Application Name
Description
IV89431
Security Groups
Access is required to create work orders and tasks.
IV95332
Assets
In the Assets application, for multiple assets, you cannot change the status in the background.
IV98279
Conditional Monitoring
In the Conditional Monitoring application, when you add a job plan to a condition, the prioirty does not populate.
IV94406
Graphical Scheduling
In the Graphical Scheduling application, when you use Microsoft Internet Explorer 11, the Gantt view does not render.
IV94978
Job Plans
In the Job Plans application, when auto-number functionality is enabled, job plan predecessors are not recorded correctly in the database.
IV92471
Purchase Orders
In the Purchase Orders application, when you use the Go To function on a purchase order line and the work order site is different that the main purchase order site, records are not returned.
IV93059
Automation Scripts
When you change the status of an asset, an automation script causes an exception.
IV97336
System Object
When you install one or more secondary languages, some messages in the browser are incorrectly translated.
IV95258
System Object
Maximo searches on the SQL server are adding additional brackets that cause the search to fail.
IV90039
Inventory Usage
In the Inventory Usage application, you cannot update an inventory usage document if it has an associated reservation that is canceled.

Monday 31 July 2017

MxLoader now supports attachments

I have just implemented the capability to upload attachments straight from MxLoader. This is in response to some requests on my blog and MxLoader support forum.

Starting from Maximo 7.1.1.6 it is possible to import attachments to an object through MIF using Base64 encoding.
MxLoader has the capability to read files from the filesystem, encode them in Base64 and upload them on Maximo. This can be done on any Maximo object that supports attachments but the integration object structure has to be modified to include the DOCLINK object.

In this example the MYASSET object structure has been created with the DOCLINKS child object.



To specify a file to be uploaded you have to prefix the full path of the file with the ‘file:///’ string. Look at the screenshot below for an example of how to add two attachments to an asset.

IBM Readme for IBM Maximo Asset Management 7.6.1.3 Fix Pack

  Fix Readme Abstract This fix pack updates IBM® Maximo® Asset Management version 7.6.1, 7.6.1.1, and 7.6.1.2 Content IBM Maximo Asset Manag...