Friday, 6 December 2013

soapgate Q! 5 Beta 2 released

soapgate Q! 5 Beta 2

Bug Fixes
  • dbOutlineViews() - Did not return always welformed XML 
  • dbLookupX() - Returned an error message when no columns had to be returned (empty COLFIELDS parameter), but one or more of the parameters VENUM, UNID and NOTEID where set to True. The latter is a perfectly valid scenario to receive for instance the UNID and NoteID of documents only.
  • dbPutInFolder() / dbRemoveFromFolder() - Failed when the given list of UNIDs/NoteIDs was no refering to a unique list of documents (double entries). The latter is now ignored.
  • dbLookupNames() - Returned no result if the RowFormat parameter was set to False

New Features
Release 5 is all about RESTful services. Whilst the soapgateQ! project was originally focused on providing a web service based API to Domino, we decided that it wouldn't harm to write some wrapper classes around the current functionality to provide a RESTful interface.

This current BETA release does not yet cover all the provided web service operations, but the most commonly used ones:


  • dbClearFolder()
  • dbColumn()
  • dbColumnX()
  • dbFTSearch()
  • dbLookup()
  • dbLookupX()
  • dbOutlineViews()
  • dbPutInFolder()
  • dbRemoveFromFolder()
  • dbRowX()
  • dbSearch()
  • dbViewEntries()
  • dbViewFTSearch()


  • dbDeleteDoc()
  • dbDocAttachmentList()
  • dbGetFieldTypes()
  • dbGetFormFields()
  • dbReadDocFields()
  • dbReadProfileFields()
  • dbSaveDocFields()
  • dbSaveProfileFields()


  • dbGetDelStubs()


  • dbACL()
  • dbEffectiveRights()
  • dbGetMailInfo()
  • dbLookupNames()
  • dbUserRoles()

Please refer to the release notes provided with the download

Friday, 1 November 2013

soapgateQ! 5 Beta just release on OpenNTF

soapgateQ! 5 Beta supporting RESTful API calls (besides SOAP) is now available on

Thursday, 31 October 2013

The new REST API in soapgateQ! 5 is nearly complete...

