Classic Notes: How to write a "reveal java home" java agent in Domino

Tags: : Lotus Notes Java

Just to get you going and reveal the whereabouts of the Domino JVM on your computer. Can for example be used when you try to fix any PKIX path building failed - related problems Smile 

Read much more about that error in the post Classic Notes: How to import self signed certificates into your Domino Java environment.



Classic Notes: How to import self signed certificates into your Domino Java environment

Tags: : Lotus Notes Java

If you get errors like “PKIX path building failed”... such as ...

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

... you may have a problem with self-signed certificates in your Java environment. Read more about how to fix this in this article!

I show you how to export certificates with Chrome, and how to add this to your so-called keystore in your Java environment. In the end you will have both your Eclipse and Domino environment accept the self-signed certificate.

UPDATE Jan 19th, 2016 15:31 CET:  René Winkelmeyer informed me about his blog where he has already described a much more elegant appoach for Domino - which also survives an update! ... Head over to his blog and check it out. Thanks a lot René for the pointer! René's blog points you further to Simon O'Doherty’s answer on Serverfault (Hi Simon, long time since the “chineese API syndrome” Smile).



A small sample on how to create your own toolbar in IBM Notes client

Tags: : Formula Lotus Notes

I have just blogged about how users of my product Notes Import Export Library can extend their use of the tool by using a custom toolbar in the Notes client in the How to create Notes Import Export Library Toolbar with buttons for export to Excel.  The users end up with a toolbar like this;


Clicking on the buttons export the current IBM Notes view to Excel.

Please note that Notes Import Export Library a purchasable product, but you can of course use the described technique to do any @formula-stuff with your own icons.


Hmmm, a restore of my iPhone 5S found and freed 7,3 GB from nowhere?!

Tags: : Thoughts

I know, having 16 GB iPhone s%&ks , and I am getting used to see the “Storage almost full” message almost every day;


Every time I enter the Manage Storage screen to see what I can delete, but lately I has become more difficult to actually find something to delete! Below you see the status I had before my restore;


116 MB left.... My largest application is 547 MB so I couldn’d quite the numbers to add up. I therefore did a manual calculation of all the applications listed in the screen above, and came in just over 4 GB Disappointed smile ... where the h&%k had the other 7,6 GB gone? And yes, I tried to delete all logs and data from Safari, Youtube and whatever app I could think of. Somehow something had my memory...

Reading on the net reveals that I am not the only one (such as this from the Apple forums) with these problems. One of the suggested options is to restore my phone, and so I did .... Now, one hour later I have this memory status;


7.3 GB free again!

So, something was holding my memory after all, and when a restore can clean up, so should iOS do too without forcing a user to restore!


Domino 9.0.1 FP5 finally installed, but "nsdhelp.dll" was missing afterwards ...

Tags: : Lotus Domino

According to this news flash from IBM, they ackowledge that there is some problems with the FPP5 updater. Indeed so, it won’t install if you have hotfixes installed as I blogged about here.

The news flash from IBM also stated that you could rerun any hotfix-installers to revert back to the previous level of code. I found my HF419 installer and ran it again. First it identified that I could revert back to vanilla 9.0.1 FP4 level, and I continued... First off I got this:


... hmmm, for some reason the updater didn’t finish off the running nsd.exe, so I had to do that manually via the Windows Task Manager. Re-ran the code and now it finished with success Smile 

Time to re-run the FP5 updater, and this time it correctly identified the 9.0.1 FP4 code and let me finish with success.

However, on a re-start of the Domino server, it couldn’t start due to a missing nsdhelp.dll file;


Bummer!! I couldn’t find it anywhere on my server, so I had to restore it from my backup!!

The last sign of nsdhelp.dll is in the UPGRADE.LOG and it seems like the HF419 renamed it:

Rename: canFileName: nsdhelp.dll, dw = 9
Temp file size was 0: UPTMP0009.TMP

Seems like the FP5 updater went a tad too fast through the quality control this time. Normally I would say that upgrading the server has been a breeze over the last years. Just download the updater, run it, and voila ... the server is updated.


