Friday, 12 October 2018

IBM BPM - Tinkering with Groups via REST

I’m digging into an issue with the IBM Master Data Management (MDM) Data Stewardship Center (DSC), where a button ( Add ) doesn’t appear for my user, DSUser1: -




even though the user is a member of the correct DataStewardGroup: -





As part of the investigation, I wanted to look at the groups and teams available to IBM BPM.

There’s a rather useful REST API for this, accessible via the BPM REST API Tester: -




also accessible via cURL : -

curl -k -u wasadmin:passw0rd -o /tmp/groups.txt --request GET --url https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/groups?includeDeleted=false&parts=all

Knowing the group name ( DataStewardGroup ), I then used the REST API to get at that: -

curl -k -u wasadmin:passw0rd --request GET --url https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/group/DataStewardGroup?includeDeleted=false&parts=all

which returns a single member - DSUser1 : -



I then dug into the BPM teams, as opposed to the groups: -




and the snapshot ID: -




Armed with the Team ID ( 24.fccd301e-1a55-4873-b69f-05c43b251545 ), Snapshot ID ( 2064.f96be189-3d91-4b8e-b485-21af8e0af5ce ) and Branch ID ( 2063.d1ecb65f-8778-4ddc-8c4f-b94ef28781c9 ), I was then able to dig into the details of the DataStewardTeam: -

https://lt.uk.ibm.com:9446/rest/bpm/wle/v1/team/24.fccd301e-1a55-4873-b69f-05c43b251545?snapshotId=2064.f96be189-3d91-4b8e-b485-21af8e0af5ce&branchId=2063.d1ecb65f-8778-4ddc-8c4f-b94ef28781c9




all of which seems to confirm that DSUser1 is a member of the DataStewardGroup which is mapped to the DataStewardTeam

So why doesn’t the Add button appear ?

Ah, well, keep on digging ….

Some follow-up reading: -



Wednesday, 10 October 2018

IBM Master Data Management and IBM BPM - Process Server, rather than Process Center

Having spent the past few months installing / configuring the Master Data Management (MDM) Data Stewardship Center (DSC) with IBM Business Process Manager (BPM), I realised that I've only ever worked with Process Center.

Therefore, the default installation script: -

./InstallGovernanceApplication.sh install_configure_governance_apps

only works for a Process Center, in part because the script imports Process Application snapshots as .TWX files, via the underlying sub-script: -

./InstallGovernanceApplication.sh run_import_process_application

which doesn't work for a Process Server, where one has to install off-line packages ( .ZIP files ).

This is an issue where one has an offline Process Server, which isn't connected to Process Center.

As ever, there is an alternate path ….

In essence, one runs a process (!) on the Process Center environment ( where DSC has previously been installed/configured ), namely: -

./InstallGovernanceApplication.sh get_installable_packages_offline_server

which "dumps" the exported packages ( .ZIP ) here: -

ls -al /opt/ibm/MDMDSG/mdmg/offlinePackages/

total 327388
drwxr-xr-x. 2 wasadmin wasadmins     4096 Oct 10 15:53 .
drwxr-xr-x. 8 wasadmin wasadmins     4096 Sep 18 15:32 ..
-rw-r--r--  1 wasadmin wasadmins 42576778 Oct 10 14:52 MDMDASH.zip
-rw-r--r--  1 wasadmin wasadmins 44511046 Oct 10 14:52 MDMFD.zip
-rw-r--r--  1 wasadmin wasadmins 50974139 Oct 10 14:52 MDMHDQ.zip
-rw-r--r--  1 wasadmin wasadmins 50445365 Oct 10 14:51 MDMPM.zip
-rw-r--r--  1 wasadmin wasadmins 51503903 Oct 10 14:51 MDMSDP.zip
-rw-r--r--  1 wasadmin wasadmins 45311643 Oct 10 14:51 MDMSDV.zip
-rw-r--r--  1 wasadmin wasadmins 49904581 Oct 10 14:52 VST.zip

( having previously created an offline Process Server instance within Process Center - the name is relatively irrelevant - I called mine Boris - and then added the name to MDMBPMIntegration.properties )

offlineServerName=Boris

Having moved these to the Process Server box ( and extracted them to /opt/ibm/MDMDSG/mdmg/offlinePackages/ ), I updated the properties file: -

vi /opt/ibm/MDMDSG/mdmg/install/properties/MDMBPMIntegration.properties

setting the PS_ parameters.

Once done, I then ran a subtly different task from before: -

./InstallGovernanceApplication.sh install_configure_governance_apps_offline_server

and waited.

Now I have a bunch of new Snapshots: -


and the DSC: -


Nice!

Tuesday, 9 October 2018

IBM Operational Decision Manager 8.10 - Arriving in December

This: -


and this: -


Due in early December, this is going to be supported on a wider range of platforms, including IBM Cloud Private ( Docker/Kubernetes orchestration platform ) and WebSphere Liberty Profile.

It'll also include an improved version of Decision Composer, 







etc.

Restoring WebSphere Application Server Profiles - NullPointerExceptions

So, for some reason, I was having a crisis of confidence  / memory.

I was trying/failing to restore a WebSphere Application Server (WAS) profile, using the following command: -

/opt/ibm/WebSphere/AppServer/bin/manageprofiles.sh -restoreProfile -backupFile /home/wasadmin/wasbackups/BPM86_Dmgr01.zip 

which failed with: -

