Configure Eclipse 3.5 for Notes 9

Next after upgrading my Notes client to IBM Notes 9 I updated my Eclipse environment to use Notes 9. The steps are basically the same as previously but for good measure I updates my guidelines. The document is now titled Configure Eclipse 3.5 for Notes 9. For those in the know the only thing to update is the install_id (now “135548059835”) and the rcp.base_version (now “9.0.0.20121130-2130”).

Happy coding.

IBM Notes and IBM Domino Social Edition – FINALLY!!!

If you’re part of the Notes/Domino community you are probably excited today!

Unless you’ve been living under a rock you have seen and/or heard the announcements from IBM yesterday about the upcoming IBM Notes and IBM Domino Social Edition. If not do yourself a favor and go watch the recording. And a new major release – no longer is it 8.5.4 but 9.0!

I’m SO pleased that IBM/Lotus/ICS FINALLY took the plunge and stripped the “Lotus” from the product – not that I dislike the Lotus brand but we (the community and the customers) have been in a strange state of flux for so long. From Lotus, to IBM Collaboration Solutions (ICS) to IBM Social Business. We’ve been wondering what the product we love and work with every day would be called or whether it would actually go away and be replaced with some “Websphere thingy”. With the announcement of IBM Notes and IBM Domino Social Edition yesterday IBM finally tore of the Band-Aid that should probably have been torn off back when IBM bought Lotus (or at least shortly thereafter).

With the move to IBM Notes and IBM Domino we can move past all that and look forward knowing that there’s at least a 3 year roadmap and the product isn’t going anywhere. With the best (and only?) public webcast in a long time IBM made it official! IBM has got our back!

And even better – we will also have a PUBLIC beta (see the sign up form). The “public” part is important – no longer is the beta and code drops for the select few of us in the design partner programs but for all. So be sure to take this opportunity and sign up for the beta. Download it. Use it. And most important of all – tell IBM what you think!

An IBM webcast you do not want to miss

This is a webcast not to miss. IBM will discuss the next version of Notes and also discuss the open beta that will start soon!! And as one who has been using the next Notes version for a while I can honestly say that you want to see this. Below is the announcement from IBM.

“Join IBM on November 13th at 10am Eastern Time US for an important series of announcements and previews. Learn how IBM Lotus Notes and IBM Lotus Domino, better than any other platform investment, positions you to create a more effective workforce. During this special broadcast, we will introduce our new IBM Notes and Domino Social Edition beta program, and updated product roadmaps, that truly demonstrate IBM’s strong commitment to the Lotus Notes and Domino platform. Speakers include Ed Brill, Director for Social Business and Collaboration Solutions, IBM; Scott Souder, Program Director for Notes, iNotes and IBM Connections Mail and Daniel Lieber, Innovative Ideas Unlimited. And, stay afterwards for a special edition of the IBM Collaboration Solutions monthly community call to discuss what you just heard. “

Speakers:
Ed Brill, Director for Social Business and Collaboration Solutions, IBM
Scott Souder, Program Director for Notes, iNotes and IBM Connections Mail
Daniel Lieber, Innovative Ideas Unlimited, Inc.

Date: Tuesday, Nov. 13, 2012
Time: 7:00 am PT / 10:00 am ET / 4:00 pm CET

Register to join

Fixing a wierd widget installation issue (Content is not allowed in prolog)

For our OnTime Group Calendar 2011 Notes user interface which is Java plugin based we have seen some strange problem reports with customers reporting that the widget installs but after installation an error message is displayed on screen (“The widgets below had issues during the installation. See the log for more details.”). The wierd thing about the reports were that the customers reported that the widget (and hence the plugins) actually installed just fine and worked after a client restart. What’s even funnier is that the same plugins installed without error if the customer used HTTP and not NRPC for their update site access protocol. In the log (Help/Support/View Trace) the below error messages was shown (my highlighting):

Could not access digest on the site: no protocol:
   0/8E4DFE3996CBDD94C1257A33003CE3A9/$file/digest.zip
[Fatal Error] :1:1: Content is not allowed in prolog.
org.eclipse.ui.WorkbenchException: Content is not allowed in prolog.
	at org.eclipse.ui.XMLMemento.createReadRoot(Unknown Source)
	at org.eclipse.ui.XMLMemento.createReadRoot(Unknown Source)
	at com.ibm.rcp.dynamic.extensions...
	at com.ibm.rcp.dynamic.extensions...
	at com.ibm.rcp.dynamic.extensions...
	at com.ibm.rcp.toolbox.internal.management...
	at com.ibm.rcp.toolbox.internal.management...
	at com.ibm.rcp.toolbox.internal.management...
	at com.ibm.rcp.toolbox.internal.management...
	at com.ibm.rcp.toolbox.internal.management...
	at org.eclipse.core.internal.jobs...
Caused by:
org.xml.sax.SAXParseException: Content is not allowed in prolog.
	at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.DocumentBuilderImpl...
	... 11 more

This really had me scratching my head.

After reseaching and Googling I found a post called “Java: “Content is not allowed in prolog” – causes of this XML processing error” which led me in right direction.

When I opened the widget XML file in an editor and switched to HEX mode I saw this:



3 invisible bytes were inserted at the start of the file. I copy/pasted the XML into a new file which solved the issues. The 3 bytes actually turn out to be what’s called a Byte order mark or BOM for short. From the wikipedia article I found out that the BOM for a UTF-8 file is those exact bytes and I did save the file as UTF-8 in my editor.