Domino 9.0.1 FP5 updater also have problems ifyou have hotfixes installed

Tags: : Lotus Domino

I currently have Domino 9.0.1 FP4 HF419 on Win32 installed.

Some days ago IBM released the FixPack 5 (FP5) for IBM Notes and Domino 9.0.1. Very soon after problems were discovered with the client installer and the FP5 updater was withdrawn. I can just confirm that the Domino updater also has problems, if you have installed hotfixes. Below is the screenshot from the updater:


Unfortunate that the updater doesn’t “roll over” the hotfixes....  Next thing is to try to uninstall the HF419 and then try FP5 updater again Smile


How I added Textbox.io rich text editor to XPages

Tags: : Xpages
What about replacing the built in rich text editor in XPages with a super-modern editor which accepts image-pasting directly, without configuring anything on the server?

A picture named M2


How to find the "thing" causing Windows 7 x64 to loose focus

Tags: : Windows 7

For some time now I have had a huge problem with my Windows 7 x64 installation. Almost making day-to-day work with Windows unbearable!!

For some reason Windows looses focus every 3-5 seconds, making for example drag and drop almost impossible. When I say “loose focus” it is not like “loosing focus completely”, like deactivating the current application. The currently active application is not loosing its application focus. It is more like the mouse is loosing it’s “hold”. The symptomes are typical that the mouse “releases” by itself during drag and drop, and this cause for example:

  • When moving files with drag-and-drop in Explorer, the files may suddenly be dropped somewhere! This is of course extremely irritating, as I have to find out where the files where dropped (thank God for Everything Search, my absolute favorite file-finder in Windows).
  • When moving e-mails from my inbox to any folders, they may get dropped anywhere. As for the scenario above, I have to look up where the e-mails ended up!
  • When moving e-mails into folders, the “auto-release” of the mouse - all by itself - find out that “hey, he is not dragging any e-mails anymore” and instead move the folder currently under the mouse, around within the folders …
  • When working in graphics programs, the selection tool suddenly stops. Either the selection is cancelled right there with the selection still intact, but smaller than I intended, or it is cancelled all together!
  • When dragging any application around on the Windows desktop, the mouse “auto releases”, instantly drop the dragged application, but since the mouse-key still is pressed, it automatically select whatever is under the mouse during the movement ….
  • When selecting text in any editor, the selection was abrouptly cancelled and I started a new selection where the mouse were at failure!

Read on to see how I found the culprit and regained control in Windows!



Just for the fun of it... here are some wordles for Lotusphere-abstracts since 2000 up to 2014 ...

Tags: : Lotusphere