...
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:234)
at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:96)
at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:981)
at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:407)
at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:170)
Caused by: java.lang.NullPointerException: entry
at java.util.zip.ZipFile.getInputStream(ZipFile.java:404)
at com.ibm.ws.profile.utils.FileUtils.getInputStreamFromZipFile(FileUtils.java:364)
at com.ibm.wsspi.profile.WSProfile.restore(WSProfile.java:2097)
at com.ibm.wsspi.profile.WSProfile.restore(WSProfile.java:2069)
at com.ibm.ws.profile.cli.WSProfileCLIRestoreProfileInvoker.executeWSProfileAccordingToMode(WSProfileCLIRestoreProfileInvoker.java:106)
at com.ibm.ws.profile.cli.WSProfileCLIModeInvoker.invokeWSProfile(WSProfileCLIModeInvoker.java:462)
at com.ibm.ws.profile.WSProfileJob.run(WSProfileJob.java:94)
at com.ibm.ws.profile.utils.WSProfileUtils.executeAllJobs(WSProfileUtils.java:793)
at com.ibm.wsspi.profile.WSProfileCLI.invokeWSProfile(WSProfileCLI.java:228)
at com.ibm.wsspi.profile.WSProfileCLI.main(WSProfileCLI.java:62)
... 26 more
...

view /opt/ibm/WebSphere/AppServer/logs/manageprofiles/restoreProfile.log 

...
  <record>
    <date>2018-10-09T12:31:06</date>
    <millis>1539084666088</millis>
    <sequence>24</sequence>
    <logger>com.ibm.ws.profile.cli.WSProfileCLIModeInvoker</logger>
    <level>WARNING</level>
    <class>com.ibm.ws.profile.cli.WSProfileCLIModeInvoker</class>
    <method>getArgumentValue</method>
    <thread>1</thread>
    <message>Could not resolve templatePath from command line</message>
  </record>


It took me a while of faffing around ….. including creating new profiles ….

And then I realised where I was going wrong ….

Given that I had backed up the profiles: -

mkdir wasbackups
cd wasbackups/
/opt/ibm/WebSphere/AppServer/profiles/AppSrv01/bin/backupConfig.sh BPM86_AppSrv01.zip
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin/backupConfig.sh BPM86_Dmgr01.zip

perhaps it'd have made more sense to use …. restoreConfig.sh instead.

Guess what …..

/opt/ibm/WebSphere/AppServer/bin/restoreConfig.sh /home/wasadmin/wasbackups/BPM86_Dmgr01.zip 

ADMU0116I: Tool information is being logged in file
           /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/restoreConfig.log
ADMU0128I: Starting tool with the Dmgr01 profile
ADMU0505I: Servers found in configuration:
ADMU0506I: Server name: dmgr
ADMU2010I: Stopping all server processes for node Dmgr
ADMU0512I: Server dmgr cannot be reached. It appears to be stopped.
ADMU5502I: The directory /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config
           already exists; renaming to
           /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config.old
ADMU5504I: Restore location successfully renamed
ADMU5505I: Restoring file /home/wasadmin/wasbackups/BPM86_Dmgr01.zip to
           location /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/config
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ADMU5506I: 3,179 files successfully restored
ADMU6001I: Begin App Preparation -
ADMU6009I: Processing complete.
ADMU6002I: Begin Asset Preparation -
ADMU6009I: Processing complete.

Monday, 8 October 2018

Upgrading from IBM 8.6 to IBM BAW 18.0.0.1 - Disk is crucial

I saw this: -

...
[08/10/18 11:54:56:571 BST] 00000001 BPMConfig     E com.ibm.bpm.config.BPMConfig main ADMA5002E: Application binaries cannot be saved in /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/wstemp/anonymous1538995571224/workspace/cells/PCCell1/applications/navigatorEAR_AppCluster.ear/navigatorEAR_AppCluster.ear: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException: navigator.war
                                 com.ibm.bpm.config.util.ConfigException: ADMA5002E: Application binaries cannot be saved in /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/wstemp/anonymous1538995571224/workspace/cells/PCCell1/applications/navigatorEAR_AppCluster.ear/navigatorEAR_AppCluster.ear: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.SaveFailureException: navigator.war
        at com.ibm.bpm.config.util.jmx.AppManagementNotificationListener.appEventReceived(AppManagementNotificationListener.java:117)
        at com.ibm.ws.management.application.SchedulerImpl.propagateTaskEvent(SchedulerImpl.java:245)
        at com.ibm.ws.management.application.task.BackupAppTask.install(BackupAppTask.java:195)
        at com.ibm.ws.management.application.task.BackupAppTask.performTask(BackupAppTask.java:92)
        at com.ibm.ws.management.application.SchedulerImpl.run(SchedulerImpl.java:315)
        at java.lang.Thread.run(Thread.java:811)


whilst upgrading from IBM Business Process Manager 8.6 CF2013.03 to IBM Business Automation Workflow 18.0.01, as per this: -


Something made me think that it MIGHT be disk-space related, given the exception.

Checking free disk space: -

df -kmh

Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G   44G  3.8G  93% /
devtmpfs               3.8G     0  3.8G   0% /dev
tmpfs                  3.9G   60K  3.9G   1% /dev/shm
tmpfs                  3.9G   12M  3.8G   1% /run
tmpfs                  3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1              497M  210M  288M  43% /boot
tmpfs                  781M     0  781M   0% /run/user/1004
vmhgfs-fuse            477G  405G   73G  85% /mnt
tmpfs                  781M     0  781M   0% /run/user/0


