Friday, 29 January 2010

IBM Lotus Notes and Lotus iNotes 8.5.1 on Citrix XenApp 4.5/5.0: A scalability analysis

As posted by Ed, here's the document that many of our customers have been waiting for: -

This white paper provides an overview and recommendations for how to get the most from your IBM Lotus Notes 8.5.1 client on the new Citrix XenApp 5.0 server. In particular, we show that, by tuning your environment so that you get the most from your applications, you can realize significant improvements in running the Notes client on XenApp. This is true for both the standard and the basic configurations of Lotus Notes.
Moreover, the new support for Microsoft Windows 2008 SP2 by Notes 8.5.1 together with memory improvements means we can scale to even higher numbers than before at a much reduced cost. Also presented are the testing environment, tuning parameters, and the workflows that were executed to gather the scalability data on Notes 8.5.1.

Site analytic support in IBM WebSphere Portal 6.1.5

In IBM WebSphere Portal 6.1.5, site analytic support has been enhanced to include integration with Coremetrics, Omniture, and Webtrends Web analytic solutions. This is part of IBM's User Experience Optimization Initiative (UEOI) that enables WebSphere Portal customers to easily capture and measure user activity, so that portals can be better designed and targeted.

In this white paper, we discuss the importance and types of analytics and explain how to integrate WebSphere Portal into your favorite UEOI Web analytic software. We also discuss the exciting future of Web analytic integration into WebSphere Portal, including autonomic enhancements.

Setting up single sign-on between IBM Lotus Connections 2.5 and Computer Associates' SiteMinder

One of my colleagues has just shared details of this recently published Wiki item. It's pertinent to me for a project that I'm working on at present, so it's a quite timely posting: -

Setting up single sign-on between IBM Lotus Connections 2.5 and Computer Associates' SiteMinder

 This article describes the best practices for setting up single sign-on (SSO) between IBM Lotus Connections 2.5 and Computer Associates' SiteMinder. We include detailed steps along with troubleshooting tips. 

Tuesday, 26 January 2010

Moving and renaming VMware images - WiP

This is the first of (potentially) many drafts, as I try and get a handle on the process of moving/renaming VMware images.

This is partly due to the fact that VMware Fusion ( Mac ) and VMware Workstation (Lin/Win) automatically create image names based upon the OS. As an example, a Red Hat Linux v4 image is created as a series of files named Red Hat Linux.* e.g. Red Hat Linux.vmxRed Hat Linux.vmxf etc.

Now I don't claim to be totally conversant with the VMware file naming structure, but I'm sure that there are masses of documents on t'internet describing it more clearly.

Using this document as a source: -

the files that I've been manipulating are: -


This is the primary configuration file, which stores settings chosen in the New Virtual Machine Wizard or virtual machine settings editor. If you created the virtual machine under an earlier version of VMware Workstation on a Linux host, this file may have a .cfg extension 


This is a supplemental configuration file for virtual machines that are in a team. Note that the .vmxf file remains if a virtual machine is removed from the team. 


This is a virtual disk file, which stores the contents of the virtual machine's hard disk drive.

A virtual disk is made up of one or more .vmdk files. If you have specified that the virtual disk should be split into 2GB chunks, the number of .vmdk files depends on the size of the virtual disk. As data is added to a virtual disk, the .vmdk files grow in size, to a maximum of 2GB each. (If you specify that all space should be allocated when you create the disk, these files start at the maximum size and do not grow.) Almost all of a .vmdk file's content is the virtual machine's data, with a small portion allotted to virtual machine overhead.

If the virtual machine is connected directly to a physical disk, rather than to a virtual disk, the .vmdk file stores information about the partitions the virtual machine is allowed to access.

Earlier VMware products used the extension .dsk for virtual disk files.
So, without further ado, here's my process ... oh, hang on, forgot to add the CAVEAT.

This process is DESTRUCTIVE DESTRUCTIVE DESTRUCTIVE - if it goes wrong, you will LOSE your precious virtual machine. If in doubt, do NOT do it WITHOUT a good proven backup. Otherwise, do NOT DO IT <PERIOD>

In this example, we have a subdirectory called WPX615 within which we have a bunch of files, all named WPX615...


