Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.
Contact Information
Blogger, podcaster, writer, and geek Chris Toohey covers topics from application development to the latest must-have-gadgets.
Latest Updates

More on Mailer...
More on Junction Lite...
More on Remote Console...

More on Controller API Utility...
Products & Applications
Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.
For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!
Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!
xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.
Community & Resources
Lotus Technical Information & Education Community
The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.
OpenNTF.org - Open Source Community for Lotus Notes Domino
OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.
developerWorks Lotus : Wikis
Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.
Understanding the Domino CRUD API - the Basics
04/13/2009 10:12:03 AM by Chris Toohey
IBM Lotus Notes/Domino has a pretty easy to use and powerful CRUD - or (Create, Read, Update, Delete) NotesDatabase Data Engine - complete with a defined Web-accessible API.
The best part is... the majority of Domino Web Application Developers are already using it!
Note: I'll be using the term processing agent below. This is not to be confused with a Domino Agent Design Element, but is rather the XHTML Form Element's action attribute. See http://www.htmlquick.com/tutorials/forms.html for an example.
I'll make no assumptions here that you're familiar with the Domino URL Commands that handle all CRUD activities and just jump into them, as understanding them at a very basic level is required for a few more deep dive things that I want to get into. Thus, I'll list the Domino URL Command and how it's used below:
-
Type: Read
?OpenDocument
Usage: http://server/database/viewname/notesdocument?OpenDocumentThis Domino URL Command allows you to open or read a NotesDocument. This URL Command can be ommited, as the default render option for a Form Design Element when viewing a NotesDocument via the Web Browser Client is to open said NotesDocument in Read Mode.
It should be noted that the Form Design Element used to render the NotesDocument will render in the following order:
- Form Design Element defined in the Form Formula section of the viewname View Design Element.
- Form Design Element defined in the Form NotesItem of the rendered NotesDocument.
- The Default Form Design Element for the target NotesDabase.
-
Type: Create
?CreateDocument
Usage: http://server/database/formname?CreateDocumentThis Domino URL Command allows you to create a new NotesDocument in the target NotesDatabase via the Form Design Element defined in the URL. HTML Input and like elements (fields) with exact name-match to NotesItems in the defined Form Design Element will exchange data.
-
Type: Read
This Domino URL Command does two things:?EditDocument
Usage: http://server/database/viewname/notesdocument?EditDocument- Verifies your access to render the defined NotesDocument in Edit Mode.
- Renders the defined NotesDocument in Edit Mode via the same applied Form Design Element Logic as the
?OpenDocumentDomino URL Command. (see above)
This Domino URL Command does nothing functional per se, as it is used more to verify editor-access to the defined NotesDocument and tells the Domino to render - as mentioned - the NotesDocument via the Edit Mode version of the aforementioned logic-driven Form Design Element.
-
Type: Update
?SaveDocument
Usage: http://server/database/viewname/notesdocument?SaveDocumentThis Domino URL Command allows you to update the defined NotesDocument in the target NotesDatabase. HTML Input and like elements (fields) with exact name-match to NotesItems in the Form Design Element rendered via the aforementioned Form Design Element rendering logic. (see above)
-
Type: Delete
?DeleteDocument
Usage: http://server/database/viewname/notesdocument?DeleteDocumentThis Domino URL Command allows you to submit a deletion request for the defined NotesDocument in the target NotesDatabase. Simply put, if you have the proper level of access to the NotesDatabase (and to the NotesDocument), once you issue this request Domino will take care of the rest.
So that's pretty much it for a basic overview of the Domion URL Commands that run the Domino CRUD engine. Simple - hopefully - because you're all familiar with them due to their extensive usage in Domino RAD.
For example, if you look at the HTTP Form Element's processing agent for most Domino RAD-generated Forms, you'll see these Domino URL Commands in-use.
I think understanding the Domino CRUD API will enable you to both write better, richer, Domino-based Web Browser Client User Experiences as well as give you an eye to what can be done via simple integration with other/non-Domino technologies.
Hopefully this is useful to those of you looking to get into Domino Web Application Development, and the next few posts on this topic will act as a refresher for those old hands that have been doing this for years... but I went back to the basics because, well, that's for the next post!



Great writeup! It was a great day I learned about the CRUD API, and stopped work on my own, silly agent-based one that I had been working on. :P
That being said, I've never used ?EditDocument -- I just pass along a variable with the initial ?ReadDocument to tell me if the current user can edit it or not. Then it's just a normal ?SaveDocument when they're done.
I tend to not use the
?EditDocumentDomino URL Command either to be honest, but it hit me today while writing this article where it could be used quite effectively!Imagine - if you will - an AJAX call to your to-be-edited NotesDocument with the
?EditDocumentDomino URL Command, designed to return two possible outcomes:First, you create a simple "Edit"-friendly View Design Element, Form Formula, and "Edit" Form Design Element engine. Then easily modify your
$$ReturnAuthorizationFailureto return - with the help of a QueryString argument - a very simplified error.Once you've done this, you simply use your AJAX call to see first if you're allowed to edit the NotesDocument you're about to call via AJAX, which should address (but not totally secure, I get that) your Domino Web Application by performing the real "Edit" call or display a super-slick "You're not authorized to do that thing you do" inline popup thingy.
I usually use 'Open' instead of OpenDocument, but I gues that doesn't maje a difference, except for me being lazy.
I've never used Createdocument, but use Openform instead. Is there a difference ?
I never use SaveDocument, as I tend to have my javascript (button) do a submit.
When/where would you put a SaveDocument ? What happens after the url is submitted ?
@Theo:
?Openis a good general Domino URL Command for opening any Design Element, while?OpenDocumentis specifically for launching a NotesDocument over the web.There was some talk a few years back on whether or not Design Element-specific Domino URL Commands made for faster rendering as they didn't leave it up guesswork on what Element to return.
Consider this:
You create a Page Design Element named page and a View Design Element called page.
Both would work in their own context:
- or -But what happens when you want to open the page View Design Element? In fact, that first URL could return the View or the Page - as I think it will return the Design Element when there's a name match based on their Last Modified date.
?CreateDocumentcan be used in a HTML Form Element's processing agent to submit/create a new NotesDocument.?OpenFormis used to render a Form Design Element over the web.Same thing with
?SaveDocument- it's a functional Domino URL Command, but this submits changes/updates an existing NotesDocument.As I plan on doing an entire series on the Domino CRUD API, I'll be covering when/where you'd use the specific Domino URL Commands, but hopefully this will shed some light on the major differences between the commands you've mentioned as well as give you an idea for what's possible!