Get Rules From Users Mailfile

A few days ago I was asked to create a report about all rules in all mailfiles. The easiest way to do this is to write an agent to examine the mailfiles.
The result of this scan is stored in a Notes database.
Put the following code into an agent ( start: manually from menue, target: All Selected Documents )

Sub Initialize
	On Error Resume Next
	Dim session As New NotesSession
	Dim NAB As NotesDatabase
	Dim resultDocs As NotesDocumentCollection
	Dim MailFiles As NotesDocumentCollection

	Dim doc As NotesDocument
	Dim NABDoc As NotesDocument
	Dim rtitem As Variant
	Dim MailFileItem As NotesItem
	Dim i As Integer
	Dim NabDocCounter As Integer
	Dim fNAME As String
	Dim logline As String
	Set NAB = session.CurrentDatabase
	Set MailFiles = NAB.UnprocessedDocuments

	Dim RetCode As Integer
	Dim MailServer As String
	Dim MailFile As String

	Dim db_AllDocsCol As NotesDocumentCollection
	Dim db_User As String
	Dim archiveDb As New NotesDatabase( "", "RULEZ.NSF" )
	Dim k As Integer
	For NabDocCounter = 1 To MailFiles.Count
		db_User = ""
		Set NABDoc = MailFiles.GetNthDocument ( NABDocCounter )
		Set MailFileItem = NABDoc.GetFirstItem ( "LastName" )
		db_User = MailFileItem.Text & ", "
		Set MailFileItem = NABDoc.GetFirstItem ( "FirstName" )
		db_User = db_User + MailFileItem.Text

		Set MailFileItem = NABDoc.GetFirstItem ( "MailServer" )
		MailServer = MailFileItem.Text
		Set MailFileItem = NABDoc.GetFirstItem ( "MailFile" )
		MailFile = MailFileItem.Text
		Dim db As New NotesDatabase ("", "" )
		Call db.Open ( MailServer, MailFile )

		If db.IsOpen Then
			Dim dateTime As New NotesDateTime(_
			Cstr(Datenumber(2000, 5, 1)))

			Set resultDocs = db.Search( {@UpperCase(Form)="MAILRULE"}, dateTime,0)
			Call ResultDocs.StampAll ("RuleOwner", db_user)
			For k = 1 To resultDocs.Count
				Set doc = resultDocs.GetNthDocument ( k )
				Call doc.CopyToDatabase ( archiveDB )
			Next
		End If
	Next
End Sub

When the agent finds rules in a mailfile, it copies the documents found into a Notesdatabase defined in the following line of code.

Dim archiveDb As New NotesDatabase( "", "RULEZ.NSF" )

The database itself does not have any design elements except a modified DEFAULT view. The view contains 3 columns.

Column 1: Field RuleOwner
Column 2: Field ConditionList
Column 3: Field ActionList

That’s all !

Technorati: