Lotus Connections Communities and the 64 character limit in Quickr
October 6, 2010 Leave a comment
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>
<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).



