dominoGuru.com

Your Development & Design Resource

Using iCalendar to integrate Lotus Notes Domino Applications and the Microsoft Outlook Calendar

We've all heard of them if not experienced them first hand: a company decides to migrate their email and calendaring & scheduling from IBM Lotus Notes Domino to Microsoft Exchange... but keep their collaborative applications on IBM Lotus Notes Domino. The developers are often then tasked with integrating the aforementioned technologies to provide the customer base an improved usage experience.

This basic article shows you how you can create a very simple integration point with a Domino-based Online Calendaring Application (read: this will be in the Public Build: Event Calendar... once my schedule opens up and I can resume development) and the Microsoft Outlook Calendar. This approach would alternately work with any iCalendar-friendly application, such as Lotus Notes 7.n and greater or iCal for you Mac users.

Summary:

I'm currently working with a customer who uses Lotus Notes Domino 8.n for their collaborative applications while using Microsoft Exchange and Microsoft Outlook for their email and calendaring & scheduling solution. One of the Lotus Notes Domino applications in question was a pretty slick Events Calendar (note: not my Public Build: Event Calendar). While extending some of the base functionality of the application, the user community - when polled - loved the idea for a Click to Add to Outlook feature - allowing them to quickly add a given Event to their own calendars.

Now, there are plenty of different ways to do this, but I thought that I would settle for what could be the easier of the bunch and use the iCalendar format.

So, the end result will be a simple link, labelled Click to Add to Outlook, which will use the iCalendar format.

Build:

A few things we should establish at this point:

  • Each Event is a NotesDocument in the Lotus Notes Domino Event Calendar NotesDatabase.
  • We want to do this with the least impact to the current design and architecture of the NotesDatabase.
  • We want to do this quickly!

This is one of those nice to have features in an application that grabs customer focus due to it's interactive capabilities. The usage experience is immediately improved and thus you have a happier customer... which is why we want to really deliver on this one.

So, let's get started with the build:

Design Elements:

  • Page Design Element named entry.ics

Yep... that's pretty much it! See, we really don't want to impact the current architecture of the Lotus Notes Domino Event Calendar NotesDatabase - as mentioned - so we're going to make this as non-invasive as possible. This alternately allows you to see how easy this approach is to adopt in your existing Lotus Notes Domino-based applications.

In my article Understanding the Domino CRUD API: $$Return and Smart Landing Pages, we showed how a very basic Page Design Element - when combined with a Domino URL Query String Parameter - could allow us to present context-sensitive data. In the example from the article, it was to display the data from the recently submitted NotesDocument. In this usage, we're going to use this to build our iCalendar format-based Event.

We'll use the following syntax to call our Page:

http://server/notesdatabase/ entry.ics?open&UNID=NotesDocument UniversalID

After we set the Context Type of our entry.ics Page Design Element to text/calendar, we'll put in the following combination of text markup and Computed Text Elements:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//<Computed Text>//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:<Computed Text>
DTEND:<Computed Text>
SUMMARY:<Computed Text>
DESCRIPTION:<Computed Text>
LOCATION:<Computed Text>
CONTACT:<Computed Text>
END:VEVENT
END:VCALENDAR

Each of these Computed Text Elements will use a variation of the following Formula:

UNID := @UrlQueryString("UNID");
@If(UNID = ""; ""; @GetDocField(UNID; "title"))

You can see from here that we're simply grabbing the UNID value from our URL Query String and using that to get a handle on the NotesDocument NotesItem that we need.

To use this, we simply add the following to either the View or Form Design Elements that render the Event Calendar entries to the UI:

"<a href=\"entry.ics?open&UNID=" + @Text(@DocumentUniqueID) + "\">Click to Add to Outlook</a>"

Pretty simple stuff huh?

If you'd like to see this in action, check out the simple Domino iCalendar Demo Example NotesDatabase application that I've put together.

Conclusion:

Using this technique can help you improve your customer usage experience far beyond that of calendaring & scheduling functionality. Consider other Content Type + functional data format combinations that will allow you to extend the usage of Lotus Notes Domino by pushing integration and showing just how flexible and feature-rich Lotus technologies can be!


About the author: Chris Toohey

Thought Leadership, Web & Mobile Application Development, Solutions Integration, Technical Writing & Mentoring

A published developer and webmaster of dominoGuru.com, Chris Toohey specializes in platform application development, solutions integration, and evangelism of platform capabilities and best practices.



More from dominoGuru.com


dominoGuru.com is powered by IBM Notes Domino XPages & hosted by Prominic.NET

Contact Us

Use our Contact / Feedback form or one of these email addresses:

Creative Commons License

Except where otherwise noted, dominoGuru.com by Chris Toohey is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.