At the end of the process, the subdirectory will be renamed Portal61 and each file will be Portal61...

  1. It's probably a stupid thing to say, but make sure that the VM is not running; ideally, shut down Fusion / Workstation before proceeding
  2. Rename the subdirectory
  3. Remove the log files - they play no part in the actual operation of the VM, but may be worth moving/backing up for future reference
  4. Remove the appListCache directory - this MAY be a VMware Fusion feature which I don't use, so don't mind losing
  5. Rename all of the files
  6. Replace references to WPX615 in the .VMX, .VMXF and .VMDK files

So here's the script: -


# Test for sufficient parameters
if [ $# -eq 0 ]
echo "Usage: OldVM NewVM"
exit 65

# Parameter 1 is the old directory/file name
echo "Moving from " $1
# Parameter 2 is the new directory/file name
echo "Moving to " $2

# Move the directory
mv $1 $2

# Change to the new directory
cd $2

# Remove the appListCache directory ( VMware Fusion only ? )
rm -Rf appListCache
# Remove the log files
rm -Rf *.log

# Move the VMware files from the old name to the new name

ls *.* | awk '{print("mv "$1" "$1)}' | sed 's/'$1'/'$2'/2' | /bin/sh

# Replace references to the old filenames
sed -i '' 's/'$1'/'$2'/g' $2.vmx
sed -i '' 's/'$1'/'$2'/g' $2.vmxf

sed -i '' 's/'$1'/'$2'/g' $2.vmdk

# Finished
echo "All done, please try your new VM"

So far, so good.

This has worked for me today with a single VM, switching back and forth from one name to another.

Will update as I progress ...

PS I learnt a lot about awk, sed and bash in this process, and also found that the command fgrep -I <pattern> filename was of great use in testing the search/replace on the VMX files etc.

PS Some very useful hints from here

Enabling Business Space to work with IBM InfoSphere MashupHub

One of my colleagues alerted me to this recently  published document: -


How can I enable Business Space to work with IBM InfoSphere MashupHub so that, depending on their roles, Business Space users can add hub widgets to the Business Space widget palette, publish templates and pages to the hub, create a space based on a hub template, and import hub pages into spaces that they own?  

The document goes on to describe how integration may be achieved with WebSphere Portal 6.1.5, via the command: - set-mashuphub-url -DhubUrl=huburl -DWasPassword=was_password -DPortalAdminPwd=portal_password

as per the Information Centre: -

In the words of another of my colleagues, SWEET !

Sunday, 24 January 2010

Social Software .... Development

An interesting mix of development and collaboration, via Mainsoft, whose technology has been described ( by me amongst others ) as the glue between enterprise software.

Integration between the Rational Team Concert Web interface and Lotus Connections social software is delivered via a Mainsoft technology preview.

Tap into your social network

Integrating Lotus Connections social software into the Rational Team Concert Web interface provides many new collaboration capabilities that allow you to identify, connect with, and exchange ideas with a wide community of IT and business stakeholders, partners, and end users. You can:

  • Learn more about your colleagues, by accessing their complete social profile
  • Find out what's happening in your community, blogs, wikis, and activities
  • Search for technical and business contacts based on their experience, skills, or key relationships
  • Publish work items as Lotus Connections activities or microblog status updates
  • Microblog ideas and status updates from the dashboard
  • And more ...

Saturday, 23 January 2010

Notes/Domino 8.5.1 Fix Pack 1 is available on Fix Central;

Notes and Domino 8.5.1 updates for Windows, Linux, Unix, AIX, i5/OS, Solaris, zLinux, Mac etc. etc. etc.

Download options for Notes/Domino 8.5.1 Fix Pack 1

I installed FP1 onto Notes 8.5.1 on my Mac this morning, so far, so good.

Friday, 22 January 2010

WebSphere Portal and Lotus Web Content Management Beta Three Now Available

Hmmm, managed to miss this announcement during the Lotusphere 2010 excitement this week. Thanks to a serendipitous Google search for something completely unrelated ( WebSphere Portlet Factory and Rational Team Concert together ), thanks to Strongback for posting this: -

Beta 3 of WebSphere Portal 7 Now Available

which references: -

WebSphere Portal and Lotus Web Content Management Beta Three Now Available    

which further references: -

IBM WebSphere Portal and Lotus Web Content Management Open Beta

WebSphere Portal Beta Readme

I'm not actually sure whether this will be Version 7 or, perhaps, Version 6.X, but it's not as important as the fact that the code is out there NOW. They promise to have VMware images of Beta 3 by the end of the month, and there's also Hypervisor and Amazon EC2 options available as well. One's cup overfloweth :-)