kinda reinforced that suspicion.

So I checked the logs further: -

fgrep -R device /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs

and found: -=

...
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.WebAppListener.deviceCleanupInitialDelay', 'name=Initial deplay for the database clean up task;descr=Initial deplay for the database clean up task (in days);attributes=1')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.WebAppListener.deviceCleanupPeriod', 'name=Device clean up cycle time;descr=Device clean up cycle time (in days);attributes=7')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/DBUpgrade_Mon-Oct-08-11.40.36-BST-2018_0.log:INSERT INTO SYNCCONFIGURATION ( ID, ATTRIBUTES ) VALUES ('com.ibm.ecm.sync.tools.cleanup.CleanupTask.deviceExpiration','name=Device expiration;descr=device expiration (in days);attributes=90')
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/ffdc_20181008-114610/ffdc.1987123897687396422.txt:Caused by: java.io.IOException: No space left on device
/opt/ibm/WebSphere/AppServer/profiles/Dmgr01/logs/ffdc_20181008-114610/ffdc.1987123897687396422.txt:   java.lang.Throwable::detailMessage:No space left on device

...

which kinda confirmed things.

Off to add more disk ……

Thursday, 4 October 2018

BPMConfig - Validation of a Deployment Environment

So this is a new one to me ….

In the context of changing WAS / BPM passwords, and then validating the changes, the IBM Knowledge Center has this to say: -



Having documented the password change process for my client, I thought I'd give the validation a try 

/opt/ibm/WebSphere/AppServer/bin/BPMConfig.sh -validate -profile Dmgr02 -de De1 -outputDir /tmp/val

The output was: -

ls -R -al /tmp/val/

/tmp/val/:
total 4
drwxr-xr-x   3 wasadmin wasadmins   17 Oct  4 09:04 .
drwxrwxrwt. 19 root     root      4096 Oct  4 09:34 ..
drwxr-xr-x   3 wasadmin wasadmins   54 Oct  4 09:04 html

/tmp/val/html:
total 36
drwxr-xr-x 3 wasadmin wasadmins    54 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins    17 Oct  4 09:04 ..
-rw-r--r-- 1 wasadmin wasadmins 34573 Oct  4 09:04 configValidationReport_De1.html
drwxr-xr-x 3 wasadmin wasadmins    51 Oct  4 09:04 css

/tmp/val/html/css:
total 12
drwxr-xr-x 3 wasadmin wasadmins   51 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins   54 Oct  4 09:04 ..
drwxr-xr-x 2 wasadmin wasadmins 4096 Oct  4 09:04 images
-rw-r--r-- 1 wasadmin wasadmins 1966 Oct  4 09:04 style.css
-rw-r--r-- 1 wasadmin wasadmins  849 Oct  4 09:04 table.css

/tmp/val/html/css/images:
total 40
drwxr-xr-x 2 wasadmin wasadmins 4096 Oct  4 09:04 .
drwxr-xr-x 3 wasadmin wasadmins   51 Oct  4 09:04 ..
-rw-r--r-- 1 wasadmin wasadmins  155 Oct  4 09:04 error.gif
-rw-r--r-- 1 wasadmin wasadmins  157 Oct  4 09:04 ibm-logo-white.gif
-rw-r--r-- 1 wasadmin wasadmins  142 Oct  4 09:04 part_start.gif
-rw-r--r-- 1 wasadmin wasadmins  146 Oct  4 09:04 part_stop.gif
-rw-r--r-- 1 wasadmin wasadmins  145 Oct  4 09:04 running.gif
-rw-r--r-- 1 wasadmin wasadmins  146 Oct  4 09:04 stop.gif
-rw-r--r-- 1 wasadmin wasadmins  297 Oct  4 09:04 success.gif
-rw-r--r-- 1 wasadmin wasadmins  149 Oct  4 09:04 unknown.gif
-rw-r--r-- 1 wasadmin wasadmins  158 Oct  4 09:04 warning.gif

and the HTML page looked like this: -


Nice !

Monday, 1 October 2018

WebSphere Application Server and the Case of the Bad File Store

We saw an interesting situation today, with a client's IBM WebSphere Application Server (WAS) 8.5.5.13 environment.

Whereas most clients, in my recent experience, tend to use a relational database such as DB2, Oracle or SQL Server, to host the Service Integration Bus (SIB) Messaging Engine (ME) datastore, this particular client was using the local Linux box's file-system.

When the cluster hosting the SIB came up, a message similar to this: -

CWSIS1561E:The messaging engine's unique id does not match that found in the filestore. ME_UUID=A85B64156006973D, ME_UUID(FS)=AAF19AC8C805638A

was posted in SystemOut.log.

Having checked the SIB/ME configuration, I could see that we had three file-system-based artefacts: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msglog/Log
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msgstore/PermanentStore
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/tempmsgstore/TemporaryStore

which translates as: -

Log File
Permanent Store File
Temporary Store File

as per this: -



Thankfully, this developerWorks Answers post provided the insight: -


CWSIS1561E errors are usually caused by deleting the messaging engine, without deleting its filestore, then recreating the messaging engine with the same name. To fix the issue, you will have to delete the existing filestore files for the messaging engine and restart the JVM. A new filestore will be created during the messaging engine startup.

Note1: You must treat the log file, the temporary store file, and the permanent store file as one unit; that is, delete operation must be performed on all three files.

Note2:By performing the suggested action, all the messages in the filestore will be lost.

