Sample Event SPI Implementation in IBM Connections

IBM Connections 3.0.1 comes with a set of service provider interfaces (SPIs) that can be used to extend Connections functionality:

– Event SPI: Allows third parties to consume event data generated by IBM Connections
– Seedlist SPI: Integration of custom search engines with Connections
– Service SPI: Access to the applications running in your Connections deployment
– User SPI: Access information about the users in your Connections deployment

The product documentation describes the functionality and how to deploy custom SPI implementations in detail. SPIs are implemented using Java and then deployed to WebSphere. Check out for example the Java doc of the event SPI to get a list of available events that you can listen to.

There is a nice article about the event SPI which uses a sample scenario to explain the functionality. When users write email addresses in comments on files, these people get automatically email notifications. You can download the sample code.

In my sample Connections extension I’ve implemented a mechanism to automatically add persons to Notes database ACLs (access control lists) when community moderators add people as members. This is important so that end users don’t have to manage ACLs and community memberships in separate places when XPages is used to extend IBM Connections.

My event SPI implementation catches the community.membership.added event, reads the external id of the new member and invokes an XPage via URL request. The XPage then simply adds this person to the ACL as author.

Please note that this is only a sample for how to use the event SPI, not the real solution for how to synchronize community memberships and ACLs. Our idea is to use Tivoli TDI instead which adds people to a group in the Domino directory and that group is then used in the ACL.

When I tried to deploy my SPI implementation I ran into a ClassNotFoundException. After some research I found some tips for WebSphere classloader issues. I don’t know which exact change made it finally work but here are the things I changed:
– I put the jar file with my SPI implementation in a shared directory on my RedHat operating system (/mnt/shared/LotusConnections/eventHandlers/spitest1.jar)
– I assigned maximal access to this file
– I compiled with 1.5 (rather than my default 1.7)