diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java
index 5722ffea14b0c5d7b8335ef422249bbfabbf9e50..6617843114c49bfc090a6a51ed420370d75e6921 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java
@@ -14,5 +14,5 @@ public class DmStatus
     public static final int DM_INVALID_OBJECT_STATE = 5;
     public static final int DM_OBJECT_ALREADY_EXISTS = 6;
     public static final int DM_OBJECT_NOT_FOUND = 7;
-    public static final int DM_INVALID_DATES = 8;
+    public static final int DM_INVALID_DATE = 8;
 }
\ No newline at end of file
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java
index d7c16fede4618bb21352f373cf77fe1f71fbff09..07e9f66e90e4a040dbce09cdcc1d695b68186d94 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java
@@ -23,7 +23,7 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F
     private static final Logger logger = Logger.getLogger(CrudEntityController.class.getName());
 
 
-    private EntityType current = null;
+    protected EntityType current = null;
 
     private DataModel listDataModel = null;
     private DataTable listDataTable = null;
@@ -136,7 +136,7 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F
         current = createEntityInstance();
         return "create?faces-redirect=true";
     }
-
+    
     public EntityType cloneEntityInstance(EntityType entity) {
         EntityType clonedEntity;
         try {
@@ -268,6 +268,8 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F
     }
 
     public List<EntityType> getFilteredObjectList() {
+        boolean isNull = (filteredObjectList == null);
+        logger.debug("filteredObjectList is null "+ isNull);
         return filteredObjectList;
     }
 
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f966d8fad23a4af593745cbb01523c5e7d9b974
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java
@@ -0,0 +1,126 @@
+package gov.anl.aps.dm.portal.controllers;
+
+import gov.anl.aps.dm.portal.model.entities.CloneableEntity;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import org.apache.log4j.Logger;
+import org.primefaces.component.datatable.DataTable;
+
+public abstract class DataTableController<EntityType extends CloneableEntity> implements Serializable
+{
+
+    private static final Logger logger = Logger.getLogger(DataTableController.class.getName());
+
+
+    protected EntityType current = null;
+
+    private DataModel listDataModel = null;
+    private DataTable listDataTable = null;
+    private boolean listDataModelReset = true;
+    private List<EntityType> filteredObjectList = null;
+    private List<EntityType> selectedObjectList = null;
+
+    
+    public DataTableController() {
+    }
+
+    @PostConstruct
+    public void initialize() {
+    }
+    
+    public abstract String getEntityTypeName();
+
+//    public abstract String getCurrentEntityInstanceName();
+
+    public EntityType getCurrent() {
+        return current;
+    }
+
+    public void setCurrent(EntityType current) {
+        this.current = current;
+    }
+
+    public DataModel createListDataModel() {
+        return new ListDataModel(findAll());
+    }
+
+    public DataModel getListDataModel() {
+        if (listDataModel == null) {
+            listDataModel = createListDataModel();
+        }
+        return listDataModel;
+    }
+
+    public abstract List<EntityType> findAll();
+
+    public void resetList() {
+        logger.debug("Resetting list");
+        listDataModel = null;
+        listDataTable = null;
+        listDataModelReset = true;
+        filteredObjectList = null;
+        current = null;
+    }
+
+   public DataTable getListDataTable() {
+        if (listDataTable == null) {
+            logger.debug("Recreating data table");
+            listDataTable = new DataTable();
+        }
+        return listDataTable;
+    }
+
+    public void setListDataTable(DataTable listDataTable) {
+        this.listDataTable = listDataTable;
+    }
+
+    public boolean isAnyListFilterSet() {
+        if (listDataTable == null) {
+            return false;
+        }
+        Map<String, Object> filterMap = listDataTable.getFilters();
+        for (Object filter : filterMap.values()) {
+            if ((String)filter != null && !((String)filter).isEmpty()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public List<EntityType> getFilteredObjectList() {
+        return filteredObjectList;
+    }
+
+     public void setFilteredObjectList(List<EntityType> filteredObjectList) {
+        this.filteredObjectList = filteredObjectList;
+    }
+
+   public List<EntityType> getFilteredItems() {
+        return filteredObjectList;
+    }
+
+    public void setFilteredItems(List<EntityType> filteredItems) {
+        this.filteredObjectList = filteredItems;
+    }
+    
+    public boolean isListDataModelReset() {
+        if (listDataModelReset) {
+            listDataModelReset = false;
+            return true;
+        }
+        return false;
+    }
+
+    public List<EntityType> getSelectedObjectList() {
+        return selectedObjectList;
+    }
+    
+    public void setSelectedObjectList(List<EntityType> selectedObjectList) {
+        this.selectedObjectList = selectedObjectList;
+    }
+    
+}
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
index d5fa194551a7202ea6732f523a2862ef6939e918..206fee050b5d70f5d7e3833b71056f8a64d14505 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
@@ -2,7 +2,7 @@ package gov.anl.aps.dm.portal.controllers;
 
 import gov.anl.aps.dm.portal.exceptions.DmPortalException;
 import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
-import gov.anl.aps.dm.portal.exceptions.IncorrectDate;
+import gov.anl.aps.dm.portal.exceptions.InvalidDate;
 import gov.anl.aps.dm.portal.model.entities.Experiment;
 import gov.anl.aps.dm.portal.model.beans.ExperimentFacade;
 import java.util.List;
@@ -63,14 +63,14 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
     }
 
     @Override
-    public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, IncorrectDate {
+    public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate {
         Experiment existingExperiment = experimentFacade.findByName(experiment.getName());
         if (existingExperiment != null) {
             throw new ObjectAlreadyExists("Experiment " + experiment.getName() + " already exists.");
         }
         
         if ((experiment.getStartDate() != null) && (experiment.getEndDate() != null) && (experiment.getEndDate().before(experiment.getStartDate()))) {
-            throw new IncorrectDate("Experiment end date is before start date.");
+            throw new InvalidDate("Experiment end date is before start date.");
         }
         
         logger.debug("Inserting new experiment " + experiment.getName());                
@@ -80,7 +80,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
     public void prepareEntityUpdate(Experiment experiment) throws DmPortalException {
         super.prepareEntityUpdate(experiment);
         if ((experiment.getStartDate() != null) && (experiment.getEndDate() != null) && (experiment.getEndDate().before(experiment.getStartDate()))) {
-            throw new IncorrectDate("Experiment end date is before start date.");
+            throw new InvalidDate("Experiment end date is before start date.");
         }        
     }
    
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
index 8528a7902e2aa277de24d7cdf415f2791f68afc1..1c0e21c034341484991f313892f4df5edee42cd7 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java
@@ -5,6 +5,7 @@ import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
 import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
 import gov.anl.aps.dm.portal.model.entities.RoleType;
 import gov.anl.aps.dm.portal.utilities.SessionUtility;
+import java.util.ArrayList;
 import java.util.List;
 import javax.ejb.EJB;
 import javax.enterprise.context.SessionScoped;
@@ -19,6 +20,10 @@ import org.apache.log4j.Logger;
 @SessionScoped
 public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeFacade>
 {
+    private static final List<String> systemRoles = new ArrayList();
+    {
+        systemRoles.add("Administrator");
+    }
 
     private static final Logger logger = Logger.getLogger(RoleTypeController.class.getName());
 
@@ -74,10 +79,19 @@ public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeF
     public void prepareEntityUpdate(RoleType roleType) throws DmPortalException {
         super.prepareEntityUpdate(roleType);
     }
-    
+
+    public boolean isRoleSystemType(String name) {
+        if (name == null) {
+            logger.warn("Current row is not set");
+            // Do nothing if current item is not set.
+            return false;
+        }
+
+        return systemRoles.contains(name);
+    }
+
     @FacesConverter(forClass = RoleType.class)
-    public static class RoleTypeControllerConverter implements Converter
-    {
+    public static class RoleTypeControllerConverter implements Converter {
 
         @Override
         public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
index a89a6067cf6cd29ae0c9039f8e926b7f2223fdee..5a58c9f52f81c5355c5707a536270dd80554fb66 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
@@ -5,6 +5,7 @@ import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
 import gov.anl.aps.dm.portal.model.entities.UserInfo;
 import gov.anl.aps.dm.portal.model.beans.UserInfoFacade;
 import gov.anl.aps.dm.portal.utilities.SessionUtility;
+import java.util.ArrayList;
 
 import java.util.List;
 import javax.ejb.EJB;
@@ -27,7 +28,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
     private UserInfoFacade userInfoFacade;
 
     private String passwordEntry = null;
-
+    
     public UserInfoController() {
     }
 
@@ -100,7 +101,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
         this.passwordEntry = passwordEntry;
     }
 
-    @FacesConverter(forClass = UserInfo.class)
+@FacesConverter(forClass = UserInfo.class)
     public static class UserInfoControllerConverter implements Converter
     {
 
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java
new file mode 100644
index 0000000000000000000000000000000000000000..da428975855e3a8d7daa17e4ca59a3f4c90474e6
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java
@@ -0,0 +1,181 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package gov.anl.aps.dm.portal.controllers;
+
+import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
+import gov.anl.aps.dm.portal.model.beans.UserInfoFacade;
+import gov.anl.aps.dm.portal.model.entities.RoleType;
+import gov.anl.aps.dm.portal.model.entities.UserInfo;
+import gov.anl.aps.dm.portal.utilities.SessionUtility;
+import java.io.Serializable;
+import java.util.List;
+import javax.ejb.EJB;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+import org.apache.log4j.Logger;
+
+@Named("userSystemRoleController")
+@SessionScoped
+public class UserSystemRoleController  implements Serializable
+{
+ 
+    @EJB
+    private UserInfoFacade userInfoFacade;
+
+    @EJB
+    private RoleTypeFacade roleTypeFacade;
+
+    public UserSystemRoleController() {
+        this.systemRoleTable = new SystemRoleTypeTable();
+        this.noSystemRoleTable = new NoSystemRoleTypeTable();
+    }
+
+    class SystemRoleTypeTable extends DataTableController<UserInfo> {
+
+        @Override
+        public String getEntityTypeName() {
+            return "UserInfo";
+        }
+
+        @Override
+        public List<UserInfo> findAll() {
+            try {
+                int id = Integer.parseInt(systemRoleId);
+                return userInfoFacade.findSystemRoleUsers(id);
+            } catch (NumberFormatException e) {
+                return null;
+            }
+        }
+    }
+    
+    class NoSystemRoleTypeTable extends DataTableController<UserInfo> {
+
+        @Override
+        public String getEntityTypeName() {
+            return "UserInfo";
+        }
+
+        @Override
+        public List<UserInfo> findAll() {
+            try {
+                int id = Integer.parseInt(systemRoleId);
+                return userInfoFacade.findNoSystemRoleUsers(id);
+            } catch (NumberFormatException e) {
+                return null;
+            }
+        }
+    }
+    
+    private SystemRoleTypeTable systemRoleTable;
+    private NoSystemRoleTypeTable noSystemRoleTable;
+
+    private String systemRoleId;
+
+    private static final Logger logger = Logger.getLogger(UserSystemRoleController.class.getName());
+
+
+    public SystemRoleTypeTable getSystemRoleTable() {
+        return systemRoleTable;
+    }
+
+    public void setSystemRoleTable(SystemRoleTypeTable systemRoleTable) {
+        this.systemRoleTable = systemRoleTable;
+    }
+
+     public NoSystemRoleTypeTable getNoSystemRoleTable() {
+        return noSystemRoleTable;
+    }
+
+    public void setNoSystemRoleTable(NoSystemRoleTypeTable noSystemRoleTable) {
+        this.noSystemRoleTable = noSystemRoleTable;
+    }
+
+    public String getSystemRoleId() {
+        return systemRoleId;
+    }
+
+    public void setSystemRoleId(String systemRoleId) {
+        this.systemRoleId = systemRoleId;
+    }
+         
+    public String getSystemRoleName() {
+        int id = Integer.parseInt(systemRoleId);
+        return roleTypeFacade.findById(id).getName(); 
+    }
+
+     public String resetSystemRoleUserList() {
+        logger.debug("Resetting System Role User list");
+        systemRoleTable.resetList();
+        return "/views/userSystemRole/list?faces-redirect=true";
+    }
+    
+     public void resetNoSystemRoleUserList() {
+        logger.debug("Resetting System Role Add User list");
+        noSystemRoleTable.resetList();
+//        return "/views/userSystemRole/list?faces-redirect=true";
+    }
+    
+   public boolean hasSystemRole(String user) {
+        logger.debug("in hasSystemRole username, roleId "+ user+" "+systemRoleId);
+        int id = Integer.parseInt(systemRoleId);
+        RoleType rt = roleTypeFacade.findById(id);
+        if (rt == null) {
+            return false;
+        }
+        return rt.isAdmin(user);
+    }
+
+    public String prepareSystemRoleView() {
+        logger.debug("Preparing system role view");
+        return "/views/userSystemRole/list?faces-redirect=true";
+    }
+
+    public String addSystemRole() {
+        int id = Integer.parseInt(systemRoleId);
+        RoleType rt = roleTypeFacade.findById(id);
+        if (rt != null) {
+            List<UserInfo> uiList = noSystemRoleTable.getSelectedObjectList();
+
+            if (uiList == null) {
+                logger.debug("null selected list");
+            } else if (uiList.isEmpty()) {
+                logger.debug("empty selected list");
+            } else {
+                for (UserInfo userInfo : uiList) {
+                    rt.addRoleTypeToUser(userInfo);
+                }
+            }
+        }
+        try {
+            roleTypeFacade.edit(rt);
+            resetNoSystemRoleUserList();
+            return resetSystemRoleUserList();
+        } catch (RuntimeException ex) {
+            SessionUtility.addErrorMessage("Error", "Could not update RoleType" + ": " + ex.getMessage());
+            return null;
+        }
+    }
+
+    public String removeSystemRole() {
+        logger.debug("removing system role from user");
+        int id = Integer.parseInt(systemRoleId);
+        RoleType rt = roleTypeFacade.findById(id);
+        if (rt != null) {
+            rt.removeRoleTypeFromUser(systemRoleTable.current);
+        }
+        try {
+        roleTypeFacade.edit(rt);
+        return resetSystemRoleUserList();
+        }
+        catch (RuntimeException ex) {
+            SessionUtility.addErrorMessage("Error", "Could not update RoleType" + ": " + ex.getMessage());
+            return null;
+        }
+        
+     }
+
+}
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/IncorrectDate.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/InvalidDate.java
similarity index 65%
rename from src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/IncorrectDate.java
rename to src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/InvalidDate.java
index 1b1f1a4bb64e1f1885c93448f538623741c8ab2c..ffe8accfd7ff50b07caea2412889699f25490f88 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/IncorrectDate.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/InvalidDate.java
@@ -12,16 +12,16 @@ import gov.anl.aps.dm.portal.constants.DmStatus;
 /**
  * Object already exists exception class.
  */
-public class IncorrectDate extends DmPortalException 
+public class InvalidDate extends DmPortalException 
 {
 
     /**
      * Constructor.
      */
-    public IncorrectDate() 
+    public InvalidDate() 
     {
         super();
-        setErrorCode(DmStatus.DM_INVALID_DATES);
+        setErrorCode(DmStatus.DM_INVALID_DATE);
     }
 
     /**
@@ -29,10 +29,10 @@ public class IncorrectDate extends DmPortalException
      *
      * @param message Error message
      */
-    public IncorrectDate(String message) 
+    public InvalidDate(String message) 
     {
         super(message);
-        setErrorCode(DmStatus.DM_INVALID_DATES);
+        setErrorCode(DmStatus.DM_INVALID_DATE);
     }
 
     /**
@@ -40,10 +40,10 @@ public class IncorrectDate extends DmPortalException
      *
      * @param throwable Throwable object
      */
-    public IncorrectDate(Throwable throwable) 
+    public InvalidDate(Throwable throwable) 
     {
         super(throwable);
-        setErrorCode(DmStatus.DM_INVALID_DATES);
+        setErrorCode(DmStatus.DM_INVALID_DATE);
     }
 
     /**
@@ -52,10 +52,10 @@ public class IncorrectDate extends DmPortalException
      * @param message Error message
      * @param throwable Throwable object
      */
-    public IncorrectDate(String message, Throwable throwable) 
+    public InvalidDate(String message, Throwable throwable) 
     {
         super(message, throwable);
-        setErrorCode(DmStatus.DM_INVALID_DATES);
+        setErrorCode(DmStatus.DM_INVALID_DATE);
     }
 
 }
\ No newline at end of file
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
index 04a018b264823da49396fb319c4738ec23992cf0..412bbea33653168d07ff25849a0c38e92e798b7b 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/RoleTypeFacade.java
@@ -7,6 +7,8 @@
 package gov.anl.aps.dm.portal.model.beans;
 
 import gov.anl.aps.dm.portal.model.entities.RoleType;
+import gov.anl.aps.dm.portal.model.entities.UserInfo;
+import java.util.List;
 import javax.ejb.Stateless;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
@@ -30,14 +32,23 @@ public class RoleTypeFacade extends AbstractFacade<RoleType>
     public RoleTypeFacade() {
         super(RoleType.class);
     }
-    
+
     public RoleType findByName(String name) {
         try {
             return (RoleType) em.createNamedQuery("RoleType.findByName")
                     .setParameter("name", name)
                     .getSingleResult();
+        } catch (NoResultException ex) {
         }
-        catch (NoResultException ex) {
+        return null;
+    }
+
+    public RoleType findById(int id) {
+        try {
+            return (RoleType) em.createNamedQuery("RoleType.findById")
+                    .setParameter("id", id)
+                    .getSingleResult();
+        } catch (NoResultException ex) {
         }
         return null;
     }
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
index 770a6eff6b57beeeb957084b3f5cbb98a5595672..16b40cf59dc644d16e88716fc7bfc6b16eb6f9ae 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/beans/UserInfoFacade.java
@@ -6,6 +6,7 @@
 package gov.anl.aps.dm.portal.model.beans;
 
 import gov.anl.aps.dm.portal.model.entities.UserInfo;
+import java.util.List;
 import javax.ejb.Stateless;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
@@ -46,4 +47,25 @@ public class UserInfoFacade extends AbstractFacade<UserInfo>
         return findByUsername(username) != null;
     }
 
+    public List<UserInfo> findNoSystemRoleUsers(Integer roleTypeId) {
+        try {
+            return (List<UserInfo>) em.createNamedQuery("UserInfo.findNonAdmins")
+                .setParameter("roleTypeId", roleTypeId)
+                .getResultList();
+        }
+        catch (NoResultException ex) {            
+        }
+        return null;
+    }
+
+    public List<UserInfo> findSystemRoleUsers(int roleTypeId) {
+        try {
+            return (List<UserInfo>) em.createNamedQuery("UserInfo.findUsersInRole")
+                .setParameter("roleTypeId", roleTypeId)
+                .getResultList();
+        }
+        catch (NoResultException ex) {            
+        }
+        return null;
+    }
 }
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
index 3476b24c7c9529625729be9e410c633a9cd73e05..55c47b96e7cfe7d7a60ab46e0c081db9bf054d13 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
@@ -6,6 +6,7 @@
 
 package gov.anl.aps.dm.portal.model.entities;
 
+import java.util.ArrayList;
 import java.util.List;
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
@@ -105,6 +106,27 @@ public class RoleType extends CloneableEntity
     public void setUserInfoList(List<UserInfo> userInfoList) {
         this.userInfoList = userInfoList;
     }
+ 
+    public void addRoleTypeToUser(UserInfo userInfo) {
+        if (userInfoList == null)
+            userInfoList = new ArrayList();
+        if (!userInfoList.contains(userInfo)) {
+            userInfoList.add(userInfo);
+        }
+    }
+
+    public void removeRoleTypeFromUser(UserInfo userInfo) {
+        userInfoList.remove(userInfo);
+    }
+
+    public boolean isAdmin(String userName) {
+        for (UserInfo userInfo : getUserInfoList())
+        {
+            if (userInfo.getUsername().equals(userName))
+                return true;
+        }
+        return false;
+    }
 
     @XmlTransient
     public List<UserExperimentRole> getUserExperimentRoleList() {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
index 2083e39e8e17d389f2b76e1300a73c6ad31b4af5..ddf7eb8c7b969c619fab08fc75be7b5d79e520f6 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
@@ -40,7 +40,10 @@ import javax.xml.bind.annotation.XmlTransient;
     @NamedQuery(name = "UserInfo.findByMiddleName", query = "SELECT u FROM UserInfo u WHERE u.middleName = :middleName"),
     @NamedQuery(name = "UserInfo.findByEmail", query = "SELECT u FROM UserInfo u WHERE u.email = :email"),
     @NamedQuery(name = "UserInfo.findByDescription", query = "SELECT u FROM UserInfo u WHERE u.description = :description"),
-    @NamedQuery(name = "UserInfo.findByPassword", query = "SELECT u FROM UserInfo u WHERE u.password = :password")})
+    @NamedQuery(name = "UserInfo.findByPassword", query = "SELECT u FROM UserInfo u WHERE u.password = :password"),
+    @NamedQuery(name = "UserInfo.findNonAdmins", query = "SELECT u FROM UserInfo u WHERE u.id NOT IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)"),
+    @NamedQuery(name = "UserInfo.findUsersInRole", query = "SELECT u FROM UserInfo u WHERE u.id IN (SELECT u2.id from UserInfo u2 JOIN u2.roleTypeList rt WHERE rt.id = :roleTypeId)")})
+
 public class UserInfo extends CloneableEntity
 {
     @Id
diff --git a/src/java/DmWebPortal/web/resources/css/jsfcrud.css b/src/java/DmWebPortal/web/resources/css/jsfcrud.css
index fa75f5b0d6a39265b0db81288f50463fb80feee3..811a960478318559204a1fd5cbe1df2cd16e743c 100644
--- a/src/java/DmWebPortal/web/resources/css/jsfcrud.css
+++ b/src/java/DmWebPortal/web/resources/css/jsfcrud.css
@@ -5,7 +5,7 @@ root {
 body {
     font-family: Arial, Helvetica, sans-serif;
     color: #3a4f54;
-    background-color: #dfecf1;
+    background-color: #f2f4f7;
     font-size: small;
 }
 
diff --git a/src/java/DmWebPortal/web/resources/css/login.css b/src/java/DmWebPortal/web/resources/css/login.css
index f6cc4767b9292b249f43dc97fa02125ea5faa9f7..4a1d0ef4c6f4940ce52fad5197744b5f2d0212e2 100644
--- a/src/java/DmWebPortal/web/resources/css/login.css
+++ b/src/java/DmWebPortal/web/resources/css/login.css
@@ -103,7 +103,7 @@ a:link:hover, a:visited:hover  {
 }
 
 input {
-    background: #6da5d8;
+    background: #f2f4f7;
     box-shadow: 0px 3px 5px #d5d5d5;
 }
 
@@ -136,7 +136,6 @@ h1 {
     color: saddlebrown;
     border: #f2f4f7;
     size: auto;
-    tab-size: calc;
     drop-initial-size: auto;
 }
 
diff --git a/src/java/DmWebPortal/web/resources/css/portal.css b/src/java/DmWebPortal/web/resources/css/portal.css
index 5ebe4fb94baedc0a840a7b22b9eaecd657fbbf86..22159fbe0c25e9dd623b87f987b54152c4687290 100644
--- a/src/java/DmWebPortal/web/resources/css/portal.css
+++ b/src/java/DmWebPortal/web/resources/css/portal.css
@@ -1,5 +1,5 @@
 body {
-    background-color: #b2d5d6;
+    background-color: #f2f4f7;
     font-size: 12px;
     font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
     color: #000000;
@@ -226,6 +226,61 @@ a:link:hover, a:visited:hover  {
     width: 300px;
 }
 
+.systemRoleAddTable {
+    
+}
+
+.systemRoleAddTable td:nth-child(1) {
+    width: 16px;
+    text-align:center;
+}
+
+.systemRoleAddTable td:nth-child(2) {
+    width: 100px;
+}
+
+.systemRoleAddTable td:nth-child(3) {
+    width: 120px;
+}
+
+.systemRoleAddTable td:nth-child(4) {
+    width: 120px;
+}
+
+.systemRoleAddTable td:nth-child(5) {
+    width: 200px;
+}
+
+.systemRoleTable {
+    
+}
+
+.systemRoleTable td:nth-child(1) {
+    width: 16px;
+    text-align:center;
+}
+
+.systemRoleTable td:nth-child(2) {
+    width: 100px;
+}
+
+.systemRoleTable td:nth-child(3) {
+    width: 120px;
+}
+
+.systemRoleTable td:nth-child(4) {
+    width: 120px;
+}
+
+.systemRoleTable td:nth-child(5) {
+    width: 200px;
+}
+
+.systemRoleTable td:nth-child(7) {
+    width: 150px;
+    visibility:visible;
+}
+
 .entityLogList td:last-child {
     width: 195px;
 }
diff --git a/src/java/DmWebPortal/web/resources/js/common/forwardNotLoggedin.js b/src/java/DmWebPortal/web/resources/js/common/forwardNotLoggedin.js
index d5075dd29465ff968fa1644d02dbfec6fdf9234a..97b82833d02820a8b20c3f3fb99e864ada44d8d7 100644
--- a/src/java/DmWebPortal/web/resources/js/common/forwardNotLoggedin.js
+++ b/src/java/DmWebPortal/web/resources/js/common/forwardNotLoggedin.js
@@ -1,2 +1 @@
-  window.location = "/dm/views/login.xhtml";
-
+  window.location = "/dm/views/login.xhtml";
\ No newline at end of file
diff --git a/src/java/DmWebPortal/web/resources/js/forwardNotLoggedin.js b/src/java/DmWebPortal/web/resources/js/forwardNotLoggedin.js
deleted file mode 100644
index d21f80ed4887c070f545bf26fa0f8ad9a2e4e6d9..0000000000000000000000000000000000000000
--- a/src/java/DmWebPortal/web/resources/js/forwardNotLoggedin.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-  window.location = "/dm/views/login.xhtml";
-
-
diff --git a/src/java/DmWebPortal/web/resources/js/userInfo/list.filter.js b/src/java/DmWebPortal/web/resources/js/userInfo/list.filter.js
deleted file mode 100644
index b7634e986fa14ecebf8e2c96139b99a7cd7eb860..0000000000000000000000000000000000000000
--- a/src/java/DmWebPortal/web/resources/js/userInfo/list.filter.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-jQuery(document).ready(function() {
-    PF('userInfoListWidget').filter();
-});
\ No newline at end of file
diff --git a/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml b/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml
deleted file mode 100644
index 83cb4d250853833969ef607f6d6750df23c161e0..0000000000000000000000000000000000000000
--- a/src/java/DmWebPortal/web/templates/homeViewTemplate.xhtml
+++ /dev/null
@@ -1,119 +0,0 @@
-<!--<?xml version='1.0' encoding='UTF-8' ?>-->
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:p="http://primefaces.org/ui"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://xmlns.jcp.org/jsf/core">
-
-
-    <h:head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-        <link href="../resources/css/portal.css" rel="stylesheet" type="text/css" />
-        <title>Data Management System Portal</title>
-    </h:head>
-
-    <h:body>
-
-        <div id="top" class="topContent">
-            <div id="topLeft" class="topLeftContent">
-                <ui:insert name="topLeft">
-                    <h:graphicImage alt="ANL Logo" url="/resources/images/AnlLogo167x75.png"/>
-                </ui:insert>
-            </div>
-            <div>
-                <div id="topRight" class="topRightContent">
-                    <ui:insert name="topRight">
-                        <h:outputText value="Username: #{loginController.displayUsername()}"/>
-                        <br/>
-
-                        <h:outputText value="Role: #{loginController.displayRole()}"/>
-
-                    </ui:insert>
-                </div>
-                <div id="topCenter" class="topCenterContent">
-                    <ui:insert name="topCenter">
-                        <h1>Data Management System Portal</h1>
-                    </ui:insert>
-                </div>
-            </div>
-        </div>
-
-        <ui:fragment>
-            <div id="menu" class="menuContent">
-                <div id="menuLeft" class="menuLeftContent">
-                    <ui:insert name="menuLeft">
-                        <p:menubar/>
-                    </ui:insert>
-                </div>
-                <div>
-                    <div id="menuRight" class="menuRightContent">
-                        <ui:insert name="menuRight">
-                        </ui:insert>
-                    </div>
-                    <div id="menuCenter" class="menuCenterContent">
-                        <ui:insert name="menuCenter">
-                            <h:form prependId="false">
-                                <p:menubar>
-                                    <p:menuitem value="Home" url="/views/home.xhtml" icon="ui-icon-home"/>
-                                    <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/>
-                                    <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
-                                    <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/>
-                                    <p:menuitem value="Login" onclick="PF('loginDialog').show();" rendered="#{!loginController.loggedIn}" icon="ui-icon-person"/>
-                                    <p:menuitem value="Logout" action="#{loginController.logout()}" rendered="#{loginController.loggedIn}" icon="ui-icon-close"/>                                </p:menubar>
-                            </h:form>
-                        </ui:insert>
-                    </div>
-                </div>
-            </div>
-
-            <div id="middle" class="middleContent">
-                <div id="middleLeft" class="middleLeftContent">
-                    <ui:insert name="middleLeft">
-                    </ui:insert>
-                </div>
-                <div>
-                    <div id="middleRight" class="middleRightContent">
-                        <ui:insert name="middleRight">
-                        </ui:insert>
-                    </div>
-                    <div id="middleCenter" class="middleCenterContent">
-                        <ui:insert name="middleCenter">
-                        </ui:insert>
-                    </div>
-                </div>
-            </div>
-        </ui:fragment>
-
-        <ui:fragment>
-            <div id="bottom" class="bottomContent">
-                <ui:insert name="bottom">
-                    <h:form prependId="false">
-                        <p:growl id="messages" showDetail="true" autoUpdate="true"/>
-                    </h:form>
-                </ui:insert>
-            </div>
-        </ui:fragment>
-
-        <h:form id="loginForm">
-            <p:dialog id="loginDialog" styleClass="dialog" header="Login" widgetVar="loginDialog">
-                <h:panelGrid styleClass="loginInput">
-                    <div class="dialog">
-                        <div>
-                            <p:inputText id="username" value="#{loginController.username}" title="Username"/>
-                            <p:watermark for="username" value="Username"/>
-                            <p:password id="password" value="#{loginController.password}" title="Password"/>
-                            <p:watermark for="password" value="Password"/>
-                        </div>
-
-                        <f:facet name="footer">
-                            <p:commandButton id="loginButton" value="Login" action="#{loginController.login}" oncomplete="loginDialog.hide()"/>
-                        </f:facet>
-                    </div>
-                </h:panelGrid>
-            </p:dialog>
-        </h:form>
-    </h:body>
-
-</html>
\ No newline at end of file
diff --git a/src/java/DmWebPortal/web/templates/loginViewTemplate.xhtml b/src/java/DmWebPortal/web/templates/loginViewTemplate.xhtml
deleted file mode 100644
index 5e15b83562768cf7027bc186b873cb20b642b1aa..0000000000000000000000000000000000000000
--- a/src/java/DmWebPortal/web/templates/loginViewTemplate.xhtml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html">
-
-    <h:head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-        <link href="../resources/css/login.css" rel="stylesheet" type="text/css" />
-        <title>Data Management System Login</title>
-
-    </h:head>
-
-    <h:body>
-        <div id="top" class="topContent">
-            <div id="topLeft" class="topLeftContent">
-                <ui:insert name="topLeft">
-                    <h:graphicImage alt="ANL Logo" url="../resources/images/AnlLogo167x75.png"/>
-                </ui:insert>
-            </div>
-            <div>
-                <div id="topRight" class="topRightContent">
-                    <ui:insert name="topRight"/>
-                </div>
-                <div id="topCenter" class="topCenterContent">
-                    <ui:insert name="topCenter">
-                        <h1>Data Management System Portal</h1>
-                    </ui:insert>
-                </div>
-            </div>
-        </div>
-
-        <div id="bottom" class="bottomContent">
-            <ui:insert name="bottom">
-            </ui:insert>
-        </div>
-
-
-    </h:body>
-
-</html>
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index 63a6f5289d4391024f80adab3415efd172f0bf63..b7a4180c295499b5cc6d8bcbdba248d0614a06c0 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -20,7 +20,6 @@
                 <p/>
                 <div class="actionButton">
                     <p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check" update="@form"/>
-<!--                    <p:commandButton action="list.xhtml?faces-redirect=true" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>-->
                     <p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Done" alt="Done" icon="ui-icon-arrowreturnthick-1-w"/>
                 </div>
             </div>
diff --git a/src/java/DmWebPortal/web/views/login.xhtml b/src/java/DmWebPortal/web/views/login.xhtml
index 44bca8f14b8faae496185bdf3527595cbb0fb140..fa5ac1ee035daae9e7409b628b0a5d3af2f8d74e 100644
--- a/src/java/DmWebPortal/web/views/login.xhtml
+++ b/src/java/DmWebPortal/web/views/login.xhtml
@@ -34,7 +34,6 @@
         <div id="middle" class="middleContent">
             <div id="middleLeft" class="middleLeftContent">
                 <h:form id="loginForm">
-<!--                    <p:growl id="messages" showDetail="true" autoUpdate="true"/>-->
                     <div class="login">
                         <div>
                             <p:inputText id="username" value="#{loginController.username}" title="Username"/>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
index 35f1a09c4ddbbc25d79f4aa7029396efee05e594..d674ec73d9d1f761a8ba0e99f56f09b16a4c5f16 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
@@ -16,7 +16,7 @@
                  rows="25"
                  binding="#{roleTypeController.listDataTable}"
                  widgetVar="roleTypeListWidget" 
-                 emptyMessage="No role types found.">
+                 emptyMessage="No role types found." >
 
 
         <p:column sortBy="#{roleTypeObject.id}" headerText="Id" width="40">
@@ -34,15 +34,21 @@
         </p:column>
         
         <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
+
+
         <p:column headerText="Actions" width="80">
             <div class="actionLink">
                 <p:commandLink action="#{roleTypeController.prepareView(roleTypeObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
                 <p:commandLink action="#{roleTypeController.prepareEdit(roleTypeObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
                 <p:commandLink oncomplete="PF('roleTypeDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
-                    <f:setPropertyActionListener value="#{roleTypeObject}" target="#{roleTypeController.current}"/>
+                     <f:setPropertyActionListener value="#{roleTypeObject}" target="#{roleTypeController.current}"/>
                 </p:commandLink>
-            </div>
+
+         <p:commandLink action="#{userSystemRoleController.prepareSystemRoleView()}" rendered="#{roleTypeController.isRoleSystemType(roleTypeObject.name)}"  styleClass="ui-icon ui-icon-person" title="List All" >
+                   <f:setPropertyActionListener value="#{roleTypeObject.id}" target="#{userSystemRoleController.systemRoleId}"/>
+                </p:commandLink>
+          </div>
         </p:column>
     </p:dataTable>
-
+    
 </ui:composition>
diff --git a/src/java/DmWebPortal/web/views/userInfo/list.xhtml b/src/java/DmWebPortal/web/views/userInfo/list.xhtml
index 6c44f9b1f51b28d2daf3cf73dd830d117353efc9..833bd48109880279cbacb1ace8d5d1340ff6a4d0 100644
--- a/src/java/DmWebPortal/web/views/userInfo/list.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/list.xhtml
@@ -23,8 +23,6 @@
 
             <ui:include src="userInfoDestroyDialog.xhtml"/>
 
-            <h:outputScript library="js/userInfo" name="list.filter.js" rendered="#{loginController.loggedIn}"/>
-
         </h:form>
 
     </ui:define>
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..edbc2cf582e19df3b66d28320b91337572d52137
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+                template="../../templates/contentViewTemplate4x3.xhtml">
+
+    <ui:define name="middleCenter">
+        <div class="pageTitle">
+            <h1>Administrators</h1>
+        </div>
+
+        <h:form id="adminListForm">
+            <div class="actionButton">
+
+                <p:commandButton id="systemRoleAddButton" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{userSystemRoleController.hasSystemRole(loginController.username)}" icon="ui-icon-plus">
+                    <p:tooltip for="systemRoleAddButton" value="Add new Administrators."/>
+                </p:commandButton>
+                
+                <p:commandButton id="#{UserInfo}ResetFiltersButton" action="#{userSystemRoleController.resetSystemRoleUserList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
+                    <p:tooltip for="#{UserInfo}ResetFiltersButton" value="Reset list filters."/>
+                </p:commandButton>
+            </div>
+
+            <h:panelGroup>  
+                <ui:include src="systemRoleListDataTable.xhtml"/>
+            </h:panelGroup>
+
+            <ui:include src="systemRoleRemoveDialog.xhtml" />                  
+            <ui:include src="systemRoleAddDialog.xhtml"/>
+        </h:form>
+
+    </ui:define>
+</ui:composition>
+
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..40d2669b0cfb8b1725d6d6c9c89fc82a0212dccb
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:h="http://xmlns.jcp.org/jsf/html"
+                xmlns:f="http://xmlns.jcp.org/jsf/core"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+
+
+   
+    <p:dialog id="adminAddDialog" 
+              header="Add Administrators" widgetVar="systemRoleAddDialogWidget" >
+        
+            <div class="actionButton">
+                <p:commandButton id="ResetFilters" action="#{userSystemRoleController.resetNoSystemRoleUserList()}" update="adminAddDialog" onsuccess="systemRoleAddTableWidgetVar.show()" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
+                    <p:tooltip for="ResetFilters" value="Reset list filters."/>
+                </p:commandButton>
+            </div>
+        
+        <div>
+         <p:dataTable id="addSystemRoleList"                              
+                 var="adminUser" 
+                 value="#{userSystemRoleController.noSystemRoleTable.listDataModel}" 
+                 filteredValue="#{userSystemRoleController.noSystemRoleTable.filteredObjectList}"
+                 paginator="true" 
+                 paginatorAlwaysVisible="false" 
+                 rows="25"
+                 binding="#{userSystemRoleController.noSystemRoleTable.listDataTable}"
+                 selection="#{userSystemRoleController.noSystemRoleTable.selectedObjectList}"
+                 rowKey="#{adminUser.username}"
+                 widgetVar="systemRoleAddTableWidgetVar" 
+                 emptyMessage="No users to add."
+                 tableStyleClass="systemRoleTable"
+                 rowSelectMode="true"
+                 selectionMode="multiple" >
+
+            <p:column sortBy="#{adminUser.username}" headerText="Username" 
+                      filterBy="#{adminUser.username}" filterMatchMode="contains" >
+                <h:outputText value="#{adminUser.username}"/>
+            </p:column>
+
+            <p:column sortBy="#{adminUser.lastName}" headerText="Last Name" 
+                      filterBy="#{adminUser.lastName}" filterMatchMode="contains" >
+                <h:outputText value="#{adminUser.lastName}"/>
+            </p:column>                  
+
+            <p:column sortBy="#{adminUser.firstName}" headerText="First Name" 
+                      filterBy="#{adminUser.firstName}" filterMatchMode="contains" >
+                <h:outputText value="#{adminUser.firstName}"/>
+            </p:column> 
+
+            <p:column sortBy="#{adminUser.email}" headerText="Email" 
+                      filterBy="#{adminUser.email}" filterMatchMode="contains" >
+                <h:outputText value="#{adminUser.email}"/>
+            </p:column>
+
+            <f:facet name="footer">
+                <p:commandButton value="Add Adminstrators" actionListener="#{userSystemRoleController.addSystemRole()}" oncomplete="PF('systemRoleAddDialogWidget').hide()" />
+                <p:commandButton value="Clear Selection" onclick="PF('systemRoleAddTableWidgetVar').unselectAllRows()" />
+            </f:facet>
+        </p:dataTable>
+        </div>
+    </p:dialog>  
+</ui:composition>
+
+
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..b1317e25d99cca1192efc6143e2cb69930548818
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+    <p:dataTable id="systemRoleListDataTable"                              
+                 var="systemUserObject" 
+                 value="#{userSystemRoleController.systemRoleTable.listDataModel}" 
+                 filteredValue="#{userSystemRoleController.systemRoleTable.filteredObjectList}"
+                 paginator="true" 
+                 paginatorAlwaysVisible="false" 
+                 rows="25"
+                 binding="#{userSystemRoleController.systemRoleTable.listDataTable}"
+                 widgetVar="systemRoleListWidget" 
+                 emptyMessage="No users found."
+                 tableStyleClass="systemRoleTable">
+
+        <p:column sortBy="#{systemUserObject.id}" headerText="Id" width="40">
+            <h:outputText value="#{systemUserObject.id}"/>
+        </p:column>
+
+        <p:column sortBy="#{systemUserObject.username}" headerText="Username" 
+                  filterBy="#{systemUserObject.username}" filterMatchMode="contains" width="100">
+            <h:outputText value="#{systemUserObject.username}"/>
+        </p:column>
+
+        <p:column sortBy="#{systemUserObject.lastName}" headerText="Last Name" 
+                  filterBy="#{systemUserObject.lastName}" filterMatchMode="contains" width="120">
+            <h:outputText value="#{systemUserObject.lastName}"/>
+        </p:column>                  
+
+        <p:column sortBy="#{systemUserObject.firstName}" headerText="First Name" 
+                  filterBy="#{systemUserObject.firstName}" filterMatchMode="contains" width="120">
+            <h:outputText value="#{systemUserObject.firstName}"/>
+        </p:column> 
+
+        <p:column sortBy="#{systemUserObject.email}" headerText="Email" 
+                  filterBy="#{systemUserObject.email}" filterMatchMode="contains" width="200">
+            <h:outputText value="#{systemUserObject.email}"/>
+        </p:column>
+
+
+        <p:column headerText="Actions" width="70">
+            <div class="actionLink" >
+            <p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{userSystemRoleController.hasSystemRole(loginController.username) and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
+                    <f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.current}" />
+            </p:commandLink>
+            </div>
+        </p:column>
+
+    </p:dataTable>
+
+</ui:composition>
+
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..53d57921453611028e2a0c3eea7ea9b1112d8734
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleRemoveDialog.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:p="http://primefaces.org/ui"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+
+        <p:confirmDialog id="systemRoleRemoveDialog" message="Remove #{userSystemRoleController.getSystemRoleName()} Role for user #{userSystemRoleController.systemRoleTable.current.username}?"
+                     header="Remove System Role" severity="alert" widgetVar="systemRoleRemoveDialogWidget"
+                     styleClass="dialog">
+        <p:commandButton value="Yes" oncomplete="systemRoleRemoveDialogWidget.hide()"  action="#{userSystemRoleController.removeSystemRole()}"/>
+        <p:commandButton value="No" onclick="PF('systemRoleRemoveDialogWidget').hide()" type="button" />
+    </p:confirmDialog>  
+</ui:composition>