Thursday, 27 August 2009

It's Lotus Notes email, Jim, but not as we know it ...

During a recent project, we came across a requirement to provide access to a user's email on a portal page, without using the normal iNotes ( Domino Web Access ) or POP/IMAP mail portlets.

Not sure what led me to this, but I thought ... I wonder whether Domino has some kind of Atom/RSS syndication mechanism ? And, guess what, it does ....

I added the following lines to the NOTES.INI file on the Domino server: -

iNotes_WA_Feeds=rss,atom
iNotes_WA_FeedsSecured=0
iNotes_WA_FeedsProtocol=http
iNotes_WA_DisableForceBasicAuthForFeeds=1

and restarted Domino ( although I probably could have simply reloaded the HTTP task via TELL HTTP RESTART ).

Lo and behold, I can now subscribe to my inbox via the URL: -

Error "ldap_sasl_interactive_bind_s: Unknown authentication method (-6)" on a LDAPSearch command ...

Whilst building my mega Connections / Domino / Portal / Quickr / Sametime / WCM environment recently, I was using the LDAPSearch command that's available with many Unix installations, including Red Hat Enterprise Linux and Apple OSX.

This is a commonly-used command, and has a fairly simple syntax e.g.

ldapsearch -h hostname.domain.com cn=foobar

or: -

ldapsearch -h hostname.domain.com -b o=organisation cn=foobar

or: -

ldapsearch -h hostname.domain.com -b o=organisation -D cn=admin -w password cn=foobar

However, I kept seeing the error: -

SASL/EXTERNAL authentication started
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
additional info: SASL(-4): no mechanism available: 

After a quick Google search, it appears that that the LDAPSearch command that I was using is based upon the OpenLDAP product, which defaults to using an authentication mechanism called Simple Authentication and Security Layer (SASL).

Therefore, the LDAPSearch command was expecting to find a SASL-enabled server at the other end - given that I wasn't using OpenLDAP as a server ( I was actually using Domino LDAP ), the trick was to disable the SASL authentication on the client, using the -X switch e.g.

ldapsearch -x -h hostname.domain.com cn=foobar

or: -

ldapsearch -x -h hostname.domain.com -b o=organisation -D cn=admin -w password cn=foobar

Thanks to this blog post for the answer.

Wednesday, 19 August 2009

Lotus Knows IdeaJam

Following a widely publicized campaign online ( including via Twitter ), the LotusKnows IdeaJam kicked off today, here: -
http://lotusknows.ideajam.net/ideajam/ibm/lotusknows/ideajam.nsf

I've added my $0.10 worth. Have you ?

Installing Lotus Connections 2.0.1 Fixpack ... not very wizardly

Having identified the LC2011 fixpack as a potential solution to a problem I was having; the message: -

Please wait while the topics are loading... 

is displayed ad infinitum when viewing a Community, even though the separate Forum link on the left-hand sidebar works perfectly.

I downloaded the Update Installer from here and the fix pack from here.

Having expanded the Update Installer to /opt/IBM/WebSphere/LotusConnections/update and having copied the 250 Mb update ( LC2011_Fixpack.jar ) to /opt/IBM/WebSphere/LotusConnections/update/fixpacks, I tried to install the fixpack via the Wizard ( updateLCWizard.sh ).

Sadly, it failed to find the fixpack even though I led it by the hand through my path to the correct directory :-(

Thankfully, Luis Benitez had the answer ( as he usually does ), which is to avoid the Wizard for fixpacks and, instead, use the command line option instead: -

[root@connectionsdemo ~]# . /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/setupCmdLine.sh 
[root@connectionsdemo ~]# ./updateLC.sh -fixpack -installDir /opt/IBM/WebSphere/LotusConnections -fixpackDir /opt/IBM/WebSphere/LotusConnections/update/fixpacks -install -fixpackID LC2011_Fixpack -wasUserID cadmin -wasPassword passw0rd

As my frolleague, Chris Moore, would say ... "That's the badger!"

PS Did the fix pack resolve my issue with forum topics ? No, but that's another story.

Tuesday, 18 August 2009

Using the Web Application Integration portlet to integrate Lotus Connections 2.0.1 into WebSphere Portal 6.1

Following a query from an Australian partner ( Adam, you know who you are ), I wanted to post a couple of links that helped me integrate Lotus Connections 2.0.1 into WebSphere Portal for a demo environment that I was recently involved in developing.

This article on the Lotus Connections wiki: -


was very useful, as were Gerald Muecke's excellent series of articles here: -




Note that I was using LC 2.0.1, and have not YET had a chance to try it with the newly announced version 2.5, but I will, oh yes, I will :-)

