IBM Connections 4.0 is 64 bit only

This weekend we’ve been upgrading to IBM Connections 4.0 on a number of systems and for one we are having problems. The problem is that it’s a small demo environment which is running on 32 bit Windows. The new release is only supported on 64 bits and the DBWizard will actually not run on 32 bit as the JVM supplied with the wizard is 64 bits only. Whether you can run the wizard on a 64 bit machine and connect to a 32 bit DB2 instance remains to be seen. So now you know…

IBM Connections 4.0 Detailed System Requirements for Windows

Reusing IBM Connections Atom date formatting for custom widgets


In a recent IBM Connections project I needed to display dates in the same as IBM Connections does it that is full dates sometimes but also using “yesterday”, “today” etc. Plus it needed to cater for the fact that the customer might at some future point in time allow the user to change the UI language. Coding this is tedious and would take quite some time so I wanted to figure out if IBM Connections had some libraries that could help me.

And it did.

By messing around in Firebug I found out that the way IBM Connections does it is by using a nifty JavaScript object called lconn.core.DateUtil.AtomDateToString. This object is actually a helper object that does two things – first it is able to convert an Atom date/time string (such as 2012-08-01T12:44:42.713Z) into a JavaScript Date object and then format it according to i18n settings and the language set in the UI.

Once I knew what to look for in the IBM Connections code it was simple enough. They do it by adding a hidden span-tag (CSS class “lotusHidden”) with a special tagging CSS class called “formatDate” as shown below.

<span class="formatDate lotusHidden">
  2012-08-01T12:44:42.713Z
</span>

Then using dojo.query they locate the nodes with the formatDate CSS class, use the utility class to convert the Atom date string and then remove the “lotusHidden” CSS class to make it visible.

// expand dates
if (lconn && lconn.core && lconn.core.DateUtil &&
lconn.core.DateUtil.AtomDateToString) {
   dojo.query(".formatDate", root).forEach(function(item){
      item.innerHTML=lconn.core.
         DateUtil.AtomDateToString(item.innerHTML);
      dojo.removeClass(item,"lotusHidden");
   });
}

Customizing the feature titles for IBM Connections mobile plus new URL handlers which are (almost) useful

Luis Benitez already blogged this (How To Customize the IBM Connections Mobile App for iOS, Android & BlackBerry) but I think it is so important that it bears mentioning again. With the latest update to IBM Connections (version 3.0.1.1 CR2) you know have the option to customize the mobile apps using a new mobile-config.xml file. It allows you to configure settings to do with login and the general configuration of the app. An important point is also that it allows you to change the title of the features in the app which is great if you have change feature names in the web UI. We have customers that change some of the Danish translations (especially for Community because they feel that the Danish word really isn’t representative of the feature) so making that feature name change apply to the mobile UI’s are great.

To install the fixes simply download the IBM Connections 3.0.1.1 CR2 jar-files and follow the steps from the technote (technote 1595154) to update IBM Connections. Please note that you need the newest update installer to perform the update.

As if this wasn’t enough Chris Reckling recently blogged (Custom URLs in IBM Connections Mobile Apps) on the new URL handlers that were added to the Connections mobile apps for iOS and Android. This means you can add a link in an email to take you directly to Profiles or a profile as well as Communities or a community. The URL’s are easy to use and pretty straight forward – to open John Does profile one could use ibmscp://com.ibm.connections/profiles?email=jdon%40example.com from anywhere on the app. Pretty neat.

There’s also a URL handlers to configure the app for a user to allow for easier set up of the app.

The URL handlers are great but I think it is too bad they didn’t add support for all features now they were at it. For instance having a direct link capability into Activities would be killer as it would allow you to add links to the email notifications that would take you to the mobile app instead of the web UI. Would have been soo cool and would have been something I could use now – having the Communities part is nice but I receive way more Activities notifications by email so a link capability there is worth much more to me. I hoping it will make it into the next update.

IBM still in the lead

I was pleasantly surprised to again see that IDC for the third year running is ranking IBM as the leader for enterprise social software. As a IBM business partner we too are seeing the increased demand for this transformational software although implementation and realization of the potential is oftentimes hard in smaller companies without the budget to drive adoption with community managers or evangelists. It will be interesting to follow this market and see when and if competitors will catch up. For now – good job IBM!!

Using the IBM Connections API from other languages using custom certificates

I was reading up on some stuff in the IBM Connections REST API during the weekend and came across a post titled Using IBM Connections API in different programming languages on how to use the REST API from other languages than JavaScript from within IBM Connections. The approach there is very nice and quite valid but it fails to mention what to do if the SSL certificate of the API endpoint either isn’t trusted or isn’t certified using a “known” root certificate. In this case “known” means to the Java runtime you’re using or the runtime of any other language for that matter. Here I’m only dealing with Java though.

