Um den OutOfOfficeAgenten in einem beliebigen MailFile zu aktivieren benötigt man neben dem Agenten in dem Mail-File im wesentlichen das OOO-Profil um dort die entsprechenden Einstellungen machen zu können.
Sub enableOOO(personDoc as NotesDocument)
Dim mailfile As New NotesDatabase("","")
Call mailfile.Open(personDoc.MailServer(0), personDoc.MailFile(0))
If mailfile.Isopen Then
Dim ooo_agent As NotesAgent
Dim ooo_profile As NotesDocument
Set ooo_profile = mailfile.Getprofiledocument("OutOfOfficeProfile")
Set ooo_agent = mailfile.Getagent("OutOfOffice")
'Just enable in OOO-Profile
ooo_profile.BookBusyTime="0"
If ooo_profile.Hasitem("AgentLastRun") Then
Call ooo_profile.Getfirstitem("AgentLastRun").Remove()
End If
ooo_profile.CurrentStatus="1"
ooo_profile.TaskState="1"
ooo_profile.FirstDayOut=Today
'Abwesend bis zum 01. nächsten Jahres. Anwendungsfall hier: Austritt eines Mitarbeiters mit entsprechender Benachrichtigung an die Kontakte des Mitarbeiters.
ooo_profile.FirstDayBack=CDat("01.01."+Format(Year(Today)+1))
ooo_profile.AdminP_Status=""
ooo_profile.Notified=""
ooo_profile.NotificationReport=""
ooo_profile.OOO_PersonLeft="X"
Call ooo_profile.ComputeWithForm(False,False)
'Hier muss noch der entsprechende Text gesetzt werden (erfolgt in meinem Fall per Formel im OOO-Profile)
'Save Profil und Agent
ooo_agent.Isenabled = True
Call ooo_profile.Save(True,False)
Call ooo_agent.Save()
End If
End Sub
Doc wird der Sub übergeben und ist in diesem Fall das markierte Personendokument aus der names.nsf.
Erweiterung: Damit der ausführende Admin keine Berechtigung auf dem Mailfile benötigt, kann diese Funktion auch in einem geschedulten Agenten (mit ServerID gesigned) aufgerufen werden .

