Category Archives: IBMConnections

A solution for Quickr clients who just want to keep working…

keep-calm-and-keep-working-32As mentioned below, IBM Lotus Quickr was discontinued in 2013 and its end of support date is now set at September 30, 2016. Anyone renewing maintenance from this month on will have a decision to make in the near term about whether it’s worth the investment, what is next, and what solution fits your situation(s) as a replacement for the longest-lived web-based document management solution out there. That’s marketing speak for good, but long in the tooth.

Here are my general thoughts on your replacement options. A full analysis is always recommended, of course, before you dive into any of these. Here you go:

  • If you have customization or applications, they will need to be rebuilt in a target system of your choosing. The smoothest path is Domino, but if you’re not a Domino shop it’s time to start planning the development effort.
  • If you’re ready to retire your Quickr places but need the data, SNAPPS has a solution to export places to the file system. (
  • If you are a Connections customer and using Connections Content Manager (CCM), IBM has a migration tool to move Libraries. It takes significant expertise to run and only brings over limited content, but it’s a start.
  • If you are a Connections customer and not using CCM, or would rather use Files and Activities, a custom solution for migration is the way to go. Contact SNAPPS for information.
  • If you are not a Connections customer, or are and don’t like the limitations in CCM, and either do or don’t have Domino, DOCOVA has a new offering for you. DOCOVA is a fully featured document management system with migration paths from Quickr, and even a path to a non-Domino version. This path lets you keep working with your content at a high level of security, customization and robust management. I’ve included their announcement video below for reference. Enjoy!

All good things must come to a late middle: Quickr End of Support Update

QuickrLogoTinyAs prognosticated in a previous post (yay for alliteration!) IBM has announced the withdrawal of support for Quickr:

Effective September 30, 2016, IBM® will withdraw support for the following part numbers licensed under the IBM International Program License Agreement:

Program number Program release name

So, start your clocks (if you hadn’t already in April 2013 when marketing was withdrawn)! A year for hundreds of companies with hundreds of thousands of users to plan and execute on a migration strategy, if you worry about such things as supported software. In some cases (such as regulated companies, SarBox, etc.) you have to, and will have quite a bit of planning ahead. High level, you will have to concern yourself with:

  1. Analysis of your current environment and usage patterns
  2. Quantification of customization, task and calendar patterns, and priority level
  3. Assessment of other in-house document solutions, or extranets if that is your use case
  4. Evaluation of available options from third parties – Microsoft, IBM, DOCOVA, custom
  5. Retirement / attrition planning and communications
  6. Development of a migration plan and communications
  7. Acquisition of licenses for a replacement platform / solution
  8. Technical services for migration of maximum available data
  9. Training and user adoption strategies on the new platform

Just another year in the life of a CIO!

CRs and HFs and FPs, oh my…IBM Connections 5.0 CR1 is released

Connections LogoFor those who don’t know, are curious, and do care…I know the numbers are getting smaller as I go here…:

HF: “HotFix” – which in software terms generally means a specific fix for one problem, given out to customers on an as-needed basis and generally rolled up into other more comprehensive groups of fixes.

FP: “FixPack” – what it sounds like, a package of fixes (some of which may have been deemed HotFixes), that when released is supported. Sometimes, a FixPack will increment a product release number, generally in the fourth position (e.g. Lotus Quickr

CR: “Cumulative Refresh” in the Connections world anyway is a release of a combination of fixes (that would otherwise constitute a FixPack) and new features (not enough for a new product number, but still…). For IBM Connections, it’s fairly similar to Domino’s release numbering scheme though, so it can be thought of as similar in scope. IBM Connections 5.0 CR1 is not dissimilar to the concept of Domino 9.0.1 (vs. Domino 9.0). Cumulative Refresh also sounds nice, like something you would get when there’s a light rain falling on you in an Irish meadow.

Alright then…now that we have our two letter acronyms covered, here’s what is new in CR1:

  • Restrict Read Access on individual files or folders in a Linked Library (CCM): Blocking Read Access allows users of Connections to remove the read access of everyone (minus community owners) within a community. A user can Block Read Access on the document summary page of files/folders. Blocking read access works on both files and folders.
    This is kind of a big deal in the Quickr migration scenario of the future (CR2 perhaps), since we really needed more granular security and to be able to restrict read access better.
  • Support @mentions in a Linked Library (CCM): This function allows @Mentions in comments on documents in libraries.
  • Metrics Reports for Linked Libraries (CCM): Metrics reports are now provided for Linked Libraries in a Community.
  • Open Questions and Answered Questions tabs have been added for Forum Topics: This function allows a user to view the Open Questions and Answered Questions in either a Standalone or Community Forum.
  • Launching a Video Player on supported file types in the Activity Stream and Embedded Experience: For ActivityStream entries based on Status Updates or Files where a supported video file format is present, there is now the option to play the video directly inline on the ActivityStream and from within the related Embedded Experience.
  • Previews of non-image filetypes in the Activity Stream and Embedded Experience: When IBM Docs or the File Viewer document conversion service is configured with Connections, it will automatically generate a front page thumbnail image of supported document types. Like your Mac.
  • Monthly repeating Events are now supported in Community Events: This function allows repeating Monthly Events to either occur monthly on a specific date or a particular day of the month.
  • Abbreviated Business Card for external users: Visitors who are not part of your organization (external users, introduced in Connections 5.0) that enter a community will see an abbreviated business card with no links on employee names.
  • Performance optimization updates for the Activities Seedlist: This function optimized and improved performance for searching in Activities.
So go get it. Knock yourself out.

Been a while since I posted on a fix, or at all for that matter

So IBM released Fixpack 43 for Quickr Domino yesterday, and as I’ve not posted on the topic since Fixpack 36 more than a year ago…well just a reminder that you should be updating your servers with fixpacks as frequently as possible. With Quickr being EOM’d last year and with support set to go through April 30, 2016 (extensions available for $$$$ through April 30, 2019), you can imagine that the support organization at IBM is easier to work with when you’re on the latest version and fix.

Whoa. Just thinking about that last date. As of April 30, 2019, Quickr will be a 20-year-old (plus one month) web-based collaboration product. Too bad they’re letting it go, I’d have bought it a beer one year later.

Also new with Fixpack 43, IBM has baked in the new qptool migration code to allow you to migrate some content to Connections Content Manager. More on that later, though you can go read my Engage 2014 presentation that covers the topic including warnings and caveats.

That said, I thought I’d share my setups with you — the ones I run in development and staging, and the ones my clients now run.

  • Domino 8.5.3 FP5 (supported, just not documented FP level)
  • Quickr 8.5.1 FP42/43 specific to Domino 8.5.3
  • LDAP of some sort, as I never run Native Domino authentication
  • Internet sites documents are used, so I can compress outgoing files like CSS and JS widgets
  • Transaction logging on, circular, 4096 MB
  • DAOS on, to a separate drive, for attachments over 64k, don’t get greedy
  • View rebuilds on a separate drive
  • A few hundred other settings, OS performance tweaks, antivirus exclusions, etc. appropriate to the environment.

So here’s a list of what IBM has done with Quickr Domino in the past year, in case you’re interested. About 10 of these fixes are “mine”.




Under certain circumstances, not all users get migrated to Connections when migrating to Connections.




Under certain circumstances, anonymous preview of a document could result in an “internal server error” followed by a “file type not supported” error.

*please note, this fix requires the notes.ini setting QuickrAnonPreview=1.




Notify those responsible when tasks are assigned and completed setting when the task is in a room does not notify the assignee.




When browser is set to Norwegian, cannot select a date from either Calendar or Tasks.




Using LDAP to Domino, adding a flat group using “qptool addmember “ will result in notifications being sent to this group to fail.




Customer specific issue : Server Crashes on a  Room database when “qptool replicamaker” runs.





After upgrading from 8.2, some documents are displayed in a small area of the page making it unreadable.




When using Internet Site Documents against Domino Native, customer has problems uploading Emails and Files via Notes Connector



Under certain circumstances, a place manager or owner could be prompted with a basic authorization dialog when deleting members from a place.




Preview of a specific document in a customer’s place produces an error “File Type Not Supported”.



Added support for Microsoft Office 2013 in the ActiveX Upload control.




Calendar entries in a Room get sent to all calendar subscribers even if a user doesn’t have access to the Room.



When using Domino Native authentication and have added multiple groups to a Folder ACL, when saved, may lose one of the groups.





Issues with Swedish characters when creating new users and passwords.




Attachment name with apostrophe displayed incorrectly when ActiveX round trip editor is enabled.




Un-reproducible Domino server crash with the top call of the crash stack “nquickplace.QuickrWS::ClbDynamicDateValue::~ClbDynamicDateValue”



When saving a Microsoft Office document based on a custom form that has the option to only save the document in the Index, the document is saved to the Index, but also appears in the Table of Contents for that place/room. 



Some documents in a folder are not displaying in connectors when a checked out document is locked by a user whose name contains Unicode characters.




The Quickr Domino server my crash when clicking the Members link when using EMM.




Under certain circumstances, after creating a new Page, the About tab does not display.



Under certain circumstances, in a Folder, the menu New Folder and Folder Options are lost once a page is added to that folder.




When a user is a Reader in a Folder protected by ACL and that user chooses Place Actions / New , they are prompted with a basic authentication dialog.




In Connectors, a user might not see all places they are a member of when in the Add Place dialog.




Quickr modifies the notes.ini variable $h_hostname with every request.



When entering a place, if there are many items in the TOC, the TOC doesn’t scroll to the top automatically.




When selecting [All Members] as the membership of a room, those members do not get a link to the room in the TOC.




For places that still use the Drag and Drop applet, using Java 7 greater than update 21 prompts a 2nd time saying that the jar hasn’t been signed.




When the Quickr Server has a different date format then the browser, Advanced Search By Date may not return the correct results.




When using SiteMinder, pressing Logout may not perform the actual logout functionality.

(see fix MBJZ8SD9SL in “Additional Information for special fixes” section)




When within a Forum or a Forum Topic, choosing Place Actions -> New -> {document type} the Location will be in the Forum or Topic, it should be Library.




Some inbound SMTP messages from Outlook clients do not display properly in Quickr.




When a Place Manager opens a document checked out by another user in Connectors, the original document opens and any changes get saved back removing the other user’s changes.




Business cards do not display when hovering over the user’s link in a Room.




What’s New HTML email notifications do not contain hyperlinks to the document

(see fix PPOR98TL2B in the “Merging Notification Template Updates” section)




In Internet Explorer 8.0.7, Quickr Folders display incorrectly.




When viewing a page with an attached .xlsm file, it is referenced as an “Unknown Document Type”.




Using a specific customer place, Quickr on Domino 853 will crash when retrieving the contents of the TOC via Notes Connector.





Certain Swedish characters are not displaying properly in Email notifications.




Emails received into Quickr from Hotmail are not displayed correctly due to incorrect iframe height.




Italian translation fixes.




In the Versions tab of a document, accent marks are not maintained in the Summary of Changes for each version.




Issues with a customer specific Imported HTML document.




With the Quickr server set to a European locale and the qpconfig settings <allow_editing_mailed_in> and <attachment_times_for_mailin> are set, uploading a file through connectors causes the server to crash.





Advanced Search by Date when Quickr server is set to a European locale results in an error on the Domino Console and no search results.




Updates to the qp2 ActiveX control.




On Linux, the Quickr server may crash when entering 208 char or more characters in an input field.

(see fix RSOI96ND6D in “Additional Information for special fixes” section)




Under certain circumstances, an external user notification does not contain a link to the place.




In room membership, a group cannot be added or expanded when the group name contains a # character in the middle of the name.

(see fix DTRR8LJM53 in “Additional Information for special fixes” section)




Using the Quickr API, the RemoveMember call no longer functions.




When sending a link, ampersands (&) displays incorrectly in the notifications.




When an admin user publishes content from a Quickr place to a Filenet Custom Library, the document metadata gets transferred but the content is truncated to 0KB. The actual document appears in the Filenet CE Library, but it has no actual content.




In FireFox when going to the next page of a multiple page search result, the page is never displayed.



In certain situations the Quickr server may crash not providing call stack information in the NSD, the situation is known as “truncated stack”.




Under certain conditions downloading the attachment to an Imported Office Document sends the generated html file instead of the actual document.

(see fix MMOI95JQ49 in “Additional Information for special fixes” section)





Quickr 8.5.1 on Domino 8.5.3 does not acknowledge the qpconfig parameter <session_token_timeout>




When sending a Notification, if there are invalid email addresses, the list of invalid email addresses is presented as an error in the Notification dialog.  The user can then fix the invalid addresses and send again without knowing that the valid email address actually did get sent.

(see fix DWHN94PDUS in “Additional Information for special fixes” section)




When a document has many versions, only the first 100 are displayed.

(see fix MMOI92EK53 in “Additional Information for special fixes” section)



Certain non-English characters cause the Members Page to show the user as No Access even though they do have the correct access that was assigned.




Fix several Italian translation issues.




Domino server crash when cleaning up temporary files.




Sending mail to a Group which contains a subgroup with an Internet email address results in mail being sent twice to some users

(see fix  DAMC95QHQF in “Additional Information for special fixes” section)




When sending a Link or Notification from a Folder or Document protected by ACL and selected to send to all members of the place, the mail would go to all members, even though they did not necessarily have rights to the Folder or Document.




Using ‘qptool changemember’ or Adminp, changing a Group name does not work as expected.




A Room can not be opened from a link in the What’s New Page if the LotusQuickr context root is changed.




“Error Opening Document – The Local File Is Locked And Cannot Be Replaced.” error message when trying to open the same file multiple times through Connectors when using a Custom Form and versioning.




When using ActiveX and create a Page, select to send a notification, click “Save and Check In”, the Attachment ActiveX box displays over the Notification dialog.




‘qptool changemember’ clears the Policy assigned to a Place.






Folder security in Rooms does not always work as expected.




HTTP 404 error occurs when downloading an Imported File Document that has a single quote in its filename.




If a Document based on a Custom Form has a Date Popup that is left blank, the Connectors show the date properties as 12/31/1969.




Issues creating a Calendar Entry on the day before and the day Daylight Saving take affect.




When editing Site Administration\Other Options page, an orphaned draft document gets saved if you close browser before saving or cancelling your changes.




Statistics for Templates are missing from Place Administration / Statistics.




You will get a javascript error when your LotusQuickr directory is differently named and you delete a Place.




Room entries and updated place statistics do not work as expected when in a clustered environment.




When using Domino Native Directory, the Notification option “Notify All Members Of This Place” does not send to a user whose mail system is Internet Mail.






When creating a Custom Form with a field named with a long title (more than 200 characters), when filling out the form, may crash the server.


*note: For existing Custom Forms with long Field titles (title’s length is greater than 230 characters), the field should be deleted and re-added.





The “What’s New” page is blank, even when there is new or updated content after a room is created.




Send Notification checkbox is not unchecked after Inherit Membership is de-selected when creating a Room.




The Attachment field is not mandatory when creating an Imported File document when using ActiveX.




When adding members to a document,  focus is lost in the Filter field if you type and then wait for the results and then continue typing




When selecting Notify from the Members screen / More Options dropdown, the notification screen will not notify you if you don’t put any names in either the to/cc/bcc fields and then send.




Fix a Server crash where the crash from the NSD happens in HuUiDoc::RestoreAuthors.




The qpconfig.xml option <session_token_timeout> does not work correctly.

Note: this issue is specific to Quickr 8.5.1 on Domino 8.5.3




An email delivered to a place that contains no paragraph break may not wrap or scroll in the rich text editor.




All-day Events created in the Calendar shows on the day before the event in the recipient’s Notes Calendar.




The text for the Show Member Link option within the Customize/Basics is inconsistent between the main room and sub-rooms.




Imported HTML documents from older versions of Quickr are changed to Uploads during migration to Quickr 8.5.1.




When configured, the ADMINP task does not remove Place Members on a Quickr server configured with an LDAP directory.




Mailed-in Documents with multiple attachments do not display correctly from the browser client.

(see fix DAMC92MNQV in “Additional Information for special fixes” section)




Fix several Italian translation issues.




When the qpconfig.xml setting for versioning is set to implicit, the Replace File dialog does not have the versioning option checked.




Fix a Server crash where the crash from the NSD happens in CGI::DecodeURLEncodedContent.




Fix a Server crash where the crash from the NSD happens in NBlock::Unlock.


Just wait. A Second!

IBM Connect 2014Second session that is. In all the excitement of getting early notice of my first session “Running a Successful Pilot Program with Social Business Software” I somehow had it in my head that it was going to be my only session accepted this year. So I was a little surprised and happy to learn that another of my submissions has indeed been accepted.

This one will be a lot of work, but hopefully worth it for the attendees.

So look for it you Quickr fans and don’t miss it. I’ll have supporting materials available for download, but all the reasoning and logic will be in the room. Not necessarily me, but I’m sure it will be there somewhere.

Where Do We Go From Here? A Decision Matrix for Quickr Customers

Lotus Quickr fans! As you now know, your heir apparent — and entitlement — comes in the form of IBM Connections Content Manager (CCM), which provides rich social networking and content management experience inside IBM Connections communities. In this session with Rob Novak (who has done a bit of work with both), we’ll do a capabilities mapping, demo a live Quickr-to-CCM migration, and review strategy and deployment options for Quickr customers. How much can you migrate? What new features will you gain, and what will change? With custom applications, what are the options for moving forward? Are multiple strategies right for you? This session will answer all these questions and more, allowing you to build your own “decision matrix” for your social software deployment.

On a side note, in case you were wondering. Yes, that’s the first time in 50+ presentations in Orlando I’ve been able to incorporate a BTVS reference into my title. I win.

Thirteen must be my lucky number!

IBM Connect 2014With IBM Connect 2014 around the corner (we all know…it’s closer than the calendar leads one to believe!) the awesome content team folks decided to leak out some of the “Lotusphere” sessions early, a week at a time.

I’m very excited to have been chosen to speak again this year. And, I’m joining forces with my friend and colleague Mac Guidera to offer twice the goodness for the same price. 🙂

This will be my 19th “Lotusphere” and 13th as a speaker. Some years it’s been one big session, some in the past have been as many as nine sessions. Personally I enjoy putting a lot of effort into one or two so attendees get as much value as possible in an hour.

It’s also a year in which I’ve tried to focus more effort on strategy and cultural impact of the technical work we all do. I gave my first “non-industry” talk to groups of executives, and it resonated. They are hungry for the type of marketing-free strategy advice on a decidedly uncomfortable topic (technology) that normally takes hours of poring over analyst reports or months of study. That’s the kind of thing I enjoy distilling down to an hour or two.

But I digress, on to this year’s session. We’ve all been part of both successful and failed (or at least strained!) projects, and I have consulted with many companies that see the same challenges getting new initiatives off the ground. What goes wrong in pilot roll-outs? Is it all technical issues? [Hint: no.] What are the human factors involved, what kind of staffing does it take, and who are the absolute wrong people to be running pilots? Our session is all about increasing the likelihood of success when embarking on a Social Business Software pilot:

Running a Successful Pilot Program with Social Business Software

Much of the publicly available marketing and technical information on IBM’s collaboration solutions focuses on features, prerequisites, support and implementation details. In this session we’ll address success factors involved in running a pilot social software deployment.  Our topics include setting goals, gaining executive support, managing expectations, aligning with business strategy, measuring outcomes and defining success. More about business than PMRs, more about success than installation, this session is the perfect accompaniment to your technical education and will round out your best practices experience. Come join veteran speakers with a combined 35 years of experience and watch them try to wrap this up in 60 minutes!

Rob Novak is president of IBM Partner SNAPPS, has 20 years in the Lotus/IBM community, two Masters degrees in business and has delivered 50+ Connect/Lotusphere sessions in 13 years. Mac Guidera is a Social Workforce Strategist at IBM, and demonstrates Social Business adoption and integration into organizations that have an impact on their cultures and collaborative process.

So that’s our challenge for the next 52 days. Less weekends, 36 days. Less holidays, 31 days. Less lead time for IBM legal, 16 days. Less other client projects, 5 days. Less procrastination, about 45 minutes.

Crap. Uh, I have to go. Maybe write something. See you there!

New Kid on the Social Block

Jerald MahurinTo say Jerald Mahurin is a “new kid” is a bit misleading. Heck, he’s older than me and I’m practically antediluvian. However after nearly 20 years in the industry, having been my instructor when I first learned LotusScript in 1995, then with SNAPPS for the past ten years and currently its Vice President, it’s my pleasure to welcome Jerald to the not-so-yellow-verse community of IBM Collaboration Solutions bloggers.

His first article is a tutorial-level undertaking, in which he shares the fruits of his labor creating custom branding for IBM Connections Communities. This is a 10-printed-page article just to get you started

He’s promised me the next one will be shorter, but personally I like having a resource out there that is as thoroughly documented as this article. It took weeks of experimentation and wiki-diving, reverse engineering and Voodoo incantations to come up with the consolidated procedure he describes.

So welcome Jerald, and keep it coming! Now go on over to and say hello!

On Toasters and Bathmats and OpenSocial for IBM Connections Development

connections_logo.thumbnailLet’s say for a minute that I’m a web developer. I know, it’s a stretch. Suspend your keen sense of disbelief for a while and it’ll be worth it.

As a developer, I’m always looking for easier ways to do things. Places to start, templates to use, basically leveraging the work of others.

Now let’s say I have a team of web developers, and while brilliant at data, logic, mathematics, science and memes involving Gene Wilder or grumpy cat, as a lot they are kind of clueless when it comes to aesthetics. Specifically, the area of color. For my UK friends, colour.

So in my search for assistance for the team, I ran across Wolfram Alpha, the computation search engine. If you’ve not used it when you want to know a lot about something, you’re in for a treat. At the risk of losing you for a while, head on over to the site and type in the following: “cheapest toaster”

Tell me you’re not impressed. Seriously. Toasters!

They all like this. And they crochet.

They all like this. And they crochet.

OK back to my team of developers who think 70s bathmats are all the rage. After poking around the Wolfram Alpha site for a while I noticed that there’s a developer area. There’s also a $5/month Pro subscription, which I have, but you don’t need that to play around with the developer tools.

Well it turns out that using Wolfram Alpha, you can create widgets that include input fields, and the output is handled by their servers. Meaning, you can take advantage of the processing power of the computational search engine, create and consume your own custom widget, and embed it in your own website. Pretty cool? It gets better.

As for my developers I decided they needed help to figure out complementary colors for their applications. You know, color theory stuff. So I whipped together a widget (actually modified one that was there) and called it the Color Advisor. The image below has a link to it, go ahead and give it a try. Basically you enter a hex code color (web developers know what these are) and Wolfram Alpha will supply you with an abundance of information about the color, including its most complementary counterparts.

This one’s just a photo, but it links to the real thing.

You can also type a standard color name in there like “red” and it works. And hey, who hasn’t wanted a chromaticity diagram as part of their web experience?

Next while clicking around figuring out the best way to share this widget, I ran across the Embed section on the right. Wolfram Alpha gives you the option to copy embed code, or go directly to sites with special URLs, for standard script tag embeds, Blogger, WordPress code, WikiMedia, and iGoogle. Ooh, wait, iGoogle…which as we know is deprecated, as of November 1 2013, whose developer site has deprecated already, and moved off to…

Bam. That widget – could it be an OpenSocial gadget? So I hovered over the embed link and lo and behold…

I copied the link to the clipboard:

Nothing is more of a clue that it’s an OpenSocial gadget than the phrase “opensocial”

Why was I so giddy at this discovery? Because I know that OpenSocial gadgets are the way to add some cool functionality to IBM Connections. And what better way of sharing with my team than adding a gadget to Connections? Now all I had to figure out was how to drop it in.

You need a few things to happen in order to add an external OpenSocial gadget to Connections. first, you need the gadget XML file. Here’s some information on OpenSocial gadgets and their XML files…but in our case, it’s actually all provided. You see, the jsp in the URL above generates one for us. If you grab everything after “moduleurl=” in the line above and paste it into, say, Firefox, you’ll get a blank screen. But then, have a look at the source and you’ll see:

I recognized this immediately as an OpenSocial gadget XML file from my own presentation and other work with Connections the past year. In fact, it’s a complete file and I can copy and past it into my own file (or reference it remotely, but I wanted to play). So that’s what I did. The contents of this file became on my Connections server:


I just placed it in the htdocs subdirectory of my IBM HTTP Server, so it would be easy to reference.

Next, I needed to update the configuration to allow the gadget to be used in Connections. For ease of illustration, I placed it on the Homepage app. To do that, as an admin I needed to click “Administration” from my Homepage:


I clicked “Add another widget” on the right and started configuring my widget. The first choice is whether it’s an iWidget or OpenSocial Gadget, which we know, then I left some defaults in the next section as it refers to Share widgets and Activity stream widgets. Now for the meat of it all:


You can see I added the location of my gadget definition file, then found the Wolfram Alpha icon URL so I could use it to liven up the place. I only checked one box “Display on the Widgets page” which is the “My Page” link.

After saving this configuration and enabling the widget, I returned to My Page and clicked on “Customize” and voila, there’s my widget!


And I added the widget to the page:


Now the developers have no excuses. Well, one, that the boss prefers mauve with his teal.


OpenSocial gadgets are the future of IBM Connections development. If you look around, you’ll find that they are being adopted by a number of organizations and APIs, including this quite useful one at Wolfram Alpha. Developing an OpenSocial gadget from scratch is NOT the way to start learning about them – and this tale, nay, tutorial, showed you how to incorporate pre-made widgets into your own Connections environment.

Next steps for developers here would be to do a native UI, support the lightbox result set, or delve into the Connections SPIs for server-side handling of requests…depending on what you’re doing at the time, of course. Color matching isn’t quite important enough for that, but scientific or financial computations might just be.


What else do you want to know about IBM Connections development? Have you created any OpenSocial gadgets? I’ll post about native development soon…but for now go forth and choose appropriate swatches.

Tutorial – Extending the IBM Connections Rich Text Editor

connections_logo.thumbnailThe editing experience in IBM Connections is pretty good. IBM has incorporated the open source CKEditor across many products – Connections, XPages applications, Quickr, and more. But a little known and not-so-incredibly documented aspect of the editor is that it’s extensible. That’s right, CKEditor accepts plugins to enhance the editing experience in many ways.

Some of these are quite individual such as new buttons that bring open dialogs. Some take advantage of external resources like spell checkers. Others are analytic like word and character counters. And custom plugins, where some of the real value lies, can do things as cool as word and link replacement, application embedding, and custom pattern recognition. We’ve used this bit of trivia to create a suite of plugins called SnappLinks™, adding social linking and embedding to the editing experience.

In this tutorial I will explain how to do one of the more simple customizations, adding a plugin that gives the user a choice of content templates. It’s a nice example because of the obvious business ROI…and should open your eyes to the possibilities for editor extensions. In fact, you may want to use some of the ones already created by others…

Step 1: Familiarize yourself with CKEditor plugins

The first step to customizing the CKEditor is to familiarize yourself with the plugin architecture and the kinds of things developers are doing with CKEditor. The best way to start is by examining other plugins at . While it’s tempting to get carried away downloading and trying to apply these, note that given the way Connections editor is set up, they won’t all work, and the instructions will not make any sense!

Step 2: Download the “templates” plugin

The smiley plugin is available here  – just download and unzip, it will be self-contained in a folder. For the most part, all plugins have the same folder structure. Inside the main folder which will be named after the plugin, there will be the plugin definition file plugin.js. Some plugins also have other files like a readme.txt or, licenses for the more complex ones, maybe some source control or scratch files, etc. Four folders that are common to most plugins are lang (language files), images, icons (for the toolbar) and dialogs. The dialogs folder contains the main logic files for the plugin, in this case JavaScript.

A typical plugin folder structure

A typical plugin folder structure – yours may vary from this one.

Step 3: Create a path in Connections for the plugin(s)
In Connections, the path to resources can be quite confusing, since most of the files are already deployed as jars (zip files). And since by default there aren’t any customizations, figuring out where one goes can be a chore. A good start is in the Connections 4.0 or 4.5 API documentation, where an article on extending JavaScript has some clues. Most of the JavaScript used by IBM Connections is located inside one of the web resources JAR files inside the provisioning directory (typically CONNECTIONS_HOME/data/shared/provision/webresources), or inside the Common.ear file.

In our case, we are going to create a nice long directory path of:


Where CONNECTIONS_HOME is the directory where Connections code is installed — not the WebSphere app. In my case, it’s /opt/IBM/Connections.

Once this folder is created, we’re almost done right? Nope.

Step 4: Define the extra plugin

If you’ve spent some time with the CKEditor plugin documentation, and let’s face it, who hasn’t, you know to look for config.js. Not so in Connections, where we have a different method of defining plugins and consuming them, using similar syntax but not the same file naming structure. To discover where the CKEditor definition files are, we need to inspect the right jar file in CONNECTIONS_HOME/data/shared/provision/webresources (or Common.ear, but we can find it here).

For the sake of this exercise we are going to modify just the editor in Connections Wikis. It’s the hardest one to figure out, since there are additional plugins already there, and it has its own style of editor.

So first step, get a copy of CONNECTIONS_HOME/data/shared/provision/webresources/<version>.jar and unzip it locally. We need two files from this folder: resources/ckeditor.js and resources/scenes/CKEditor.js. Copy those to their own folder, keeping the scenes folder under the resources folder.

Next, we need to let the editor know we want to declare an extra plugin. Open the resources/scenes/CKEditor.js file and locate the following lines:

extraPlugins: dojo.getObject(“lconn.share0.config.displayMacrosGUI”) ?
‘wikilinking,quicklink,wikimacros,autogrow’ :

On both sides of the colon, add your plugin name:

extraPlugins: dojo.getObject(“lconn.share0.config.displayMacrosGUI”) ?
‘wikilinking,quicklink,wikimacros,autogrow,templates‘ :

Save the file.

Step 5: Modify a bit of code

As I mentioned, you shouldn’t expect the plugins to work straight away in Connections. Mostly, they’re being used by developers, so are very generic in nature and coding style. Connections adds a bit of mystery by combining configuration and definition files, then in some cases – as with wikis – having multiple files like ckeditor.js so that features can be injected into the editor. Blogs are the opposite, everything is in one file over there.

That said, I’m going to list out some code changes in the plugin.js file. It’s only a couple lines.

In the init function, you’ll see this:

editor.ui.addButton && editor.ui.addButton( ‘Templates’, {
label: editor.lang.templates.button,
command: ‘templates’,
toolbar: ‘doctools,10’

Well Connections wikis don’t like being told (from this file) what toolbar to use, and it really likes to be told the icon to use within this command. So we’ll change this to:

editor.ui.addButton && editor.ui.addButton( ‘Templates’, {
label: editor.lang.templates.button,
command: ‘templates’,
icon: this.path + “icons/templates.png”,
//toolbar: ‘doctools’

Next, go near the bottom of the file and find this (we’re not going to change it, just explain it):

CKEDITOR.config.templates_files = [
CKEDITOR.getUrl( ‘plugins/templates/templates/default.js’ )

All of the CKEditor stuff has configurations, and individual plugins can contribute to that configuration. But since we’re setting that configuration up in another place, we’re going to leave this here and rewrite it in the second ckeditor.js file. For the meantime, copy this bit to an empty document for reference.

In the case of this plugin, we lucked out and don’t have to modify the language file. I’ve found that most of them need a tweak to work with Connections, specifically adding another layer to the function. So we’ll skip that.

Now to the configuration file. That’s right, the “other” ckeditor.js (you can tell them apart in your editor because the names are case sensitive). Open ckeditor.js that you have right under resources, and find the section that starts with “dojo.mixin(CKEDITOR.config” which essentially means

Yo, Dojo, find the config bits of CKEDITOR and mix in this other stuff I’m about to throw at you!

You’ll see several lines in the toolbar_Wiki array with names and items. Choose a reasonable place on the toolbar like, say, “insert” and append (,’Templates’) to the end of the line. That’s a comma, and those are single quotes.

Now, we revisit our bit of config that we copied to a scratch document and insert it into this “mixin” using different syntax. Add the following after the toolbar_Wiki array. First, add a comma after the closing square bracket of the toolbar_Wiki array. Then, add:

templates_files : [
CKEDITOR.getUrl( ‘plugins/templates/templates/default.js’ )

See what I did there? I took the original CKEDITOR.config.templates_files “directive” in one place and reformatted it for the dojo.mixin syntax in another.

Note the lack of a comma at the end — JavaScript wants it this way, no comma after the last element before closing.

Step 6: Upload the modifications to the server

First, copy your lower-case ckeditor.js file to the server. Where, you might ask? Here:


Copy your CKEditor.js file to the server. Where, you might ask again? Here:


You can almost start to see the connection between the jar file and the ensuing folder structure for customization. Almost.

Last but not least, copy the entire “templates” folder, including your modified plugin.js, to the plugins folder you created in Step 3.

Step 7: Restart Connections and Test

Yeah, I know. Some tutorials say you can be an admin and restart just one or two servers from the WAS ISC, but I don’t buy it. 90% of the time for me, that doesn’t work, so I just restart. Your mileage may vary.

After restarting, armed with Firebug or Chrome Developer Tools, after dropping your browser cache, give it a go. Go to Connections Wikis, enter a wiki and create a new page. You should see a new icon to the right of the “Smiley” icon on the second row. Click it, and you will be presented with the following dialog if all goes well:

Content Templates let you insert pre-formatted HTML into the Connections rich text editor, and you can create your own templates!

Content Templates let you insert pre-formatted HTML into the Connections rich text editor, and you can create your own templates!

If all did not go well, retrace your steps. The most likely scenario is a missing or extra comma or semicolon. If it is working, check it out. You choose one of the templates, which organizes the content of the editor by pushing in HTML for you. The practical business uses are numerous – standardized templates for documents are kind of a no-brainer. Product sheets, resumes, you name it and someone, somewhere has a format for it.

So we’re ready for production, right? Well, sort of but not quite. It’s all working fine, but the customization “override” directory we’ve been using (CONNECTIONS_HOME/data/shared/customizations) is only supposed to be a temporary home for customizations during development. Technically, what we should do now is to wrap up our code, including replacements and additions, into an OSGi bundle (a JAR file with a special MANIFEST.MF file and some directories) and deploy the bundle into Connections.

But honestly, that’s another article. Or consulting. Whatever.

Next steps

Now that you have a template-aware editor, you probably want to add….templates! Well you can have a look at the code for this, it’s in the plugins subfolder templates\default.js (as we referenced in Step 5 above). My suggestion would be to create a new file, and reference it in the configuration by adding a new reference to it in the array (back when we messed with the dojo.mixin stuff…Step 5 also). You can create HTML templates to your heart’s content that way.


SnappLinks for IBM Connections adds Scribd support




No, that’s not a typo! On the heels of our announcement of SlideShare® support, SNAPPS has added support for Scribd® document embedding in SnappLinks™, its innovative add-on for IBM® Connections® blogs and wikis.

Scribd is the world’s largest digital library where people can publish, discover, and read books and documents of all kinds on the web or any mobile device. Millions of books and documents have been contributed to Scribd by the community and this content reaches an audience of 100 million people around the world every month.

Embedding Scribd documents is just as easy as SlideShare – the website has a version of each document with an Embed link. Clicking that link gives you options for size, pagination, height and width and generates the embed code.

SnappLinks™ gives you a single button in the editor to paste in the Scribd code, immediately creating embedded rich content.

SnappLinks brings color and functionality to IBM Connections editors

SnappLinks brings both color and functionality to IBM Connections editors

Scribd is unique in that due to the nature of the media it gives you a full-screen reading option. We’ve tried this in Connections and it makes for a very clean, highly consumable reading experience.

Why embed a Scribd document in Connections? Simple, really.

  • No need to upload content to Connections
  • Have private conversations about public documents
  • Take advantage of a growing platform’s technology

Scribd support is, as of today, included in SnappLinks for IBM Connections along with SlideShare, Facebook, Twitter, YouTube, LinkedIn, Google Maps, Wikipedia and email links. Contact for a demo or pricing information.