By default the java.net classes will not allow a SSL connections to a server using a unknown/untrusted certificate but there are ways around that. Of course the best is always to make sure that the certificate of the server may be validated by the Java keystore (including intermediate certificates) but for testing – or if you know what you’re doing – simply ignoring the certificate test can be beneficial. Below is some code showing how to configure the SSL runtime to ignore the certificate and hostname checks. The code is a static configuration method and I deem it pretty readable. The code allows *all* certificates but could pretty easily be locked down to be more restrictive if need be.

private void enableSelfSignedCerts() throws Throwable {
  TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
      public java.security.cert.X509Certificate[]
        getAcceptedIssuers() {
        return null;
      }
      public void checkClientTrusted(X509Certificate[] certs,
          String authType) {
      }
      public void checkServerTrusted(X509Certificate[] certs,
        String authType) {
      }
    }
 };

 SSLContext sc = SSLContext.getInstance("SSL");
 sc.init(null,
         trustAllCerts,
         new java.security.SecureRandom());
  HttpsURLConnection.
    setDefaultSSLSocketFactory(sc.getSocketFactory());

  // Create all-trusting host name verifier
  HostnameVerifier allHostsValid = new HostnameVerifier() {
    public boolean verify(String hostname,
      SSLSession session) {
      return true;
    }
  };

  // Install the all-trusting host verifier
  HttpsURLConnection
    .setDefaultHostnameVerifier(allHostsValid);
}

http://./files/prettyprint/prettify.js

prettyPrint();

Bookmark to IBM Connections bookmarks from iOS

Bookmarks (aka Dogear) in IBM Connections is great and IBM provides a nifty bookmarklet to allow easy bookmarking from your browser. I couldn’t however make this bookmarklet work in Safari on iOS so I decided to look into it. And I’m happpy to say I got it to working with some inspiration from the Instapaper bookmarklet. The way it works for me now is that I have the bookmark bar visible on my iPhone and iPad and when I need to bookmark I use the bookmarklet which redirects to the IBM Connections bookmark page and back to the original page once done. Super easy and it works great.

Here is how to make it work.

  1. Open Safari and make a bookmark to a random page but be sure to place it in the bookmark bar (the bookmark bar can be made visible all the time in Safari options).
  2. Edit that bookmark and change the title to something that makes sense (I use “IV Dogear”).
  3. Clear the location field and paste in the JavaScript code from below replacing the hostname (lc.intravision.dk) with a hostname applicable to you.
  4. Save the bookmark and start bookmarking.

pre.wrap {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}

javascript:function%20abcdefg()%7Bvar%20h='http://lc.intravision.dk/dogear';var%20d=document;var%20b=d.body;var%20e=encodeURIComponent;var%20u=h+'/bookmarklet/post?url='+e(location.href)+'&title='+e(d.title);location.href=u+'&inframe=true&ver=';%7D;abcdefg();void(0);

File not found when using IBM Connections Media Gallery

At a customer users were reporting that the media gallery in IBM Connections did not work. The error they were seeing was aneror message in the UI telling them that the file they just selected from their file system did not exist. Very strange. After diagnosing the issue it was caused by the media gallery not having been set up correctly as the default file types wasn’t imported into the configuration. Why these defaults are not set automatically is the topic for another day.

There are two templates which determine the file types you can upload
by default. You should also have these in your AppSrv01 profiles, or your
nodes, etc. The step is done by following the instructions in the info center.

Disabling HTTPS communication between IHS WAS Plugin and WAS servers

Many people believe that you have to have multiple servers to run IBM Connections – this simply isn’t true! There’s no reason why you cannot run everything of the same server which is what we do here at the office. When you do that, if all servers are inside the firewall – or if you simply doesn’t care about the security that it provides – you can disable the IHS WAS Plugin from communicating with the WAS server using SSL. A benefit from this is among other things that you do not have to care about certificates between the IHS WAS Plugin and the WAS server which simplifies installation and management.

Any way… For a while I’ve doing this configuration change manually directly in plugin-cfg.xml (by commenting the HTTPS transport out) until it bit us the other day. So I finally decided to find a proper, correct, solution. And of course there is a way to do this and it’s very well documented in IBM Technote 1452735. So if you want to make that change go ahead and do it – I did and it’s working flawlessly.

BP207 – Easy as Pie – Creating Widgets for IBM Connections

Below is my presentation from Lotusphere 2012 on creating widgets for IBM Connections. There’s also a PDF version available.