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 721359a06c2554abf884f7d0d582dc5ed0f3e665..13aaba33f0f3399a6a1550cd4608f5fbe65afee9 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
@@ -170,6 +170,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentPoliciesTable extends DataTableController<ExperimentPolicy> {
 
         @Override
@@ -188,6 +189,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentPoliciesTypeTable extends DataTableController<ExperimentPolicyType> {
 
         @Override
@@ -211,8 +213,13 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             for (PolicyType type : list) {
                 experimentPolicyType = new ExperimentPolicyType(type);
                 newList.add(experimentPolicyType);
+
+//                policy = getCurrent().getPolicyForType(type);
+//                experimentPolicyType.setPolicy(policy);
+
                 policy = getCurrent().getPolicyForType(type.getId());
                 experimentPolicyType.setPolicy(policy);
+
             }
             return newList;
         }
@@ -223,6 +230,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentUsersTable extends DataTableController<ExperimentUser> {
 
         @Override
@@ -262,6 +270,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class NoExperimentUsersTypeTable extends DataTableController<UserInfo> {
 
         @Override
@@ -314,7 +323,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             ExperimentPolicy experimentPolicy = new ExperimentPolicy();
             experimentPolicy.setExperiment(newExperiment);
             experimentPolicy.setPolicyType(policyType);
-            experimentPolicy.setPolicyValue(policyType.getDefaultPolicyValue());
+//            experimentPolicy.setPolicyValue(policyType.getDefaultPolicyValue());
             newExperiment.getExperimentPolicyList().add(experimentPolicy);
         }
         return newExperiment;
@@ -578,34 +587,49 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
     
-    public boolean canEditExperiment(int experimentId) {
+    public boolean canEditExperiment(Experiment experiment) {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
+        if (experiment == null) {
+            return false;
+        }
         if (!initialized) {
             initializeTables();
         }
         // user that is Manager or PI can edit experiment
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
         int piRoleId = experimentRoles.get(RoleTypeName.PI).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
-        return (logged.getExperimetRole(managerRoleId, experimentId) != null) || (logged.getExperimetRole(piRoleId, experimentId) != null);
+        return (logged.getExperimetRole(managerRoleId, experiment.getId()) != null) || (logged.getExperimetRole(piRoleId, experiment.getId()) != null);
     }
     
     public boolean isRestricted() {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
         if (current == null) {
             return true;
         }
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
         int piRoleId = experimentRoles.get(RoleTypeName.PI).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
         return (logged.getExperimetRole(managerRoleId, current.getId()) == null) && (logged.getExperimetRole(piRoleId, current.getId()) == null);
     }
     
-    public boolean canDeleteExperiment(int experimentId) {
+    public boolean canDeleteExperiment(Experiment experiment) {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
+        if (experiment == null) {
+            return false;
+        }
         if (!initialized) {
             initializeTables();
         }
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
-        return logged.getExperimetRole(managerRoleId, experimentId) != null;
+        return logged.getExperimetRole(managerRoleId, experiment.getId()) != null;
     }
     
     public boolean canAddManager() {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
index 37e692f081b36b9d840d0af23fca86184961fbed..2376ba0cdbebad02b6622eca84f528f2046ea703 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
@@ -8,7 +8,6 @@ package gov.anl.aps.dm.portal.controllers;
 import gov.anl.aps.dm.portal.constants.RoleTypeName;
 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.LdapUtility;
 import gov.anl.aps.dm.portal.utilities.SessionUtility;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
index d29170cd1f0fcd28617b25d27da0fb3d8f884eea..7e7600d739ea4d9a43e1e80f0080e45a49e6f679 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
@@ -74,12 +74,12 @@ public class PolicyTypeController extends CrudEntityController<PolicyType, Polic
         logger.debug("Inserting new experiment type " + policyType.getName());
     }
 
-    @Override
-    public void prepareEntityUpdate(PolicyType policyType) throws DmPortalException {
-        if ((policyType.getName() == null) || (policyType.getName().length() == 0)) {
-            throw new MissingProperty("Name is missing.");
-        }
-    }
+//    @Override
+//    public void prepareEntityUpdate(PolicyType policyType) throws DmPortalException {
+//        if ((policyType.getName() == null) || (policyType.getName().length() == 0)) {
+//            throw new MissingProperty("Name is missing.");
+//        }
+//    }
     
       @Override
      protected String getObjectAlreadyExistMessage(PolicyType policyType)  {
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 8e3078a5157fe858ea79567eb89656b1af59aa8f..6f06d2955b0a3d9111ae0c259204036b27425021 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
@@ -122,6 +122,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
             if (!initialized) {
                 initializeRoleTypes();
             }
+            userExperiments.clear();
             logger.debug("converting UserExperiments ");
             Collection<RoleType> roleTypes;
             roleTypes = experimentRoles.values();
@@ -136,7 +137,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
                     experimentUser.setIsInRole(roleType, inRole);
                 }
             }
-            return new ArrayList<>(userExperiments);
+            return userExperiments;
         }
 
         @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
index 06f757a8a21fb333e7bad40c8f561d78eae3efe6..76f89cbb11bebd1b254e02c214baad5077b3cb06 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
@@ -112,10 +112,7 @@ public class AllowedPolicyValue extends CloneableEntity
             return false;
         }
         AllowedPolicyValue other = (AllowedPolicyValue) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
index e03a57fb73df53af616577d276c54f81ac802dec..185c99bc2e2b276ce0bffb76186c658d75644631 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
@@ -152,10 +152,7 @@ public class DataFolder extends CloneableEntity
             return false;
         }
         DataFolder other = (DataFolder) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