To be on the safe side, we backed up the existing files ( all of which were there, with the correct ownership and permissions ), and then deleted the subdirectories: -

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msglog/
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/msgstore/
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/tempmsgstore/

and bounced WAS.

Job done :-)

This also provided some useful context: -



Saturday, 29 September 2018

IBM Operational Decision Manager and WebSphere Liberty Profile and OpenLDAP

This is a very brief run-through without much context, apart from these two posts: -



as I wanted to get something written up to provide some insight to a colleague working in this arena.

Start with clean Ubuntu 18.04.1 LTS

Login

ssh hayd@ubuntu

Install and configure openLDAP

sudo apt-get update && sudo apt-get -y install slapd ldap-utils
sudo dpkg-reconfigure slapd


Create an LDIF to create organisation, group, user etc.

vi ~/davehay.ldif

version: 1

dn: ou=people,dc=uk,dc=ibm,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=uk,dc=ibm,dc=com
objectclass: organizationalunit
ou: groups

dn: cn=resadmins,ou=groups,dc=uk,dc=ibm,dc=com
objectclass: groupOfNames
cn: resadmins
member: cn=davehay,ou=people,dc=uk,dc=ibm,dc=com

dn: cn=davehay,ou=people,dc=uk,dc=ibm,dc=com
objectClass: inetOrgPerson
cn: davehay
sn: Hay
givenname: Dave
uid: hayd
userPassword: passw0rd
mail: david_hay@uk.ibm.com
description: Dave Hay

Feed LDAP

ldapadd -x -h ubuntu -p389 -D cn=admin,dc=uk,dc=ibm,dc=com -w Qp455w0rd -f ~/davehay.ldif

...
adding new entry "ou=people,dc=uk,dc=ibm,dc=com"

adding new entry "ou=groups,dc=uk,dc=ibm,dc=com"

adding new entry "cn=resadmins,ou=groups,dc=uk,dc=ibm,dc=com"

adding new entry "cn=davehay,ou=people,dc=uk,dc=ibm,dc=com"

...

Validate the additions

ldapsearch -x -h ubuntu -p389 -b dc=uk,dc=ibm,dc=com -D cn=admin,dc=uk,dc=ibm,dc=com -w Qp455w0rd cn=resadmins

...
# extended LDIF
#
# LDAPv3
# base <dc=uk,dc=ibm,dc=com> with scope subtree
# filter: cn=resadmins
# requesting: ALL
#

# resadmins, groups, uk.ibm.com
dn: cn=resadmins,ou=groups,dc=uk,dc=ibm,dc=com
objectClass: groupOfNames
cn: resadmins
member: cn=davehay,ou=people,dc=uk,dc=ibm,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

...

ldapsearch -x -h ubuntu -p389 -b dc=uk,dc=ibm,dc=com -D cn=admin,dc=uk,dc=ibm,dc=com -w Qp455w0rd cn=davehay

...
ldapsearch -x -h ubuntu -p389 -b dc=uk,dc=ibm,dc=com -D cn=admin,dc=uk,dc=ibm,dc=com -w Qp455w0rd cn=davehay
# extended LDIF
#
# LDAPv3
# base <dc=uk,dc=ibm,dc=com> with scope subtree
# filter: cn=davehay
# requesting: ALL
#

# davehay, people, uk.ibm.com
dn: cn=davehay,ou=people,dc=uk,dc=ibm,dc=com
objectClass: inetOrgPerson
cn: davehay
sn: Hay
givenName: Dave
uid: hayd
userPassword:: cGFzc3cwcmQ=
mail: david_hay@uk.ibm.com
description: Dave Hay

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

...

Install Java 8

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update && sudo apt-get -y install oracle-java8-installer


Update server.xml

vi ~/wlp/usr/servers/odm/server.xml

Insert: -

<featureManager>
  <feature>ldapRegistry-3.0</feature>
</featureManager>

<ldapRegistry baseDN="dc=uk,dc=ibm,dc=com"
              bindDN="cn=admin,dc=uk,dc=ibm,dc=com"
              bindPassword="Qp455w0rd"
              host="ubuntu"
              id="OpenLDAPRealm"
              ignoreCase="true"
              ldapType="Custom"
              port="389"
              realm="OpenLDAPRealm"
              recursiveSearch="true">
              <customFilters
                  userFilter="&amp;(uid=%v)(objectClass=inetOrgPerson)"
                  groupFilter="&amp;(cn=%v)(objectClass=groupOfNames)"
                  groupIdMap="*:cn"
                  userIdMap="*:uid"
                  groupMemberIdMap="groupOfNames:member"/>
</ldapRegistry>

Start Liberty

/home/hayd/wlp/bin/server start odm

Check logs

cat /home/hayd/wlp/usr/servers/odm/logs/console.log

...
Launching odm (WebSphere Application Server 17.0.0.4/wlp-1.0.19.201712061531) on Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_181-b13 (en_US)
[AUDIT   ] CWWKE0001I: The server odm has been launched.
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://ubuntu:10080/DecisionService/
[AUDIT   ] CWWKZ0001I: Application DecisionService started in 4.080 seconds.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://ubuntu:10080/res/
[AUDIT   ] CWWKZ0001I: Application res started in 8.739 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.3, concurrent-1.0, servlet-3.1, ssl-1.0, jndi-1.0, ldapRegistry-3.0, federatedRegistry-1.0, distributedMap-1.0, appSecurity-2.0, jdbc-4.1, el-3.0].
[AUDIT   ] CWWKF0011I: The server odm is ready to run a smarter planet.
[WARNING ] XOM repository set in database persistence mode: Apache Derby 10.10.2.0 - (1582446)