In a previous posting we showed a few sample REST calls related to reading views and folders from a Notes database. In the meantime we completed most view, folder and document related operations. The REST call can now also provide the parameters as a single JSON construct:

    "jsonparam": {
        "OPERATION": "dbviewentries",
        "SRVNAME": "flexdomino/flex2domino",
        "DBNAME": "flex/flexdemo.nsf",
        "VIEWNAME": "books.flat"

    "jsonparam": {
        "OPERATION": "dbcolumnx",
        "SRVNAME": "flexdomino/flex2domino",
        "DBNAME": "flex/flexdemo.nsf",
        "VIEWNAME": "books.flat",
        "COLFIELDS": [
        "RETUNID": true

    "jsonparam": {
        "OPERATION": "dbreaddocfields",
        "SRVNAME": "flexdomino/flex2domino",
        "DBNAME": "flex/flexdemo.nsf",
        "DOCUNID": "8F0C446A37709450C1257C2900371615",
        "FIELDS": [

    "jsonparam": {
        "OPERATION": "dbsavedocfields",
        "SRVNAME": "flexdomino/flex2domino",
        "DBNAME": "flex/flexdemo.nsf",
        "DOCUNID": "",
        "FORM": "Book",        
        "FIELDS": [
        "TYPES": [
        "VALUES": [
            "New Summary",
            "(See attached file: warren.JPG)<\/i><\/body><\/html>\n\n\n

            "John Smith",
            "soapgate Q! RESTful services"
        "READFIELDS": [


Thursday, 3 October 2013

Unbelievable but TRUE...Flash made it on iOS !!!!

...well, of course not directly, but the Photon Browser includes a Flash streaming service that works reasonably fast if you have a good internet connection.

I purchased the browser and Flash just runs fine. I tried Flash videos, simple to 
sophisticated Flash games, I even tried a few business Flash apps I had developed myself and they all run fine. I admit that some of the games where not particular suited for the iPad due to the keyboard control requirements, nevertheless they worked. And the browser has some keyboard options for Flash games that help.

The nice thing is, if you are in a situation where you are with your iPhone/iPad and come across Flash content you really like to see, you now have a solution.

Thursday, 19 September 2013

Although we just released soapgate Q! 4.5, release 5 is already well on the way...

Release 5 is all about RESTful services and JSON.

As a first step we will provide for (almost) all SOAP operations available so far the equivalent RESTful operation. As part of this development we decided to speak JSON only.

In version 5 the implementation will be a wrapper around the existing web services, so the performance gain of REST compared to SOAP will not be as great as it could be. However, release 6 will bring a complete overhaul of the underlying web service code, which will result in all service operations (RESTful and SOAP) to return JSON formatted data.

The following URLs are a sample on how the RESTful interface will work...

  1. dbViewEntries (which is the equivalent to dbView2XML)
  2. dbViewEntries with additional parameters (first 10 rows and the view entry number for paging)
  3. dbViewEntries with additional parameters (next 10 rows and the document UNID)
  4. dbColumnX
  5. dbLookupX

Wednesday, 18 September 2013

soapgate Q! 4.5 has been released 2 weeks ago...

and finally I find the time to talk about what has been achieved in this release. The following is an extract of the release document contained in the download...

Fixes first:

A multi-threading bug was reported to us, causing a Domino Server 8.5.3 (64bit Windows) to crash reproducibly when load testing (multiple concurrent calls of) the dbLookupX() and dbColumnX() web service operations. This is apparently an issue of the NotesViewEntry.ColumnValues() method that of course is used in both of the above web service operation. The issue is under investigation by IBM.

We have implemented some changes to work around the usage of the effected Lotus Script class and seemed to have solved it from a soapgate Q! point of view.

Another issue reported and fixed was a subscript out of range error when calling dbFTSearch() where the search criteria would result in no documents. 

Changes & New Features

We have been working on performance on the new version and as part of this we restructured the web services. Instead of a single web service containing all web service operations, we have split and grouped them. We now have following web services:
  • DominoUtilityWebServices
  • DominoAdminPWebServices
  • DominoDocumentsWebServices
  • DominoViewsFoldersWebServices
  • DominoAccessNABWebServices
Please note: some of the operations in the new web services have additional parameters. However, the operations in the old DominoUtilitiesWebservices are not affected. We kept it backwards compatible.

One of the new parameters is the CACHE parameter related to a new feature in Release 4.5, which is data caching. If the parameter is set to true, the computed return value (array) is cached in a Notes document. The caching follows following logik:
  1. If a previous query with the same parameters has been found in the cache, the data stored in the cache document is returned if it has not been expired yet (5 minutes; until release it is a fixed value).
  2. If no cache document for the same query has been found or it has been found, but was expired, a new cache document is created or the found one updated with the data of the current query.
Note: the cache document is only accessible for the authenticated user, who created it. For multi-user scenarios the cache will not work or will have very little impact respectively. The cache feature is useful in a very limited set of scenarios only. Read the release document for more details.

Following operations in DominoDocumentsWebServices have additional parameters:
  • dbSaveDocFields()
  • dbSaveProfileFields()
Both operations support now a two step operation: saving and reading. After completing the save operation, the dbReadDocFields() or dbReadProfileFields() operations are called respectively.

dbLookupX() and dbViewFTSearch() now support paging.

In previous release we used a Java URL request to get the Domino Server to render a Notes Richtext field to HTML. This required some Domino (security) settings in the server document to work, despite not being the best performing method. However, it delivered the so far best results from a fidelity point of view. 

In release 4.5 we managed to use the NotesDocument.ConvertToMime method. This is much faster and touch less from a configuration point of view. We had of course to add some tweaks to support inline images and attachments.  
We added a RESTFul service to the soapgateQ! database to provide some XML formatted information about the database itself and the environment it runs in. By default the service is available to public users. So no authentication is required.

Thursday, 4 April 2013

What is going on with IBM Lotus Greenhouse and Connections

For the last 4-8 weeks the website / service is constantly under maintenance!? How much maintenance (!!!) does this system require? This is pretty annoying!

Sunday, 3 March 2013

BlackBerry Experience Forum ... the app for the new BlackBerry Z10

We are proud to announce that BlackBerry has asked us ( and to develop a special Session Journal application for their BlackBerry Experience Forum events

"The BlackBerry Experience Forum - Session Journals (Agenda 2013) application provides participants of any of the BlackBerry Experience Forum events held in various locations world wide with the information related to the event and allows them to plan the session they would like to attend through a "Like" feature. The application also provides information about the BlackBerry business partners for each event location..."

Of course the application is designed with Adobe Flash Builder 4.6 and is based on the AIR 3.1 SDK. The code to this application will soon be posted open source on Please stay posted on

BlackBerry Experience Forum London 6th March

If you happen to be in London on the 6th of March and (or) you would like to attend the BlackBerry Experience Forum in London please contact Andreas Rosen Qkom GmbH ( to receive a promo code.

Qkom GmbH is a BlackBerry Business Partner and will be at the London event, as well as at the Frankfurt and Paris event. 

soapgate Q! 4.0 has been released...

We released soapgate Q! 4.0 actually a few weeks ago and completely forgot to mentioned here. 


Date Only and Time Only field values would be created previously with an Any Date or Any Time component:

22/08/2013 00:00:00    or    31/12/1899 17:24:00

With release 4.0 Date Only and Time Only field values are created as if saved through the Notes Client UI (No Date / No Time component):

22/08/2013    or    17:24:00

We also fixed an issue with the dbGetDelStubs() web service operation, which at one point in the past broke because of some parameter change in two of the C-API functions called. 

dbGetDelStubs() is now working again, however, we have not back-tracked when this C-API change occurred exactly. We therefore set this release to be compatible with Notes 8.5.3 only. 


In soapgateQ! 4.0 we implemented all methods of the NotesAdministrationProcess class. Parameters and return values are identical, except that all web service operations have an additional first parameter, the name of the administration server. Also, all web service operations have an 'AP' prefix and return the UNID (string) of the administration request document created:

apAddgroupmembers (AdminServer, Group , Members()) 
apAddservertocluster (AdminServer, Servername, Cluster)
apApprovedeletepersonindirectory (AdminServer, noteid)
apApprovedeleteserverindirectory (AdminServer, noteid)
apApprovedesignelementdeletion (AdminServer, noteid)
apApprovehostedorgstoragedeletion (AdminServer, noteid)
apApprovemailfiledeletion (AdminServer, noteid)
apApprovemovedreplicadeletion (AdminServer, noteid)
apApproveresourcedeletion (AdminServer, noteid)
apChangehttppassword (AdminServer, Username, Oldpasswd, Newpasswd)
apConfiguremailagent (AdminServer, Username, Agent, Activatable, Enable)
apCreatereplica (AdminServer, Sourceserver, Sourcedbfile, Destserver, Destdbfile, Copyacl, Createftindex)
apDeletegroup (AdminServer, Group, Immediate, Deleteinwindows)
apDeletereplicas (AdminServer, Servername, Dbfile)
apDeleteserver (AdminServer, Servername, Immediate)
apDeleteuser (AdminServer, Username, Immediate, Mailfileaction, Denygroup, Deleteinwindows)
apMovemailuser (AdminServer, Username, Newhomeserver, Newhomeservermailpath, Usescos, Newclusterreplicaarray, Deleteoldclusterreplicas)
apMovereplica (AdminServer, Sourceserver, Sourcedbfile, Destserver, Destdbfile, Copyacl, Createftindex)
apMoveroaminguser (AdminServer, Username, Destserver, Destserverpath)
apMoveuserinhierarchycomplete (AdminServer, Noteid, Lastname, Firstname, Middleinitial, Orgunit, Altcommonname, Altorgunit, Altlanguage, Renamewindowsuser)
apMoveuserinhierarchyrequest (AdminServer, Username, Targetcertifier, Allowprimarynamechange)
apRecertifyserver (AdminServer, Servername)
apRecertifyuser (AdminServer, Username)
apRemovenotesuser (AdminServer, Username, Lastname, Firstname, Middleinitial, Orgunit, Altcommonname, Altorgunit, Altlanguage, Removewindowsuser)
apRemoveserverfromcluster (AdminServer, Servername)
apRenamegroup (AdminServer, Group, Newgroup)
apSetserverdirassistsettings (AdminServer, Servername, Dbfile)
apSetuserpasswordsettings (AdminServer, Username, Notespasswordchecksetting, Notespasswordchangeinterval, Notespasswordgraceperiod, Internetpasswordforcechange)
apSigndatabasewithserverid (AdminServer, Servername, Dbfile, Updateonly)
apUpgradeusertohierarchical (AdminServer, Username, Orgunit, Altcommonname, Altorgunit, Altlanguage)

In addition to the above, we implemented two methods of the NotesDirectory class:

dbLookupAllNames (servername, viewname, items(), mvalsep, rowformat) As STRINGARRAY_HOLDER
dbLookupNames (servername, viewname, searchstr, items(), partialmatch, mvalsep, rowformat) As STRINGARRAY_HOLDER

Both web service operations work similar to dbcolumnX() and dbsearchview().

Sunday, 27 January 2013

We updated the Lotusphere Connect 2013 session data...

Please use the Download latest Session Data button in the All tab of our Session journal app.

Enjoy Lotusphere and visit us at the OnTime booth A53.

Friday, 25 January 2013

The code for the Lotusphere Connect 2013 Session Journal app...

...can be found @ The soapgate Q! web service data access API for Domino can be found @

Phew...just in time...the Lotusphere Connect 2013 Session Journal for the iPad...

The iPad version finally made into the Appstore

Saturday, 19 January 2013

Lotusphere Connect 2013 App for iPhone now available...

We got the approval for the iPhone version. Please follow the link or use the barcode below...

The iPad version unfortunately got rejected because it has been developed for the iPad 2 and doesn't do well on the iPad 3 Retina display. We are working on it to get it approved in time.

Friday, 18 January 2013

Lotusphere Connect 2013 App for Playbook and Alpha Dev devices now available...

Playbook and Alpha Dev

Item QR Code 

And again for Android Phones (optimised 800x480)

Android Tablets (optimised 1024x768)

Friday, 11 January 2013

Lotusphere Connect 2013 Session Journal app the 2nd...

If you do not want to wait until the 2013 version of our app is available for all devices, you can install the 2012 version meanwhile (simply search for "lotusphere" in the respective app store). The new session data works with the 2012 version, accept for the room maps.

Lotusphere Connect2013 Orlando is happening in a few days and...

...of course we will provide again our free Lotusphere (Connect) Sessions Journal application.

The first one to become available is the one for Android phones, however, we already posted a Blackberry Playbook and Blackberry Alpha Dev (OS10) version, as well the iPhone and iPad version.

RIM's approval process usually takes 48 hours and considering RIM is launching OS10 at Lotusphere Connect, I'm pretty sure they hurry up to get us much apps approved as possible until then.

Apple's approval process takes unfortunately a bit longer, but I'm confident that we get the apps approved within the next 7-10 days. Just in time for Orlando.

The Android tablet version will be available later on today.

Before I forget, thanks goes to Mat Newman who continued Ben Langhinrichs efforts to provide the Lotusphere (Connect) Session Database.

We will have a booth this time where you can meet me and Andreas Rosen ( Details will be provided later.

Looking forward to seeing you in Orlando ;-)