diff --git a/org.eclipse.osbp.authentication.feature/.gitignore b/org.eclipse.osbp.authentication.feature/.gitignore
deleted file mode 100644
index 92be9f2..0000000
--- a/org.eclipse.osbp.authentication.feature/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target/
-/apidocs/
-!/apidocs/README.txt
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_de.properties b/org.eclipse.osbp.authentication/i18n/I18N_de.properties
index 5318d48..1e9aa12 100644
--- a/org.eclipse.osbp.authentication/i18n/I18N_de.properties
+++ b/org.eclipse.osbp.authentication/i18n/I18N_de.properties
@@ -1,82 +1,158 @@
+#Generated by Eclipse Messages Editor (Eclipse Babel)
 #de
-=======
-<<<<<<<=HEAD
->>>>>>>=0a6131d7378b5d2ff10c97c0281c8e0fcd631678
-activation_time=Activation time
-actual_owner=Actual owner
-administration=Administration
-all_accounts=All accounts
-answer_no_text=Answer no text
-answer_yes_text=Answer yes text
-cancel=Cancel
-cancel_item=Cancel item
-clear_filter=Clear filter
-cookie_hash_code=Hashcode
-created_by=Created by
-created_on=Created on
-default_perpective=Default perpective
-default_perspective=Default perspective
-delete_item=Delete item
-description=Description
-edit_account=Edit account
-email=EMail
-enabled=freigegeben
-end_date=End date
-equal_to=Equal to
-expiration_time=Expiration time
-extra_password=Extra password
-failed_attempt=fehlgeschlagene Versuche
-filter=Filter
-focusing_strategy=Focusing Strategie
-foo=Foo
-force_pwd_change=Passwort\u00E4nderung erzwingen
-greater_than=Greater than
-groups=Groups
-id=ID
-invers=invers
-items_per_page=Items per page
-layouting_strategy=Layouting Strategie
-lesser_than=Lesser than
-locale_tag=L\u00E4ndereinstellung
-locked=gesperrt
-menu=Menu
-name=Name
-new_item=New item
-not_registered=Not registered
-ok=Ok
-page=Page
-password=Passwort
-password_reset=Password reset
-perspective_na=Perspective na
-position=Position
-print_service=Print service
-priority=Priority
-process_id=Process identifier
-process_instance_id=Process instance identifier
-process_session_id=Process session identifier
-profile=Profile
-profileimage=Profilbild
-registered=Registered
-reset=Reset
-save=Save
-save_item=Save item
-saved_properties=Saved properties
-security_message=Security message
-set_filter=Set filter
-show_all=Show all
-start_date=Start date
-start_process_text=Start process text
-status=Status
-subject=Subject
-successful_attempt=erfolgreiche Versuche
-superuser=Superbenutzer
-supervisor=Supervisor
-task_id=Task identifier
-theme=Theme
-toolbar_for_dialogs=Toolbar for dialogs
-user_account=Benutzerkonto
-user_account_filter=Filter f\u00FCr Benutzerkonto
-user_administration=User administration
-user_name=Benutzername
-users=Users
-x=X
+
+activation_time = Activation time
+
+actual_owner = Actual owner
+
+administration = Administration
+
+all_accounts = All accounts
+
+answer_no_text = Answer no text
+
+answer_yes_text = Answer yes text
+
+cancel = Cancel
+
+cancel_item = Cancel item
+
+clear_filter = Clear filter
+
+cookie_hash_code = Hashcode
+
+created_by = Created by
+
+created_on = Created on
+
+default_perpective = Default perpective
+
+default_perspective = Standard Perspektive
+
+delete_item = Delete item
+
+description = Description
+
+edit_account = Edit account
+
+email = E-Mail
+
+enabled = Aktiviert
+
+end_date = End date
+
+equal_to = Equal to
+
+expiration_time = Expiration time
+
+extra_password = zus\u00E4tzliches Passwort
+
+failed_attempt = Anzahl fehlerhafter Anmeldungen
+
+filter = Filter
+
+focusing_strategy = Layout
+
+foo = Foo
+
+force_pwd_change = Passwort Wechsel erzwingen
+
+greater_than = Greater than
+
+groups = Groups
+
+id = ID
+
+invers = invers
+
+items_per_page = Items per page
+
+layouting_strategy = Standard Layout
+
+lesser_than = Lesser than
+
+locale_tag = L\u00E4ndereinstellung
+
+locked = gesperrt
+
+menu = Menu
+
+name = Name
+
+new_item = New item
+
+not_registered = nicht registriert
+
+ok = Ok
+
+page = Page
+
+password = Passwort
+
+password_reset = Password reset
+
+perspective_na = Perspective na
+
+position = Stelle
+
+print_service = Standard Drucker
+
+priority = Priority
+
+process_id = Process identifier
+
+process_instance_id = Process instance identifier
+
+process_session_id = Process session identifier
+
+profile = Profile
+
+profileimage = Profilbild
+
+registered = Registered
+
+reset = Reset
+
+save = Save
+
+save_item = Save item
+
+saved_properties = Saved properties
+
+security_message = Security message
+
+set_filter = Set filter
+
+show_all = Show all
+
+start_date = Start date
+
+start_process_text = Start process text
+
+status = Status
+
+subject = Subject
+
+successful_attempt = Anzahl erfolgreicher Anmeldungen
+
+superuser = Administrator
+
+supervisor = Supervisor
+
+task_id = Task identifier
+
+theme = Farb-Schema
+
+toolbar_for_dialogs = Toolbar for dialogs
+
+user_account = Benutzerkonto
+
+user_account_filter = Filter f\u00FCr Benutzerkonto
+
+user_administration = User administration
+
+user_name = Benutzername
+
+users = Users
+
+x = X
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties b/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties
deleted file mode 100644
index 6c73e1d..0000000
--- a/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties
+++ /dev/null
@@ -1 +0,0 @@
-#de_AT
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties b/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties
deleted file mode 100644
index d89e21c..0000000
--- a/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties
+++ /dev/null
@@ -1 +0,0 @@
-#en_US
diff --git a/org.eclipse.osbp.authentication/pom.xml b/org.eclipse.osbp.authentication/pom.xml
index 054d8b9..72158bb 100644
--- a/org.eclipse.osbp.authentication/pom.xml
+++ b/org.eclipse.osbp.authentication/pom.xml
@@ -23,6 +23,40 @@
 	<artifactId>org.eclipse.osbp.authentication</artifactId>
 	<packaging>eclipse-plugin</packaging>
 	<dependencies>