Nice one, Kenny

Thursday, 21 January 2010

Open Mic: Planning for deployment of Lotus Sametime 8.5 - 27 January 2010

IBM Support is hosting an Open Mic conference call with panelists from Development and Support to discuss planning for the deployment of Lotus Sametime 8.5 on Wednesday, January 27, 2010, at 10:00 a.m. eastern standard time (EST) (3:00 p.m. GMT). The focus of this Open Mic call is to discuss deployment considerations, install planning, and upgrade considerations for Sametime 8.5.

Support Content Highlights for IBM WebSphere Portal/ Web Content Management (January 2010)

Now available online: -

This document contains links to new information and current key technical support documents for IBM WebSphere Portal and IBM Lotus Web Content Management (WCM) that are frequently requested or identified by IBM as valuable. This is key information to help you derive the most value from software licenses, find answers to common questions, and work through current issues that might affect your environment. 


• Announcements
• Recent wiki and developerWorks articles
• Recent favorites
• Continual favorites
• Electronic support resources
• IBM Support Portal resources and survey
• Education information
• Subscription information

Losing, and then finding, File Type Associations with Lotus Symphony on Mac OSX

Somehow, during a recent clean-up session with Onyx, I managed to lose the associations between files such as .DOC, .XLS, .ODS etc. and Lotus Symphony 1.3, which is embedded within Lotus Notes 8.5.1.

Rather than needing to reinstall the application, or ( quelle horeure ) install ANOTHER productivity tool, I found this Notes preference: -

  • Choose Lotus Notes -> Preferences
  • Navigate to IBM Lotus Symphony
  • Choose File Type Associations
  • Choose the appropriate file types e.g. All, Open Document Format, Microsoft Office 2007 etc.

Once done, I was able to double-click on a file from within Finder, and have it open up in Symphony within the Notes client as I'd expect.

If it helps, I'm using Lotus Notes 8.5.1 FP1 on Mac OSX 10.6.2.

Monday, 18 January 2010

Deja Vu - I've been down this road before ...

Took me a few minutes, and a Google search, to realise why I was seeing a blank page on my freshly squeezed installation of Lotus Quickr Services for Lotus Domino 8.2.

Despite stopping/starting Quickr, and updating to Fix Pack 8, I was still seeing the same symptom. When I Google'd around, I found this Technote: -

Blank page or JavaScript error "Object expected" after install or upgrade of Lotus Quickr 8.2 if you do not enable Domino Servlet Manager

which directs one to enable the Domino Servlet Manager via the Domino Administrator: -

1. From IBM Lotus Notes® or the Domino Administrator, open the Domino Directory (names.nsf) on the server.
2. Open the Server document.
3. Click Internet Protocols > Domino Web Engine.
4. Below Java Servlets, select Domino Servlet Manager in the Java servlet support field.
5. Save and close the document.

After making these changes, you need to restart the HTTP task (enter restart task http on the server console) for them to take effect.

The ultimate irony ?

I checked back in my blog postings from last year, and found this: -

Problems with Lotus Quickr Services for Lotus Domino 8.5 on upgrade/installation - Blank page or JavaScript error "Object expected" ...

Can you say "Doh" ?

Installing WebSphere Portal Server 6.1.5 on Windows ...

Whilst working to help out a colleague who was struggling with the download of the relevant images, I was able to successfully download and install WebSphere Portal Server 6.1.5 onto Windows ( I'm using XP as a dev. environment, running under VMware Fusion 3 on my Mac ).

I used the following script to unpack the images: -

unzip -d c:\temp\W-Setup
unzip -d c:\temp\W-1
unzip -d c:\temp\W-2
unzip -d c:\temp\W-3
unzip -d c:\temp\W-4
unzip -d c:\temp\W-5
unzip -d c:\temp\W-5A

using the ubiquitous unzip.exe tool ( part of PKZip iirc ) to expand the ZIP files.

Hope this helps ...

Friday, 15 January 2010

Configuring Microsoft Windows single sign-on for IBM Lotus Connections

Windows SSO support is a new feature in Lotus Connections 2.5, enabling users who are already logged on to a Windows desktop to log on to Lotus Connections automatically, without needing to re-authenticate.

The SSO is achieved by means of Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO), which is a GSSAPI "pseudo mechanism" used to negotiate one of a number of possible real mechanisms. The negotiable sub-mechanisms include Windows NT LAN Manager (NTLM) and Kerberos, both of which are supported by Microsoft Active Directory.

