Friday 28 June 2013

Uninstalling IBM BPM iFixes from the command line

Following on from this post: -

I needed to uninstall a bunch of iFixes for IBM BPM, so wrote a small FOR loop to achieve this: -

$ for i in $(/opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackages | grep;do /opt/IBM/InstallationManager/eclipse/tools/imcl uninstall $i;done

I do have to run the command multiple times, as some iFixes need to be uninstalled in a specific order to avoid pre/co-requisite dependency conflicts e.g.

    ERROR:     APAR JR44617 is required by APAR JR44617 is in fix, which you have selected to uninstall.

    ERROR:     APAR JR44606 is required by APAR JR44606 is in fix, which you have selected to uninstall.


PS This goes with my other two forays into FOR loops: -

$ for i in *.zip;do unzip $i;done

$ for i in *.tar;do tar xvf $i;done

Wednesday 26 June 2013

Performance tuning considerations when IBM Business Process Manager (BPM) is running in a virtual machine

Some good intel via the @IBM_BPM Twitter account: -


Running IBM Business Process Manager in a virtual machine is supported. However, there are some additional considerations when running servers in a virtual machine (VM) environment.

Resolving the problem

When you are running a Java Platform, Enterprise Edition (Java EE) application in a virtual machine (VM) there are additional considerations. These considerations are performance-related changes.

Friday 21 June 2013

Modern Web Development with IBM WebSphere

This hasn't yet been released, but it'll be on my reading list as soon as it's out.

IBM WebSphere® Application Server 8.0 is an outstanding platform for modern Rich Internet Application development. This book covers everything developers need to build RIAs that are fast, responsive, interactive, reusable, maintainable, extensible, and a pleasure to use. Drawing on 40+ years of combined WebSphere experience, four of IBM's leading experts guide readers through every facet of building RIAs with:

• HTML/JavaScript front-ends built with Dojo
• RESTful Web Services back-ends using JAX-RS
• Persistent data relying on JPA
Through a complete sample application, readers learn how to make the most of MVC architecture, master proven RIA development best practices, and apply powerful new UI features built into WAS 8.0.

CWLLG0446I Group XXX is being checked for new updates...

When does the group table gets populated?

a) startup
b) Manual synch
c) system components requesting a JMS cache reset

Sample of Group Sync after starting of the system:

[10/29/12 11:03:24:575 PDT] 00000001 WsServerImpl A WSVR0001I: Server server1 open
[10/29/12 11:05:34:984 PDT] 00000044 wle being checked for new updates
I CWLLG0446I: Group Alsgroup is

Sample of When user log in to Portal

[10/29/12 11:05:35:078 PDT] 00000044 wle_security I CWLLG1088I: Initializing session is
done for user alwangaa

Source: BPM Security & LDAP - Concepts and Troubleshooting

Tuesday 18 June 2013

IBM Business Process Manager and the Performance Data Warehouse (PDW)

We're looking at the interaction between BPM and PDW at present, and these two Technotes have been absolutely invaluable: -


The processing of tracking definitions can cause lock contention due to message-driven bean (MDB) concurrency. The processing of data transfer to the Performance Data Warehouse can also lead to lock contention. The lock occurs because multiple threads are trying to create or alter tables in the Performance Data Warehouse at the same time. This scenario can lead to database lock timeouts or hung threads depending on your lock timeout settings.


The following example is one of the lock timeouts that you might see. In this case, there is an Oracle database and the error occurs during the DataDefLoader processing (DataDefLoaderBean.onMessage) of the tracking definitions installation. However, this situation might occur with any database type. If the issue is during the next stage of processing, then you might, instead, see the problem with RepresentationManager processing (RepresentationManagerQueueBean.onMessage).

