Custom Programming And Out Of Office Processing

Lotus Notes / Domino enables developers to integrate their applications with native Domino features. In order to understand when a custom programming would interact with Out Of Office’s processing, you must know the sequence in which Domino processes a document during message delivery.

Here is the order of execution:

  1. Router rules
  2. Custom callback routines started by the Extension Manager
  3. Mail rules
  4. Before-delivery agents
  5. Out Of Office service ( new in ND 8 )
  6. Maill message delivery
  7. Out Of Office agent

ISP change

Today I changed my ISP from freenet.de to all-inkl.com. freenet.de has hosted my blog for almost 5 years now, but due to some server restictions Iwas not able to upgrade to wordpress 2.7.

ALL-INKL.COM Webhosting

So I decided to look for a new ISP. all-inkl.com offers 10GB of diskspace and unlimited traffic for only € 7.95. The domain transfer started this morming at 8:00 and was completed only 7 hours later. DNS entries should be updated within the next 48 hours.


Read/Unread documents in Inbox

The following article prerequisites that you use a Notes Client 8.x , Basic Configuration and a screen resolution of 1024×768.

Up to release 7 of Lotus Notes, we had a lot of servicedesk calls regarding “deleted” documents in the user’s inbox. In most cases this was a result of the UI Design.

Users were confused or misinterpreted how the action button was labeled. From release 8 on, IBM replaced the “toggle” functionality and split the button into two checkboxes which behave as radiobuttons. Now it is easier to see, which option is selected. Less servicedesk calls so far, hooray!!

Sorry that the screenshots are in German; but I guess, that you will have the same problems in other languages, too.

Splitting the button into two seperate actions consumes a lot of space in the action bar. As a result, not all actions are shown in the actionbar. Instead you have to scroll the actionbar by clicking the “Right-arrow” – “Left arrow” images.

This is not very user friendly. The original idea of having only one button that toggles between read/unread documents isn’t bad, but from the users point of view it has to indicate the current state more precisely.

A checkbox is exactly what is needed. If it is checked, the inbox will only show unread documents, if it is unchecked, all documents are shown.

I replaced the existing formula in the shared “Show unread documents” action by the following formula:

@If(@GetViewInfo([IsShowingUnreadOnly])= 0;
@ViewShowThisUnread("1");
@ViewShowThisUnread("0") );

@Command([RefreshHideFormulas])

This enables the action to toggle between read/unread documents. In addition I hided the “Show All” action from Notes Client 4.6 and above.  More actions are now to be seen in the actionbar, but you still have to scroll.

Next I shortened the label and now all actions are shown in the actionbar.

Wwll, you might say that this is the way it worked in release 7. Yes it does, but the checkbox is the difference. It is only a small difference but users are now able to easy indicate the state of inbox.


Error moving user to another server

I had to move some users including mailfile from one server to another. Both servers are 8.0.2. When i looked into admin4.nsf, I found that the “Monitor New Mailfile Fields” request for two of the users ended with an error:

Title: Frank XXXXX File name: mail\fxxxxx; Name: OutOfOffice|OutOfOffice; Error: Cannot find user in Domino Directory
Title: Frank XXXXX File name: mail\fxxxxx; Error: Cannot find user in Domino Directory

The user does exist in the Domino Directory and can access the new server. I searched the Knowledgebase but could not find a solution. Obviously it has to do with the OOO Agent. Here is what I did to workaround the issue.

1. Open the mail file using the Domino Designer client and delete the OOO agent.

2. Replace the template design. The Out of Office agent will then be placed back into the mail file with a signature of either “Lotus Notes Template Development” or a company ID that has rights to run agents on behalf of others.

3. In the admin4.nsf database, select “Perform Request” again.


Strange logic

As every morning, I read the new entries in the Lotus Software KnowledgeBase. Today I stumbled upon one entry and even reading it again and again, it still seems to be a bit obscure.

Deleting a person using Adminp process removes the user name from fields on custom application.

When a user is removed from the Domino Directory using the “Delete Person” button, AdminP removes the user’s name from a Names field in a custom application.

This is working as designed.

You need to change the ACL setting on any application where you don’t want specific Names fields updated :

Go to the application -> Access Control->Advanced-> Action.  Set this to “Do not modify Names Fields.” This setting prevents AdminP from modifying the Readers, Authors, and Names fields.

OK, this is clear so far. But then the next sentence

Another option is to set the field to “Modify all Readers and Authors fields,” which will prevent AdminP from modifying Readers and Authors fields.

What kind of logic is this? I explicit say “YES, go ahead and modify all Readers and Authors fields!!” and this will AdminP prevent from doing so ?? I don’t get it!