+
+		<!-- lib/shiro-all-1.2.3.jar does contain the following shiro jars. -->
+		<!-- the corresponding CQs are listed below. -->	
+    	<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12703 -->
+		<!--         <dependency> -->
+		<!--             <groupId>org.apache.shiro</groupId> -->
+		<!--             <artifactId>shiro-core</artifactId> -->
+		<!--         </dependency> -->
+    	<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12705 -->
+		<!--         <dependency> -->
+		<!--             <groupId>org.apache.shiro</groupId> -->
+		<!--             <artifactId>shiro-web</artifactId> -->
+		<!--             <version>${shiro.version}</version> -->
+		<!--         </dependency> -->
+    	<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12704 -->
+		<!--         <dependency> -->
+		<!--             <groupId>org.apache.shiro</groupId> -->
+		<!--             <artifactId>shiro-quartz</artifactId> -->
+		<!--             <version>${shiro.version}</version> -->
+		<!--         </dependency> -->
+    	<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15319 -->
+		<!--         <dependency> -->
+		<!--             <groupId>org.apache.shiro</groupId> -->
+		<!--             <artifactId>shiro-ehcache</artifactId> -->
+		<!--             <version>${shiro.version}</version> -->
+		<!--         </dependency> -->
+        <!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15321 -->
+		<!--         <dependency> -->
+		<!--             <groupId>org.apache.shiro</groupId> -->
+		<!--             <artifactId>shiro-spring</artifactId> -->
+		<!--             <version>${shiro.version}</version> -->
+		<!--         </dependency> -->
+	
+	
 		<dependency>
 			<groupId>org.eclipse.osbp.preferences</groupId>
 			<artifactId>org.eclipse.osbp.preferences</artifactId>
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
index 57a1c10..d6c3bce 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos;
 
 import java.beans.PropertyChangeListener;
@@ -27,6 +13,7 @@
 import org.eclipse.osbp.runtime.common.annotations.Dispose;
 import org.eclipse.osbp.runtime.common.annotations.DomainReference;
 import org.eclipse.osbp.runtime.common.annotations.FilterDepth;
+import org.eclipse.osbp.runtime.common.annotations.Hidden;
 import org.eclipse.osbp.runtime.common.annotations.Id;
 import org.eclipse.osbp.runtime.common.annotations.Properties;
 import org.eclipse.osbp.runtime.common.annotations.Property;
@@ -49,6 +36,7 @@
   
   private String userName;
   
+  @Hidden
   private String password;
   
   @Pattern(regexp = "[0-9]*", payload = InfoSeverity.class)
@@ -68,8 +56,6 @@
   
   private boolean superuser;
   
-  private boolean supervisor;
-  
   private boolean forcePwdChange;
   
   private boolean notRegistered;
@@ -78,6 +64,7 @@
   
   private int successfulAttempt;
   
+  @Hidden
   private int cookieHashCode;
   
   @Properties(properties = @Property(key = "i18n", value = ""))
@@ -96,6 +83,7 @@
   @Properties(properties = @Property(key = "printservice", value = ""))
   private String printService;
   
+  @Hidden
   @Valid
   private byte[] savedProperties;
   
@@ -404,24 +392,6 @@
   }
   
   /**
-   * Returns the supervisor property or <code>null</code> if not present.
-   */
-  public boolean getSupervisor() {
-    return this.supervisor;
-  }
-  
-  /**
-   * Sets the <code>supervisor</code> property to this instance.
-   * 
-   * @param supervisor - the property
-   * @throws RuntimeException if instance is <code>disposed</code>
-   * 
-   */
-  public void setSupervisor(final boolean supervisor) {
-    firePropertyChange("supervisor", this.supervisor, this.supervisor = supervisor );
-  }
-  
-  /**
    * Returns the forcePwdChange property or <code>null</code> if not present.
    */
   public boolean getForcePwdChange() {
@@ -691,7 +661,6 @@
   public void internalAddToUserAccountFilter(final UserAccountFilterDto userAccountFilterDto) {
     
     if(!org.eclipse.osbp.dsl.dto.lib.MappingContext.isMappingMode()) {
-    	if(!internalGetUserAccountFilter().contains(userAccountFilterDto)) {
     		List<UserAccountFilterDto> oldList = null;
     		if(internalGetUserAccountFilter() instanceof org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) {
     			oldList = ((org.eclipse.osbp.dsl.dto.lib.AbstractOppositeDtoList) internalGetUserAccountFilter()).copy();
@@ -700,7 +669,6 @@
     		}
     		internalGetUserAccountFilter().add(userAccountFilterDto);
     		firePropertyChange("userAccountFilter", oldList, internalGetUserAccountFilter());
-    	}
     }
   }
   
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountFilterDto.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountFilterDto.java
index 1a438d4..0162b37 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountFilterDto.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountFilterDto.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos;
 
 import java.beans.PropertyChangeListener;
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
index 4a54764..ae6da79 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos.mapper;
 
 import java.util.List;
@@ -112,7 +98,6 @@
     dto.setEnabled(toDto_enabled(entity, context));
     dto.setLocked(toDto_locked(entity, context));
     dto.setSuperuser(toDto_superuser(entity, context));
-    dto.setSupervisor(toDto_supervisor(entity, context));
     dto.setForcePwdChange(toDto_forcePwdChange(entity, context));
     dto.setNotRegistered(toDto_notRegistered(entity, context));
     dto.setFailedAttempt(toDto_failedAttempt(entity, context));
@@ -154,7 +139,6 @@
     entity.setEnabled(toEntity_enabled(dto, entity, context));
     entity.setLocked(toEntity_locked(dto, entity, context));
     entity.setSuperuser(toEntity_superuser(dto, entity, context));
-    entity.setSupervisor(toEntity_supervisor(dto, entity, context));
     entity.setForcePwdChange(toEntity_forcePwdChange(dto, entity, context));
     entity.setNotRegistered(toEntity_notRegistered(dto, entity, context));
     entity.setFailedAttempt(toEntity_failedAttempt(dto, entity, context));
@@ -446,31 +430,6 @@
   }
   
   /**
-   * Maps the property supervisor from the given entity to dto property.
-   * 
-   * @param in - The source entity
-   * @param context - The context to get information about depth,...
-   * @return the mapped value
-   * 
-   */
-  protected boolean toDto_supervisor(final UserAccount in, final MappingContext context) {
-    return in.getSupervisor();
-  }
-  
-  /**
-   * Maps the property supervisor from the given entity to dto property.
-   * 
-   * @param in - The source entity
-   * @param parentEntity - The parentEntity
-   * @param context - The context to get information about depth,...
-   * @return the mapped value
-   * 
-   */
-  protected boolean toEntity_supervisor(final UserAccountDto in, final UserAccount parentEntity, final MappingContext context) {
-    return in.getSupervisor();
-  }
-  
-  /**
    * Maps the property forcePwdChange from the given entity to dto property.
    * 
    * @param in - The source entity
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountFilterDtoMapper.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountFilterDtoMapper.java
index f4b8f7d..3d9655a 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountFilterDtoMapper.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountFilterDtoMapper.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos.mapper;
 
 import org.eclipse.osbp.authentication.account.dtos.UserAccountDto;
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountDtoService.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountDtoService.java
index f3b9c61..d0d10ba 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountDtoService.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountDtoService.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos.service;
 
 import org.eclipse.osbp.authentication.account.dtos.UserAccountDto;
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountFilterDtoService.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountFilterDtoService.java
index 471b4cb..4ad69e1 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountFilterDtoService.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/service/UserAccountFilterDtoService.java
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.dtos.service;
 
 import org.eclipse.osbp.authentication.account.dtos.UserAccountFilterDto;
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
index df53ba2..7f3914a 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
@@ -1,31 +1,15 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.entities;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import javax.persistence.Basic;
+import javax.persistence.Cacheable;
 import javax.persistence.Column;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.Index;
 import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
 import javax.persistence.OneToMany;
 import javax.persistence.PreRemove;
 import javax.persistence.PreUpdate;
@@ -36,11 +20,12 @@
 import org.eclipse.osbp.authentication.account.entities.UserAccountFilter;
 import org.eclipse.osbp.dsl.common.datatypes.IEntity;
 import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.Hidden;
 import org.eclipse.osbp.runtime.common.annotations.Properties;
 import org.eclipse.osbp.runtime.common.annotations.Property;
 import org.eclipse.osbp.runtime.common.validation.InfoSeverity;
-import org.eclipse.persistence.annotations.Noncacheable;
 
+@Cacheable(false)
 @Entity
 @Table(name = "USER_ACCOUNT", indexes = @Index(name = "INDEX_USER_NAME", unique = true, columnList = "USER_NAME"))
 @DiscriminatorValue(value = "USER_ACCOUNT")
@@ -59,7 +44,7 @@
   @Column(name = "USER_NAME", nullable = false)
   private String userName;
   
-  @Column(name = "PASSWORD")
+  @Hidden
   private String password;
   
   @Column(name = "EXTRA_PASSWORD")
@@ -86,9 +71,6 @@
   @Column(name = "SUPERUSER")
   private boolean superuser;
   
-  @Column(name = "SUPERVISOR")
-  private boolean supervisor;
-  
   @Column(name = "FORCE_PWD_CHANGE")
   private boolean forcePwdChange;
   
@@ -101,7 +83,7 @@
   @Column(name = "SUCCESSFUL_ATTEMPT")
   private int successfulAttempt;
   
-  @Column(name = "COOKIE_HASH_CODE")
+  @Hidden
   private int cookieHashCode;
   
   @Column(name = "LOCALE_TAG")
@@ -126,15 +108,12 @@
   @Properties(properties = @Property(key = "printservice", value = ""))
   private String printService;
   
-  @Column(name = "SAVED_PROPERTIES")
-  @Lob
-  @Basic(fetch = FetchType.LAZY)
+  @Hidden
   @Valid
   private byte[] savedProperties;
   
   @JoinColumn(name = "USER_ACCOUNT_FILTER_ID")
   @OneToMany(mappedBy = "userAccount")
-  @Noncacheable
   private List<UserAccountFilter> userAccountFilter;
   
   /**
@@ -350,22 +329,6 @@
   }
   
   /**
-   * @return Returns the supervisor property or <code>null</code> if not present.
-   */
-  public boolean getSupervisor() {
-    checkDisposed();
-    return this.supervisor;
-  }
-  
-  /**
-   * Sets the supervisor property to this instance.
-   */
-  public void setSupervisor(final boolean supervisor) {
-    checkDisposed();
-    this.supervisor = supervisor;
-  }
-  
-  /**
    * @return Returns the forcePwdChange property or <code>null</code> if not present.
    */
   public boolean getForcePwdChange() {
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccountFilter.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccountFilter.java
index f85716e..73bdaaa 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccountFilter.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccountFilter.java
@@ -1,20 +1,6 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 package org.eclipse.osbp.authentication.account.entities;
 
-import javax.persistence.CascadeType;
+import javax.persistence.Cacheable;
 import javax.persistence.Column;
 import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
@@ -29,6 +15,7 @@
 import org.eclipse.osbp.dsl.common.datatypes.IEntity;
 import org.eclipse.osbp.runtime.common.annotations.Dispose;
 
+@Cacheable(false)
 @Entity
 @Table(name = "USER_ACCOUNT_FILTER")
 @DiscriminatorValue(value = "USER_ACCOUNT_FILTER")
@@ -47,7 +34,7 @@
   @Column(name = "INVERS")
   private boolean invers;
   
-  @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
+  @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "USER_ACCOUNT_ID")
   private UserAccount userAccount;
   
diff --git a/org.eclipse.osbp.authentication/src/account.dto b/org.eclipse.osbp.authentication/src/account.dto
index beaea21..4c6543b 100644
--- a/org.eclipse.osbp.authentication/src/account.dto
+++ b/org.eclipse.osbp.authentication/src/account.dto
@@ -1,17 +1,3 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 
 import ns org.eclipse.osbp.authentication.account.entities.UserAccount
 import ns org.eclipse.osbp.authentication.account.entities.UserAccountFilter
@@ -30,13 +16,12 @@
 		inheritVar enabled
 		inheritVar locked
 		inheritVar superuser
-		inheritVar supervisor
 		inheritVar forcePwdChange
 		inheritVar notRegistered
 		inheritVar failedAttempt
+		inheritVar successfulAttempt
 		inheritVar
-		successfulAttempt
-		inheritVar cookieHashCode
+		cookieHashCode
 		inheritVar localeTag
 		inheritVar profileimage
 		inheritVar layoutingStrategy
diff --git a/org.eclipse.osbp.authentication/src/account.entity b/org.eclipse.osbp.authentication/src/account.entity
index 1f59355..7d70b6a 100644
--- a/org.eclipse.osbp.authentication/src/account.entity
+++ b/org.eclipse.osbp.authentication/src/account.entity
@@ -13,22 +13,23 @@
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
  */
 
+import javax.persistence.Cacheable 
 import javax.persistence.PreUpdate
 import ns org.eclipse.osbp.authentication.account.datatypes.BlobImage
 import ns org.eclipse.osbp.authentication.account.datatypes.String
+import ns org.eclipse.osbp.authentication.account.datatypes.blobtype
 import ns org.eclipse.osbp.authentication.account.datatypes.boolean
 import ns org.eclipse.osbp.authentication.account.datatypes.int