Note: Lock timeouts are very generic errors. This document is only for the specific case where they occur during the processing of tracking definitions or data transfer.

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [insert into LSW_SNAPSHOT (SNAPSHOT_ID,NAME,DESCRIPTION,SHORT_NAME,ARCHIVED) values (?,?,?,?,?)]; nested exception is java.sql.SQLSyntaxErrorException: ORA-02049: timeout: distributed transaction waiting for lock
at com.lombardisoftware.server.tracking.definitionloader.TrackingDefinitionTraverser.traverse(
at com.lombardisoftware.server.tracking.loader.LoaderStrategy.resumeLoad(
at com.lombardisoftware.server.tracking.definitionloader.DefinitionLoaderStrategy.resumeLoad(
at com.lombardisoftware.server.ejb.tracking.DataDefLoaderCore.onMessage(
at com.lombardisoftware.server.ejb.tracking.DataDefLoaderBean.onMessage(
Caused by: java.sql.SQLSyntaxErrorException: ORA-02049: timeout: distributed transaction waiting for lock
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(

Disabling tracking data generation for a Process Server or Process Center in IBM Business Process Manager (BPM)

Technote (FAQ)


How do I disable tracking data generation for a Process Server or a Process Center?


There might be reasons why you do not want to use the Performance Data Warehouse in an environment. You might not be interested in collecting tracking data or using the related features that use tracking data. Tracking data is used by the Performance Data Warehouse reports, views and the Optimizer. Although there is not a documented process for disabling the Performance Data Warehouse, it can be done with some manual configuration changes. If Performance Data Warehouse data transfer is not working or stopped in an improper manner then you can have data build up in the LSW_PERF_DATA_TRANSFER table of the Process Server database.

If you do not plan to use tracking data then you should disable performance server communication using the following steps. This approach prevents Process Servers from creating and sending tracking data to the Performance Data Warehouse.

Thursday 13 June 2013

BusinessDataAliasCache performance and memory leak fix for IBM Business Process Manager

This has come to light today, as we were seeing java.lang.OutOfMemoryError exceptions, as soon as our BPM Standard JVM ( AppTarget cluster ) ran out of heap.

Using a monitoring tool, we could see the heap growing towards its MaxHeap value of 6 GB, with the amount of used heap growing at the same pace - as soon as we ran out of heap, down came WAS.

Using the IBM Heap Analyzer tool, we could see that we had a single instance of com.lombardisoftware.server.ejb.persistence.versioning.BranchManager totalling 4 GB in size :-)

Yoicks !!!!

Thankfully, I then found this: -


What is provided with this fix? 

JR42522 changes the way the BusinessDataAliasCache behaves on first login and optimizes interactions with the database associated with managing the cache. High memory consumption is avoided by placing an upper limit on the number of entries in the BranchManager cache.

Who should use it? 

Because this cache is associated with portal queries that utilize business data, users with a large number of snapshots / versions of business process definitions (BPD) are at risk for experiencing issues resolved by this fix.

Memory Consumption: 

Because there are no restrictions on when and how often the BusinessDataAliasCache is loaded, if a large number of unarchived snapshots are present, an OutOfMemory condition can result. The issue here specifically arises due to the amount of business data per snapshot consuming a large amount of heap. As a result, this fix prevents data from non-active snapshots from being read and provides an upper limit on the amount of heap consumed by business data per snapshot.  

In the heap dump that is generated from an OutOfMemory condition related to this issue, I would expect to see the following in Heap Analyzer output: 

One instance of "com.lombardisoftware.server.ejb.persistence.versioning.BranchManager" loaded by " @ 0x40f91a48" occupies 1,944,715,592 (90.52%) bytes. 

The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]" loaded by " @ 0x40f91a48". 

com.lombardisoftware.server.ejb.persistence.versioning.BranchManager @ 0x40f91a48 

The key being a large portion of heap accumulated in "com.lombardisoftware.server.ejb.persistence.versioning.BranchManager."

Therefore, we have two things to do: -

(a) Look at removing unwanted snapshots - I'll blog more about that later
(b) Apply the iFix

Good times !!!

Using an HTTP server causes duplicate snapshot deployments for IBM Business Process Manager (BPM)

Using an HTTP server causes duplicate snapshot deployments for IBM Business Process Manager (BPM)

With IBM Business Process Manager, duplicate snapshot installation requests are sent to the Process Server from the Process Center after a 1 minute delay. IBM HTTP Server is used as a web server for the Process Center console. This scenario leads to an additional load on the system, delays, and sometimes installation failures.

Thanks to @IBM_BPM on Twitter for this.

Thursday 6 June 2013

HTTP Headers for Dummies

Saw this thanks to @belgort 

Whether you're a programmer or not, you have seen it everywhere on the web. At this moment your browsers address bar shows something that starts with "http://". Even your first Hello World script sent HTTP headers without you realizing it. In this article we are going to learn about the basics of HTTP headers and how we can use them in our web applications.

What are HTTP Headers?

HTTP stands for "Hypertext Transfer Protocol". The entire World Wide Web uses this protocol. It was established in the early 1990′s. Almost everything you see in your browser is transmitted to your computer over HTTP. For example, when you opened this article page, your browser probably have sent over 40 HTTP requests and received HTTP responses for each.

HTTP headers are the core part of these HTTP requests and responses, and they carry information about the client browser, the requested page, the server and more.

Monday 3 June 2013

Announcing IBM Support Assistant 5.0 Team Server Beta 3

The new IBM Support Assistant 5.0 Team Server Beta 3 brings you the next generation of IBM's popular problem determination and troubleshooting platform. This complimentary offering provides a rich set of problem determination tools and functions to help you find the root cause of software problems and enhance your productivity. Beta 3 includes several new features based on your feedback. Watch the overview video to learn more about IBM Support Assistant. 

New features in Beta 3 
• Updated administration console - Install, update, remove and discover tools within the new console interface.
• Secure communication - All transfers are encrypted over https to protect your data
• Authentication/Authorization - Administration functions can be restricted to a subset of users
• Quick Launch icon - Quickly identify and launch tools directly from the Files tab.
• Checksum tool - Confirm file integrity with the new checksum tool.
• Multiple file download capability - Download multiple files simultaneously.
• New UI theme - Provides a fresh new look and feel that is consistent with other IBM applications and sites.

Visual Studio Code - Wow 🙀

Why did I not know that I can merely hit [cmd] [p]  to bring up a search box allowing me to search my project e.g. a repo cloned from GitHub...