diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java
new file mode 100644
index 0000000000000000000000000000000000000000..10ef18390aed58a5d1009b6953cef22d1ebd4fbd
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java
@@ -0,0 +1,106 @@
+/*
+ * 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.UserExperimentRoleFacade;
+import gov.anl.aps.dm.portal.model.entities.Experiment;
+import gov.anl.aps.dm.portal.model.entities.UserInfo;
+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("experimentUsersController")
+@SessionScoped
+public class ExperimentUsersController  implements Serializable {
+    
+    private static final Logger logger = Logger.getLogger(ExperimentUsersController.class.getName());
+    
+    @EJB
+    private UserExperimentRoleFacade userExperimentRoleFacade;
+
+    public ExperimentUsersController() {
+        this.experimentUsersTable = new ExperimentUsersTable();
+    }
+
+    class ExperimentUsersTable extends DataTableController<UserInfo> {
+
+        @Override
+        public String getEntityTypeName() {
+            return "UserInfo";
+        }
+
+        @Override
+        public List<UserInfo> findAll() {
+            // find all users in experiment
+            return null;
+        }
+    }
+  
+    private ExperimentUsersTable experimentUsersTable;
+    private Experiment experiment;
+
+    public Experiment getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(Experiment experiment) {
+        this.experiment = experiment;
+    }
+
+    public ExperimentUsersTable getExperimentUsersTable() {
+        return experimentUsersTable;
+    }
+
+    public void setExperimentUsersTable(ExperimentUsersTable experimentUsersTable) {
+        this.experimentUsersTable = experimentUsersTable;
+    }
+    
+    public String getCurrentEntityInstanceName() {
+        return null;
+    }
+    
+    public String remove() {
+        return null;
+    }
+    
+    public boolean canRemove(String removerUsername, UserInfo removee) {
+        return false;
+    }
+    
+    public boolean canAddUsers(String username) {
+        return true;
+    }
+    
+    public boolean isManager(String userId) {
+        return true;
+    }
+    
+    public boolean isPI(String userId) {
+        return true;
+    }
+    
+    public boolean isUser(String userId) {
+        return true;
+    }
+    
+    public boolean canAssignManager(String userId) {
+        return true;
+    }
+    
+    public boolean canAssignPI(String userId) {
+        return true;
+    }
+    
+    public boolean canAssignUser(String userId) {
+        return true;
+    }
+    
+}
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
index fafd0ef0a0a7ccadf5957a9c379d6de255c01562..0e3880e3bc06db5931f369087904a1064572793d 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
@@ -49,14 +49,16 @@
                   filterBy="#{experimentObject.endDate}" filterMatchMode="contains" width="120">
 
             <h:outputText value="#{experimentObject.endDate}">
-                          <f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
+                <f:convertDateTime pattern="#{resources.DatePattern}" type="date" />
             </h:outputText>
         </p:column>
-        
+
         <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/>
         <p:column headerText="Actions" width="70">
             <div class="actionLink">
-                <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
+                <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View">
+                    <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentUsersController.experiment}"/>
+                </p:commandLink>
                 <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
                 <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..6b5a7432c8e44d7b4b51064cbefa85b1a99c5d27
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml
@@ -0,0 +1,13 @@
+<?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">
+
+    <p:confirmDialog id="experimentUserRemoveDialog" message="Remove user #{experimentUsersController.getCurrentEntityInstanceName()} from Experiment?"
+                     header="Remove User" severity="alert" widgetVar="experimentUserRemoveDialogWidget"
+                     styleClass="dialog">
+        <p:commandButton value="Yes" oncomplete="experimentUserRemoveDialogWidget.hide()" action="#{experimentUsersController.remove()}"/>
+        <p:commandButton value="No" onclick="PF('experimentUserRemoveDialogWidget').hide()" type="button" />
+    </p:confirmDialog>  
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..e96797062ef9a8c3c7bfa1143523fd1da3ebfc75
--- /dev/null
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
@@ -0,0 +1,67 @@
+<?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">
+
+             <div class="actionButton">
+
+                <p:commandButton id="experimentUserAddButton" value="Add" rendered="#{experimentUsersController.canAddUsers(loginController.username)}" icon="ui-icon-plus" >
+                    <p:tooltip for="experimentUserAddButton" value="Add new Users."/>
+                </p:commandButton>
+                
+                <p:commandButton id="ResetFiltersButton" action="#{experimentUsersController.experimentUsersTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
+                    <p:tooltip for="ResetFiltersButton" value="Reset list filters."/>
+                </p:commandButton>
+            </div>
+
+    <p:dataTable id="experimentUsersListDataTable"                              
+                 var="experimentUserObject" 
+                 value="#{experimentUsersController.experimentUsersTable.listDataModel}" 
+                 filteredValue="#{experimentUsersController.experimentUsersTable.filteredObjectList}"
+                 paginator="true" 
+                 paginatorAlwaysVisible="false" 
+                 rows="25"
+                 binding="#{experimentUsersController.experimentUsersTable.listDataTable}"
+                 widgetVar="experimentUsersListWidget" 
+                 emptyMessage="No users found.">
+
+        <p:column sortBy="#{experimentUserObject.username}" headerText="Username" 
+                  filterBy="#{experimentUserObject.username}" filterMatchMode="contains" width="100">
+            <h:outputText value="#{experimentUserObject.username}"/>
+        </p:column>
+
+        <p:column sortBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" headerText="Last, First Name" 
+                  filterBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" filterMatchMode="contains" width="120">
+            <h:outputText value="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}"/>
+        </p:column>                  
+
+        <p:column headerText="Manager" width="40">
+            <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignManager(loginController.username)}" />
+        </p:column>
+
+        <p:column headerText="PI" width="40">
+            <p:selectBooleanCheckbox value="#{experimentUsersController.isPI(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignPI(loginController.username)}" />
+
+        </p:column>
+
+        <p:column headerText="User" width="40">
+            <p:selectBooleanCheckbox value="#{experimentUsersController.isUser(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignUser(loginController.username)}" />
+
+        </p:column>
+
+
+        <p:column headerText="Actions" width="40">
+            <div class="actionLink" >
+            <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="#{experimentUsersController.canRemove(loginController.username, experimentUserObject)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
+                    <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentUsersController.experimentUsersTable.current}" />
+            </p:commandLink>
+            </div>
+        </p:column>
+
+    </p:dataTable>
+
+</ui:composition>
diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml
index c6fb37081892d5ce022429762f18f1a5db9c4023..97d346db42a7b4f375761bb5e160c5b89c736642 100644
--- a/src/java/DmWebPortal/web/views/experiment/view.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml
@@ -31,9 +31,14 @@
 
                 <ui:include src="experimentDestroyDialog.xhtml"/>
                 
+                <p/>
+                <h2>Experiment Users</h2>
+                 <p/>               
+ 
+                <ui:include src="experimentUsersListDataTable.xhtml"/>
+
+                
             </div>
-            
-            
 
         </h:form>