index 9fd9b0a59ac242224f264b3ebe553293638b28d8..410cbb63ec9c9899c6629b8a7c02ea6100a8e839 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
@@ -110,10 +110,7 @@ public class DataFolderPermission extends CloneableEntity
             return false;
         }
         DataFolderPermission other = (DataFolderPermission) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
index 0e2e2868d2af30ac7dc6f48ca20531b58a58c3bd..6d63ee0f8a3bd1a79c8277f0189d86e50b648412 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
@@ -161,6 +161,16 @@ public class Experiment extends CloneableEntity
         this.experimentType = experimentType;
     }
     
+
+//    public ExperimentPolicy getPolicyForType(PolicyType type) {
+//        for (ExperimentPolicy experimentPolicy : experimentPolicyList) {
+//            if (experimentPolicy.getPolicyType().getId() == type.getId()) {
+//                return experimentPolicy;
+//            }
+//        }
+//        return null;
+//    }
+
     public ExperimentPolicy getPolicyForType(int typeId) {
         for (ExperimentPolicy experimentPolicy : experimentPolicyList) {
             if (experimentPolicy.getPolicyType().getId() == typeId) {
@@ -170,6 +180,7 @@ public class Experiment extends CloneableEntity
         return null;
     }
 
+
     @Override
     public int hashCode() {
         int hash = 0;
@@ -184,10 +195,7 @@ public class Experiment extends CloneableEntity
             return false;
         }
         Experiment other = (Experiment) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
index 48a38100c8386e42d03400a3f83cd6f659570eb3..c60480a98afb8ec17e13078ea623a88ae6d2d4bd 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
@@ -17,7 +17,6 @@ import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import javax.xml.bind.annotation.XmlRootElement;
 
@@ -120,10 +119,7 @@ public class ExperimentPolicy extends CloneableEntity
             return false;
         }
         ExperimentPolicy other = (ExperimentPolicy) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
index a2ac97ff8f062e7a797db10fdf59ca92b4d47922..dd204831afacf42103aaf87816b23af874502a0e 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
@@ -124,10 +124,7 @@ public class ExperimentType extends CloneableEntity
             return false;
         }
         ExperimentType other = (ExperimentType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
index 5183030e708b11912cb432f5152b3a150cd7ff02..a664fbf94e632b7e8c5a54a99df7435a00f86bf4 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
@@ -14,9 +14,12 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
@@ -56,8 +59,9 @@ public class PolicyType extends CloneableEntity
     @Column(name = "handler_name")
     private String handlerName;
     @Size(max = 2147483647)
-    @Column(name = "default_policy_value")
-    private String defaultPolicyValue;
+    @JoinColumn(name = "default_policy_value", referencedColumnName = "policy_value")
+    @OneToOne
+    private AllowedPolicyValue defaultPolicyValue;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyType")
     private List<ExperimentPolicy> experimentPolicyList;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyType")
@@ -109,11 +113,11 @@ public class PolicyType extends CloneableEntity
         this.handlerName = handlerName;
     }
 