...

Access RES

https://ubuntu:10443/res/login.jsf

Send: -

...
<par:Request xmlns:par="http://www.ibm.com/rules/decisionservice/HelloWorldRuleApp/HelloWorld/param">
  <!--Optional:-->
  <par:DecisionID>string</par:DecisionID>
  <!--Optional:-->
  <par:request>Dave Hay Rules</par:request>
</par:Request>

...

Returns: -

...
<?xml version="1.0" encoding="UTF-8"?><par:Response xmlns:par="http://www.ibm.com/rules/decisionservice/HelloWorldRuleApp/HelloWorld/param">
  <par:DecisionID>string</par:DecisionID>
  <par:response>Hello Dave Hay Rules</par:response>
</par:Response>

...

Check WLP Logs

cat /home/hayd/wlp/usr/servers/odm/logs/console.log

...
[WARNING ] XOM repository set in database persistence mode: Apache Derby 10.10.2.0 - (1582446)
[WARNING ] XOM repository set in database persistence mode: Apache Derby 10.10.2.0 - (1582446)
Hello Dave Hay Rules!

...

cat /home/hayd/wlp/usr/servers/odm/logs/messages.log

...
[9/29/18 16:25:21:257 UTC] 00000046 com.ibm.rules.res.execution                                  I The wait timeout of the pool is set to 0.
[9/29/18 16:25:21:264 UTC] 00000046 com.ibm.rules.res.execution                                  I Initializes the pool CRETransformerPool.
[9/29/18 16:25:21:264 UTC] 00000046 com.ibm.rules.res.execution                                  I Pool CRETransformerPool, properties: {pool.maxSize=10, pool.waitTimeout=0}.
[9/29/18 16:25:21:264 UTC] 00000046 com.ibm.rules.res.execution                                  I The wait timeout of the pool is set to 0.
[9/29/18 16:25:53:552 UTC] 0000004a SystemOut                                                    O Hello Dave Hay Rules!
...

WebSphere Liberty and OpenLDAP - CWIML4520E: The LDAP operation could not be completed.

I've spent most of a happy and sunny Saturday here in Helsinki trying to work out why WebSphere Liberty profiles was misbehaving with regard to LDAP.

For the record, I'm running WLP 17.0.0.4 on Ubuntu 18.04.1 LTS, using OpenLDAP.

Having setup LDAP, I'd amended my server.xml to include: -

        <feature>ldapRegistry-3.0</feature>

<ldapRegistry baseDN="dc=uk,dc=ibm,dc=com"
              bindDN="cn=admin,dc=uk,dc=ibm,dc=com"
              bindPassword="Qp455w0rd"
              host="ubuntu"
              id="OpenLDAPRealm"
              ignoreCase="true"
              ldapType="Custom"
              port="389"
              realm="OpenLDAPRealm"
              recursiveSearch="true">

              <customFilters
                  id="customFilters"
                  userFilter="&amp;(uid=%v)(objectClass=inetOrgPerson)"
                  groupFilter="(&amp;(cn=%v)(objectClass=groupOfNames))"
                  userIdMap="*:uid"
                  groupMemberIdMap="groupOfNames:member"/>
    </ldapRegistry>


and bounced the WLP server, although that isn't strictly necessary.

However, when I attempted to login to my application ( IBM Operational Decision Manager 8.9.2.1 ), which I'd previously setup as per this: -

via the Rule Execution Server (RES) login page: -


I saw this: -


[ERROR   ] com.ibm.wsspi.security.wim.exception.WIMSystemException: CWIML4520E: The LDAP operation could not be completed. The LDAP naming exception javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=uk,dc=ibm,dc=com'; resolved object com.sun.jndi.ldap.LdapCtx@22fb5aa1 occurred during processing. 
                                                                                                               com.ibm.wsspi.security.wim.exception.WIMException: com.ibm.wsspi.security.wim.exception.WIMSystemException: CWIML4520E: The LDAP operation could not be completed. The LDAP naming exception javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=uk,dc=ibm,dc=com'; resolved object com.sun.jndi.ldap.LdapCtx@22fb5aa1 occurred during processing.
at com.ibm.ws.security.wim.ProfileManager.loginImpl(ProfileManager.java:1773)
at [internal classes]
at ilog.rules.res.console.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:76)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:201)
at [internal classes]
at ilog.rules.res.console.jsf.LoginFilter.doFilter(LoginFilter.java:49)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:201)
at [internal classes]
Caused by: com.ibm.wsspi.security.wim.exception.WIMSystemException: CWIML4520E: The LDAP operation could not be completed. The LDAP naming exception javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=uk,dc=ibm,dc=com'; resolved object com.sun.jndi.ldap.LdapCtx@22fb5aa1 occurred during processing.
at com.ibm.ws.security.wim.adapter.ldap.LdapConnection.search(LdapConnection.java:1645)
... 7 more
Caused by: javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name 'dc=uk,dc=ibm,dc=com'
at com.sun.jndi.ldap.Filter.encodeSimpleFilter(Filter.java:446)
at com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:171)
at com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74)
at com.sun.jndi.ldap.LdapClient.search(LdapClient.java:546)
at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1985)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1844)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358)
at org.apache.aries.jndi.DelegateContext.search(DelegateContext.java:360)
... 7 more

[AUDIT   ] CWWKS1100A: Authentication did not succeed for user ID hayd. An invalid user ID or password was specified.

