Get Social & Collaborate!

Entries in WebSphere Portal (5)


IBM Web Experience Factory 7.0.1

IBM has announced the release of the IBM Web Experience Factory 7.0.1 (Formally know as IBM WebSphere Portlet Factory):

IBM® Web Experience Factory 7.0.1, formerly IBM WebSphere® Portlet Factory, delivers the fastest and easiest way to develop multichannel exceptional web experiences across desktop, mobile, and tablet platforms.


  • New builders
    • Builders for mobile, multichannel solution development including desktop browsers, smartphones, and tablets
    • Builders to incorporate analytics into applications to ensure the feedback loop is closed, allowing business owners to track and adjust success based on application usage
    • Builders for IBM Web Content Manager allows easy integration of content and authoring capabilities in custom portlets
  • Increased developer productivity, with many new features and improvements to make it easier and faster for developers to build exceptional web experiences
  • New production code and samples with full source code providing a robust library of both learning and production examples


My take on this:

  • The trend of dropping the brand names from products is now becoming consistent across more than just Lotus.
  • The enhancements reflect the move to support more than just Portlets. The IBM Web Experience Factory can be used (and has for a while) to build widgets and web applications that go broader than just Portlets. In particular is the support now for Mobile Application Builders that can use the same code base  across a range of devices.
  • This move to more Mobile capabilities is in addition to the upcoming WebSphere Portal Mobile Theme that is in beta (I will post about this soon I promise)
  • Also new builders for analytics applications. Business Analytics is a very fast growing space (hence why ISW has invested so much becoming an IBM Business Analytics/Cognos partner this last year) and IBM is smart to enable this capability in the Web Experience Factory.
  • I am glad they didn't call it the IBM Exceptional Web Experience Factory;)

More information here


WebSphere Portal 7 Download

WebSphere Portal 7 has become available for download.

All the part numbers across the various platforms are available here:



Integrating Lotus Connections with WebSphere Portal - Part 3

Ok so now for Blogs. In past entries we have integrated Homepage, Profiles, Communities, Search, Dogear, Wikis, Files, and Activies. Blogs initially proved to be a challenge but wasn't that much harder in the end.

The main differences with Blogs are that:

1) You need to use a slightly different script.

2) You need to update the JSP's but also the Blog Theme templates

3) You need to use wsadmin to update the timestamp and restart the server.


So the script to use is:

<script type="text/javascript">

#if($model.getRequestParameter('FromPortal') == 'true')
document.cookie="FromPortal=true; path=/";
if(testCookieForFromPortal()) {
document.cookie="FromPortal=true; path=/";

function testCookieForFromPortal() {
if (getCookieValue("FromPortal") == "true") {
return true;
} else {
return false;
function getCookieValue(cookieName) {
var retVal = "";
var i = document.cookie.indexOf(cookieName);
if (i != -1) {
var iVal = i + cookieName.length + 1;
var j = document.cookie.indexOf(";", iVal);
if (j < 0) retval = document.cookie.substring(iVal);
else retval = document.cookie.substring(iVal,j);
return retVal;
// the themeTemplateURL variable should be set to the URL defined
// as the src attribute of the <script/> tag generated by the
// WebAppIntegrator portlet.



Update the following files:







Update each Theme by adding the script to the _header.vm file . The themes are located in the blogs.was/themes directory.


Update Timestamp:

Next you need to update the timestamp for the configuration files:

and then restart the servers.

And that should be it!


So we now have all features with the ability to add the ?FromPortal=true paramater to the URL and the Top Navigation Banner will disappear.

Once this is all done integrating with Portal is really easy using the Web Page Portlet. Simply add the Portet to a page and point the configuration of the Portlet to the appropriate URL. When users access Connections within the Portal the top navigation automagically disappears and you can use the Portal navigation instead. I found setting the Web Page Portlet to a height of 1100 meant that you never get a scroll bar in the Portlet.

The next step for me to to try and do the same with the Web Application Integrator Portlet which will mean that we effectively wrap the Portal Navigation around Connections rather than use the iFrame that the Web Page Portlet method users. This is fairly easy but first I need to build our custom theme into the Web App Integrator. Might be Part 4!


Integrating Lotus Connections with WebSphere Portal - Part 2

 Ok so couple of days ago was Home, Profiles, Communities, Search, and Dogear. Today Activities, Files, & Wikis.


Wiki's is slightly different in that it doesn't import the JSTL Core Tag Lib which is used in the script hence we need to add it. So add the script to the following file:


and then also add:

<%@ taglib prefix="c" uri="" %> to the first line of home.jsp


Files is the same as Wiki's in that we need to add the tag library as well.




Now activities is also slightly different. You still need to add the above script to the jsp however there are two body tags to add it to. There is also a change required to banner.jsp.

So first add the usual scripts from yesterday directly after each of the <body> tags in the mainpage.jsp


Now at first this didn't work and it took me a while to realise that the "lotusbanner" was not being updated to display="none". The reason for this is that unlike the other features the DIV for the lotusbanner only contains a Class reference and not an ID reference. Hence as the script sets id="lotusbanner" to display="none" it doesn't work. So we need to update the banner.jsp (same directory as mainpage.jsp) to have:

<div id="lotusBanner" class="lotusBanner">

It then works a treat just like the other features.

 URL to link Web Page Portlet to: https://<activities-server>/<activities-context-root>/service/html/mainpage?FromPortal=true


So all that is left is Blogs. Blogs is proving to be slightly more difficult due to the Theme templating. So that might make up Part 3 to come.


Integrating Lotus Connections with WebSphere Portal - Part 1

I have been working with a client to integrate Lotus Connections 2.5 with WebSphere Portal (6.0 in this case). In doing so I have taken guidance from the posts of G.Muecke on the whoopdicity blog as well as the Lotus Connections Wiki however there seem to be some changes from when they were created with Connections 2.0 and I also have taken a slightly different approach on a couple of points.

What we want to achieve is the following:

1) When accessing Connections directly (ie without Portal) Connections has the normal Connections navigation. When you access Connections from within the Portal the Top Level of Connections navigation disappears and is effectively replaced by the Portal Navigation (1 page per Connections feature).

2) Initially we will use the Web Page Portlet to display each Connections feature on a separate page of the Portal.

3) We will then move to the preferred method of integration using the Web Application Integrator Portlet. The Web App Integrator is preferred because it removes the usage of iFrames (which is effectively what the Web Page Portlet does) and provides a more seemless user experience. However in using the Web App Integrator a bit of work needs to be done so it support a custom Portal Theme as well as a Double Top Navigation (and maybe even a 3rd level navigation sidebar).

So here we go...

Automagic disappearing Connections Top Level Navigation!

So the first thing we need to do is modify Connections so it can detect if the user has come to Connections directly or via the Portal. If direct then Connections navigation is used, if from Portal the Portal navigation will be used.

We do this by adding a parameter to the URL that is used to access Connections and then setting that parameter as a cookie. This cookie is then tested and if it exists we know to hide the Connections Nav.

The easiest way to hide/show the Connections top navigation bar is by using the fact that it's style is controlled by the "lotusbanner" style class. Each Connections feature has a header.html file (just do a search for header.html in each of the feature .ear file. eg [WASHOME]\profiles\lcprofile\installedApps\[YourCell]\files.ear). You need to add the following code:

<script type="text/javascript">
if(testCookieForFromPortal()) { document.getElementById("lotusBanner").style.display = "none";

This code basically tests for the FromPortal cookie and if it is true sets the stle display ="none" which makes the Connections top level navigation banner disapear.

Now another approach which is a little nicer is rather than adding the code to the header.html file for every feature you can create the header.html on your IBM HTTP Server (IHS) and then this effectively overrights the header.html for each feature. You would have done this already if you have customised the Connections Logo or header at all as documented here. This is a much nicer way of doing it as you only need to maintain the code on the IHS rather than in each feature individually.

So once that is in place the next step is to add some script to every jsp in Connections that displays a page. This script will firstly set the cookie "FromPortal"=true if the URL has the "?FromPortal=true" parameter added to it. It will also test to see if the cookie has been set.

<script type="text/javascript">
if (("<c:out value='${param.FromPortal}'/>" != "true") && !testCookieForFromPortal()) { }
// if we get here, we have come from Portal, set a cookie
document.cookie="FromPortal=true; path=/";
function testCookieForFromPortal() {
if (getCookieValue("FromPortal") == "true")
{ return true; }
{ return false; }
function getCookieValue(cookieName) {
var retVal = "";
var i = document.cookie.indexOf(cookieName);
if (i != -1) {
var iVal = i + cookieName.length + 1;
var j = document.cookie.indexOf(";", iVal);
if (j < 0) retval = document.cookie.substring(ival);
else retval = document.cookie.substring(ival,j);
return retVal;

So here is a list of the jsp's it needs to be added to for each feature:







URL to link Web Page Portlet to: https://<homepage-server>/<homepage-context-root>/?FromPortal=true






URL to link Web Page Portlet to: https://<profiles-server>/<profiles-context-root>/



URL to link Web Page Portlet to: https://<communities-server>/<communities-context-root>/service/html/allcommunities?FromPortal=true












\installedApps\Dogear.ear\dogear.webui.war\h3\jsp\tools\toolbox.jsp (This was called h3_tools.jsp in Connections 2.0)

URL to link Web Page Portlet to: https://<dogear-server>/<dogear-context-root>/?FromPortal=true



So that is Home, Profiles, Communities, Bookmarks, and Search. I will post next about Blogs, Activities, Files and Wikis.....and then onto the Web Application Integrator Portlet.