I love Wordles (for a free online generator see http://www.wordle.net/). Sometimes a word-cloud can say a lot about the content. For example, below you see a wordle for all Lotusphere (errh, Connect, errrh ConnectED) session abstracts combined from 2000 up to 2014:


Click on all images for a larger version!

Below you will find wordles for each year from 2000 to 2014. Fun to see how company name changes, and how the focus slighty changes from year to year. The wordles has been created by extracting the abstracts from all the session-databases I have archived, using the cool tool named Wordaizer.

Before diving into the wordles themselves, I thank Ben Langhinrichs from Genii Software which assembled all the abstracts into an easy-to-use Notes database for over a decade! You might even get the old session databases from the links I provide at the end of the article.

I also thank Mat Newman and more, which has taken over the last two years and created the session databases for 2013 and 2014.

Why are the session databases important?

For some reason IBM has created their own Session Preview Tool, which allows you to find sessions and their abstracts. Right now it looks like this:


I find the interface above un-intuitive and hard to use. Yes, you can get a list, but I can’t tweak it the way I want! Perhaps I am just too old…

I have allways liked the Notes-version much better – you know what you get when you have it in a Notes database!!


Long live Notes!

Click Read more below to see the wordles year by year!



How I got around the Notes C API problem with MailAddMessageBodyComposite creating error 315 on larger HTML files

Tags: : Notes C API
I have always wanted to be able to import HTML into Notes with the C API in a proper way. Well ... as "proper" as proper can be. We all know that the quality and fidelity of the HTML import in Notes can be so-so, but it is always nicer to be able to do some import rather than none.

To make a long story short, searching around on the net points you to some few pages outlining techniques using the undocumented function ImportHTMLTextFile in the import DLL niHTML.dll. This is probably the very same function the Notes client uses when you import a HTML file into a rich text field. The ImportHTMLTextFile function swallow parameters specifying the URL you want to import, and generates a CD-record file. This is in essence a file with the CD-records as you would believe they would occure in the rich text field. To understand more about CD-records, take a look here. In order to transport the CD-records from the file generated by the ImportHTMLTextFile -function, we use another function named MailAddMessageBodyComposite. Looking in the reference guide it clearly states "This function creates multiple items of the same name and therefore is not limited to 64KB of input". Below you see a snippet of C/C++ code using these functions (note, all error handling is removed for clarity)

/* Prime the Import function with a temporary CD file name and create the CD-record file*/

/* Import the HTML with the undocumented import function in the Import Library NIHTML.DLL from Notes */
error = m_dllImportHTML.ImportHtmlTextFile(&stImpExp,3,0,"",szHTMLFileName);

/* Coming here, we are ready to use the MailAddMessageBodyComposite */
error = NSFItemDelete(m_hDocNote,szRichTextFieldName, strRichTextFieldName.GetLength());
error = MailAddMessageBodyComposite(m_hDocNote,szRichTextFieldName,stImpExp.OutputFileName);

Running the code above on URLs with code below 64 KB went fine, but when the page-size grew beyond 64 KB I got error 315 .... "Memory Allocation Exceeded 65,000 bytes" from MailAddMessageBodyComposite. The ImportHtmlTextFile-function didn't have any problems swallowing huge pages. The 315-error led me to post the question Has anybody got the C API function MailAddMessageBodyComposite working with larger HTML? on the Notes 9 forum.

Since I didn't get any answers, and couldn't get MailAddMessageBodyComposite to work, I finally got my head around the MIME-functions in the C API and the following technique worked nicely - also with huge pages!

In order to get the pseudo-code to work, you must have your HTML file local first. Let's say it is stored as c:\temp\MyHTML.htm. Please note that the code below is not complete nor has error handling in place. Also note that the variable m_docNote is the NOTEHANDLE of the open note. The note will of course be saved after a successful import.

MIMEHANDLE        hMIMEStream;

/* Open a MIME stream. This will receive the strings from the file */        
error = MIMEStreamOpen(m_hDocNote, // note handle
        NULL,                               // item name
        0,                               // item name length
        MIME_STREAM_OPEN_WRITE,         // open flags
        &hMIMEStream );

/* Tell the stream that we will receive HTML soon */
error = MIMEStreamPutLine("Content-Type: text/html", hMIMEStream);

/* Loop through the lines in the file. You can use any kind of array or iterator here as long as you can get the file line-by-line */
for (lCur = 0; lCur < lMax; lCur++)
        error = MIMEStreamPutLine((char *)arrayFile[lCur], hMIMEStream);

/* Delete any potential field with the specified name and convert the MIME Stream to an itemized field */
error = NSFItemDelete(m_hDocNote,"Body", 4);
error = MIMEStreamItemize( m_hDocNote,

/* Close MIME Stream */

The pepper in the code above is simply to put the "Content-type"-string into the stream so the MIMEStreamItemize later understand the text as HTML. Also note that the flag MIME_STREAM_ITEMIZE_BODY limits the itemizer to render only the body field of the incoming mime.

Knowing that this technique worked with "fake MIME" as described above, I also tried to use the technique with real MIME files such as EML (drag a mail document from your inbox to your desktop and voila - you have an EML file of that mail!) or other MIME files. The code even imported embedded images without any problem.

Hopefully these tips are helpful if you struggle with MailAddMessageBodyComposite!