Who deleted my Connections community?

I was asked by a customer who had deleted an important community. The SystemOut.log was of no help but DB2 holds the information I am after.

In the SNCOMM database is a table called EVENTLOG which the below screen shot was taken from using DBVisualizer. The community I focused on in my test environment is highlighted under COMMUNITY_UUID.

The screen shot shows when the community was created and then later on when Ben Williams (defined in the CREATED_BY column) added Joe Bloggs as a member (community.membership.added) and then when Ben changed Joe to be an owner (community.membership.updated).

The last two entries in the table including the important (community.removed) were created by a different ID as defined in the CREATED_BY column. You can compare this ID with the SNCOMM.MEMBERPROFILE table to compare with the MEMBER_UUID as shown in the second screen shot.

I did not have access to such a tool for the customer but got lucky by finding a bookmark referencing the deleted community which has the COMMUNITY_UUID in the URL. If you do not have the UUID then you would need to search the EVENT_METADATA column using a SQL statement like select * from sncomm.eventlog where event_metadata contains ‘community name’ BUT to run a contains statement the database needs an index unlike a like or = statement. You may want to engage your DBA at this point?

As I had the UUID I ran select * from sncomm.eventlog where community_uuid=’c436e443-bc78-4540-8907-af2a0f71c9c7′ > /tmp/deletedcommuntiy.txt which provided me with all the events similar to my screen shot below. I then ran select * from sncomm.memberprofile where member_uuid=’65977288-b975-4aba-bd47-c456a2eeebe5′ to give me all the details of the guilty party or just select display from sncomm.memberprofile where member_uuid=’65977288-b975-4aba-bd47-c456a2eeebe5′ for the display name.

“The recipient list is too long for the browser to pass to your e-mail client” when sending an email to community members

A user was trying to send an email to a community of circa 350 users and was getting the error “The recipient list is too long for the browser to pass to your e-mail client.”

I looked at the “maxRecipients” value in the notifications-config.xml and tried to make sense of what that value means.

The Connections wiki states “The <maxRecipients> element defines the maximum number of people to whom you can send a notification at one time. The default value for this element is 50, but you can change it.” but the Configuring notifications in IBM Lotus Connections 2.0 describes it as “where the maxRecipients element parameter is the maximum number of recipients and is fixed for each message. It is recommended not to use more then 100 recipients for each message (when the parameter is not specified, the default value is 100). Note that, if we set this parameter to 20, and we send a notification to 100 recipients, the notification system will actually send 5 messages with 20 recipients each.”

I decided to test by decreasing the maxRecipients value on a test server (to avoid spamming people) and enable trace to watch what happens when the email is sent. This was done by:

  • cd /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/
  • ./wsadmin.sh -lang jython -user <> -password <>
  • execfile(“connectionsConfig.py”)
  • LCConfigService.checkOutNotificationConfig(“/tmp”,”ConnectionsCell01″)
  • Change <maxRecipients> in /tmp/notification-config.xml to 2.
  • LCConfigService.checkInNotificationConfig(“/tmp”,”ConnectionsCell01″)
  • exit
  • Restart Communities.

Keep in mind you need to check out and in using the SAME wsadmin session.

I then enabled runtime trace using com.ibm.lotus.connections.core.notify.*=all which wasn’t helpful, it only showed that the email was sent to four recipients.

I then ticked “Enable debug mode” in the Connections ISC – Resources – Mail – Mail sessions – LC Notifications and tailed News SystemOut.log.

When repeating the test I saw that two separate emails were sent, each email sent to two recipients (represented by the maxRecipients=2 value.

It turns out that the user provided me with incorrect information. The error seen in the screen shot was actually caused by clicking on the link in the top left which is because Connections uses “mailto://” URLs to build the distribution list and with a community of this size the URL is large. In fact it is larger than the limit most web browsers can handle which is 2000 characters so the web page throws an error.

If the user clicks on the send button to use Connections and NOT their email client the email should be sent. This is a problem with the service integration bus which is causing various messaging problems which is used. In this case Communities needs to interact with News (which sends the email notification) and Communities also needs to get data from Files, in the Communities SystemOut.log I saw the following exception which leads me back to their problems with their SIBus which I blogged about previously.

[11/04/12 16:10:12:120 BST] 0000003d JMSPublisher  E com.ibm.lconn.events.internal.publish.impl.JMSPublisher publishEvent
CLFWY0151E: A JMS Exception occurred when publishing an event with ID 3e07f8ff-52d6-4dce-8d92-da51538f4cc2 to topic COMMUNITIES/NOTIFY/communities.notification.broadcastmail
javax.jms.JMSException: CWSIA0067E: An exception was received during the call to the meth
od JmsMsgProducerImpl.sendMessage (#4): com.ibm.wsspi.sib.core.exception.SILimitExceededException: CWSIC8007E: An exception was caught from the remote server with Probe Id 3-008-0007. Exception: CWSIP0251E: The destination connections.events on messaging engine filescluster.000-ConnectionsBus is not available because the high limit 50,000 for the number of message
s for this destination has already been reached…

Until the problems with their SIBus are resolved the user will not be able to send their email.

com.ibm.bsf.BSFException when running a wsadmin script

This was seen the other day when attempting to execute a Connections script once connected to wsadmin:

WASX7015E: Exception running command: “execfile(“/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/bin_lc_admin/wikisAdmin.py”)”

; exception information:
 com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
  File “<input>”, line 1, in ?
  File “/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/bin_lc_admin/wikisAdmin.py”, line 19, in ?
NameError: java

This is because the default langauge for wsadmin is JACL and the script is JYTHON.

Ensure when starting the wsadmin utility, “-lang jython” is added to the command line.