Um erro comum que acontece em vários ambientes é aquele quando um usuário é removido do ambiente, sua caixa postal então não é apagada por diversos motivos, técnicos ou não.
Com o passar do tempo o Schedule Manager começa a gerar erros, principalmente quando o servidor é iniciado, informando que o dono (owner) de um banco de dados mailfulano.nsf existe mas o usuário Fulano/Acme não existe.
Fiz um agente que gera um relatório informando se existem caixas postais órfãs. O que o agente faz:
Ele procura as caixas postais, abre o banco de dados, localiza o nome do owner no profile da agenda (calendar profile) e verifica se o owner existe no Domino Directory. Se o usuário não existir um documento é criado.
Não coloquei um método para apagar o banco de dados pois podem aparecer “falsos positivos”. Executei este agente em dois servidores e apareceram somente 2 falsos positivos entre 400 bancos de dados que teriam de ser realmente apagados.
É necessário criar um Formulário com alguns campos e uma visão para exibir o resultado
Formulário: usuario
O agente tem o código abaixo
Sub Initialize
Dim db As NotesDatabase
Dim ses As NotesSession
Dim doc As NotesDocument
Dim docUsu As NotesDocument
Dim dbdir As NotesDbDirectory
Dim maildb As NotesDatabase
Dim Nab As NotesDatabase
Dim col As NotesDocumentCollection
Dim Nome As String
Dim profile As NotesDocument
Dim Data As New NotesDateTime(“1/1/1980”)
Dim searchString As String
Set ses = New NotesSession
server = Inputbox (“Nome do Servidor) (Enter para Local)”)
subdir = Inputbox (“Em qual subdiretório o agente deve procurar as bases? ( Enter para todos os diretórios) “)
If subdir <> “” Then subdir=subdir & “”
Set db = ses.CurrentDatabase
Set dbdir = ses.GetDbDirectory(server)
Set Nab = ses.GetDatabase(server,”names.nsf”)
Set maildb = dbdir.GetFirstDatabase(DATABASE)
While Not (maildb Is Nothing)
If Instr(1,maildb.FilePath,subdir,5)<>0 Then
Call maildb.Open(“”,””)
If maildb.IsOpen Then
‘informações base correio profile
Set profile = maildb.GetProfileDocument(“CalendarProfile”)
Nome = profile.Owner(0)
‘procura usuário livro endereços
searchString = “Form = ‘Person’ & FullName='” & Nome & “‘”
Set col = nab.Search(searchString,data,0)
If col.Count=0 Then
Set docUsu = db.CreateDocument
docUsu.Form = “usuario”
docUsu.NmUsu = Nome
docUsu.ArqMail = maildb.FilePath
docUsu.UtmMdf=maildb.LastModified
Call docUsu.save (True,False)
End If
End If
End If
Set maildb = dbdir.getnextdatabase
Wend
End Sub
Be First to Comment