{Technote #1288486}


Notes.ini WiKi

A few days ago Vladislavs Tatarincevs sent me this email

Hi, Ulrich,
in your blog, you have posted some posts that relates to notes.ini,
Maybe we could join forces to create a set of Notes.ini for server and client, and post it,
I think many young administrators will benefit from this.  😉
I have opened discussion on my blog, but only few people responded and shared their notes.ini settings.

What do you think?

vlad

I think, this is a good idea. There are already some sources, where you can find notes.ini related information.

Notes.ini Entries” and even IBM’s “Lotus Notes/Domino Notes.ini settings” database are only two of these sources. All have one thing in common. You have to know the parameter or a part of it to find information about this parameter. None of the sources are able to answer questions like: “How can I force my client to create ODS48 databases?”. This is only a simple sample and can be easily answered with “Add CREATE_R8_DATABASES=1 to your notes.ini and run compact -c”. But there might be also more difficult questions to be answered and sometimes adding a certain parameter can have side effects.

So we thougt that having a WiKi for this would be great and we would like to ask our Notes Community for some feedback. So please feel free to post your thoughs as a comment here or if you do not want to give your feedback in public, write me an email.

Looking forward to reading your feedback.


Service Dependencies

In our archiving project we sometimes have the problem that the retrieval of archived mails was not possible after the archive server was restarted. We use a third party archiving solution which not only archives mail documents but also SAP and filesystem. On one of the archive servers a Domino server is installed. This Domino controls the mail archiving part.

It was found that the issue occurs when the Domino service started before the JBoss service was started. So we had to ensure that JBoss has started and is available for use before the Domino service starts.

You might have seen, that some services already have dependencies. Double click a service in the service manager and navigate to the dependencies tab. Domino does not depent on any other service by default.

And, as you can see, there is no button or so to create a dependency or to delete an existing one. This has to be done by modifying the registry.

The Registry subkeys for services are located in the following path and can control how services are loaded.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Service name>

To create a new dependency, select the subkey representing the service you want to delay, click Edit, and then click Add Value. Create a new value name “DependOnService” (without the quotation marks) with a data type of REG_MULTI_SZ, and then click OK. When the Data dialog box appears, type the name or names of the services that you prefer to start before this service with one entry for each line, and then click OK.

The name of the service you would enter in the Data dialog box is the exact name of the service as it appears in the registry under the Services key.

When the computer starts, it uses this entry to verify that the service or services listed in this value are started before attempting to start the dependent service.

Warning Adding this entry manually may prevent the system from starting properly if you establish a “circular dependency.” In its simplest form, such a problem would occur when you make two differing services dependent on one another.


Look Into Your Notes.ini, Please

If you recently have installed a new Domino server and enabled the compression of the TCPIP Port during install, the server notes.ini parameter has a wrong value set.

The line added to the notes.ini file is as follows: TCPIP=TCP,0,15,0,,32
The correct value is TCPIP=TCP,0,15,0,,12320

To correct the problem, take the following steps to set the correct value:

  • Launch the Domino server.
  • Disable the TCPIP port compression.  To do so in the Domino Administrator client, go to Configurations -> Tools -> Server -> Ports Setup.
  • Save the document.
  • Enable the compression again, and Save.

More On Database Defragmentation

In a previous post I wrote about using Contig.exe to analyse defragmentation of your Domino databases. Contig.exe -a -v -s Drive:\DominoDataDirectoryPath\*.nsf > c:\fragments.txt will analyse all .nsf files in your Domino data directory and redirect the console output to a textfile.

Going through this textfile to search for heavily fragmented databases is a bit of a pain. I have created a simple database to import the file to get a better overview.

Start the import by clicking the Import action button, select the file you have created before and confirm your selection by clicking OK. Existing documents are not updated in this early release.

The code behind the action will now create one document for each database …

DOWNLOAD


Database Defragmentation – Poor Man’s Solution

You might already have heard of Defrag.NSF. Defrag.NSF. is a database-oriented utility that allows you to target Domino databases for defragmentation. You can automatically monitor and pre-allocate contiguous free space to be added to your databases during Defrag.NSF. maintenance, giving them headroom to grow without scattering data to random sectors of your disks.

Why is defragmentation of Notes databases important? To answer the question read Adam Osborne’s article:  Busting the Myth – how Compact -C fragments databases.

I’ve tested Defrag.NSF. during the beta phase of the product. It is a great tool, reliable and easy to use. So far , so good. But good tools cost money. And even $199 for a single server copy can be a lot if you do not have any budget.

As a developer, I could write my own solution, or find something in the World Wide Web. There are quite a lot of freeware tools ( even OpenSource ) available, but 99% of them can only defragment a whole disk but not a single file. The only tool I’ve found so far to defragment a single file or a set of files is Contig.exe by Mark Russinovich.

Contig.exe works on NT 4.0 and higher. Contig.exe can be used to defrag an existing file, or to create a new file of a specified size and name, optimizing its placement on disk. Contig.exe uses standard Windows defragmentation APIs so it won’t cause disk corruption, even if you terminate it while its running.

Just download and copy contig to your Windows directory and you are ready to analyse and defragment your databases. I’ve also tried to copy the executable to the Domino executable directory and trigger it by typing

load contig.exe -a -v -s d:\IBM\Lotus\Domino\data\*.nsf

Contig works and prints the results of the analysis to the Domino console. But unfortunately it seems that it has some side effect on running server tasks. At least the traveler task on my Domino 8.0.1 terminated abnormally.

Here are a few screenshots to show, how Contig works and that it can make files contiguous after being fragmented when using the -c option with ncompact.

Before running compact -c , my mailfile is not fragmented

Then I ran compact …

After the task has finished, contig -a -v showed 111 fragments …

Running contig -v moved the fragments to a free disk block and makes the file contiguous.

Well, this is my poor man’s solution. It is ok, if you only have a handful of databases on your server ( or you do not have a budget to buy a tool like Defrag.NSF ).