in the console.log : -

tail -f /home/hayd/wlp/usr/servers/odm/logs/console.log

It's taken me a fair few hours of trial n' error, plus copious amounts of (a) coffee and (b) Google to realise where I'd gone wrong.

Yes, I'm at home to Captain Typo again ……

Specifically, in the <ldapRegistry></ldapRegistry> block, I have a <customFilter> section, which includes this snippet: -

                  userFilter="&amp;(uid=%v)(objectClass=inetOrgPerson)"

Can you see where I went wrong ??

Yes, although it's valid XML, it's actually rubbish :-)

In essence, the &amp; symbol ( which is a nice way of writing the ampersand (&) character ), is supposed to be a logical AND between the (uid=%v) and (objectClass=inetOrgPerson) statements.

However, I'd made the test pointless by NOT wrapping  the entire AND operation in brackets ….

Once I changed it to: -

                  userFilter="(&amp;(uid=%v)(objectClass=inetOrgPerson))"


it magically started working :-)

Funny that …..

Now isn't this better ?


Wednesday, 26 September 2018

IBM Notes 9.0.1 and macOS 10.14 Mojave

If you're running IBM Notes 9.0.1 and have updated to macOS 10.14 Mojave, be aware that you'll also need to install the most recent hot fix for Notes: -

SPR #IFBTB4QLEJ is in MAC 64-bit 901IF16 and higher.  This fixes a Notes Client crash on the new Mojave OS.


aka: -

Notes 64-bit 9.0.1 IF16 Mac 64-bit Notes_901IF16_MAC64_Standard IBM_Notes_Hotfix_901SHF993.dmg  

This iFix is available from IBM Fix Central here: -


Having applied this today, this is what I now have: -


and, more importantly, Notes and Mojave are playing nicely ……

VMware Fusion and macOS Mojave - Gechore Accessibility Right

I wondered why I couldn't get focus and log into a VM: -



It turns out that I'd ignored the prompt from macOS to allow VMware to control the computer


Once I checked the box: -


all was well …..


Tuesday, 25 September 2018

IBM Master Data Management - Adding the Data Stewardship and Governance component (DSG)

I have a response file for that ….

Create Response File

vi installMDMDSG.resp

<agent-input>
  <server>
    <repository location='/mnt/MDM116/Product/DSC/repository.config' temporary='true'/>
  </server>
  <profile id='Data Stewardship and Governance 0.5' installLocation='/opt/ibm/MDMDSG'>
    <data key='cic.selector.arch' value='x86_64'/>
  </profile>
  <install>
    <offering profile='Data Stewardship and Governance 0.5' id='com.ibm.mdm.mdph.0.5' version='11.6.0.FP05IF000_20180326-1642' features='com.ibm.mdm.ds.ui.feature'/>
  </install>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='/opt/ibm/IMShared'/>
</agent-input>


Install DSG 11.6.0.5

/opt/ibm/InstallationManager/eclipse/tools/imcl -input /mnt/ResponseFiles/installMDMDSG.resp -acceptLicense

...
Installed com.ibm.mdm.mdph.0.5_11.6.0.FP05IF000_20180326-1642 to the /opt/ibm/MDMDSG directory.
...

Nice !

Monday, 24 September 2018

Deploying IBM Operational Decision Manager 8.9.2.1 to WebSphere Liberty Profile 17.0.0.4 - Walkthrough

Following on from my earlier post: -

IBM Operational Decision Manager - ODM on Liberty

this is an updated version, using the later 8.9.2.1 fix pack of ODM Rules.

Prepare File Systems ( as root )

mkdir /opt/ibm/ODM89
mkdir /opt/ibm/Java
chown -R wasadmin:wasadmins /opt/ibm/ODM89
chown -R wasadmin:wasadmins /opt/ibm/Java


Install Java 8

/mnt/Java8/ibm-java-jre-8.0-3.12-x86_64-archive.bin -i silent -f /mnt/ResponseFiles/installer.properties 1>console.txt 2>&1

Setup Path

vi ~/.bashrc

Append: -

JAVA_HOME=/opt/ibm/Java/jre
PATH=$PATH:$JAVA_HOME/bin


source ~/.bashrc

Validate Java

java -version

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 8.0.5.6 - pxa6480sr5fp6-20171124_02(SR5 FP6))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64 Compressed References 20171122_371101 (JIT enabled, AOT enabled)
OpenJ9   - 8e3c85d
OMR      - 713f08e
IBM      - c041ee8)
JCL - 20171113_01 based on Oracle jdk8u151-b12


Install WLP

jar xvf /mnt/WLP/JARs/wlp-nd-all-17.0.0.4.jar

Fixup Executable Bits

chmod +x /home/wasadmin/wlp/bin/server
chmod +x /home/wasadmin/wlp/bin/securityUtility


Setup Path

vi ~/.bashrc

Amend: -

PATH=$PATH:$JAVA_HOME/bin:/home/wasadmin/wlp/bin

source ~/.bashrc

Validate WLP

server version

WebSphere Application Server 17.0.0.4 (1.0.19.201712061531) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)

See what's available to install

/opt/ibm/InstallationManager/eclipse/tools/imcl listAvailablePackages -repositories /mnt/ODM891/disk1/DecisionServerRules/repository.config,/mnt/ODM892/DS/updates/repository.config

com.ibm.websphere.odm.ds.rules.v89_8.9.1000.20171018_1824
com.ibm.websphere.odm.ds.rules.v89_8.9.0.20170123_1210
com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224


