@SuppressWarnings("unchecked") public static HashSet<String> getDirectoryUsersByGroup(String groupName) { HashSet<String> persons = new HashSet<String>(); try { Directory dir = NotesContext.getCurrent().getCurrentSession().getDirectory(); Vector<String> items = new Vector<String>(); items.add("Members"); Vector<String> lookupvalues = new Vector<String>(); lookupvalues.add(groupName); DirectoryNavigator dirnav = dir.lookupNames("Groups", lookupvalues,items, false); if (dirnav.isMatchLocated()) { Vector members = dirnav.getFirstItemValue(); for (Object item : members) { if (!Utils.isGroup(item.toString())) { persons.add(item.toString()); } else { persons.addAll(Utils.getDirectoryUsersByGroup(item.toString())); } } } } catch (Exception e) { Utils._logger.log(Level.SEVERE, "Error getting Users:" + e); } return persons; } public static boolean isGroup(String name) { boolean retval = false; try { Directory dir = NotesContext.getCurrent().getCurrentSession().getDirectory(); Vector<String> items = new Vector<String>(); items.add("Form"); Vector<String> lookupvalues = new Vector<String>(); lookupvalues.add(name); DirectoryNavigator dirnav = dir.lookupNames("Groups",lookupvalues,items,false); if (dirnav.isMatchLocated()) { if ("[Group]".equals(dirnav.getFirstItemValue().toString())) { retval = true; } } } catch (Exception e) { Utils._logger.log(Level.SEVERE, "Error getting group:" + e); } return retval; } }