Add-in/extension development for Notes 7

Hi,

we need to integrate Lotus Notes 7 with a Web application exposing its functionality via a SOAP Web service.

I am completely new to Lotus applications and neither Google nor IBM’s (terrible) website yielded any information about Lotus Notes development whatsoever. Does Notes 7 sport any form of extension API at all, like MS Outlook does with .NET or Mozilla with Gecko/XUL? I am aware that Notes 8 is built on the Eclipse platform (and therefore as a pack of OSGI bundles) which makes it highly extensible, but our company is still using Notes 7.

My most basic questions are:

  • Where can I find resources on Notes 7 plugin development?

  • What platform and language do you program with? E.g. .NET or some proprietary scripting runtime?

Any help appreciated.

Best,

Matthias

Subject: Add-in/extension development for Notes 7

Before trying to give an answer, I’d like to determine what the question was. You wrote:

“we need to integrate Lotus Notes 7 with a Web application exposing its functionality via a SOAP Web service.”

Are you trying to get Domino (not Notes, which is the desktop client) data into your web application, or trying to use aspects of the web application in the Notes client?

If it’s the former – you want to expose some Domino functionality as a web service – it’s built into the platform, and you work from the inside using the Lotus Domino Designer client. Web services may be written in either LotusScript (a scripting language very similar to VB6/VBA) or Java, and are design elements of a Domino database. The vocabulary is similar to .NET – you create a class, and the public methods of that class are exposed.

The tools are built into the Designer client. A Domino web service is a part of a Domino database, not a “plug-in” to Domino. You can incorporate the web service into an existing database, or you can create a new database for the purpose. (Domino databases are not mere table repositories – code is data as well in the NSF world.) Code in one database can interact with data in any database (assuming it has permission to), so you don’t need to scatter web service components throughout your server (that is, you don’t need to have a web service in every database you want to interact with) on the one hand, nor do you need to create a platform plug-in to get general access.

There is also the option to access Domino using either COM (pick a language) or Java (directly or via CORBA/DIIOP) and create the actual web service on the platform of your choice.

If you have never worked with Notes/Domino before, though, no matter which option you pick, you’re in for a bit of a learning curve. The languages themselves may be familiar, but the object model won’t be. Frankly, “getting” Notes/Domino is the hard part.

Subject: RE: Add-in/extension development for Notes 7

Hi Stan,

thanks for your detailed response.

In fact, we need to integrate the client-side with our exisiting Web service, which is deployed in an Apache Tomcat and runs independently of any Lotus infrastructure.

The idea was to hook into the Notes user interface with custom buttons and new context-menu entries in order to perform operations on email and tasks which are then delegated to our Web service.

Whether or not some form of interaction with a Domino server is involved in this, I have to admit I am not sure. From what I understand, the extension (due to my unfamiliarity with “Lotus slang”, I will just call it that) may have to talk to the Domino server to retrieve e.g. the contents of an e-mail via IMAP or user information via LDAP.

But apart from that, it’s mostly about plugging into and extending the Notes user interface. In particular, no Web service has to be deployed on a Domino server.

Subject: RE: Add-in/extension development for Notes 7

Oy. No sense picking something simple for a first project, is there?

You will need to hook into Notes using the C programming API and the Extension Manager. Start here:

You’ll find, though, that you’ll get a LOT more help if you actually describe what it is you’re trying to do. What you’ve given us is extremely vague at best. It’s fairly clear that you have almost no knowledge of Notes and Domino (neither IMAP nor LDAP come into play if the Notes client is talking to a Domino server), and I can’t determine from your description whether what you are proposing is appropriate, practical, or even possible. Leave protocols out of it – just describe the actual process.

Subject: RE: Add-in/extension development for Notes 7

Alright then.

We’re developing a task management software based on server-side Java. I can’t provide any details on that software as I have signed an NDA. It is sufficient to know that it exposes an interface that allows for the retrieval, modification and creation of tasks, similar to a scheduler, via a SOAP stack.

For users, this application is used via its (Dojo-based) Web interface. However, a Web interface is not the most comfortable way of interacting with a piece of software, so the idea is to integrate that task application with common desktop client software, particularly Lotus Notes.

A basic use case would be to select an email in your inbox and be able to attach it to an existing task in our task database (which is not on a Domino server). Therefore we need to extend the Notes client software with custom widgets.

I have prototyped this functionality for Mozilla Thunderbird, which is easy enough – since you can extend its interface using XUL – and also investigated Microsoft Outlook (which would be just as easy, considering its comfortable extension API). But since most people here seem to be using Lotus Notes (not me, I am just an intern who was given this task, I work here since a mere 2 weeks), I am trying to figure out how that could possibly work.

I hope that helps. Please excuse my ignorance on the Lotus software suite, as I am completely new to it and it doesn’t seem to have much in common with the programming models employed for Outlook and Thunderbird, the ones I am familiar with. We only need to focus on the email functionality of Notes by the way, so we don’t need anything fancy.

Subject: RE: Add-in/extension development for Notes 7

Email is just an application (a database) that Notes runs. Notes is not an email client as such – if you want to compare it to other software, it’s more like an operating system than an application.

(As an aside, the application you describe – even given the necessary broad brush – is the sort of thing that would normally be done natively in Notes or on the Domino platform. Workflows are what Notes is all about.)

You could create extensions to Notes to do what you want. You could also make modifications to the Notes mail database template – it depends on the widgetness of the widgets. If you modify the mail template (and you can make mods that will not impact normal upgrades), you can use Java or use the MS SOAP client in LotusScript (as an OLE object) to communicate with the Tomcat app. (If you were on Notes 8, you’d have a native web service consumer to work with.)

Code that lives in the database is the easiest to create, test and maintain – and it will, of necessity, only be available in the context of the Mail application. You should be able to find code on this forum (use Google with site:lotus.com rather than the search here) that uses the MS SOAP client. You’ll still need a crash course in Notes development and the Domino Designer client, though. Notes is, well, different. Not difficult, just different.

Subject: RE: Add-in/extension development for Notes 7

Okay, thanks a lot for your help Stan.

By the way, I stumbled across this posting here on the forums: http://www-10.lotus.com/ldd/nd8forum.nsf/DateAllFlatWeb/89c042d15870bb25852573ca0048e8cb?OpenDocument

It covers Domino Designer 8 however, not 7. But wouldn’t that work for me as well? I also just need to call a Web service from a button in the end. Is that possible in Notes 7, too?

Subject: RE: Add-in/extension development for Notes 7

As I said, Notes (and Domino – they share a common code core) 8 has a web service consumer client. Notes/Domino 7 does not. You would need to use Java or the MS SOAP client in Notes 7.

Subject: RE: Add-in/extension development for Notes 7

Yes, but are these APIs accessible e.g. from a script attached to a toolbar button (SmartIcon)? Because, what the Notes 7 programming guides call a “Notes Application” doesn’t seem to be what I am looking for, as they are deployed on the server side and always operate in the context of a Notes database.

Subject: RE: Add-in/extension development for Notes 7

Actually, the context from which you’ve said you want to operate is the Notes mail database. You CAN create an extension DLL to hook into Notes in general, but would that have any meaning outside of the mail context? (That DLL can also use the MS SOAP client.) All you really need to do is create one or more Agents in the mail database template. You may want to add Actions that call the agent in order to include them in the Action Bar (the toolbar at the top of the local application window) and to the right-click context menu. The Design task will take care of deployment to user mail databases.