The UTF-8 representation of the BOM is the byte sequence 0xEF,0xBB,0xBF. A text editor or web browser interpreting the text as ISO-8859-1 or CP1252 will display the characters  for this.

But the bytes were not there in my editor but only in the file that I received from a customer. So how did the bytes get there?!

So after more research and playing around I found out that the BOM is added by Notepad on Windows. But of course!! A lot of customers receive the XML file and change the update site URL to point to their own servers and if they use Notepad for this the BOM is added (see “The Notepad file encoding problem, redux” for more details).

But how to fix it? Telling customers not to use Notepad to edit the XML file would be a no-go as many probably no not use another editor. And even if they did the problem would probably still arise in some situations and we would spend time diagnosing it. The solution I’ve opted for is to change the encoding of the file to ASCII and change the encoding declation in the XML file to ASCII as well. The content of the XML file is unchanged and now customers can change it using Notepad without issues.

Embedded Experiences demo – you want to see this!

As I wrote in my Lotusphere 2012 one-liners post after Lotusphere OpenSocial and Embedded Experiences is *the* technology to watch coming out of IBM Lotus. At Lotusphere 2012 Ryan Baxter and Stanton Sievers from IBM gave a Show’n’tell session (SHOW115) which I think really should be an eye opener to a lot of people as to why this embedded experiences “thing” is important. I’ve been bashing Ryan to make a recording of the session and it’s finally here.

Video of demo: Embedded Experiences Demo – N/D Social Edition – Connections Next

Code from demo: Demo code

If you want more embedded experiences go watch the video from the Social App Throwdown from Lotusphere for inspiration as to what’s possible.

Diagnosing wierd widget installation issue

I had a customer report a widget (plugin) installation issue to me. They had clients being unable to install a widget (and hence a plugin) from an update site on our servers (external to their network). The error was reported as below:

Unable to access "http://<host>/site.xml".
Contains: Error parsing site stream. [White spaces are
   required between publicId and systemId.]

The issue turned out to be caused by a firewall issue and hence wrongly reported in the log. The issue was solved by relocating the update site to the customers network.

Avoid contacts from mail file gets archived by server-side archiving

  1. Open Mail File template in Domino Designer.
  2. Open “Contact” Form.
  3. Create a new field in this form.
  4. Name it as “ProtectFromArchive”
  5. Field Type should be “NUMBER” with setting “Computed When Composed”
  6. Now set default Value of this field to be “1”
  7. Save the form.

Now The mail database created using this template wont be facing any issue of archiving the contacts documents as field “ProtectFromArchive” will prevent contact docs to get archived. Please note that an agent needs to process existing contacts to protect them as well.

IBM Lotus Domino 8.5.3 server performance and IBM Lotus Notes 8.5.3 client performance

Saw this very nice – although very technincal – whitepaper on developerWorks on how Notes 8.5.3 has been optimized to reduce the number of transactions with the Domino server. A small little thing that I haven’t seen mentioned before but which can have a big impact on your environment and users. Probably shouldn’t be considered light reading.

“IBM Lotus® Domino® 8.5.3 and IBM Lotus Notes 8.5.3 have been optimized to reduce the transactions from the client to the server. These optimizations yield a reduction in server resources, thus lowering the Total Cost of Ownership. This white paper shows the reductions in processor and disk utilization achieved with large numbers of Notes 8.5.3 clients running on a single Domino 8.5.3 server.”

IBM Lotus Domino 8.5.3 server performance: IBM Lotus Notes 8.5.3 performance

Tip of the day – my Copy Link Location plugin

There are some questions I get asked a lot by customers, colleagues and people I meet at conferences. One of them is why there isn’t an easy way to copy links detected in Notes documents using LiveText to the clipboard. And I must admit that it is odd. To remedy I’ve actually developed a plugin that installs into Notes 8 to add an action item to links in Notes documents. After installing the plugin an action to the Copy Link Location to the clipboard is added to all links in the Notes client.

The plugin really highlights the power of Notes, LiveText and the plugin architecture in Notes. As you will probably recall – plugins are fun!!!

Besides that a right-click context menu is also added when right-clicking Notes documents to copy the Notes link (notes://) to the clipboard. It’s all part of the same package.

To see how to install etc. head over to my Notes 8 Utils page.

AbcWidget is trying to be downgraded to a lower installation scope. Reinstallation of this item will not be permitted.

When trying to update a plugin (feature) using a widget the installation failed and I got the below message.

<widget name> is trying to be downgraded to a lower installation
scope. Reinstallation of this item will not be permitted.

I wondered what it meant as I didn’t really understabd the “installation scope” thing so I asked IBM and here’s the answer I got from Doug MacDonald. Very useful and nicely explains why the installation failed.

When you install a widget, it is assign a scope. The scopes have a heirarchy.

  1. If the widget was installed from the corporate catalog using a category of widgets, the scope is catalog.push.
  2. If the widget was installed from the corporate catalog using drag and drop, the scope is user.catalog.
  3. If the widget was installed from a location other than the corporate catalog, the scope is user.import.

You cannot move down the scope hierarchy. For example:

  • Not allowed: If you install a widget from the corporate catalog using a category of widgets and then you try to drag and drop the same widget.
  • Not allowed: If you install a widget from the corporate catalog using drag and drop and then you try to drag and drop the same widget from a file on the file system.

You can move up in scope. For example:

  • Allowed: If you install a widget from the corporate catalog using drag and drop and then you install the same widget from the corporate catalog using a category of widgets.
  • Allowed: If you install a widget by drag and drop from the file system and then install the same widget from the corporate catalog using drag and drop.