-import ns org.eclipse.osbp.authentication.account.datatypes.Boolean
-import ns org.eclipse.osbp.authentication.account.datatypes.blobtype
 
 package org.eclipse.osbp.authentication.account.entities {
 
+	@Cacheable(false)
 	entity UserAccount {
 		persistenceUnit "authentication"
 		uuid String id
 		var String email
 		var String[1] userName  
-		var String password
+		var hidden String password
 		var String [ regex("[0-9]*") ] extraPassword
 		var boolean passwordReset
 		var String position properties(key = "organization" value = "")
@@ -36,19 +37,18 @@
 		var boolean enabled
 		var boolean locked
 		var boolean superuser
-		var boolean supervisor
 		var boolean forcePwdChange
 		var boolean notRegistered
 		var int failedAttempt
 		var int successfulAttempt
-		var int cookieHashCode
+		var hidden int cookieHashCode
 		var String localeTag properties(key = "i18n" value = "")
 		var BlobImage profileimage
 		var String layoutingStrategy
 		var String focusingStrategy
 		var String theme properties(key = "theme" value = "")
 		var String printService properties(key = "printservice" value = "")
-		var blobtype savedProperties
+		var hidden blobtype savedProperties
 		ref UserAccountFilter [*] userAccountFilter opposite userAccount
 		@PreUpdate 
 		def void preUpdate() {
@@ -63,6 +63,7 @@
 		}
 	}
 
+	@Cacheable(false)
 	entity UserAccountFilter {
 		persistenceUnit "authentication"
 		uuid String id
diff --git a/org.eclipse.osbp.authentication/src/account.service b/org.eclipse.osbp.authentication/src/account.service
index 1ff877e..54bcaf8 100644
--- a/org.eclipse.osbp.authentication/src/account.service
+++ b/org.eclipse.osbp.authentication/src/account.service
@@ -1,20 +1,7 @@
-/**
- *                                                                            
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *                                                                            
- * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License 2.0        
- * which accompanies this distribution, and is available at                  
- * https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- * SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- * Contributors:   
- * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
- */
 
 import ns org.eclipse.osbp.authentication.account.dtos.UserAccountDto
-import ns org.eclipse.osbp.authentication.account.dtos.UserAccountFilterDto package org.eclipse.osbp.authentication.account.dtos.service {
+import ns org.eclipse.osbp.authentication.account.dtos.UserAccountFilterDto
+package org.eclipse.osbp.authentication.account.dtos.service {
 
 	dtoservice UserAccountDtoService provides UserAccountDto {
 		mutable persistenceUnit authentication
diff --git a/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java b/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
index 18f0ca3..d2a2815 100644
--- a/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
+++ b/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
@@ -51,6 +51,7 @@
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
 import org.eclipse.osbp.jpa.services.Query;
+import org.eclipse.osbp.jpa.services.filters.LCompare;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.filter.IDTOServiceWithMutablePersistence;
 import org.eclipse.osbp.ui.api.complexdatacontainer.IComplexDataContainerChangedListener;
@@ -538,20 +539,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.osbp.ui.api.useraccess.IUserAccessService#isSupervisor()
-	 */
-	@Override
-	public boolean isSupervisor() {
-		UserAccountDto user = getUser();
-		if (user != null) {
-			return user.getSupervisor();
-		}
-		return false;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see org.eclipse.osbp.ui.api.useraccess.IUserAccessService#getPosition()
 	 */
 	@Override
@@ -1015,10 +1002,10 @@
 		return Collections.EMPTY_MAP;
 	}
 	
-	@SuppressWarnings("unchecked")
 	@Override
 	public void persistProperties(Map<String, Object> properties) {
-		UserAccountDto user = getUser();
+		// must reread from db as data could have been changed
+		UserAccountDto user = getDtoUserAccountDtoService().get(getUser().getId());
 		if (user != null) {
 			try {
 	        ByteArrayOutputStream out = new ByteArrayOutputStream();
diff --git a/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java b/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
index 5d2db4c..cfca2ca 100644
--- a/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
+++ b/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
@@ -118,7 +118,6 @@
 			position = UserBinder.getUserAccessService().getPositionName();
 			perspective = UserBinder.getUserAccessService().getPerspective();
 			extraPassword = UserBinder.getUserAccessService().getExtraPassword();
-			supervisor = UserBinder.getUserAccessService().isSupervisor();
 			email = UserBinder.getUserAccessService().getEmail();
 			roles = UserBinder.getUserAccessService().getRoles();
 			id = UserBinder.getUserAccessService().getId();
@@ -402,11 +401,12 @@
 			return null;
 		}
 
+		@SuppressWarnings("unchecked")
 		@Override
-		public Object[] getVisibleColumns(String key) {
+		public Map<Object, Integer> getVisibleColumns(String key) {
 			Object property = getProperty(key);
-			if (property instanceof Object[]){
-				return (Object[])property;
+			if (property instanceof Map<?, ?>){
+				return (Map<Object, Integer>)property;
 			}
 			return null;
 		}
