Hierarchical group presentation

Hi All

I am wondering if there is something out there that would recurse the groups and present them under an Hierachical view in something like Visio.

I am thinking it would be nice to fire this once in a while and be able to visually see what is the content of groups and where they belong.

It would help cleaning the groups once in a while.

it would also be nice to attach (as a box or a pop up) the list of database where one group or even one person is part of the ACL.

Such agent may already exist. I am not sure. Does anyone know?

I know the process would take quite a while to search and produce but it would beat going though groups one by one.

What do you think?

Jacques

Subject: some LS code to explode groups - you do the rest

I retrieved this off one of the forums, and have been using it for years. You can then do the UI quite easily

Function GetGroupMembers(strGroupName As String ) As Variant

	' get Groupmembers is a standard group explode function designed to retrieve all users and users

		' within nested groups and return an array of user names

On Error Goto processError1

Dim session As New notesSession

Dim nmUser As notesName

Dim docGroup As notesDocument

Dim docGroupMember As notesDocument

Dim nmServer As notesName

Dim vGroupList() As Variant

Dim vGroupList2 As Variant

Dim dbNab As NotesDatabase

Dim vwPerson As notesView

Dim count As Integer, i As Integer, flag As Integer

Dim groupname As String

Set nmServer = New notesName(Session.CurrentDatabase.Server)



Redim vGroupList(0) As Variant

Dim vwGroup As NotesView 

Forall v In session.AddressBooks

	If v.isPublicAddressBook Then

		Call v.Open("","")

		flag =  dbNAB.Open(getNameServer,v.FilePath)

		If flag Then		

			

			If dbNAB.IsOpen Then

				If vwGroup Is Nothing Then

					Set vwGroup = dbNAB.getView("($VIMGroups)")

				End If

				

				groupname=strGroupName

				If groupname<>"" Then

				'strip off @Domain

					If Instr(groupname,"@")>0 Then groupname=Left$(groupname,Instr(groupname,"@")-1)' Else groupname=listnames

					Set docGroup = vwGroup.getDocumentByKey(groupname)

					

					If Not docGroup Is Nothing Then

						

						' for each groupMember in members

						Forall groupMember In docGroup.Members

							

							If Trim(groupMember) <> "" Then

								' if the group member is not a sub-group

								Set nmUser = New notesName(groupMember)

								Set docGroupMember = vwGroup.GetDocumentByKey(Trim(nmUser.Abbreviated))

								If docGroupMember Is Nothing Then

									' append it to the end of the list

									Call AddToArray(vGroupList, groupMember)

								Else

								' ***** Recursive Call *****

									

									'groupMember(0)=groupMember

									vGroupList2 = GetGroupMembers(groupMember)

									' ***************************

									' add any recursed group names into the groupNames

									Forall groupMember2 In vGroupList2

										Call AddToArray(vGroupList, Cstr(groupMember2))

									End Forall

								End If

							End If

						End Forall

					End If

				End If

			End If

		End If

	End If

End Forall

GetGroupMembers = vGroupList 

getout:

Exit Function

processError1:

Messagebox   "GetGroupMembers: " + Str$(Err)+" at line " +Cstr(Erl),48,LOTUS_SCRIPT_TITLE 

GetGroupMembers=""

Resume getout

End Function