Unpacking WebSphere Portal 6.1.0.1 for Windows ...

Following on from my previous post about downloading WebSphere Portal 6.1.0.1 for Windows, I wanted to add a post describing how I unpacked the six downloaded ZIP files: -

unzip C1TL1ML -d c:\temp\W-Setup
unzip C1TQ5ML -d c:\temp\W-1
unzip C1TR1ML -d c:\temp\W-2
unzip C1U2UML -d c:\temp\w-3
unzip C1U2XML -d c:\temp\w-4
unzip C1U30ML -d c:\temp\W-5
unzip C1U34ML -d c:\temp\W-5A

I used the UNZIP.EXE binary that's part of the WinZIP package, but other CLI unzip tools are available ...

Monday, 17 August 2009

Lotus Forms and WebSphere Portal Together - Separated Deployment

Having built the Forms/Portal environment several times before, including this most recent post: -


I wanted to setup a slight variation whereby WebSphere Portal runs on one server and Lotus Forms Server runs on another, which is more appropriate to a product, rather than demo, environment.

In my revised environment, I'm running two VMware images on my Mac, each running Red Hat Enterprise Linux. One image, running RHEL 4, is used to run the Webform Server ( Translator and Logger ). The other image, running RHEL 5, is used to run WebSphere Portal Server.

Again, I'm using WebSphere Portal 6.1.0.2 and Lotus Forms 3.5.

The Forms server has the TranslatorServer WAS instance running on port 8085, and I can test it using the URL: -


The Log4J server is also running on the same VM, under port 4560, started using the command: -

/opt/IBM/LotusForms/Server/3.5/WebformServer/LogServer/startLogServer.sh

On the Portal VM, I'd previously installed the standard sample portlets, packaged in WebformPortletSample.war, as per the previous document.

I also installed the Lotus Forms Server API, again as previously, ensuring that the WAS configuration was correct, in terms of WebSphere Variables, Environment Entries, Classpath etc.

Once I'd deployed the portlets, I had to modify the portlet.xml and web.xml files that are supplied with these portlets, to configure them to connect to the external Webform Server, rather than to the default localhost.

This involved my editing the portlet.xml and web.xml files packaged within the portlet's WAR file as follows: -

a) Change to: -

/opt/IBM/WebSphere/wp_profile/installedApps/voyag/PA_WebformSample.ear/WebformPortSample.war/WEB-INF

b) Backup portlet.xml to portlet.xml.original

c) Edit portlet.xml and change: -

<init-param>
                        <name>translatorLocation</name>
                        <value>http://localhost:8085/translator</value>
 </init-param>
<init-param>
                        <name>logServerName</name>
                        <value>localhost</value>
</init-param>

to: -

<init-param>
                        <name>translatorLocation</name>
                        <value>http://stargate.uk.ibm.com:8085/translator</value>
</init-param>
<init-param>
                        <name>logServerName</name>
                        <value>stargate.uk.ibm.com</value>
</init-param>

e) Backup web.xml to web.xml.original

f) Edit web.xml and change: -

<init-param>
                        <param-name>translatorLocation</param-name>
                        <param-value>http://localhost:8085/translator</param-value>
</init-param>
<init-param>
                        <param-name>logServerName</param-name>
                        <param-value>localhost</param-value>
 </init-param>

to: -

<init-param>
                        <param-name>translatorLocation</param-name>
                        <param-value>http://stargate.uk.ibm.com:8085/translator</param-value>
</init-param>
<init-param>
                        <param-name>logServerName</param-name>
                        <param-value>stargate.uk.ibm.com</param-value>
 </init-param>

g) Having made these changes to the web and portlet deployment descriptors, it is then necessary to repackage and redeploy the WAR file; I chose to use the Java JAR command to expand and then recompress the WAR file, but other tools are available. Having generated a new WAR file, it's then necessary to update the existing portlet, via the Update Web Module control under Portlet Management -> Web Modules.

h) Restart the portal server - not sure why it's necessary to do this, and it may be as easier/quicker to use the WAS Admin. console to restart merely the WAR file rather than the entire WebSphere Portal infrastructure.

i) Log back into Portal and give it a try ....

PS I also found this article: -

Integrating IBM Lotus Forms with WebSphere Portal to create a form-centric application


and the Lotus Forms Information Centre: -

Deploying the Portlet Sample on a Separate Portal Server


to be of help.

Using Web Application Integrator to integrate Lotus Quickr Services for WebSphere Portal into WebSphere Portal ...

Having done this ONCE, I'm by no means an expert, but wanted to share my W-I-P notes: -

a) Enable JSP reloading for Quickr

i) Log onto the Quickr server

ii) Edit: -

/opt/IBM/Quickr/wp_profile/config/cells/quick/applications/wps.ear/deployments/wps/wps.war/WEB-INF/ibm-web-ext.xmi

iii) Change reloadingEnabled="false" to reloadingEnabled="true"

iv) Restart Quickr

b) Create a URL linking to the Quickr landing page: -


c) On the Portal server, use the WAI portlet to generate the requisite JavaScript against the newly created Quickr URL link

d) Add the WAI JavaScript to Quickr JSP

i) On the Quickr server, BACKUP and then edit the Default.jsp for the current theme e.g.

/opt/IBM/Quickr/wp_profile/installedApps/quick/wps.ear/wps.war/themes/html/QPG/Default.jsp

ii) Locate the line that reads: -

<body <%=bidiDirAttr%> onload="if (javascriptEventController) { javascriptEventController.enableAll(); }"
class="quickr"><div id="FLYParent"><div class="themeHeader" id="bannerContainer"><%@ include file="./banner.jspf" %>
</div><div id="pageArea"><%@ include file="./pageHeader.jspf" %>
iii) Change it to read: -

<body <%=bidiDirAttr%> onload="if (javascriptEventController) { javascriptEventController.enableAll(); }"
class="quickr"><div id="FLYParent"><div class="themeHeader" id="bannerContainer">
<!--
<%@ include file="./banner.jspf" %>
--!>
</div><div id="pageArea"><%@ include file="./pageHeader.jspf" %>

e.g. comment out the JSP tag: -

<%@ include file="./banner.jspf" %>

iv) Add the WAI JS tags immediately below the now commented out include statement: -

<!-- BEGIN PORTAL NAVIGATION INTEGRATION -->
8ktT0osSS_CJVA3QR_YJ0RUUA0glfLw!!/?Portal_Page_ID=6_HMGMBB1A00DM90I8N1AKF110O4">
</script>
<!-- END PORTAL NAVIGATION INTEGRATION -->

so that the file now reads: -

<body <%=bidiDirAttr%> onload="if (javascriptEventController) { javascriptEventController.enableAll(); }"
class="quickr"><div id="FLYParent"><div class="themeHeader" id="bannerContainer">
<!--
<%@ include file="./banner.jspf" %>
--!>
</div><div id="pageArea"><%@ include file="./pageHeader.jspf" %>
<!-- BEGIN PORTAL NAVIGATION INTEGRATION -->
8ktT0osSS_CJVA3QR_YJ0RUUA0glfLw!!/?Portal_Page_ID=6_HMGMBB1A00DM90I8N1AKF110O4">
</script>
<!-- END PORTAL NAVIGATION INTEGRATION -->

v) Save Default.jsp

e)Test by navigating to to the Quickr Documents page



Downloading WebSphere Portal 6.1.0.2 for Windows ...

Whilst trying to help a colleague download WebSphere Portal 6.1 for Windows, and realised that I hadn't written it down anywhere ( ! ), so here it is: -

Required CDs and downloadable images to install IBM WebSphere Portal Server v6.1.0.1

Windows (32- and 64-bit) CR7DVML Multilingual eAssembly

W-Setup C1TL1ML Setup CD - BM WebSphere Portal Server Install V6.1.0.1
W-1 C1TQ5ML BM WebSphere Application Server Network Deployment for Windows x86-32
W-2 C1TR1ML IBM WebSphere Application Server Network Deployment for Windows x86-64
W-3 C1U2UML IBM WebSphere Portal Server Server component (Disk 1 of 4)
W-4 C1U2XML IBM WebSphere Portal Server Server component (Disk 2 of 4)
W-5 C1U30ML IBM WebSphere Portal Server Server component (Disk 3 of 4)
W-5A C1U34ML IBM WebSphere Portal Server Server component (Disc 4 of 4)


Note that you don't necessarily need W-1 *AND* W-2, as they are 32/64-bit versions of WAS ND. Therefore, you can download one or t'other, depending upon your requirements.

Enjoy !

Friday, 14 August 2009

Wow, those URLs are friendly, man

Thanks to some excellent help from my friend, Mr Rob E, I just realised where I was going wrong with so-called Friendly URLs in WebSphere Portal.

I'd used the Portal User Interface -> Manage Pages -> Edit Page Properties route to add a Friendly URL to a sub-page within the page hierarchy BUT it just didn't flippin' well work.

For example, I created a Friendly URL named 'Dude" for my sub-page, and expected to be able to navigate to it using the URL syntax: -


but kept ending up at the "home" page.

It's obvious where I'd gone wrong, right ? Wrong !

The trick is that you need to create a Friendly URL for EVERY level of the navigation !

So, in my case, I needed to create a Friendly URL for the Home page ( I called it 'Homey' ). 

Once I'd done this, I was able to jump directly to the page using the URL: -

Wednesday, 12 August 2009

Creating Virtual Portals via templates using the New Site Wizard portlet

Working with some of my yellow brethren to build a real live portal demonstration, using WebSphere Portal, Lotus Connections, Lotus Sametime, Lotus Quickr etc. and I have a requirement to allow a business user to create a new "microsite" from within the portal, without needing to know or care about the bits, bytes or widgets under the covers. I decided to implement this using WebSphere Portal's Virtual Portal feature, where as VP equates to a "microsite".

Therefore, I wanted to get deep into the New Site Wizard portlet which, I was aware, can be customised, via a templated aproached.

In this scenario, I wanted to create a template from an existing portal site - one of my Portal 6.1.0.2 demo VMs has masses of Virtual Portals, including one called Tasting Department - this, with it's coffee-based theme, appealed to me.

In essence, I needed to generate three artifacts from the existing Virtual Portal: -

  • Site structure, including page layout, portlets etc.
  • Site look and feel, based upon a theme policy, created using the Theme Customiser portlet
  • A thumbnail of the site

as follows: -

Generate Site Structure - Export VP Configuration

Use XMLAccess to export the Virtual Portal configuration, using this XML script: -

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

<request
xsi:noNamespaceSchemaLocation="PortalConfig_1.4.xsd"
type="export">

<!-- sample for exporting a page -->
<portal action="locate">
<content-node action="export" objectid="*"/>

</portal>
</request>

and this command: -

c:\IBM\WebSphere\PortalServer\bin\xmlaccess.bat -in c:\work\ExportPages.xml -out c:\work\TastingDepartmentPages.xml -url http://portal.ibm.com:10040/wps/config/TastingDepartment -user
wpadmin -password passw0rd

which generates an XML file ( TastingDepartmentPages.xml ) containing the portal configuration for the Tasting Department VP ( note the URL )

Generate Site Look and Feel - Export VP Theme/Style

Use XMLAccess to export a Theme Customiser Style from portal, using this XML script: -

<?xml version="1.0" encoding="UTF-8"?>
<request xsi:noNamespaceSchemaLocation="PortalConfig_1.4.xsd" create-oids="true" type="export" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<portal action="locate">
<policy-node action="export" label="WebPage" type="theme" path="Tasting Department">
</policy-node>
</portal>
</request>

( where the style name is Tasting Department - replace with your style name )

and this command: -

c:\IBM\WebSphere\PortalServer\bin\xmlaccess.bat -in c:\work\ExportStyle.xml -url http://portal.ibm.com:10040/wps/config -user wpadmin -password passw0rd

which generates an XML file ( TastingDepartmentStyle.xml ) containing the style, in terms of navigation, font selection, images etc.

Generate Thumbnail - A picture showing the look and feel of the site

I used a tool called Irfanview to take a screenshot of the Tasting Department Virtual Portal, as I happened to be running the Portal VM on Windows - other screenshot tools exist , including Shutter on Ubuntu and Grab on OSX.

Having gathered these three things, I then created my own customised version of the New Site Wizard portlet, adding Tasting Department as a template: -

Prepare the New Site Wizard portlet


b) Expand the resulting ZIP file - 1WP1001N7.zip - to c:\temp - I chose to do this using the Java JAR command as follows: -

\IBM\WebSphere\AppServer\java\bin\jar.exe -xvf "\Documents and Settings\Administrator\Desktop\1WP1001N7.zip"

c) This extracts the contents of the ZIP, including the New Site Wizard portlet itself - NewSiteWizard.war

d) Expand the contents of NewSiteWizard.war to a temporary folder - I chose to create a subdirectory called NewSiteWizard into which I extracted the contents: -

mkdir c:\temp\NewSiteWizard
cd c:\temp\NewSiteWizard
\IBM\WebSphere\AppServer\java\bin\jar.exe -xvf c:\temp\NewSiteWizard.war

e) Place the previously exported portal configuration ( TastingDepartmentPages.xml ) in the virtualportals subdirectory of the expanded WAR file: -

copy c:\work\TastingDepartmentPages.xml C:\Temp\NewSiteWizard\virtualportals

f) Place the previously exported theme policy/style ( TastingDepartmentStyle.xml ) in the styles subdirectory of the expanded WAR file: -

copy c:\work\TastingDepartmentStyle.xml c:\temp\NewSiteWizard\styles

g) Place a screenshot of the site ( TastingDepartmentNail.jpg ) in the images subdirectory of the expanded WAR file: -

copy c:\work\TastingDepartmentThumbnail.jpg c:\temp\NewSiteWizard\images

h) Amend the New Site Wizard configuration file ( C:\Temp\NewSiteWizard\WEB-INF\NewSiteWizardConfig.xml ) to include details of the new VP template: -

write C:\Temp\NewSiteWizard\WEB-INF\NewSiteWizardConfig.xml

adding the following lines: -

<site id="4">
<title lang="en">Tasting Department</title>
<description lang="en">Sample departmental intranet Web site primarily made up of coffee ( using Java beans )</description>
<layout-xml>TastingDepartmentPages.xml</layout-xml>
<content-library>Tasting Department</content-library>
<work-thread-class>com.ibm.wps.portlets.signup.tasks.CreateSiteTask</work-thread-class>
<style id="1">
<title lang="en">Tasting Department</title>
<description lang="en">Site with a smidgen of coffee-related content</description>
<style-xml>TastingDepartmentStyle.xml</style-xml>
<style-image>TastingDepartmentThumbnail.jpg</style-image>
</style>
</site>

i) Re-package the New Site Wizard portlet as a new WAR file: -

cd C:\Temp\NewSiteWizard>
c:\IBM\WebSphere\AppServer\java\bin\jar cvf NewSiteWizardUpdated.war *

j) As the Portal Administrator, deploy the new WAR file - NewSiteWizardUpdated.war ( as the original portlet was originally installed on my server, I used the Update Web Module control under Portlet Management -> Web Modules )

k) Deploy the New Site Wizard portlet to a page

l) Navigate to the page, and use the Wizard to create a new portal ...

m) C'est voila, here's the updated Wizard with the Tasting Department template ...


Friday, 7 August 2009

Using the IBM Portlet for Google Gadgets behind a proxy server

During an engagement earlier this week, we had a requirement to deploy the Google Gadgets Portlet into a portal ( WebSphere Portal Express 6.1.0.2 ) where internet access is made via a proxy server.

Now I was aware that the GG portlet had been updated back in late 2007 to support proxy servers, but had never had a need to try it out ..... until now.

I was pleased to find that (a) it worked and (b) that it wasn't totally difficult to configure, although I'd have preferred to do the proxy setup via the doConfigure() method ( e.g. via a portlet menu ), rather than having to hack properties files etc.

However, this developerWorks article: -

BM Portlet for Google Gadgets - Product documentation


was of great help.

In essence, you need to edit a property file - proxy.properties - which is located within the portlet WAR file, and set the following parameters: -

Configuration parameters

Parameter Value

http.proxyEnabled Set to true if the portal server is in a proxied environment, otherwise, false.
http.proxyHost The host name of the HTTP Proxy Server
http.proxyPort The relevant port number of the HTTP Proxy Server
http.proxyCredentialSlotName Name of the Credential Slot that contains the authentication details for the HTTP Proxy Server. The credential slot must be of the type UserPasswordPassive.

and then restart the portlet, via the WAS administration console.

Nice !

Performance-related wierdness with Sametime Contact List portlet

Saw a strange problem whilst at a client earlier this week. We were
using the Sametime Contact List portlet, deployed onto the home page
of a portal ( running WebSphere Portal Express 6.1.0.2 ) and noticed
that the logged-in user would not always display in the contact list
after log on.

We did the normal things that one does e.g. checked that a supported
Java Virtual Machine ( JVM/JRE ) was installed, looked for errors in
the Java console, looked for errors in the portal SystemOut.log and
SystemErr.log files etc. but to no avail. What was even stranger was
that the same portlet functioned perfectly well when deployed onto its
own page, with no other portlets.

Via a process of trial and error, we discovered that the problem only
occurs when the Sametime Contact List portlet is on the same page as
the Lotus Connections Multi-Service Portlet, even if there are only
two portlets on the page.

We checked that we had the most recent version of the Connections
portlet installed, from here: -

http://www-01.ibm.com/software/brandcatalog/portal/lotusconnections/details?catalog.label=1WP1001G6

and there does not appear to be a more up-to-date Sametime portlet
available.

Will dig further and, perhaps, raise a PMR with IBM Support ....

In the meantime, we chose to take the Connections portlet off the same
page, and use the ATOM/RSS portlet to get "headlines" from Connections
instead.

Enabling and Disabling Self-Care in WebSphere Portal 6.1

It is often a requirement to suppress the so-called Self-Care elements of WebSphere Portal, which includes the Sign Up and Edit my Profile links.

The Q&D approach is to simply hack the relevant theme JSPs, but we don't want to do that - we want a far more elegant solution that can be implemented by a non-developer ( like me ).

Using this Technote as source: -


I established that it is possible to enable AND disable these two links via a pair of XML files and a script.

In essence, you use an XML script via the built-in XMLAccess tool to export the relevant elements of the theme policy - this generates an XML file which can then be edited to enable or disable the links.

First, you need to export the theme policy by creating an XML file, ExportPages.xml, containing the following text: -

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

<request
    xsi:noNamespaceSchemaLocation="PortalConfig_1.4.xsd"
    type="export">

    <portal action="locate">
   
        <content-node action="export" uniquename="wps.Login"/>
        <content-node action="export" uniquename="wps.Selfcare"/>

    </portal>
</request>

I used VI to create the file - other editors are available - and I placed the file in /tmp on my Linux-based portal server.

I then ran the following commands to export the relevant elements of the theme policy to another XML file - /tmp/Login_Selfcare.xml : -

cd /opt/IBM/WebSphere/AppServer/profiles/wp_profile/PortalServer/bin
./xmlaccess.sh -in /tmp/ExportPages.xml -out /tmp/Login_Selfcare.xml -url http://portaldemo.uk.ibm.com:10040/wps/config -user wpsadmin -password passw0rd

