Category Archives: Lotus Connections

Search fails with the error CLFRW0060E: Input-output exception

IBM released a tech document on friday with title: Search fails with the error CLFRW0060E: Input-output exception.

This document solves one of my problems i had in a demo environment since two weeks. I traced the environment, checked j2ee roles, reinstalled CR3 and 4, redeployed search and activities, but i always got an error, when the search wants to access the activities seed list.

So what happened? I want to show the /search/serverStatus page in a course and for this i want to remove all warnings and errors. When you don’t set SEARCH_SEEDLIST_TIMEOUT, you get a warning, that the variable is not set.

29-04-2014 13-01-15

So i had set this to 150 and checked the serverStatus page and all was green. So i thought everything is ok and didn’t check the documentation to this. After some hours the search was broken, with the error mentioned above. When i checked the Seedlist URL with the browser everything was ok, when the search wants to access it i got the Input-output exception.

When you read the tech document, you see that SEARCH_SEEDLIST_TIMEOUT is needed in miliseconds! So i had set it to 0.15 seconds and this is too less for activities, all other applications were ok. After reading the document i remembered setting this value and increased it to 15000 and voila the search builds perfectly and all errors are gone.

I learned again that i should read the documentation and that search/serverStatus does not validate the variables, it only checks that that the variable is present. Maybe this should be made as a feature request?

In the trace you see login data and that search can’t access the url, but not that the request timed out.

IBM Connections 4.5 CR4 released – new features are available

IBM released CR4 for IBM Connections 4.5 yesterday evening.

You can download CR4, TDISOL and some Cognos Updates at following links:

New Functions

After deploying CR4 you can enable some new features:

Hash tags in status update replies

Add

<properties>
    <genericProperty name="com.ibm.connections.ublog.hashtagCommentEnabled">enabled</genericProperty>
</properties>

to lotusconnections-config.xml

Now you can use hash tags in replies.

Selection_20140401_10:07:57_001

Include file links in status update replies

Activate with:

<properties>
    <genericProperty name="com.ibm.connections.ublog.attachmentCommentEnabled">enabled</genericProperty>
</properties>

Now you get a add file in the reply window and you can attach one file:

Selection_20140401_10:10:27_001

Selection_20140401_10:10:58_001

Expose activity stream search in the user interface and filter by hashtag

Activate with:

<properties>
    <genericProperty name="com.ibm.social.as.hashtagSearchEnabled">true</genericProperty>
</properties>

Search find hashtags in the activity stream now.

Selection_20140401_10:35:20_001

Community Folders

Add following code to files-config.xml:

<folder>
    <community>
        <communityFolder enabled="true"/>
    </community>
</folder>

With this feature you can add folders in the files module of your community or in the community overview.

Selection_20140401_10:30:48_001

Selection_20140401_10:36:50_001

It is possible to share existing folders and create new ones:

Selection_20140401_10:31:31_001

@mentions via the activity stream API

Activated by default, no additional configuration needed! I did not test this feature, but i think it is good.

Properties section of lotusconnections-config.xml after applying CR4

To activate the new features of CR2 (nextGen Theme), CR3 (badging) and CR4 i have following settings in my lotusconnections-config.xml:

<properties>
    <genericProperty name="com.ibm.lconn.core.web.request.HttpRequestFilter.IECompatMode">false</genericProperty>
    <genericProperty name="com.ibm.lconn.core.web.styles.theme.default">gen4</genericProperty>
    <genericProperty name="com.ibm.connections.news.badgingEnabled">enabled</genericProperty>
    <genericProperty name="com.ibm.connections.ublog.hashtagCommentEnabled">enabled</genericProperty>
    <genericProperty name="com.ibm.connections.ublog.attachmentCommentEnabled">enabled</genericProperty>
    <genericProperty name="com.ibm.social.as.hashtagSearchEnabled">true</genericProperty>
</properties>

Update

Luis Benitez mentions some more new features in his last blog post: Introducing File Sync for Mobile and More in IBM Connections 4.5 CR4

Last weeks, new scripts and next weeks

It was little bit quiet here after Connect 2014. I had lots of projects and no time to add new scripts or even do bug fixing.

I promised at Connect, that i will fix the JDBC drivers, that they will load on Windows too. See cnxMemberCheckExIDByEmail.py as an example.

Loading JDBC Drivers within jython scripts

Jan Riedel sent me a solution for SLES and i tested his proposal today within Windows. He points me in the right direction, i mustn’t load the path or jar within the script, it is better to load on starting wsadmin. You have to add the JDBC Driver path to WAS_EXT_DIRS.

I see two ways here:

Change setupCmdLine.sh|bat (Update)

I don’t like to change setupCmdLine directly, because i don’t want to load the driver everytime i start wsadmin or WebSphere, but you can add your JDBC path to the line

set WAS_EXT_DIRS=….;c:\ibm\jdbc (Windows)
export WAS_EXT_DIRS=….:/opt/IBM/JDBC (Linux)