Install ODM

/opt/ibm/InstallationManager/eclipse/tools/imcl -input /mnt/ResponseFiles/installODM8921_RES.rsp -acceptLicense

Installed com.ibm.websphere.odm.ds.rules.v89_8.9.2001.20180723_1224 to the /opt/ibm/ODM89 directory.

Validate WARs

ls -al /opt/ibm/ODM89/executionserver/applicationservers/WLP855/

...
-rw-r--r-- 1 wasadmin wasadmins 52157759 Sep 24 17:45 DecisionRunner.war
-rw-r--r-- 1 wasadmin wasadmins 40631899 Sep 24 17:45 DecisionService.war
-rw-r--r-- 1 wasadmin wasadmins 31488087 Jul 20 18:23 res.war
-rw-r--r-- 1 wasadmin wasadmins 52751122 Sep 24 17:45 testing.war

...

Validate Derby

ls -al /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar

...
-rw-r--r-- 1 wasadmin wasadmins 2838580 Jul 23 11:56 /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar
...

Create WLP server

server create odm

Deploy Apps

cp /opt/ibm/ODM89/executionserver/applicationservers/WLP855/res.war /home/wasadmin/wlp/usr/servers/odm/apps/
cp /opt/ibm/ODM89/executionserver/applicationservers/WLP855/DecisionService.war /home/wasadmin/wlp/usr/servers/odm/apps/

Deploy Derby

mkdir /home/wasadmin/wlp/usr/shared/resources/derby
cp /opt/ibm/ODM89/shared/tools/derby/lib/derby.jar /home/wasadmin/wlp/usr/shared/resources/derby


Configure server.xml

vi /home/wasadmin/wlp/usr/servers/odm/server.xml

Amend to: -

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

    <featureManager>
        <feature>servlet-3.1</feature>
        <feature>jsp-2.3</feature>
        <feature>jdbc-4.1</feature>
        <feature>appSecurity-2.0</feature>
        <feature>concurrent-1.0</feature>
    </featureManager>

    <httpEndpoint id="defaultHttpEndpoint"
                  host="*"
                  httpPort="10080"
                  httpsPort="10443" />

    <jdbcDriver id="DerbyJdbcDriver" libraryRef="DerbyLib"/>
    <library id="DerbyLib" filesetRef="DerbyFileset"/>
    <fileset id="DerbyFileset" dir="${shared.resource.dir}/derby" includes="derby.jar"/>
    <dataSource id="derbyEmbedded" isolationLevel="TRANSACTION_READ_COMMITTED" jndiName="jdbc/resdatasource" jdbcDriverRef="DerbyJdbcDriver">
        <properties.derby.embedded
            databaseName="${shared.config.dir}/derby/resdb"
            createDatabase="create"
            user="resdbUser"
            password="resdbUser"
        />
    </dataSource>

    <basicRegistry id="basic" realm="customRealm">
        <user name="resAdmin" password="resAdmin"/>
        <user name="resDeploy" password="resDeploy"/>
        <user name="resMonitor" password="resMonitor"/>
        <group name="resAdministrators">
                    <member name="resAdmin"/>
        </group>
        <group name="resDeployers">
                    <member name="resDeploy"/>
        </group>
        <group name="resMonitors">
                    <member name="resMonitor"/>
        </group>
    </basicRegistry>

    <application type="war" id="res" name="res" location="${server.config.dir}/apps/res.war">
           <application-bnd>
               <security-role name="resAdministrators">
                       <group name="resAdministrators"/>
               </security-role>
               <security-role name="resDeployers">
                       <group name="resDeployers"/>
               </security-role>
               <security-role name="resMonitors">
                       <group name="resMonitors"/>
               </security-role>
           </application-bnd>
    </application>

    <application type="war" id="DecisionService"
      name="DecisionService"
      location="${server.config.dir}/apps/DecisionService.war">
    </application>

    <applicationManager autoExpand="true"/>

    <featureManager>
           <feature>ssl-1.0</feature>
    </featureManager>
    <keyStore id="defaultKeyStore" password="{xor}Lz4sLChvLTs=" />

</server>


Create SSL Certificate

/home/wasadmin/wlp/bin/securityUtility createSSLCertificate --server=odm --password=passw0rd --validity=365

...
Creating keystore /home/wasadmin/wlp/usr/servers/odm/resources/security/key.jks

Created SSL certificate for server odm. The certificate is created with CN=workflow.uk.ibm.com,OU=odm,O=ibm,C=us as the SubjectDN.

Add the following lines to the server.xml to enable SSL:

    <featureManager>
        <feature>ssl-1.0</feature>
    </featureManager>
    <keyStore id="defaultKeyStore" password="{xor}Lz4sLChvLTs=" />

...

Start WLP

server start odm

...
Starting server odm.
Server odm started with process ID 117294.

...

Monitor Logs

cat /home/wasadmin/wlp/usr/servers/odm/logs/console.log

...
Launching odm (WebSphere Application Server 17.0.0.4/wlp-1.0.19.201712061531) on IBM J9 VM, version pxa6480sr3fp12-20160919_01 (SR3 FP12) (en_GB)
[AUDIT   ] CWWKE0001I: The server odm has been launched.
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKS4104A: LTPA keys created in 0.464 seconds. LTPA key file: /home/wasadmin/wlp/usr/servers/odm/resources/security/ltpa.keys
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/DecisionService/
[AUDIT   ] CWWKZ0001I: Application DecisionService started in 0.943 seconds.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://workflow.uk.ibm.com:10080/res/
[AUDIT   ] CWWKZ0001I: Application res started in 2.474 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.3, concurrent-1.0, servlet-3.1, ssl-1.0, jndi-1.0, distributedMap-1.0, appSecurity-2.0, jdbc-4.1, el-3.0].
[AUDIT   ] CWWKF0011I: The server odm is ready to run a smarter planet.
[WARNING ] XOM repository set in database persistence mode: Apache Derby 10.10.2.0 - (1582446)
[ERROR   ] Initialization failed
The persistence check failed. Diagnostic report:
DAO Class Name = ilog.rules.res.persistence.impl.jdbc.IlrGenericRepositoryDAO
Database Product Name = Apache Derby
Database Product Version = 10.10.2.0 - (1582446)
Driver Name = Apache Derby Embedded JDBC Driver
Driver Product Version = 10.10.2.0 - (1582446)
Ruleset enabled view test passed = False
RuleApp properties table test passed = False
RuleApps table test passed = False
Ruleset properties table test passed = False
Ruleset resources table test passed = False
Rulesets table test passed = False
Is Transaction Supported = True
JDBC URL = jdbc:derby:/home/wasadmin/wlp/usr/shared/config//derby/resdb
Username = resdbUser.
...

cat /home/wasadmin/wlp/usr/servers/odm/logs/messages.log

...
********************************************************************************
product = WebSphere Application Server 17.0.0.4 (wlp-1.0.19.201712061531)
wlp.install.dir = /home/wasadmin/wlp/
java.home = /opt/ibm/Java/jre
java.version = 1.8.0
java.runtime = Java(TM) SE Runtime Environment (pxa6480sr3fp12-20160919_01 (SR3 FP12))
os = Linux (3.10.0-862.11.6.el7.x86_64; amd64) (en_GB)
process = 117294@workflow.uk.ibm.com
********************************************************************************
[24/09/18 17:51:42:380 BST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager           A CWWKE0001I: The server odm has been launched.
[24/09/18 17:51:43:306 BST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager           I CWWKE0002I: The kernel started after 1.087 seconds
[24/09/18 17:51:43:445 BST] 00000022 com.ibm.ws.kernel.feature.internal.FeatureManager            I CWWKF0007I: Feature update started.
[24/09/18 17:51:44:215 BST] 0000001b com.ibm.ws.security.ready.internal.SecurityReadyServiceImpl  I CWWKS0007I: The security service is starting...
[24/09/18 17:51:44:450 BST] 00000027 com.ibm.ws.tcpchannel.internal.TCPChannel                    I CWWKO0219I: TCP Channel defaultHttpEndpoint has been started and is now listening for requests on host *  (IPv6) port 10080.
[24/09/18 17:51:44:456 BST] 0000001b com.ibm.ws.app.manager.internal.monitor.DropinMonitor        A CWWKZ0058I: Monitoring dropins for applications.

...
[24/09/18 17:51:49:283 BST] 0000002e com.ibm.ws.webcontainer.servlet                              I SRVE0242I: [res] [/res] [FacesServlet]: Initialization successful.
...

Access RES

https://workflow.uk.ibm.com:10443/res/login.jsf

(1) Need to authenticate as resAdmin
(2) Need to run through "Installation Settings Wizard" to set up database
(3) Deploy Rule App e.g. HelloWorldRuleApp_19012016.jar
(4) Use HTDS to test Rule App via REST

<?xml version="1.0" encoding="UTF-8"?><par:Response xmlns:par="http://www.ibm.com/rules/decisionservice/HelloWorldRuleApp/HelloWorld/param">
  <par:DecisionID>string</par:DecisionID>
  <par:response>Hello David Hay</par:response>
</par:Response>


(5) Monitor logs for output

cat /home/wasadmin/wlp/usr/servers/odm/logs/console.log

...
Hello David Hay!
...

cat /home/wasadmin/wlp/usr/servers/odm/logs/messages.log

...
[24/09/18 17:56:01:858 BST] 00000065 SystemOut                                                    O Hello David Hay!
...

URL for HTDS: -

https://workflow.uk.ibm.com:10443/DecisionService/run.jsp?path=/HelloWorldRuleApp/1.0/HelloWorld&trace=false&type=WADL&kind=native

Operational Decision Manager V8.9.2 Download Document

https://www-01.ibm.com/support/docview.wss?uid=swg24044455

How to install ODM 8.9.0 in silent mode in command line ?


ODM Rules 8.9.2.1 Fixpack - via IBM Fix Central


8.9.2-WS-ODM_PTR-Multi-FP001
Operational Decision Manager - Profile Template for Decision Server for Rules V8.9.2.1

8.9.2-WS-ODM_PTDC-Multi-FP001
Operational Decision Manager - Profile Template for Decision Center V8.9.2.1

8.9.2-WS-ODM_DSR-LIN_X86-FP001
Operational Decision Manager - Decision Server for Rules V8.9.2.1 for Linux x86

8.9.2-WS-ODM_DC-LIN_X86-FP001
Operational Decision Manager - Decision Center V8.9.2.1 for Linux x86

-rw-r--r--@ 1 davidhay  staff  3778625885 24 Sep 18:27 8.9.2-WS-ODM_DC-LIN_X86-FP001.zip
-rw-r--r--@ 1 davidhay  staff  3492719362 24 Sep 18:25 8.9.2-WS-ODM_DSR-LIN_X86-FP001.zip