( note that the URL is /wps/config rather than the more usual /wps/portal )

I then BACKED UP and edited the generated file, /tmp/Login_Selfcare.xml looking for: -

<content-node action="update" active="true" allportletsallowed="true" content-parentref="6_000000000000000000000000A0" create-type="explicit" domain="rel" objectid="6_CGAH47L0082M302B566VO730M6" ordinal="350" type="page" uniquename="wps.Login">

and: -

<content-node action="update" active="true" allportletsallowed="true" content-parentref="6_000000000000000000000000A0" create-type="explicit" domain="rel" objectid="6_CGAH47L0082M302B566VO730E2" ordinal="1400" type="page" uniquename="wps.Selfcare">

( note that the specifics will vary from installation to installation - if needed, merely search for the string "<content-node action="update" active="true""

The flag active="true" means that both links will be displayed in the theme, therefore I simply changed this flag to read active="false" : -

<content-node action="update" active="false" allportletsallowed="true" content-parentref="6_000000000000000000000000A0" create-type="explicit" domain="rel" objectid="6_CGAH47L0082M302B566VO730M6" ordinal="350" type="page" uniquename="wps.Login">

and: -

<content-node action="update" active="false" allportletsallowed="true" content-parentref="6_000000000000000000000000A0" create-type="explicit" domain="rel" objectid="6_CGAH47L0082M302B566VO730E2" ordinal="1400" type="page" uniquename="wps.Selfcare">

Finally, I imported the now-edited /tmp/Login_Selfcare.xml file into the portal, again using XMLAccess as follows: -

./xmlaccess.sh -in /tmp/Login_Selfcare.xml -url http://portaldemo.uk.ibm.com:10040/wps/config -user wpsadmin -password wpsadm1n

C'est voila, the links are no longer displayed in the theme.

Note that I did NOT need to stop/start the portal server; merely reloading the login page.

The benefit of taking a backup of the Login_Selfcare.xml file is that I can very easily switch Self-Care back on by running the import again: -

./xmlaccess.sh -in /tmp/Login_Selfcare.xml.BACKUP -url http://portaldemo.uk.ibm.com:10040/wps/config -user wpsadmin -password wpsadm1n

Note that I'm currently using the PortalWeb2 theme and the default DoubleTopNav theme policy, but this approach should work for the currently active theme.

Wednesday, 5 August 2009

WebSphere Portal 6.1 and Firefox 3.5 together ...

I saw this most interesting warning / error message whilst onsite today: -


( This is not a supported browser for client-side aggregation - Please use a supported browser to view this page in client-side aggregation. )

when accessing WebSphere Portal 6.1.0.2 from Firefox 3.5

Thanks to some timely assistance from Brian and John from one of our IBM Business Partners, it transpired that this is easily resolved by editing the Supported Client list, as follows: -















  1. Log in to the portal as an administrator e.g. wpsadmin
  2. Navigate to the Administration page
  3. Navigate to Portal Settings
  4. Navigate to Supported Clients
At this point you have a choice ( oooo, I love choices ); you can either modify the existing settings for Firefox 3.0 by clicking Edit selected client and changing the User Agent field from from: -





to: -





or add a new client.

The latter approach involves adding various details about the Firefox 3.5 browser, so I took the easy route (!) and merely changed Firefox 3.0.* to Firefox 3.*

Lo and behold, no more warnings :-)

Saturday, 1 August 2009

Lotus Notes on the iPhone

An interesting article from Mark Hughes, showing how to bring Lotus Notes journal, To-Dos etc. to the iPhone

http://dominoextnd.blogspot.com/2009/07/preview-of-my-iphone-web-app-for.html

This is rather timely as I'm currently working with a client who has some similar requirements for Notes, Portal, Connections, Sametime etc. on the iPhone.

Nice !

Jenkins and the Case of the Missing Body

I was repeatedly seeing this: - java.lang.IllegalStateException: There is no body to invoke with a Jenkins Pipeline that I was executing...