Upgrade to ICN 2.0.3 FP8

Here is a way to silently upgrade from IBM Content Navigator 2.0.3.x to 2.0.3 FP8. You can use this right after using the CPIT installer to be up-to-date with your ICN version. You need at least ICN 2.0.3.0 to upgrade to ICN 2.0.3 FP8.

In the same folder you copied 2.0.3-ICN-FP008-LINUX.tar, execute these commands:

If you want to do the silent update of the configuration, you will need the xmlstarlet tool:

yum install -y xmlstarlet
#!/bin/bash
# The profile used when installing ICN 2.0.3, if you use the CPIT installer it should already be correct
export profilePath=/opt/IBM/cpit/install-scripts/profiles/NexusConfig
# The path of the IBM Content Navigator Configuration and Deployment Tool, if you used the default location to install ICN, that should be correct
export configmgr_cl=/opt/IBM/ECMClient/configure/configmgr_cl
# WebSphere profile path
export was=/opt/IBM/WebSphere/AppServer/profiles/AppSrv02
# WebSphere node
export wasNode=P8Node02
# WebSphere server
export wasServer=server1

mkdir icnfp
tar -xvf 2.0.3-ICN-FP008-LINUX.tar -C icnfp
cd icnfp
sed -i "s/LICENSE_ACCEPTED=false/LICENSE_ACCEPTED=true/g" ecmclient_silent_install.txt
./IBM_CONTENT_NAVIGATOR-2.0.3.8-FP008-LINUX.bin -f ecmclient_silent_install.txt

# The profile files might have changed since 2.0.3.0, we need to update the profile for FP8
# We also need to install Task Manager if we don't have it or update will fail (see Troubleshooting)
/opt/IBM/ECMClient/configure/configmgr_cl generateConfig -appserver websphere -configure_FileNetP8 \
yes -configure_CMIS_FileNetP8 yes -db db2 -deploy standard -ldap_Repository federated -ldap tivoli \
-profile $profilePath -appserverVersion 8.5 -cmisAuth httpbasic -icn_sso none -silent

# If you didn't have Task Manager installed before, you need to update the configuretmtask.xml file
# You can do it manually or if you want to do it silently here is a quick way (xmlstarlet  is required)
xmlstarlet ed --inplace -u "//property[@name='DatabaseSchema']/value" -v "NEXUS" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmAdminUser']/value" -v "P8Admin" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmAdminPassword']/value" -v "YourPassword" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmBaseURL']/value" -v "http://localhost:9081/taskManagerWeb/api/v1" $profilePath/configuretmtask.xml
# Editing done


$configmgr_cl execute -task downloadcejarstask -profile $profilePath
# change RunDBFill to false so we don't run the script against the DB
xmlstarlet ed --inplace -u "//property[@name='RunDBFill']/value" -v "false" $profilePath/configurejdbcecm.xml
$configmgr_cl execute -task configurejdbcecm -profile $profilePath
# Make sure you have Task Manager installed or the update will fail, see Troubleshooting below
$configmgr_cl execute -task configuretmtask -profile $profilePath
$configmgr_cl execute -task configureicntask -profile $profilePath
$configmgr_cl execute -task rebuildear -profile $profilePath
$configmgr_cl execute -task deployapplication -profile $profilePath

# Delete cache and restart WAS
$was/bin/stopServer.sh $wasServer
rm -rf $was/temp/$wasNode/$wasServer/navigator
rm -rf $was/wstemp/*
$was/bin/startServer.sh $wasServer

It will ask you for your WebSphere administrator username and password when restarting WAS, you can also add the -username and -password options to fully automatize the upgrade

Troubleshooting

I encountered an issue when running the Fix Pack 8 updater on an ICN installation without Task Manager. Be aware that this will be the case if you used the new CPIT installer.

I don’t know why but the update tool expects Task Manager to be installed, if it’s not, the deploy task will fail will the following exception:

WASX7017E: Exception received while running file "/opt/IBM/ECMClient/configure/tmp/deployapplication.tcl"; exception information: com.ibm.ws.scripting.ScriptingException: WASX7111E: Cannot find a match for supplied option: "[taskManagerWeb.war, , taskManagerWeb.war,WEB-INF/web.xml, tm/CNTimerManager, commonj.timers.TimerManager, tm/CNTimerManager, , , ]" for task "MapResRefToEJB". The supplied option must match with the existing task data in the application and the existing task data are: "[icnSyncWeb .* icnSyncWeb.war,WEB-INF/web.xml jdbc/SyncDS javax.sql.DataSource] "                                                                

By curiousity I took a look at /opt/IBM/ECMClient/configure/tmp/deployapplication.tcl and it indeed has the line

set _tmWeb "true"

As a consequence, in the deploy mothod, it will try to map inexistent tm resources to EJB with the MapResRefToEJB option, resulting in the above exception.

This is odd because I didn’t have a configuretmtask in my profile so I don’t know why the update tool set the _tmWeb to true. As a reminder, this script is forked from /opt/IBM/ECMClient/configure/scripts/deployWSApplication.tcl and the update tool sets the variables at the beginning.

I couldn’t find a way to fix this since I don’t know where the update tool is taking the yes value from for the _tmWeb variable… So I just installed it with the following and that fixed the issue.

/opt/IBM/ECMClient/configure/configmgr_cl generateConfig -appserver websphere -configure_FileNetP8 \
yes -configure_CMIS_FileNetP8 yes -db db2 \
-deploy standard -ldap_Repository federated -ldap tivoli \
-profile /opt/IBM/cpit/install-scripts/profiles/NexusConfig \
-appserverVersion 8.5 -cmisAuth httpbasic -icn_sso none

# Edit to set the values, default values for a new CPIT installation are:
# DatabaseSchema=NEXUS
# tmBaseURL=http://localhost:9081/taskManagerWeb/api/v1
# tmAdminUser=What you want
# tmAdminPassword=What you want
# vi /opt/IBM/cpit/install-scripts/profiles/NexusConfig/configuretmtask.xml

# You can also script it if you want to do a silent update:
xmlstarlet ed --inplace -u "//property[@name='DatabaseSchema']/value" -v "NEXUS" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmAdminUser']/value" -v "P8Admin" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmAdminPassword']/value" -v "YourPassword" $profilePath/configuretmtask.xml
xmlstarlet ed --inplace -u "//property[@name='tmBaseURL']/value" -v "http://localhost:9081/taskManagerWeb/api/v1" $profilePath/configuretmtask.xml

# You don't need to run this now since you will in the upgrade (see script above)
$configmgr_cl execute -task configureicntask -profile $profilePath

2 thoughts on “Upgrade to ICN 2.0.3 FP8

  1. Kyle B

    Very helpful article. I was running into the same issue in a similar environment. The PE is not configured, and the deployment was failing because of the null _tmweb value.

    I modified the below files, and was able to get the deployment to go through successfully. Please note the files that were changed, so you can revert the changes after to avoid issues in the future.

    */configure/scripts/deployWSApplication.tcl – Uncomment and modify the line to “set _tmWeb “false””

    *configure/profiles/tmp/deployapplication.tcl – Modify line to “set _tmWeb “false”” . This value was actually overwritten back to “true”, but figured I would document this step anyway.

    */configure/explodedformat/create_ear.bat – Modify line to “REM set isTM=false”.

    Hopefully this information will help others having the same issue from the original post as well.

    Reply

Leave a Reply to Kyle B Cancel reply