Please do not change your setupCmdLine in this way. I had errors on using Connections updateInstaller, when i use it! Use WAS_USER_SCRIPT!

Add a WAS_USER_SCRIPT

I create a batch|shell script with following content.

wasuserscript.sh

Create the script in $WAS_HOME/profiles/Dmgr01/bin and make it executable.

export WAS_EXT_DIRS=$WAS_EXT_DIRS:/opt/IBM/JDBC

wasuserscript.bat

Create batch in %WAS_HOME%\profiles\Dmgr01\bin

set WAS_EXT_DIRS=%WAS_EXT_DIRS;c:\IBM\JDBC

Now it is enough to set the environment variable WAS_USER_SCRIPT, then the jdbc driver will be loaded on wsadmin start. So when you want to load cnxmenu.py or one of the scripts using JDBC ( cnxMemberCheckExIDByEmail.py, cnxMemberDeactAndActByEmail.py) simply set the WAS_USER_SCRIPT variable in your operating system, terminal or console.

export WAS_USER_SCRIPT=/opt/IBM/.../wasuserscript.sh

or

set WAS_USER_SCRIPT=C:\....\wasuserscript.bat

Thanks to Victor Toal for your script testing and bug reporting!

New scripts

I added some scripts for special j2ee roles to the github repository:

  • cfgJ2EERoleGlobalModerator.py
  • cfgJ2EERoleMetricsReader.py
  • cfgJ2EERoleMetricsReportRun.py
  • cfgJ2EERoleSocialMail.py

These scripts set consistent the roles mentioned in the file name. So you can enable or disable Socialmail integration, Metrics or Moderation.

Next weeks, next events

Next events i will attend are: Engage in Breda, BCCON in Hamburg and Social Connections VI in Prag.

At Engage i will speak with my friend Sharon Bellamy about Scripting.

At BCCON i will be with my swiss friend and scripting colleague Klaus Bild, we will do the Script show in german.

I plan a session for SocCon VI too, hope i will get a slot there.

Activate and customize “Table of contents” macro in IBM Connections Wiki

I read of a new function in IBM Connections Wiki i missed the last time on twitter today. A new macro to create a table of contents within a wiki page.

The activation of this macro is documented here: Wikis configuration properties

wikimacros.enabled

Specifies whether macros are enabled in Wikis. You can use macros to automate common tasks, such as generating a table of contents in a wiki page. The default value of this parameter is false. To enable macros, set the value to true. When enabled, macros are available from the Macros menu in the editor toolbar.

I’m a little bit confused, because i have to change the wording in wikis-config.xml:

 <editor>
      <wikitexttab enabled="true" />
      <wikimacros enabled="true" /> <!-- add this line --> 
 </editor>

After checking in the configuration file and restart connections i got a new button in my wikis editor:

Macro for Table of Contents

Quite cool, but the macro only generates headings with format h2, h3 and h4 to the TOC. The richtext editor provides headings h1-h4. I want to change this behavior, that h1 will be added to TOC too.

I found a great article on adding templates to ckeditor from Rob Novak, there he describes how you can customize the ckeditor of wikis. I used the paths mentioned in this article to customize the toc behavior.

Extract toc.js

You can find the needed file com.ibm.lconn.wikis.web.resources_3.5.0.20130627-1601.jar in folder /opt/IBM/Connections/data/shared/provision/webresources. I extracted it to /tmp:

unzip -d /tmp/ckeditor /opt/IBM/Connections/data/shared/provision/webresources/com.ibm.lconn.wikis.web.resources_3.5.0.20130627-1601.jar

Create customization path and copy toc.js

mkdir -p /opt/IBM/Connections/data/shared/customization/javascript/lconn/wikis/macros
cp /tmp/ckeditor/resources/macros/toc.js /opt/IBM/Connections/data/shared/customization/javascript/lconn/wikis/macros

Change toc.js

vim /opt/IBM/Connections/data/shared/customization/javascript/lconn/wikis/macros/toc.js

You find the following part:

lconn.wikis.macros.toc = {
//node id sequence for TOC link.
    fragmentSeqn: 1,
    topLevel: 2,
    bottomLevel: 4,
    template: 'Table of Contents:<INSERT-BODY>',

You have to change topLevel and bottomLevel to following:

lconn.wikis.macros.toc = {
//node id sequence for TOC link.
    fragmentSeqn: 1,
    topLevel: 1,
    bottomLevel: 5,
    template: 'Table of Contents:<INSERT-BODY>',

After a new Connections restart my toc got updated with h1 – h5.

Update

Change Styles

If you want to change the default style of your tocs, you can do this in the toc.js file too! I prefer my TOC on the right screen side and with a light grey not yellow background.

I changed:

 style: 'border-radius: 6px; margin: 8px; padding: 4px; display: block; width: 50%;background-color: #ffc;',

To:

 style: 'border-radius: 6px; margin: 8px; padding: 4px; display: block; width: 30%;background-color: #E0E0E0;float:right;padding:10px;margin-left:20px;margin-bottom:20px;',

Now i have a little bit smaller toc with additional space to the content:

Changing the style of your toc

It would be better to define the styles through a CSS file in customization folder, but i only want to test it. When you want to change through css file, then you should remove most of the styles from style:.

Create a printable and portable Connections Product Documentation

The IBM Connections Product Documentation is only available as a set of Wiki Documents and in a accessible version (5 single html documents).

I don’t like both versions. Searching is hard and printing only single documents (to paper or pdf) is a torture. The format is only for a complete display, no mobile version and using only half of a display do not wrap the text.

So i want to have a converted document which is searchable, has numbered headlines and can be converted to mobi or kindle format.

2013-07-15_21-36-58

You want this too? How?

Requirements

I created a linux shell script which downloads the accessible version of the product documentation and removes / adds some lines. I added a alternative stylesheet (numbering headlines) and a javascript file (toc on top of the document). Copy both files to the directory of the html documentation.

Here the script and some explanations on it:

#!/bin/bash
wget -mk http://infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us/acc_p1.html
wget -mk http://infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us/acc_p2.html
wget -mk http://infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us/acc_p3.html
wget -mk http://infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us/acc_p4.html
wget -mk http://infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us/acc_p5.html

Download the html files inclusivly with images, scripts and stylesheets.

After downloading the files, change to the folder of acc_p1.html:

FILEPATH=infolib.lotus.com/resources/connections/4.5.0/doc/accessible/admin/en_us
cd $FILEPATH

Run tidy on the html files to seperate the html tags and indent the code:

for i in $(seq 1 5); do
    tidy -wrap 0 -c -i acc_p${i}.html > acc_p${i}_a.html
done

No remove the html header and toc of the files:

# remove head and foot (incl toc)
for i in $(seq 1 5); do
   sed '1,/<div class="nested0" role="main"/d;/<\/body>/,$d' acc_p${i}_a.html > acc_p${i}_b.html
done

Create a file with header informations (title, stylesheets):

sed '/< \/head>/,$d' acc_p1.html > head.html
sed -i 's/<link rel="stylesheet"[^/>]*>//g' head.html
sed -i '/<title>/d' head.html
echo '<link rel="stylesheet" type="text/css" href="custom.css" />' >> head.html
echo '</title><title>IBM Connections 4.5 CR1</title>' >> head.html
echo '<script type="text/javascript" src="toc.js"></script>' >> head.html
echo '<body>' >> head.html

Create a file with footer informations:

sed '/< \/body>/,$d' acc_p1.html > foot.html

Create a singe html file of the Connections documentation and add head and foot:

cat head.html > cnx45documentation.html
for i in $(seq 1 5) ; do
    cat acc_p${i}_b.html >> cnx45documentation.html
done
cat foot.html >> cnx45documentation.html

Rewrite all links and anchors to the new filename:

sed -i -e 's/href="acc_p[1-5].html#/href="cnx45documentation.html#/g' cnx45documentation.html

So you’re nearly done! Copy the custom.css and toc.js in the directory and you can open the documentation. You can use half display, print to pdf, convert it to kindle (e.g. calibre) and other ebook formats.

The script does not delete temporary files. I copy only cnxdocumentation.html, toc.js and custom.css to a seperate folder and delete the downloaded files. If you want the images (there are only few), you need to copy these too.

Configuration of toc.js

Here is my setting i used for the toc.

container : "false",
headline : 1,
minNavPoints : 2, 
insertAfter : "body",
headlineText : "Table of Contents",
listType : "OL", 

Download the script file.

custom.css

h1{counter-reset: h2counter}
h2{counter-reset: h3counter}
h3{counter-reset: h4counter}
h4{counter-reset: h5counter}
h5{counter-reset: h6counter}

h1:before{
  counter-increment: h1counter;
  content: counter(h1counter) " ";
}
h2:before{
  counter-increment: h2counter;
  content: counter(h1counter) "." counter(h2counter) " ";
}
h3:before{
  counter-increment: h3counter;
  content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) " ";
}
h4:before{
  counter-increment: h4counter;
  content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) "." counter(h4counter) " ";
}
h5:before{
  counter-increment: h5counter;
  content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) "." counter(h4counter) "." counter(h5counter) " ";
}

h6:before{
  counter-increment: h6counter;
  content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) "." counter(h4counter) "." counter(h5counter) "." counter(h6counter) " ";
}
body{font-family:sans-serif;
max-width:1024px;
min-width:300px;
left:auto;
right:auto;
font-size:12px;
}
p {
 font-size:11px;
 line-height:110%;
}

code,kbd {
 margin:10px;
}
h1,h2,h3,h4,h5,h6{
 color:darkblue;
 font-weight:bold;
 font-size:110%;
}

You can download the script and css file on github:

https://github.com/stoeps13/ibmcnxscripting/tree/master/web/createdocu

.