-    public String getDefaultPolicyValue() {
+    public AllowedPolicyValue getDefaultPolicyValue() {
         return defaultPolicyValue;
     }
 
-    public void setDefaultPolicyValue(String defaultPolicyValue) {
+    public void setDefaultPolicyValue(AllowedPolicyValue defaultPolicyValue) {
         this.defaultPolicyValue = defaultPolicyValue;
     }
 
@@ -158,10 +162,7 @@ public class PolicyType extends CloneableEntity
             return false;
         }
         PolicyType other = (PolicyType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
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 c0fed6b261bdf3e84dd5736dfdd5d10d9f6eb657..bf68b2dd061f19009e744390a2c8fe9d31e478bc 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
@@ -164,10 +164,7 @@ public class RoleType extends CloneableEntity
             return false;
         }
         RoleType other = (RoleType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
index 4c9d8465f480c0c61c5efae238c47b408644ffd6..ec9e90eb77846debc463c88e7b8d64c1cc46603a 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
@@ -146,10 +146,7 @@ public class SettingType extends CloneableEntity
             return false;
         }
         SettingType other = (SettingType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
index 6e9757c9d40529c1910ed1b29a3ee17894b44e30..e966180b587e44b4752383a2bd07e23cbe2e6805 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
@@ -119,10 +119,7 @@ public class TemplatePolicy extends CloneableEntity
             return false;
         }
         TemplatePolicy other = (TemplatePolicy) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
index 2baf67a8d9b336af5e727e72368e9b477c96856a..55117db5d31eb36de06ff9e807c4bbcbb4aca25b 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
@@ -112,10 +112,7 @@ public class TemplatePolicySet extends CloneableEntity
             return false;
         }
         TemplatePolicySet other = (TemplatePolicySet) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
index 9377187847fb754662ac7b7fa82507cc73c15792..58ea02bdb855720a46b8260ce5296b56cae5f4ff 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
@@ -100,10 +100,7 @@ public class UserExperimentRole extends CloneableEntity
             return false;
         }
         UserExperimentRole other = (UserExperimentRole) object;
-        if ((this.userExperimentRolePK == null && other.userExperimentRolePK != null) || (this.userExperimentRolePK != null && !this.userExperimentRolePK.equals(other.userExperimentRolePK))) {
-            return false;
-        }
-        return true;
+        return (this.userExperimentRolePK != null || other.userExperimentRolePK == null) && (this.userExperimentRolePK == null || this.userExperimentRolePK.equals(other.userExperimentRolePK));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
index 14efa81f800893b302081133f0e19f4011d88efa..327c1ac1a9386fa1e25fda2de73872a78d2128b5 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
@@ -87,10 +87,7 @@ public class UserExperimentRolePK implements Serializable
         if (this.experimentId != other.experimentId) {
             return false;
         }
-        if (this.roleTypeId != other.roleTypeId) {
-            return false;
-        }
-        return true;
+        return this.roleTypeId == other.roleTypeId;
     }
 
     @Override
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 d1fc360a37bc8557cacf9b58207426e2b0a48218..62e35b2a5b36df0d0fa6ddcaeea3a06796dacc3e 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
@@ -245,10 +245,7 @@ public class UserInfo extends CloneableEntity
             return false;
         }
         UserInfo other = (UserInfo) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
index 7d539cba4e429b86114f92c25c64bfd30da920f7..e618cc19670c5c180b641f0593d4953fd7ccaeae 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
@@ -101,10 +101,7 @@ public class UserSetting extends CloneableEntity
             return false;
         }
         UserSetting other = (UserSetting) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/web/WEB-INF/web.xml b/src/java/DmWebPortal/web/WEB-INF/web.xml
index 5d426f413e5c4ffb74dc6d098bf6187401a24fbd..086dcfb71f49cc1792f5ee04fdb5e98b21efb271 100644
--- a/src/java/DmWebPortal/web/WEB-INF/web.xml
+++ b/src/java/DmWebPortal/web/WEB-INF/web.xml
@@ -21,4 +21,8 @@
     <welcome-file-list>
         <welcome-file>index.xhtml</welcome-file>
     </welcome-file-list>
+    <error-page>
+        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
+        <location>/login.xhtml</location>
+    </error-page>
 </web-app>
diff --git a/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js b/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e5512f70a1e9562b7820651ffe45ff5a73a9679
--- /dev/null
+++ b/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js
@@ -0,0 +1 @@
+  window.location = "login.xhtml";
diff --git a/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml b/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
index 19764018e9c5da6ef6bb6c1c7d06cdcfa32d27cc..1971d8b462f0f682b9668207dad6b25de0835470 100644
--- a/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
+++ b/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
@@ -58,9 +58,10 @@
                                     <p:menuitem value="Experiments" url="/views/experiment/list.xhtml"/> 
                                     <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/>
                                     <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/>
-                                    <p:menuitem value="Policies" url="/views/policyType/list.xhtml"/>                                    <p:menuitem value="Role Types" url="/views/roleType/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>
+                                    <p:menuitem value="Policies" url="/views/policyType/list.xhtml"/>                                    
+                                    <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
+                                    <p:menuitem value="Logout" action="#{loginController.logout()}" icon="ui-icon-close"/>
+                                </p:menubar>
                             </h:form>
                         </ui:insert>
                     </div>
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index 1669275ea3780e2337040b287060541cd858d817..78360f869e67622c904e3a8b7400b2a433663fdb 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -7,17 +7,18 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                 xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 
-    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
+    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}" />
     <h:outputScript library="js/common" name="forwardNotAuthorized.js" rendered="#{!loginController.admin and experimentController.isRestricted()}"/>