Windows SSO can be implemented in a variety of ways, including via WebSphere® Application Server SPNEGO Trust Association Interceptor (TAI), Tivoli® Access Manager, or other third-party access managers.

In Lotus Connections 2.5, the Windows SSO support is built on WebSphere Application Server SPNEGO TAI. Figure 1 illustrates how the SPNEGO authentication is performed with WebSphere SPNEGO TAI (excerpted from the developerWorks article titled, "Administering the SPNEGO TAI: Tips on using Kerberos service principal names").

Tuesday, 12 January 2010

Using Lotus Sametime Connect client in a load-balanced Sametime server environment

Following a client's recent experiences, I'm pleased to report that it appears to be possible to have a Sametime Connect client ( actually the Sametime 8.0.2 client within the Notes 8.5.1 client ) authenticate with a clustered Domino server via a load balancer.

Whilst the Sametime client itself does not allow the load balancer's hostname to be entered ( it assumes that the hostname is actually that of a Domino server ), there is a useful circumvention, documented in SPR PMIA6A9MMW: -

SPR# PMIA6A9MMW - When a notes client connects to a Domino server part of the protocol exchange includes the notes client telling the server what it thinks the server's name is. If the names do not match, the connection is terminated. This mechanism is part of the code which supports partitioned servers running on the same IP address.

However, because of this algorithm, we cannot use network sprayers in front of Domino servers. When a Notes client uses a Network Sprayer address as a Domino server address, the network sprayer may make the final connection to any of the Domino servers behind it. If the name supplied by the client is not the Domino server name of the selected server, the connection will be broken.

This fix provides a mechanism to skip the server name checking to allow this configuration to work.

NOTE: This mechanism is suitable ONLY if the database being accessed is available on all the Domino servers being sprayed to! This is only true for very constrained configurations. For example - Sametime Servers that want to use SSO, or clusters in which all accessed databases have replicas on all servers! There are many configurations in which this feature will not work.

To enable this feature, on each of the Domino servers behind the network sprayer add NETWORK_SPRAYER_ADDRESS=sprayer to notes.ini. Where "sprayer" is * * to match any name, or the DNS or HOST file name of the sprayer itself, or a comma separated list of names.

This is further documented in this Technote.

Thursday, 7 January 2010

Using Tivoli Directory Integrator to populate Lotus Connections Profiles from a Domino group

As per a previous blog post , I've recently worked out how to use TDI to populate the Lotus Connections Profiles database from a Domino group.

The "problem" is that Domino does not support the memberOf attribute that other LDAP servers support, meaning that there is no simple way to identify members of a Domino group via a LDAP search filter.

As is probably well known by now, Lotus Connections includes TDI as a  mechanism for integrating data from various systems, including LDAP directories, into the Profiles database.

The Connections product includes a set of scripts ( known as the Profiles Population Wizard ) that use TDI for this, and other related purposes. The wizard actually invokes one or two TDI processes, known as Assembly Lines. In my particular scenario, there are two Assembly Lines involved: -


This Assembly Line iterates through the LDAP specified in, and then writes dn into the collect.dns file.


This Assembly Line runs after collecting dns in the collect.dns file. It iterates over the collect.dns file, fetches data from the LDAP, and syncs the database with details of the employees. This Assembly Line is invoked while running the script.

The LC Wiki outlines this in far more detail here.

My solution replaces the collect_ldap_dns Assembly Line, and uses consists of three elements: -

##{PropertiesConnector} savedBy=root, saveDate=Fri Jan 01 11:57:23 GMT 2010


#! /bin/sh
rm collect.dns
/opt/IBM/TDI/V6.1.1/ibmdisrv -s . -c Domino_Group_Members_into_Profiles.xml -r Domino_Group_Members_into_Profiles


This is "Blue Glue" that joins the two together - the shell script invokes the TDI server ( ibmdisrv ) which reads the properties file AND the XML file, which contains the details of the Assembly Line ( called Domino_Group_Members_into_Profiles - yeah, I know my naming convention isn't the best ... ).

This Assembly Line uses an LDAP Connector to read the members of the group, specified by source_ldap_search_filter=CN=LC25, via iteration, and parse the user name ( Distinguished Name ) to remove everything apart from the preceding CN= and the closing O= . This list of user names is then written, line by line, to a text file, collect.dns.

That's it, simple as that.

Now if I was REALLY smart, I'd work out how to (a) amend the out-of-the-box Assembly Line ( collect_ldap_dns ) or (b) invoke the Populate_from_dns_file Assembly Line from my own version.

However, that'll do for the time being ...

With thanks and kudos to many, including: -

Eddie Hartman
Keith Brooks
Mitch Cohen
Sjaak Ursinus

and three  awesome products; Lotus Domino and Tivoli Directory Integrator and Lotus Connections.

Plug Plug Plug - IBM Lotus Connections 2.5: Planning and Implementing Social Software for Your Enterprise

Guess what I'll be reading on the plane to Boston ...

The Practical, Complete Guide to Leveraging the Power of Social Networks with Lotus Connections 2.5

The first book to cover the newest version of the breakthrough product from IBM: Lotus Connections 2.5. This book includes practical techniques for building dynamic networks of coworkers, partners, and customers that promote innovation, business agility, and authoritative guidance for business and technical planning, deployment, integration, and much more. Social networking is the newest frontier in business collaboration, and IBM Lotus Connections 2.5 gives businesses the tools they need to make the most of it–easily, securely, and cost-effectively.

In this book, a team of IBM Lotus Connections 2.5 experts thoroughly introduces the newest product and covers every facet of planning, deploying, and using it successfully. The authors cover business and technical issues and present IBM's proven, best-practices methodology for successful implementation. The authors begin by helping managers and technical professionals identify opportunities to use social networking for competitive advantage–and by explaining how Lotus Connections 2.5 places full-fledged social networking tools at their fingertips. IBM Lotus Connections 2.5 carefully describes each component of the product–including profiles, activities, blogs, communities, easy social bookmarking, personal home pages, and more. The book contains practical coverage of administering Lotus Connections 2.5 and detailed guidance of integrating and extending Lotus Connections 2.5.

VMware Server 2.0.2 and it's use of datastores

If you're like me (!), and prefer scripts to GUIs, then you might find this to be of some use.

I've recently written some scripts for my VMware Server environment to register, start, stop and list VMs. I'm using VMware Server on Ubuntu 9.10 64-bit, and use it to run products such as Lotus Connections, WebSphere Portal etc.

Here're the scripts: -

vmrun -t server -h https://orac:8333/sdk -user root -password passw0rd register "[standard] $1/$1.vmx"

vmrun -t server -h https://orac:8333/sdk -user root -password passw0rd start "[vmwares] $1/$1.vmx"

vmrun -t server -h https://orac:8333/sdk -user root -password passw0rd start "[vmwares] $1/$1.vmx"

vmrun -t server -h https://orac:8333/sdk -user root -password passw0rd list

and, for Lotus Connections especially, there's this one: -

./ Domino
./ DB2
./ Connections

Now, most of these scripts have one thing in common; they all refer to "[vmwares]" which is an alias that points to the physical directory (in my case, this is  a mount point called /vmwares that points to a 1 TB SATA2 internal drive ).

The path is set by the script *BUT* the alias is not; it's set to a default of standard by a configuration file; /etc/vmware/hostd/datastores.xml.

This meant that my scripts were failing - in the case of, I was seeing: -

Error: The virtual machine cannot be found

Therefore, in my case, I've amended this file to reflect the alias as vmwares rather than standard as follows: -

<e id="0">

In other words, I've changed: -


to: -


PS It's worth noting that, depending upon your environment, you may also have a NEW_datastores.xml as well as the original datastores.xml file. Be aware that the NEW file takes precedence over the original version; therefore, ensure that you modify the right version.

The simplest trick is to change the file and then restart VMware Server via the command: -

service vmware stop
service vmware start

or: -

service vmware restart

Check the amended configuration file to ensure that the new alias has been picked up.

Wednesday, 6 January 2010

Want to add a CD/DVD repository to Ubuntu's APT sources.lst ?

If so, run this command: -

sudo apt-cdrom add

and, when prompted, insert the relevant CD or DVD, and let Ubuntu do the rest ....

Patching things using Ubuntu Server 9.10

Whilst trying to install VMware Server 2.0.2 on a freshly squeezed Ubuntu Server 9.10 installation, I needed to run a script that patches the out-of-the-box VMware install scripts.

This script, found here ( amongst other places ) uses the patch command. Sadly, for some strange reason, the script itself kept failing with: -

Testing patch ./ 71: patch: not found Sorry, problem with the patch, I can't apply it 
After mucking about with permissions etc., I Googled around and found that the problem was that the patch command ( /usr/bin/patch ) wasn't installed - however, the command: -

sudo apt-get install patch

didn't find owt, and Synaptic Package Manager implied that patch was already installed as part of the same package that includes the diff command - which WAS there.

To cut a long story short, the trick was to run: -

sudo apt-get update

( with an Internet connection, of course )

and then re-run: -

sudo apt-get install patch

Once done, /usr/bin/patch miraculously appeared, and the aforementioned script worked without a problem.


Tuesday, 5 January 2010

Changing the default search engine for Firefox keyword searches ...

Whilst helping a friend / colleague / buddy / fellow caramel latte consumer, I stumbled upon a need to change the search engine that Firefox uses for keyword searches ( those entered via the Address Bar rather than the Search box ).

Mike wanted to enter a search string ( apparently known as a keyword search ) into the Address Bar and have it use rather than

The solution ?

Change the Firefox internal configuration using the URL about:config ( heeding the warnings re dragons, warranties etc. ) and set the value of: -


from: -

to: -

If it's of interest, the about:config URL/command actually updates an underlying Firefox preference files ( prefs.js ) which, on my Mac, is stored here: -

/Users/davehay/Library/Application\ Support/Firefox/Profiles/4htddm23.default/prefs.js

CTGDKE039E Error occurred when creating TDI Property store

Finally, having bashed my head against the screen of my Thinkpad repeatedly for the past few days, I've cracked a problem that was baffling me with Tivoli Directory Integrator V6.1.1 FP7.

In short, I have created an Assembly Line that reads from Domino Directory via the LDAP Connector, and only returns users who are members of a specific group. This is to help resolve a problem that I'm seeing at a customer, where they're looking to use group membership to "control" who gets added to the Profiles database within Connections.

The TDI wizard that is supplied with Connections 2.5 is great, but doesn't have that specific tweak, and Domino LDAP doesn't seem to have the equivalent of the memberOf filter that other LDAPs support.

Anyhow, having created my Assembly Line, I was struggling to execute it as a command line ( via a shell script ). It worked perfectly well within the TDI toolkit itself ( /opt/IBM/TDI/V6.1.1/ibmditk ), but not via the command-line interface ( /opt/IBM/TDI/V6.1.1/ibmdisrv ).

The exception that I kept receiving was: -

Error occurred when creating TDI Property store. Property store: Solution-Properties Exception: null
Error occurred when creating TDI Property store. Property store: System-Properties Exception: : Error opening socket to server localhost on port 1527 with message : Connection refused

The port number was niggling me, as I'd seen reference to 1527 before.

After a while it hit me. When I got back off the floor, I remembered .... port 1527 is often used by the Apache Derby database ( fka Cloudscape ).

I checked within my TDI solution directory ( I'm actually running my script from within the Connections Wizard subdirectory ( /root/Wizards/TDIPopulation/TDISOL/linux ) and found a script entitled I executed said script: -

./ start

and saw the friendly message: -

Server is ready to accept connections on port 1527

Lo and behold, my TDI script now works.

The reason that this was occuring, methinks, is because I'm using an external properties file to configure the TDI Assembly Line to talk to a specific Domino server with a specific search filter and a specific set of credentials. The objective being to allow my customer to change the properties file without needing to change the Assembly Line itself.

Looking at the Assembly Line configuration,I'm guessing that TDI needs to iterate through all available properties: -


*BEFORE* it gets to my own properties file.

I'll blog my Assembly Line etc. in the next day or so ....

Product Positioning

With thanks to my fiend Darren for sharing this: -