Sunday, June 30, 2013

Troubleshoot Lotus Notes Out of Office (OOO) agent error messages

Our help desk recently received several calls from users regarding their Out of Office messages. Lotus Notes users have complained that they enabled their Out of Office agents before a holiday without any issues. However, when they tried to disable the agents, they couldn't. Instead, the Out of Office profile displayed a message similar to that in Figure 1.
Lotus Notes out of office error
Figure 1. Out of Office profile error message.
You might recognize that this is the message that is displayed when a Lotus Notes user has "editor" access to his mail file and tries to enable or disable his out of office agent. With editor access, an administration request enables or disables the agent on behalf of the Lotus Notes user.



It's worth noting that the Lotus Notes users received each this message all day. I could not find any administration request on the Lotus Domino server.
I tried to reproduce the error message on my workstation, but couldn't. However, the message was visible in the user's desktop when viewed remotely. Subsequently, an error message that occurred in the status bar stated:
"Notes error: 182 Instance member CONFIGUREMAILAGENTTEXT does not exist."
I searched the IBM Knowledge Base forCONFIGUREMAILAGENTTEXT and found this technote referring to the out-of-office agent error message that states:
In Lotus Notes, you attempt to enable the Out of Office (OOO) agent in your mail file. The agent does not enable and you notice the following error message in the status bar of the Notes client:
"Notes error: 182 Instance member CONFIGUREMAILAGENTTEXT does not exist."
This issue only occurs for users with Editor access to their mail file and only occurs in Notes, regardless of the mail template design being used. The issue does not occur when using Lotus Domino Web Access (DWA) mail.
Background information.
Five days after the holiday, I did a mass change on all Lotus Notes users' mail files to ensure that all access control lists (ACLs) only have editor access with all options set except "can create personal agents." Our company uses Lotus Domino server version 7.0.3 and Lotus Notes client version 7.0.2, with a modified dwa7.ntf mail template. These changes, however, do not affect the Out of Office profile. The IBM technote offered the following hint:
NOTE: The DWA7 client that ships with the Notes/Domino 7.0.2 release is incompatible with all previous versions of Notes.
This raises an important question: Does this affect all previous versions of Lotus Notes, including version 7.0.1? The answer is yes; version 7.0.1 is incompatible with dwa7.ntf, which is shipped with client version 7.0.2. Lotus Notes clients using this version could not disable the OOO agent. A long-term solution is to update these clients as soon as possible.
The technote shows that there is another option. I can grant these clients "designer" access. I used the following code to make the changes in the Domino Directory. I suggest creating a new agent in the Domino Designer, then selecting "all selected documents" from the menu and copying the following LotusScript code into the agent:
Option Public 
Option Declare 


'Use "OpenLogFunctions" 
Sub Initialize 
'On Error Goto Errorhandler 
Dim ws As New NotesUIWorkspace 
Dim session As New NotesSession 
Dim db As NotesDatabase 
Dim dc As NotesDocumentCollection 
Dim doc As NotesDocument 
Dim total As Long 
Dim docnum As Long 


Set db = session.CurrentDatabase 

Set dc = db.UnprocessedDocuments 
total = dc.Count 
docnum = 0 

Set doc = dc.GetFirstDocument 
While Not doc Is Nothing 
docnum = docnum + 1 
Call UpdateStatusBar(docnum, total) 
Call ProcessPersonDoc(doc) 
Set doc = dc.GetNextDocument(doc) 
Wend 

Call ws.ViewRefresh 
'Exit Sub 


Errorhandler: 
'Call LogError 
'Exit Sub 
End Sub 
Sub UpdateStatusBar 
(x As Long, total As Long) 
'This will display the percentage complete in the status bar as the agent runs 


Print "Working..." 
& Cstr(Round((x / total), 2)*100) & "% done" 
End Sub 


Sub ProcessPersonDoc(doc As NotesDocument) 
'On Error Goto stackError 
Dim s As New NotesSession 
Dim profile As NotesDocument 
Dim owner As String 
Dim ACL As NotesACL 
Dim ACLEntry As NotesACLEntry 
Dim nn As NotesName 



Dim Maildb As New NotesDatabase ( doc.MailServer(0), doc.MailFile(0) ) 
If Maildb.IsOpen Then 
Print( "Succesfully opened " & Maildb.Title ) 
Set profile = Maildb.GetProfileDocument("CalendarProfile") 
Set nn = s.CreateName ( profile.Owner(0) )

 
Set ACL = MailDB.ACL 
Set ACLEntry = ACL.GetEntry ( profile.Owner(0) ) 
If Not ( ACLEntry Is Nothing ) Then 
ACLEntry.Remove 
ACL.Save 
End If 


'Set OWNER access to DESIGNER 
Set ACLENtry = New NotesACLEntry ( ACL, profile.Owner(0), 5 ) ACLENtry.CanDeleteDocuments = True 
ACLENtry.CanCreateLSOrJavaAgent = True 
ACLENtry.IsPerson = True 
ACL.Save 
End If 
EXITPOINT: 
'Exit Sub 
stackError: 
'Call LogError() 
'Resume EXITPOINT End Sub
You can select one or more users and run the agent against their mail files. The agent will read the calendar profiles to determine the mail-file owner, and then it will change the ACL.

No comments:

Post a Comment