-    <ui:composition template="../../templates/dmViewTemplate.xhtml">
-    <ui:define name="middleCenter">
+
+    <ui:composition template="../../templates/dmViewTemplate.xhtml" >
+    <ui:define name="middleCenter" >
         <h:form id="editExperimentForm">
 
                 <div class="pageTitle">
                     <h1>Edit Experiment #{experimentController.current.name}</h1>
                 </div>
 
-            <p:accordionPanel multiple="true" dynamic="true" cache="false" activeIndex="0,1"  >
+            <p:accordionPanel multiple="true" dynamic="true" cache="false" activeIndex="0,1,2"  >
                 <p:tab title="Experiment Properties" id="detailsTab" >
 
                     <div class="middleCenterLeftContent">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
index 52f7128d63ce8387554e32b6e823cbb85fb559b3..8d0f1c736a16bcdf92f8622940a7aea405989429 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
@@ -58,11 +58,11 @@
                 <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View">
                 </p:commandLink>
     
-                <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject.id)}" styleClass="ui-icon ui-icon-pencil" title="Edit">
+                <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject)}" styleClass="ui-icon ui-icon-pencil" title="Edit">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
                 </p:commandLink>
 
-                <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.admin or experimentController.canDeleteExperiment(experimentObject.id)}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
+                <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.admin or experimentController.canDeleteExperiment(experimentObject)}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
                 </p:commandLink>
             </div>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
index f64d0209441af326aaf06e8baa9848d0e30a819e..1950af37da21a248ef86d1ad9e5fb6785f9eb0a8 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
@@ -10,18 +10,6 @@
     <p/>
 
         <h:panelGrid columns="2" cellpadding="5">
-            <p:outputLabel for="deletionPolicy" value="Data Deletion Policy: " />
-            <p:selectOneMenu id="deletionPolicy" value="#{experimentController.current.getPolicyForType(1).name}" style="width:150px">
-                <f:selectItem itemLabel="#{experimentController.current.getPolicyForType(1).name}" itemValue="" noSelectionOption="false" />
-                <f:selectItems value="#{experimentController.getPoliciesNamesForType(1)}" />
-            </p:selectOneMenu>
- 
-            <p:outputLabel for="transferPolicy" value="Data Transfer Policy: " />
-            <p:selectOneMenu id="transferPolicy" value="#{experimentController.current.getPolicyForType(2).name}" style="width:150px">
-                <f:selectItem itemLabel="#{experimentController.current.getPolicyForType(1).name}" itemValue="" noSelectionOption="false" />
-                <f:selectItems value="#{experimentController.getPoliciesNamesForType(2)}" />
-            </p:selectOneMenu>
- 
         </h:panelGrid> 
 
 <!--        <p:dataTable id="experimentPoliciesEditDataTable"                              
diff --git a/src/java/DmWebPortal/web/views/home.xhtml b/src/java/DmWebPortal/web/views/home.xhtml
index 5bfdf960a8a916b56721db1922fe9959b2bb22ad..e62fae7b3b53f001648f45210b493da762892ec1 100644
--- a/src/java/DmWebPortal/web/views/home.xhtml
+++ b/src/java/DmWebPortal/web/views/home.xhtml
@@ -3,11 +3,14 @@
 
 <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                 xmlns:h="http://java.sun.com/jsf/html"
-                xmlns:ui="http://java.sun.com/jsf/facelets"
                 xmlns:p="http://primefaces.org/ui"
-                xmlns:f="http://xmlns.jcp.org/jsf/core">
+                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">
+
+
+    <h:outputScript library="js/common" name="forwardFromHome.js" rendered="#{!loginController.loggedIn}" />
 
-    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
     <ui:composition template="../templates/dmViewTemplate.xhtml">
         <ui:define name="middleCenter">
 
diff --git a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
index 28d5d490e7bb4906bd13c7cd73931a50c969d37b..bdf0495255ef2c32a444362f47181f8a92e58e70 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
@@ -35,15 +35,15 @@
         </p:column>                  
 
 
-        <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager">
+        <p:column sortBy="#{!userExperimentObject.isManager}" headerText="Manager">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isManager}" /> 
         </p:column>
 
-        <p:column sortBy="#{!experimentUserObject.isPI}" headerText="Principal Investigator">
+        <p:column sortBy="#{!userExperimentObject.isPI}" headerText="Principal Investigator">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isPI}" />  
         </p:column>
 
-        <p:column sortBy="#{!experimentUserObject.isUser}" headerText="User">
+        <p:column sortBy="#{!userExperimentObject.isUser}" headerText="User">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isUser}" />   
         </p:column>