Lotus Connections Communities and the 64 character limit in Quickr

My colleague Ben Williams whilst working on Quickr and Lotus Connections Community integration has come up with a useful tip regarding the length of Place names when creating a Quickr Place from a Lotus Connections Community.

Communities that have a long name can breach the 64 character limit for Place names in Quickr. If this is the case you get the error below in your web browser when it tries to create the Teamspace.

com.ibm.tango.exception.ManagedAppFailureException: com.ibm.tango.exception.TangoException: 404 – Not Found
com.ibm.lconn.comm.quickr.QuickrMemberSynchronizer.throwManagedAppUpdateFailedException(QuickrMemberSynchronizer.java:500)
com.ibm.lconn.comm.quickr.QuickrMemberSynchronizer.createApplication(QuickrMemberSynchronizer.java:488)
com.ibm.tango.internal.service.TangoServiceImpl.createManagedApplication(TangoServiceImpl.java:3523)
com.ibm.tango.web.ui.actions.CommunityAddSubmitAction.doActionExecute(CommunityAddSubmitAction.java:233)
com.ibm.tango.web.ui.actions.TangoAction.execute(TangoAction.java:137)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1143)
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1084)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
com.ibm.tango.web.ui.servlet.LastLoginFilter.doFilter(LastLoginFilter.java:99)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.tango.web.ui.servlet.ApplicationContextFilter.doFilter(ApplicationContextFilter.java:162)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.tango.web.ui.servlet.UuidMapperFilter.doFilter(UuidMapperFilter.java:114)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.tango.web.ui.servlet.PromoteCachingFilter.doFilter(PromoteCachingFilter.java:64)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.tango.web.ui.servlet.RequestStatisticsFilter.doFilter(RequestStatisticsFilter.java:57)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.lconn.core.web.auth.LCUserDataConstraintFilter.doFilter(LCUserDataConstraintFilter.java:84)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.lconn.core.web.request.HttpRequestFilter.doFilter(HttpRequestFilter.java:77)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.tango.web.ui.servlet.Utf8CharEncodingFilter.doFilter(Utf8CharEncodingFilter.java:63)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.lconn.core.web.util.lang.I18NFilter.doFilter(I18NFilter.java:203)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:587)
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:748)
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
 
 
The limit was put in place on Quickr to stop issues with the Quickr Connector (link to a technote explaining why shown below).

Title: “File could not be found” error when open Microsoft Office file through Connectors
Doc #: 1370502
URL: http://www-01.ibm.com/support/docview.wss?uid=swg21370502
 
 
The name of a Quickr Place can become very long quite quickly because when it is created from a Community it is prefixed with  “teamspace_20for_20″ and any spaces between the words of the Community name are converted to “_20″ (screen shot example below).

You can test this from within Quickr and you’ll see the following error:


 
 
There isn’t a way  at the moment to remove “teamspace_20for_20″ but you can configure Quickr not to turn spaces into “_20″ by making a change to the qpconfig.xml and restarting HTTP. This will save characters and stop end-users getting the hideous and confusing error within Communities.

use_short_place_name
====================
attribute         value    default  description
=========         =====    =======  ===========
enabled           true     no       Shorten placenames. Don’t try to create special characters in placename.
false            yes              Try to display special charcters (e.g. %20 -> _20)

<!– =============== START OF SAMPLE =================
<webservices enabled=”true”>
<atomws_response type=”get” />
<connector_install_url>http://server.lotus.com/qkrconn.exe</connector_install_url&gt;
<connectors>
<add_place_action enabled=”true” />
<views_include_rooms enabled=”false” />
</connectors>
<connection_integration>
<place_creation>
<show_members_folder_in_toc enabled=”true” />
<use_short_place_name enabled=”true” />
</place_creation>
</connection_integration>
</webservices>
=============== END OF SAMPLE =================== –>

 
 
After making the changes Quickr Places created from a Lotus Connections Community will have shorter names (screen shot example below).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: