IBM Support

Displaying Related Cases in ICM 5.2

Technical Blog Post


Displaying Related Cases in ICM 5.2


A really long time ago, I described how you could use the Case List widget to display a list of "Related Cases"; cases that are somehow related to the case you are currently looking at.

This has been a pretty popular solution customization so I thought it was about time I updated it for ICM 5.2.x.




The use case here is that you want to display a list of related cases on a work details page that is used to process a task step for a particular case. You can easily modify the first bit if your Case List happens to be on another page (eg. payload.caseEditable.

  • Add a case list widget to your Work Details page
  • Use the wiring settings to disable the Select Case broadcast event. This ensures the case list does not interfere with other page widgets like the Case Infomation
  • Add a Script Adapter widget to the hidden page area
  • Enter the following script in the Script Adapter
  • Wire the inbound event of the Script adapter from the Page Container's "send Work Item" event
  • We use a broadcast event in our script so no need to wire the outbound event
  var solution = this.solution;  var params = {};  var self = this;    /* This is good practice. Makes reusing scripts much easier */  var prefix = solution.prefix;    params.ObjectStore = solution.getTargetOS().id;    var custID = payload.workItemEditable.propertiesCollection[prefix+"_CustomerID"].value;  console.log ("Customer ID: ",custID);    var caseObj = payload.workItemEditable.icmWorkItem.caseObject;    /* The following call ensures that the case data is loaded before we go try and get the case ID */    caseObj.retrieveCachedAttributes(function(caseObject) {      var caseID = caseObject.caseIdentifier;      console.log ("Case ID: ",caseID);        /* Find all of these */      var criterion1 = new ecm.model.SearchCriterion({"id": prefix+"_CustomerID", "name" : "Customer ID", "selectedOperator": "STARTSWITH", "defaultOperator": "STARTSWITH", "dataType": "xs:string"});      criterion1.value = custID ;      criterion1.defaultValue = custID ;      criterion1.setValues( [custID]);        /* But omit this one */      var criterion2 = new ecm.model.SearchCriterion({"id": "cmAcmCaseIdentifier", "name" : "Title", "anded": true, "selectedOperator": "NOTEQUAL", "defaultOperator": "NOTEQUAL", "dataType": "xs:string"});      criterion2.value = caseID;      criterion2.defaultValue = caseID;      criterion2.setValues( [caseID]);        params.criterions = [criterion1, criterion2];      params.CaseType = ""; /* all case types */      params.solution = solution;        var searchPayload = new icm.util.SearchPayload();      searchPayload.setModel(params);        searchPayload.getSearchPayload(function(payload) {          self.onBroadcastEvent("icm.SearchCases", payload);      });  });            

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSCTJ4","label":"IBM Case Manager"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]