catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.authentication.ui/.classpath b/org.eclipse.osbp.authentication.ui/.classpath
index a0a6461..12fd359 100644
--- a/org.eclipse.osbp.authentication.ui/.classpath
+++ b/org.eclipse.osbp.authentication.ui/.classpath
@@ -3,7 +3,7 @@
 	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="src" path="src-gen/"/>
+	<classpathentry kind="src" path="src-gen"/>
 	<classpathentry kind="src" path="ecviews/"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/org.eclipse.osbp.authentication.ui/OSGI-INF/org.eclipse.osbp.authentication.account.tables.TablesServiceBinder.xml b/org.eclipse.osbp.authentication.ui/OSGI-INF/org.eclipse.osbp.authentication.account.tables.TablesServiceBinder.xml
new file mode 100644
index 0000000..6606549
--- /dev/null
+++ b/org.eclipse.osbp.authentication.ui/OSGI-INF/org.eclipse.osbp.authentication.account.tables.TablesServiceBinder.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.authentication.account.tables.TablesServiceBinder">
+   <reference bind="bindUserAccessMethod" cardinality="1..1" interface="org.eclipse.osbp.ui.api.useraccess.IUserAccessService" name="UserAccessMethod" policy="static" unbind="unbindUserAccessMethod"/>
+   <implementation class="org.eclipse.osbp.authentication.account.tables.TablesServiceBinder"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.authentication.ui/ecviews/.gitignore b/org.eclipse.osbp.authentication.ui/ecviews/.gitignore
deleted file mode 100644
index ff10ed4..0000000
--- a/org.eclipse.osbp.authentication.ui/ecviews/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.ecview
-/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.ecview
diff --git a/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.ecview b/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.ecview
index cd37116..4329eda 100644
--- a/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.ecview
+++ b/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.ecview
@@ -14,12 +14,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.password" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="password" labelI18nKey="password" label="password" typeQualifiedName="java.lang.String" type="java.lang.String">
-        <tags>text</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="password" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.extraPassword" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="extraPassword" labelI18nKey="extraPassword" label="extraPassword" typeQualifiedName="java.lang.String" type="java.lang.String">
         <tags>text</tags>
         <tags>constraint</tags>
@@ -67,12 +61,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.supervisor" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="supervisor" labelI18nKey="supervisor" label="supervisor" typeQualifiedName="boolean">
-        <tags>boolean</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="supervisor" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.forcePwdChange" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="forcePwdChange" labelI18nKey="forcePwdChange" label="forcePwdChange" typeQualifiedName="boolean">
         <tags>boolean</tags>
         <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="forcePwdChange" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
@@ -97,12 +85,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.cookieHashCode" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="cookieHashCode" labelI18nKey="cookieHashCode" label="cookieHashCode" typeQualifiedName="int">
-        <tags>number</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="cookieHashCode" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.localeTag" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="localeTag" labelI18nKey="localeTag" label="localeTag" typeQualifiedName="java.lang.String" type="java.lang.String">
         <tags>i18nCombo</tags>
         <properties key="i18n" value=""/>
@@ -143,15 +125,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAccount.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.savedProperties" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="savedProperties" labelI18nKey="savedProperties" label="savedProperties" typeQualifiedName="byte[]">
-        <tags>blob</tags>
-        <tags>constraint</tags>
-        <properties key="class" value="org.eclipse.osbp.authentication.account.dtos.UserAccountDto"/>
-        <properties key="name" value="savedProperties"/>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="savedProperties" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
     </elements>
     <cellStyles target="strategyLayout" alignment="FILL_FILL"/>
   </content>
diff --git a/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.ecview b/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.ecview
index 1dd6ff1..a8b15c6 100644
--- a/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.ecview
+++ b/org.eclipse.osbp.authentication.ui/ecviews/org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.ecview
@@ -14,12 +14,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.password" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="password" labelI18nKey="password" label="password" typeQualifiedName="java.lang.String" type="java.lang.String">
-        <tags>text</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="password" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.extraPassword" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="extraPassword" labelI18nKey="extraPassword" label="extraPassword" typeQualifiedName="java.lang.String" type="java.lang.String">
         <tags>text</tags>
         <tags>constraint</tags>
@@ -67,12 +61,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.supervisor" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="supervisor" labelI18nKey="supervisor" label="supervisor" typeQualifiedName="boolean">
-        <tags>boolean</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="supervisor" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.forcePwdChange" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="forcePwdChange" labelI18nKey="forcePwdChange" label="forcePwdChange" typeQualifiedName="boolean">
         <tags>boolean</tags>
         <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="forcePwdChange" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
@@ -97,12 +85,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.cookieHashCode" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="cookieHashCode" labelI18nKey="cookieHashCode" label="cookieHashCode" typeQualifiedName="int">
-        <tags>number</tags>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="cookieHashCode" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
       <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.localeTag" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="localeTag" labelI18nKey="localeTag" label="localeTag" typeQualifiedName="java.lang.String" type="java.lang.String">
         <tags>i18nCombo</tags>
         <properties key="i18n" value=""/>
@@ -143,15 +125,6 @@
           <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
         </valueBindingEndpoints>
       </suspects>
-      <suspects xsi:type="model:YTypedSuspect" id="org.eclipse.osbp.authentication.account.dialogs.autobinded.UserAdministration.org.eclipse.osbp.authentication.account.dtos.UserAccountDto.savedProperties" authorizationGroup="org.eclipse.osbp.authentication.account.dtos.UserAccountDto" authorizationId="savedProperties" labelI18nKey="savedProperties" label="savedProperties" typeQualifiedName="byte[]">
-        <tags>blob</tags>
-        <tags>constraint</tags>
-        <properties key="class" value="org.eclipse.osbp.authentication.account.dtos.UserAccountDto"/>
-        <properties key="name" value="savedProperties"/>
-        <valueBindingEndpoints xsi:type="binding:YDetailValueBindingEndpoint" propertyPath="savedProperties" type="org.eclipse.osbp.authentication.account.dtos.UserAccountDto">
-          <masterObservable xsi:type="core:YBeanSlotValueBindingEndpoint" attributePath="value" beanSlot="//@beanSlots.0"/>
-        </valueBindingEndpoints>
-      </suspects>
     </elements>
     <cellStyles target="strategyLayout" alignment="FILL_FILL"/>
   </content>
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N.properties
index 1413b57..7dc8cc1 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N.properties
@@ -7,7 +7,7 @@
 cancel_register_tip=Cancels the registration and steps back to login.
 clear_filter=clear_filter
 close=close
-copyright=Copyright 2012-2017
+copyright=Copyright 2012-
 create_new_item=create_new_item
 created_at=created_at
 created_by=created_by
@@ -18,7 +18,7 @@
 edit_account=edit_account
 email_is_empty_message=Please fill the email address!
 email_is_incorrect_message=Email is incorrect!
-email_password_reset_body=Please find your new password here.\\nYou have to change it with your next login!\\n\\nYour new password is:
+email_password_reset_body=Please find your new password here.\\nYou have to change it with your next login!\\n\\nYour new password is: {0}
 email_password_reset_subject=Your new password
 end_date=end_date
 equal_to=equal_to
@@ -55,7 +55,7 @@
 part_name=part_name
 password=Password
 password_is_empty=Please fill the password!
-password_reset=Your password was reset to
+password_reset=password reset
 password_reset_success_message=Password successfully reset!
 password_tip=Enter your password
 password_verifying=Verifying password
@@ -63,8 +63,8 @@
 password_verifying_tip=Enter your verifying password
 passwords_not_equal=The passwords are not equal!
 perspective_na=perspective_na
-register=Register
 register_caption=REGISTRATION
+register_new_user=Register
 register_password_is_empty_message=Please fill both password fields with your desired password! 
 register_tip=If this is the first time to work with the system, you must provide some personal data so the Administrator can create an account for you. After successful registration process, you can use the sign-in button the next time.
 register_username_already_exists=User name already exists! Its registration is not possible!
@@ -92,11 +92,12 @@
 start_date=start_date
 too_many_users=More than one user with the same user name found.
 toolbar_for_dialogs=toolbar_for_dialogs
-trademark=OS.bee is a Registered Trademark of Loetz GmbH & Co KG.
+trademark=OS.bee is a Registered Trademark of Loetz GmbH&Co.KG.
 undo_changes=undo_changes
 unknown=unknown
 updated_at=updated_at
 updated_by=updated_by
+user_account=user_account
 user_administration=user_administration
 user_exist_message=User already exists!
 username=Username
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N_de.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N_de.properties
index a7a1f60..a101d22 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N_de.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N_de.properties
@@ -7,7 +7,7 @@
 cancel_register_tip=Hiermit brechen Sie die Registrierung ab und kehren zur\u00FCck zur Anmeldung.
 clear_filter=Clear filter
 close=Close
-copyright=Copyright 2012-2017\n
+copyright=Copyright 2012-\n
 create_new_item=Create new item
 created_at=Created at
 created_by=Created by
@@ -18,7 +18,7 @@
 edit_account=Edit account
 email_is_empty_message=Geben Sie bitte Ihre Email Adresse an!
 email_is_incorrect_message=Geben Sie bitte eine richtige Emailadresse an!
-email_password_reset_body=Anbei Ihr neues Passwort.\\nSie m\u00FCssen das Passwort bei der n\u00E4chsten Anmeldung \u00E4ndern!\\n\\nDas neue Passwort lautet:\t\t\t\t
+email_password_reset_body=Anbei Ihr neues Passwort.\\nSie m\u00FCssen das Passwort bei der n\u00E4chsten Anmeldung \u00E4ndern!\\n\\nDas neue Passwort lautet: {0}\t\t\t\t
 email_password_reset_subject=Passwort erfolgreich zur\u00FCckgesetzt! Anbei ihr neues Passwort.
 end_date=End date
 equal_to=Equal to
@@ -55,22 +55,19 @@
 page=Page
 part_name=Part name
 password=Passwort
-passwordVerifying=Best\u00E4tigendes Passwort
-passwordVerifying_tip=Geben Sie Ihr Passwort zur Best\u00E4tigung ein
 password_is_empty=Please fill the password!
 password_is_empty_message=Geben Sie bitte Ihr Passwort ein!
-password_reset=Dein zur\u00FCckgesetztes Passwort lautet: 
+password_reset=Passwort zur\u00FCcksetzen
 password_reset_success_message=Passwort erfolgreich zur\u00FCckgesetzt!
 password_tip=Geben Sie Ihr Passwort ein
-password_verifying=Verifying password
-password_verifying_is_empty=Please fill the verifying password!
+password_verifying=Passwortwiederholung
+password_verifying_is_empty=Bitte geben Sie Ihr Passwort zur Best\u00E4tigung ein!
 password_verifying_is_empty_message=Bitte geben Sie Ihr Passwort zur Best\u00E4tigung ein!
-password_verifying_tip=Enter your verifying password
-passwords_not_equal=The passwords are not equal!
-passwords_not_equal_message=Die eingegebenen Passw\u00F6rter ist nicht identisch!
-perspective_na=Perspective na
-register=Registrieren
+password_verifying_tip=Bitte wiederholen Sie das Passwort hier!
+passwords_not_equal=Die eingegebenen Passworte sind nicht identisch!
+perspective_na=Perspective nicht gefunden
 register_caption=REGISTRIERUNG
+register_new_user=Registrieren
 register_password_is_empty_message=Bitte geben Sie in beiden Passwortfeldern das gew\u00FCnsche Passwort ein! 
 register_tip=Wenn dies Ihr erstes Mal am System ist, m\u00FCssen Sie einige pers\u00F6nliche Daten angeben, damit der Administrator ein Konto f\u00FCr Sie einrichten kann. Nach der erfolgreichen Registrierung k\u00F6nnen Sie sich am System anmelden.
 register_username_already_exists=Benutzername ist bereits vorhanden! Registrierung nicht m\u00F6glich!
@@ -98,11 +95,12 @@
 start_date=Start date
 too_many_users=Mehr als einen Benutzer mit dem gleichen Benutzernamen gefunden.
 toolbar_for_dialogs=Toolbar for dialogs
-trademark=OS.bee is a Registered Trademark of Loetz GmbH & Co KG.
+trademark=OS.bee is a Registered Trademark of Loetz GmbH&Co.KG.
 undo_changes=Undo changes
 unknown=Unknown
 updated_at=Updated at
 updated_by=Updated by
+user_account=User account
 user_administration=User administration
 user_exist_message=Benutzer existiert bereits!
 username=Benutzername
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N_de_AT.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N_de_AT.properties
index 6c73e1d..3f64431 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N_de_AT.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N_de_AT.properties
@@ -1 +1 @@
-#de_AT
+#Generated by Eclipse Messages Editor (Eclipse Babel)
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N_en.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N_en.properties
index 2b7225b..1732f2d 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N_en.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N_en.properties
@@ -7,7 +7,7 @@
 cancel_register_tip=Cancels the registration and steps back to login.
 clear_filter=Clear filter
 close=Close
-copyright=Copyright 2012-2017
+copyright=Copyright 2012-
 create_new_item=Create new item
 created_at=Created at
 created_by=Created by
@@ -18,8 +18,8 @@
 edit_account=Edit account
 email_is_empty_message=Please fill the email address!
 email_is_incorrect_message=Email is incorrect!
-email_password_reset_body=Please find your new password here.\\nYou have to change it with your next login!\\n\\nYour new password is:
-email_password_reset_subject=Your new password
+email_password_reset_body=Please find your new password here.\\nYou have to change it with your next login!\\n\\nYour new password is: {0}
+email_password_reset_subject=Your password has been reset. Please find your new password in the message.
 end_date=End date
 equal_to=Equal to
 failedmessage=Either user name or password is wrong. Please try again or press \"Forgot Password\" to get a new password.
@@ -55,19 +55,19 @@
 part_name=Part name
 password=Password
 password_is_empty=Please fill the password!
-password_reset=Your password was reset to
+password_reset=Reset password
 password_reset_success_message=Password successfully reset!
 password_tip=Enter your password
-password_verifying=Verifying password
-password_verifying_is_empty=Please fill the verifying password!
-password_verifying_tip=Enter your verifying password
+password_verifying=Verify password
+password_verifying_is_empty=Please repeat your new password!
+password_verifying_tip=Enter your verify password here!
 passwords_not_equal=The passwords are not equal!
-perspective_na=Perspective na
-register=Register
+perspective_na=Perspective not available
 register_caption=REGISTRATION
+register_new_user=Register
 register_password_is_empty_message=Please fill both password fields with your desired password!
 register_tip=If this is the first time to work with the system, you must provide some personal data so the Administrator can create an account for you. After successful registration process, you can use the sign-in button the next time.
-register_username_already_exists=User name already exists! Its registration is not possible!
+register_username_already_exists=User name already exists! Registration is not possible!
 register_username_is_empty_message=Please fill the username to register!
 registration_success_message=The administrator will contact you as soon as your registration was completed.
 remember_me=remember me
@@ -92,11 +92,12 @@
 start_date=Start date
 too_many_users=More than one user with the same user name found.
 toolbar_for_dialogs=Toolbar for dialogs
-trademark=OS.bee is a Registered Trademark of Loetz GmbH & Co KG.
+trademark=OS.bee is a Registered Trademark of Loetz GmbH&Co.KG.
 undo_changes=Undo changes
 unknown=Unknown
 updated_at=Updated at
 updated_by=Updated by
+user_account=User account
 user_administration=User administration
 user_exist_message=User already exists!
 username=Username
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N_en_US.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N_en_US.properties
index d89e21c..3f64431 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N_en_US.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N_en_US.properties
@@ -1 +1 @@
-#en_US
+#Generated by Eclipse Messages Editor (Eclipse Babel)
diff --git a/org.eclipse.osbp.authentication.ui/i18n/I18N_fr.properties b/org.eclipse.osbp.authentication.ui/i18n/I18N_fr.properties
index 0b9340c..72f7b49 100644
--- a/org.eclipse.osbp.authentication.ui/i18n/I18N_fr.properties
+++ b/org.eclipse.osbp.authentication.ui/i18n/I18N_fr.properties
@@ -1,5 +1,5 @@
 #fr
-copyright=Copyright 2012-2017
+copyright=Copyright 2012-
 disabledmessage=For security reasons your account was disabled. Contact your administrator to enable your account.
 failedmessage=L'utilisateur est inconnu ou le mot de passe est non valide. S'il vous pla\u00EEt essaiez encore une fois ou pressez le bouton \"Mot de passe oubli\u00E9\" pour recevoir un nouveau.
 forgot_password=Mot de passe oubli\u00E9 ?
@@ -8,8 +8,10 @@
 login_caption=LOGIN
 login_caption_tip=Vous \u00EAtes forcer d'identifier \u00E0 syst\u00E8me avant vous pouvez utilizer la fonctionnalit\u00E9 provisionn\u00E9e. 
 password=Mot de passe
+password_reset=R\u00E9initialiser le mot de passe
 password_tip=Saisirez votre mot de passe
-register=Enregistrer
+perspective_na=Perspective non disponible
+register_new_user=Enregistrer
 register_tip=Si vous travaillez avec le syst\u00E8me la premiere fois, il faut donner quelques donn\u00E9es personelles pour que l'Administrateur peut installer un compte d'utilisateur pour vous. Apr\u00E8s l'enregistration r\u00E9ussi, vous \u00EAtez en \u00E9tat de connexer avec le syst\u00E8me la prochaine fois.  
 remember_me=Garder ma session active
 remember_me_tip=Posez ce crochet quand vous voulez connexier avec le syst\u00E8me automaticallement la prochaine fois. 
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/CancelItemAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/CancelItemAction.java
index d04d13b..68cd7ea 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/CancelItemAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/CancelItemAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class CancelItemAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,7 +108,7 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
@@ -114,7 +121,8 @@
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for cancelItem");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.cancelItem");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.cancelItem");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_CANCEL);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DatabaseInfoAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DatabaseInfoAction.java
index c4c6686..43f8c74 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DatabaseInfoAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DatabaseInfoAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,8 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +98,8 @@
 public class DatabaseInfoAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -114,7 +120,8 @@
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for databaseInfo");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.databaseInfo");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.databaseInfo");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, UIActionEnum.DATABASE_INFO);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DeleteItemAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DeleteItemAction.java
index 50116f4..d018cf5 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DeleteItemAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DeleteItemAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class DeleteItemAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,21 +108,34 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
     }
+    Object dto = viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
     boolean result1 = !(boolean) ContextInjectionFactory.invoke(dialog, IsNew.class, eclipseContext);
     boolean result2 = (boolean) ContextInjectionFactory.invoke(dialog, IsPositioned.class, eclipseContext);
-    return result1 && result2;
+    boolean result3 = true;
+    if( result1 && result2 ) {
+    	String clazzName = dto.getClass().getName();
+    	String grantKey = clazzName + "###DELETEABLE";
+    	if( isGranted.containsKey(grantKey)) {
+    		result3=isGranted.get(grantKey);
+    	} else {
+    		result3=userAccessService.isGranted(Group.DTO, Action.DELETEABLE, clazzName);
+    		isGranted.put(grantKey,result3);
+    	}
+    }
+    return result1 && result2 && result3;
   }
   
   @Execute
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for deleteItem");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.deleteItem");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.deleteItem");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_DELETE);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DialogToolbar.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DialogToolbar.java
index ad12d62..2e1989e 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DialogToolbar.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/DialogToolbar.java
@@ -52,9 +52,11 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.e4.ui.workbench.IPresentationEngine;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -71,6 +73,8 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -102,6 +106,8 @@
   
   private MToolBar toolbar;
   
+  private String stateLabelUUID;
+  
   @Override
   public void createToolbar(final IEclipseContext eclipseContext, final IPresentationEngine renderingEngine, final IThemeResourceService themeResourceService) {
     MenuFactoryImpl factory = MenuFactoryImpl.eINSTANCE;
@@ -217,6 +223,11 @@
     return toolbar;
   }
   
+  @Override
+  public String getStateLabelUUID() {
+    return stateLabelUUID;
+  }
+  
   private void setCommand(final String commandName, final MHandledToolItem toolItem, final MApplication application) {
     for(MCommand command:application.getCommands()) {
     	if(command.getCommandName().equals(commandName)) {
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/NewItemAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/NewItemAction.java
index e4c10c2..edffea2 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/NewItemAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/NewItemAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class NewItemAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,20 +108,33 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
     }
+    Object dto = viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
     boolean result = !(boolean) ContextInjectionFactory.invoke(dialog, IsDirty.class, eclipseContext);
-    return result;
+    boolean result2 = true;
+    if( result ) {
+    	String clazzName = dto.getClass().getName();
+    	String grantKey = clazzName + "###CREATABLE";
+    	if( isGranted.containsKey(grantKey)) {
+    		result2=isGranted.get(grantKey);
+    	} else {
+    		result2=userAccessService.isGranted(Group.DTO, Action.CREATABLE, clazzName);
+    		isGranted.put(grantKey,result2);
+    	}
+    }
+    return result && result2;
   }
   
   @Execute
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for newItem");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.newItem");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.newItem");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_NEW);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAndNewAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAndNewAction.java
index 6524083..9462a2c 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAndNewAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAndNewAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class SaveAndNewAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,21 +108,44 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
     }
+    Object dto = viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
     boolean result1 = (boolean) ContextInjectionFactory.invoke(dialog, IsValid.class, eclipseContext);
     boolean result2 = (boolean) ContextInjectionFactory.invoke(dialog, IsDirty.class, eclipseContext);
-    return result1 && result2;
+    boolean result3 = true;
+    boolean result4 = true;
+    if( result1 && result2) {
+    	String clazzName = dto.getClass().getName();
+    	String grantKey = clazzName + "###UPDATABLE";
+    	if( isGranted.containsKey(grantKey)) {
+    		result3=isGranted.get(grantKey);
+    	} else {
+    		result3 = userAccessService.isGranted(Group.DTO, Action.UPDATABLE, clazzName);
+    		isGranted.put(grantKey,result3);
+    	}
+    	if( result3 ) {
+    		grantKey = clazzName + "###CREATABLE";
+    		if( isGranted.containsKey(grantKey)) {
+    			result4=isGranted.get(grantKey);
+    		} else {
+    			result4 = userAccessService.isGranted(Group.DTO, Action.CREATABLE, clazzName);
+    			isGranted.put(grantKey,result4);
+    		}
+    	}
+    }
+    return result1 && result2 && result3 && result4;
   }
   
   @Execute
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for saveAndNew");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveAndNew");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveAndNew");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_SAVE_AND_NEW);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAsNewAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAsNewAction.java
index 7c69c8f..4c5d424 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAsNewAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveAsNewAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class SaveAsNewAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,21 +108,34 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
     }
+    Object dto = viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
     boolean result1 = (boolean) ContextInjectionFactory.invoke(dialog, IsValid.class, eclipseContext);
     boolean result2 = (boolean) ContextInjectionFactory.invoke(dialog, IsDirty.class, eclipseContext);
-    return result1 && result2;
+    boolean result3 = true;
+    if( result1 && result2 ) {
+    	String clazzName = dto.getClass().getName();
+    	String grantKey = clazzName + "###CREATABLE";
+    	if( isGranted.containsKey(grantKey)) {
+    		result3=isGranted.get(grantKey);
+    	} else {
+    		result3 = userAccessService.isGranted(Group.DTO, Action.CREATABLE, clazzName);
+    		isGranted.put(grantKey,result3);
+    	}
+    }
+    return result1 && result2 && result3;
   }
   
   @Execute
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for saveAsNew");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveAsNew");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveAsNew");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_SAVE_AS_NEW);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveItemAction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveItemAction.java
index 5f680c3..f60ca05 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveItemAction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/actions/SaveItemAction.java
@@ -54,8 +54,10 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.annotations.IsDirty;
@@ -73,6 +75,9 @@
 import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.MDXDialog;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
@@ -94,6 +99,8 @@
 public class SaveItemAction {
   private static Logger log = org.slf4j.LoggerFactory.getLogger("action");
   
+  private static Map<String, Boolean> isGranted = new HashMap();
+  
   private MUIElement activePart;
   
   public MUIElement getActivePart() {
@@ -101,21 +108,34 @@
   }
   
   @CanExecute
-  public boolean canExecute(final IEclipseContext eclipseContext) {
+  public boolean canExecute(final IEclipseContext eclipseContext, final IUserAccessService userAccessService, final IViewContext viewContext) {
     IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
     if (dialog == null) {
     	return false;
     }
+    Object dto = viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
     boolean result1 = (boolean) ContextInjectionFactory.invoke(dialog, IsValid.class, eclipseContext);
     boolean result2 = (boolean) ContextInjectionFactory.invoke(dialog, IsDirty.class, eclipseContext);
-    return result1 && result2;
+    boolean result3 = true;
+    if( result1 && result2) {
+    	String clazzName = dto.getClass().getName();
+    	String grantKey = clazzName + "###UPDATABLE";
+    	if( isGranted.containsKey(grantKey)) {
+    		result3=isGranted.get(grantKey);
+    	} else {
+    		result3 = userAccessService.isGranted(Group.DTO, Action.UPDATABLE, clazzName);
+    		isGranted.put(grantKey,result3);
+    	}
+    }
+    return result1 && result2 && result3;
   }
   
   @Execute
   public void execute(final IEclipseContext eclipseContext, final IEventDispatcher eventDispatcher) {
     log.debug("action execute called for saveItem");
     String uuid = (String)eclipseContext.get("TOOLBAR_UUID");
-    EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveItem");
+    MPerspective perspective = eclipseContext.get(MPerspective.class);
+    EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.ACTION, uuid, "org.eclipse.osbp.authentication.account.actions.saveItem");
     evnt.addItem(EventDispatcherDataTag.BUTTON_ID, DialogActionEnum.DIALOG_ACTION_SAVE);
     eventDispatcher.sendEvent(evnt);
   }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsServiceBinder.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsServiceBinder.java
index 18aca65..563fb4b 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsServiceBinder.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsServiceBinder.java
@@ -32,11 +32,12 @@
 import org.eclipse.osbp.runtime.common.i18n.ITranslator;
 import org.eclipse.osbp.ui.api.datamart.DatamartData;
 import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
 import org.eclipse.osbp.ui.api.datamart.IDataMart.EType;
+import org.eclipse.osbp.ui.api.date.SimpleDateFormatter;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.user.User;
-import org.eclipse.osbp.utils.vaadin.SimpleDateFormatter;
 import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember;
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsTestClass.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsTestClass.java
index 50fb5e8..db5615e 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsTestClass.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/DatamartsTestClass.java
@@ -30,9 +30,10 @@
 import org.eclipse.osbp.runtime.common.i18n.ITranslator;
 import org.eclipse.osbp.ui.api.datamart.DatamartData;
 import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
 import org.eclipse.osbp.ui.api.datamart.IDataMart.EType;
+import org.eclipse.osbp.ui.api.date.SimpleDateFormatter;
 import org.eclipse.osbp.user.User;
-import org.eclipse.osbp.utils.vaadin.SimpleDateFormatter;
 import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember;
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/UserAccountDatamart.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/UserAccountDatamart.java
index 0d8ca44..9349b87 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/UserAccountDatamart.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/datamarts/UserAccountDatamart.java
@@ -24,9 +24,9 @@
 import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
 import org.eclipse.osbp.ui.api.datamart.DatamartPrimary;
 import org.eclipse.osbp.ui.api.datamart.IDataMart;
+import org.eclipse.osbp.ui.api.date.SimpleDateFormatter;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.user.User;
-import org.eclipse.osbp.utils.vaadin.SimpleDateFormatter;
 import org.eclipse.osbp.xtext.datamart.common.AEntityDatamart;
 import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
@@ -48,7 +48,7 @@
   
   private Map<String, Map<String, String>> dateFilterAttributeProperties = new HashMap<String, Map<String, String>>();
   
-  private String statement = "select UserAccount.USER_NAME as \"userName\",UserAccount.EMAIL as \"email\",UserAccount.NOT_REGISTERED as \"notRegistered\",UserAccount.POSITION as \"position\",UserAccount.PROFILEIMAGE as \"profileimage\",UserAccount.id as \"__UserAccount__ID__\" from USER_ACCOUNT UserAccount";
+  private String statement = "select UserAccount.USER_NAME as \"userName\",UserAccount.EMAIL as \"email\",UserAccount.POSITION as \"position\",UserAccount.PROFILEIMAGE as \"profileimage\",UserAccount.NOT_REGISTERED as \"notRegistered\",UserAccount.id as \"__UserAccount__ID__\" from USER_ACCOUNT UserAccount";
   
   private DatamartDtoMapper datamartDtoMapper = new DatamartDtoMapper()
     .add("org.eclipse.osbp.authentication.account.dtos.UserAccountDto", "id", EType.STRING, "__UserAccount__ID__");
@@ -74,6 +74,9 @@
     	put("profileimage","org.eclipse.osbp.authentication.account.entities.UserAccount.profileimage");
     }};
   
+  private Map<String, IDataMart.AttributeVisibility> hiddenMap = new HashMap<String,AttributeVisibility>() {{
+    }};
+  
   private Map<String, IDataMart.EType> idMap = new HashMap<String,EType>() {{
     			put("__UserAccount__ID__", EType.STRING);
     }};
@@ -112,6 +115,10 @@
     return this.aliasMap;
   }
   
+  public Map<String, IDataMart.AttributeVisibility> getHiddenMap() {
+    return this.hiddenMap;
+  }
+  
   public Map<String, String> getTypesProp() {
     return this.typesProp;
   }
@@ -126,7 +133,7 @@
   
   protected ArrayList<DatamartFilter> initializeFilterMap() {
     return new ArrayList<DatamartFilter>() {{
-    add(new DatamartFilter(org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getDSLMetadataService(), user, DatamartFilter.FilterType.BY_ID, "UserAccount.id",""));
+    add(new DatamartFilter(org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getDSLMetadataService(), user, DatamartFilter.FilterType.BY_ID, "UserAccount.id","", false));
     }};
     
   }
@@ -194,9 +201,7 @@
     if (connection != null) {
     	for (DatamartFilter filter : getFilters()) {
     		if((DatamartFilter.FilterType.BY_ID != filter.getType()) && (DatamartFilter.FilterType.BETWEEN != filter.getType()) && (DatamartFilter.FilterType.BETWEEN_DATE != filter.getType())) {
-    			ResultSet rs = null;
-    			try {
-    				rs = connection.createStatement().executeQuery(getVendorSql(filter));
+    			try (ResultSet rs = connection.createStatement().executeQuery(getVendorSql(filter))){
     				if (rs != null) {
     					while (rs.next()) {
     					 		int type = rs.getMetaData().getColumnType(1);
@@ -205,9 +210,9 @@
     					 			    Date date = rs.getDate(1);
     					 			    if (date != null) {
     					 					if (user == null) {
-    					 						filter.addItem(date.toString(), getVendorToDateSQLMethod()+"('"+date.toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')", false);
+    					 						filter.addItem(date.toString(), vendorConvertToDateSQL( date ), false);
     					 					} else {
-    					 						filter.addItem(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(date), getVendorToDateSQLMethod()+"('"+date.toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')", false);
+    					 						filter.addItem(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(date), vendorConvertToDateSQL( date ), false);
     					 					}
     					 				}
     					 				break;
@@ -215,9 +220,9 @@
     					 				Timestamp timestamp = rs.getTimestamp(1);
     					 				if (timestamp != null) {
     					 					if (user == null) {
-    					 						filter.addItem(timestamp.toString(), getVendorToTimestampSQLMethod()+"('"+timestamp.toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')", false);
+    					 						filter.addItem(timestamp.toString(), vendorConvertToTimestampSQL( timestamp ), false);
     					 					} else {
-    					 						filter.addItem(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(timestamp), getVendorToTimestampSQLMethod()+"('"+timestamp.toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')", false);
+    					 						filter.addItem(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(timestamp), vendorConvertToTimestampSQL( timestamp ), false);
     					 					}
     					 				}
     					 				break;
@@ -250,10 +255,6 @@
     				}
     			} catch (SQLException e) {
     				log.error("{}", e);
-    			} finally {
-    				try {
-    					rs.close();
-    				} catch (java.sql.SQLException e) {}
     			}
     		}
     	}
@@ -295,52 +296,32 @@
   }
   
   public DerivedCellSet getResults(final Class operativeDtoClass, final List<IDto> operativeDtos) {
-    ResultSet rs = null;
     SqlCellSet cellSet = null;
     java.sql.ResultSetMetaData metaData = null;
-    // --- if filler text is enabled ---
-    if	(fFillerTextEnabled) {
-    	// --- try to generate filler text ---
-    	rs = generateFillerTextResultSet();
-    }
-    // --- if no result set is generated by now ---
     connect();
-    if (rs == null) {
-    	if (connection != null) {
-    		String query = applyFilters();
-    		if (query.length()>0) {
-    			try {
-    				rs = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(query);
-    			} catch (SQLException e) {
-    				log.error("Query: "+query);
-    				log.error("{}", e);
-    			}
+    if (connection != null) {
+    	String query = applyFilters();
+    	if (query.length()>0) {
+    		try (ResultSet rs = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(query)){
+    			cellSet = new SqlCellSet(rs, getAxisMap(), getIdMap(), getAliasMap(), getHiddenMap(), datamartDtoMapper, operativeDtoClass, operativeDtos, getPrimaryList(), org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getUserAccessService());
+    			registerFirstLine(rs, user);
+    			metaData = rs.getMetaData();
+    			disconnect();
+    			return (new DerivedCellSet(cellSet,
+    				metaData,
+    				org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getDSLMetadataService(), user));
+    		}
+    		catch (java.sql.SQLException e) {
+    			log.error("Statement: {}  error {}", query, e);
     		}
     	}
     }
-    if (rs != null) {
-    	try {
-    		cellSet = new SqlCellSet(rs, getAxisMap(), getIdMap(), getAliasMap(), datamartDtoMapper, operativeDtoClass, operativeDtos, getPrimaryList(), org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getUserAccessService());
-    		registerFirstLine(rs, user);
-    		metaData = rs.getMetaData();
-    		rs.close();
-    	}
-    	catch (java.sql.SQLException e) {
-    		try {
-    			log.error("Statement: "+rs.getStatement().toString());
-    		} catch (SQLException e1) {}
-    		log.error("{}", e);
-    	}
-    	return (new DerivedCellSet(cellSet,
-    		metaData,
-    		org.eclipse.osbp.authentication.account.datamarts.DatamartsServiceBinder.getDSLMetadataService(), user));
-    }
     disconnect();
     return null;
   }
   
   public void registerFirstLine(final ResultSet rs, final IUser user) throws SQLException {
-    if (rs != null && rs.first()) {
+    if (rs != null && !rs.isClosed() && rs.first()) {
     	for (int column = 1; column <= rs.getMetaData().getColumnCount(); column++) {
     		int type = rs.getMetaData().getColumnType(column);
     		switch (type) {
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/DialogsServiceBinder.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/DialogsServiceBinder.java
index 1b2b1f8..97a8efd 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/DialogsServiceBinder.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/DialogsServiceBinder.java
@@ -60,7 +60,6 @@
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.utils.vaadin.SelectDialog;
-import org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler.StrategyHandler;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractMobileView;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.component.annotations.Component;
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbedded.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbedded.java
index 34602b1..19fdc4d 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbedded.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbedded.java
@@ -60,7 +60,6 @@
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.utils.vaadin.SelectDialog;
-import org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler.StrategyHandler;
 import org.eclipse.osbp.xtext.action.common.IToolbarAction;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractEmbeddedDialog;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractMobileView;
@@ -121,11 +120,19 @@
   
   @Override
   public String getBindingPropertyName() {
-    return "";
+    return "user_account";
   }
   
   @Override
   public int getNumColumns() {
     return 0;
   }
+  
+  public String getInitializationGroup() {
+    return null;
+  }
+  
+  public String getInitializationMethod() {
+    return null;
+  }
 }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbeddedContextFunction.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbeddedContextFunction.java
index 4f09fec..75eadae 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbeddedContextFunction.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAccountDialogEmbeddedContextFunction.java
@@ -59,7 +59,6 @@
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.utils.vaadin.SelectDialog;
-import org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler.StrategyHandler;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractMobileView;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.component.annotations.Component;
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAdministrationDialog.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAdministrationDialog.java
index 10d17ee..220ccd5 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAdministrationDialog.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/dialogs/UserAdministrationDialog.java
@@ -63,7 +63,6 @@
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.utils.vaadin.SelectDialog;
-import org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler.StrategyHandler;
 import org.eclipse.osbp.xtext.action.common.IToolbarAction;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractECViewDialog;
 import org.eclipse.osbp.xtext.dialogdsl.common.AbstractMobileView;
@@ -125,11 +124,19 @@
   
   @Override
   public String getBindingPropertyName() {
-    return "";
+    return "user_administration";
   }
   
   @Override
   public int getNumColumns() {
     return 0;
   }
+  
+  public String getInitializationGroup() {
+    return null;
+  }
+  
+  public String getInitializationMethod() {
+    return null;
+  }
 }
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/TablesServiceBinder.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/TablesServiceBinder.java
new file mode 100644
index 0000000..5d72547
--- /dev/null
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/TablesServiceBinder.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2011, 2017 - 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 v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ */
+package org.eclipse.osbp.authentication.account.tables;
+
+import com.vaadin.data.Container;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.Page;
+import com.vaadin.server.Page.Styles;
+import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CustomTable;
+import com.vaadin.ui.CustomTable.Align;
+import com.vaadin.ui.CustomTable.ColumnCollapseEvent;
+import com.vaadin.ui.CustomTable.ColumnCollapseListener;
+import com.vaadin.ui.CustomTable.ColumnReorderEvent;
+import com.vaadin.ui.CustomTable.ColumnReorderListener;
+import com.vaadin.ui.CustomTable.ColumnResizeEvent;
+import com.vaadin.ui.CustomTable.ColumnResizeListener;
+import com.vaadin.ui.CustomTable.RowHeaderMode;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.Notification.Type;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;
+import com.vaadin.ui.UI;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.di.extensions.EventUtils;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.osbp.bpm.api.BPMOperation;
+import org.eclipse.osbp.bpm.api.BPMTaskEventType;
+import org.eclipse.osbp.bpm.api.BPMTaskSummary;
+import org.eclipse.osbp.bpm.api.BPMTaskUserEvent;
+import org.eclipse.osbp.bpm.api.IBlipBPMConstants;
+import org.eclipse.osbp.bpm.api.IBlipBPMFunctionProvider;
+import org.eclipse.osbp.bpm.api.IBlipBPMStartInfo;
+import org.eclipse.osbp.bpm.api.IBlipBPMWorkloadModifiableItem;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.eventbroker.EventBrokerMsg;
+import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
+import org.eclipse.osbp.runtime.common.event.IDualData;
+import org.eclipse.osbp.runtime.common.filter.IDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchServiceFactory;
+import org.eclipse.osbp.ui.api.contextfunction.IViewEmbeddedProvider;
+import org.eclipse.osbp.ui.api.customfields.IBlobService;
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
+import org.eclipse.osbp.ui.api.datamart.DatamartPrimary;
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator.FilterChangeListener;
+import org.eclipse.osbp.ui.api.e4.IE4Table;
+import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
+import org.eclipse.osbp.utils.constants.ExtendedDate;
+import org.eclipse.osbp.utils.vaadin.SelectUserWindow;
+import org.eclipse.osbp.utils.vaadin.ViewLayoutManager;
+import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewSessionHelper;
+import org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum;
+import org.eclipse.osbp.xtext.blip.BlipItem;
+import org.eclipse.osbp.xtext.datamart.common.AEntityDatamart;
+import org.eclipse.osbp.xtext.datamart.common.DatamartFilterGenerator;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedHierarchy;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedLevel;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition;
+import org.eclipse.osbp.xtext.datamart.common.sql.OperativeDtoContainer;
+import org.eclipse.osbp.xtext.table.common.BeanFilterTable;
+import org.eclipse.osbp.xtext.table.common.CellSetFilterTable;
+import org.eclipse.osbp.xtext.table.common.CellSetIndexedContainer;
+import org.eclipse.osbp.xtext.table.common.CellSetPagedFilterTable;
+import org.eclipse.osbp.xtext.table.common.CheckboxSelectionCellSetFilterTable;
+import org.eclipse.osbp.xtext.table.common.TableFilterDecorator;
+import org.eclipse.osbp.xtext.table.common.TableFilterGenerator;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.slf4j.Logger;
+import org.vaadin.hene.popupbutton.PopupButton;
+
+@SuppressWarnings("serial")
+@Component
+public class TablesServiceBinder {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("servicebinder");
+  
+  private static IUserAccessService userAccessService;
+  
+  public static IUserAccessService getUserAccessService() {
+    return userAccessService;
+  }
+  
+  @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
+  public synchronized void bindUserAccessMethod(final IUserAccessService userAccessService) {
+    TablesServiceBinder.userAccessService = userAccessService;
+    log.debug("Datamart UserAccessService bound");
+  }
+  
+  public synchronized void unbindUserAccessMethod(final IUserAccessService userAccessService) {
+    TablesServiceBinder.userAccessService = null;
+    log.debug("Datamart UserAccessService unbound");
+  }
+}
diff --git a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/UserAdministrationTable.java b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/UserAdministrationTable.java
index 24ae69e..6557d19 100644
--- a/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/UserAdministrationTable.java
+++ b/org.eclipse.osbp.authentication.ui/src-gen/org/eclipse/osbp/authentication/account/tables/UserAdministrationTable.java
@@ -53,7 +53,7 @@
 import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
-import org.eclipse.e4.ui.model.application.ui.advanced.impl.PerspectiveImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.workbench.IPresentationEngine;
 import org.eclipse.osbp.authentication.account.datamarts.UserAccountDatamart;
 import org.eclipse.osbp.bpm.api.BPMOperation;
@@ -85,11 +85,11 @@
 import org.eclipse.osbp.ui.api.e4.IE4Table;
 import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.utils.constants.ExtendedDate;
-import org.eclipse.osbp.utils.vaadin.PropertyLookup;
 import org.eclipse.osbp.utils.vaadin.SelectUserWindow;
 import org.eclipse.osbp.utils.vaadin.ViewLayoutManager;
 import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewSessionHelper;
@@ -109,6 +109,7 @@
 import org.eclipse.osbp.xtext.table.common.CellSetIndexedContainer;
 import org.eclipse.osbp.xtext.table.common.CellSetPagedFilterTable;
 import org.eclipse.osbp.xtext.table.common.CheckboxSelectionCellSetFilterTable;
+import org.eclipse.osbp.xtext.table.common.PropertyLookup;
 import org.eclipse.osbp.xtext.table.common.TableFilterDecorator;
 import org.eclipse.osbp.xtext.table.common.TableFilterGenerator;
 import org.osgi.service.event.Event;
@@ -243,42 +244,42 @@
   
   public void createComponents() {
     if (renderAllowed()){
-    // get the results
-    final DerivedCellSet cellSet = getCellSet();
-    if (cellSet == null) {
-    	promptSecurityMessage(dslMetadataService.translate(user.getLocale().toLanguageTag(), "securityMessage"), layoutManager.getDataArea());
-    	return;
-    } else {
-    	layoutManager.getDataArea().removeAllComponents();
-    }
-    getCoordinateSystem().clear();
-    tables.clear();
-    // generate a new result component
-    if (cellSet != null) {
-    	// create a multidimensional coordinate system against the cellSet
-    	for	(int axis = 0; axis < cellSet.getAxes().size(); axis++) {
-    		getCoordinateSystem().add(0);
-    	}
-    	// remove any previous component
-    	if	(dataComponent != null) {
-    		layoutManager.getDataArea().removeComponent(dataComponent);
-    		dataComponent = null;
-    	}
-    	if (cellSet.getAxes().size() < 2) {
-    		log.error("at least 2 axes from referenced datamart UserAccount are needed to render UserAdministration");
+    	// get the results
+    	final DerivedCellSet cellSet = getCellSet();
+    	if (cellSet == null) {
+    		promptSecurityMessage(dslMetadataService.translate(user.getLocale().toLanguageTag(), "securityMessage"), layoutManager.getDataArea());
+    		return;
     	} else {
-    		dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());
-    		if	(dataComponent != null) {
-    			dataComponent.setSizeFull();
-    			dataComponent.setId("dataComponent");
-    			layoutManager.getDataArea().addComponent(dataComponent);
-    			layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
-    		}
+    		layoutManager.getDataArea().removeAllComponents();
     	}
-    } 
-    else {
-    	log.error("referenced datamart UserAccount generates no results");
-    }
+    	getCoordinateSystem().clear();
+    	tables.clear();
+    	// generate a new result component
+    	if (cellSet != null) {
+    		// create a multidimensional coordinate system against the cellSet
+    		for	(int axis = 0; axis < cellSet.getAxes().size(); axis++) {
+    			getCoordinateSystem().add(0);
+    		}
+    		// remove any previous component
+    		if	(dataComponent != null) {
+    			layoutManager.getDataArea().removeComponent(dataComponent);
+    			dataComponent = null;
+    		}
+    		if (cellSet.getAxes().size() < 2) {
+    			log.error("at least 2 axes from referenced datamart UserAccount are needed to render UserAdministration");
+    		} else {
+    			dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());
+    			if	(dataComponent != null) {
+    				dataComponent.setSizeFull();
+    				dataComponent.setId("dataComponent");
+    				layoutManager.getDataArea().addComponent(dataComponent);
+    				layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
+    			}
+    		}
+    	} 
+    	else {
+    		log.error("referenced datamart UserAccount generates no results");
+    	}
     }
     
   }
@@ -373,9 +374,37 @@
     dataSourceContainer = new CellSetIndexedContainer(eclipseContext, attributeLookupMap, cellSet, coordinateSystem, false);
     table.setContainerDataSource(dataSourceContainer);
     dataSourceContainer.addExtras(table);
+    // Setting the order of the columns via the visibleColumns list
+    Map<Object, Integer> visibleColumnsMap = user.getColumnUtil().getVisibleColumns(this.getClass().getCanonicalName() + ".columns");
+    if (visibleColumnsMap != null){
+    	boolean unmodifiedVisibleColumns = true;
+    	for (Object visibleColumnKey : visibleColumnsMap.keySet()) {
+    		CellSetIndexedContainer container = dataSourceContainer;
+    		// creates a hash code by the column position members		
+    		int membersHash = 0;
+    		if (container != null) {
+    			List<DerivedMember> members = container.getColumnPosition(visibleColumnKey).getMembers();
+    			for (DerivedMember member : members) {
+    				membersHash += (member.getUniqueName() != null) ? member.getUniqueName().hashCode() : member.hashCode();
+    			}
+    		}
+    		if (membersHash != visibleColumnsMap.get(visibleColumnKey)) {
+    			unmodifiedVisibleColumns = false;
+    			break;
+    		}
+    	}
+    	if (unmodifiedVisibleColumns) {
+    		try {
+    			Object[] visibleColumns = visibleColumnsMap.values().toArray();
+    			table.setVisibleColumns(visibleColumns );
+    		} catch (IllegalArgumentException e) {
+    			// this occurs if a saved column is no longer existing due to model changes
+    		}
+    	}
+    }
     // Setting table columns width from the persisted user properties
     for (Object visibleId : table.getVisibleColumns()) {
-    	String widthStr = user.getColumnUtil().getColumnWidth(this.getClass().getCanonicalName() + "." + visibleId.toString() + "." + "width");
+    	String widthStr = user.getColumnUtil().getColumnWidth(this.getClass().getCanonicalName() + "." + visibleId.toString() + ".width");
     	if (widthStr!= null) {
     		try {
     			table.setColumnWidth(visibleId, Integer.parseInt(widthStr));
@@ -386,7 +415,7 @@
     }
     // Setting table collapsed columns from the persisted user properties
     for (Object propertyId : table.getContainerDataSource().getContainerPropertyIds()) {
-    	String collapsedColumn = user.getColumnUtil().getColumnCollapsed(this.getClass().getCanonicalName() + "." + propertyId + "." + "collapsed");
+    	String collapsedColumn = user.getColumnUtil().getColumnCollapsed(this.getClass().getCanonicalName() + "." + propertyId + ".collapsed");
     	try {
     		if (collapsedColumn != null){
     			table.setColumnCollapsed(propertyId, true);
@@ -394,14 +423,6 @@
     	} catch (IllegalArgumentException e) {
     		// this occurs if a saved column is no longer existing due to model changes
     	}
-    	Object[] visibleColumns = user.getColumnUtil().getVisibleColumns(this.getClass().getCanonicalName() + "." + "columns");
-    	if (visibleColumns != null){
-    		try {
-    			table.setVisibleColumns(visibleColumns);
-    		} catch (IllegalArgumentException e) {
-    			// this occurs if a saved column is no longer existing due to model changes
-    		}
-    	}
     }
     table.addValueChangeListener(new ValueChangeListener() {
     	@Override
@@ -422,17 +443,15 @@
         			}
     			}
     		}
-    		PerspectiveImpl perspective = (PerspectiveImpl) getContext().get(MPerspective.class);
-    		EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, "org.eclipse.osbp.authentication.account.entities.UserAccount.id", "org.eclipse.osbp.authentication.account.tables.UserAdministration");
-    		if(perspective != null){evnt.setPerspective(perspective);}
+    		MPerspective perspective = getContext().get(MPerspective.class);
+    		EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, "org.eclipse.osbp.authentication.account.entities.UserAccount.id", "org.eclipse.osbp.authentication.account.tables.UserAdministration");
     		evnt.addItem(EventDispatcherDataTag.ID, dataSourceContainer.getValueByProperty(selection, "__useraccount__id__"));
     		eventDispatcher.sendEvent(evnt);
     		for (DatamartPrimary<?> primary : datamartInstance.getPrimaryList()){
     			if (!"org.eclipse.osbp.authentication.account.entities.UserAccount".equals(primary.getEntityName())){
     				Object primaryValue = dataSourceContainer.getValueByProperty(selection, primary.getAlias().toLowerCase());
     				if (primaryValue != null) {
-    					evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, primary.getEntityName() + "." + primary.getAttributeName(), "org.eclipse.osbp.authentication.account.tables.UserAdministration");
-    		    		if(perspective != null){evnt.setPerspective(perspective);}
+    					evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, primary.getEntityName() + "." + primary.getAttributeName(), "org.eclipse.osbp.authentication.account.tables.UserAdministration");
     					evnt.addItem(EventDispatcherDataTag.ID, primaryValue);
     					eventDispatcher.sendEvent(evnt);
     				}
@@ -445,7 +464,7 @@
     		// Get the ID of the column collapse event
     		Object columnId = event.getPropertyId();
     		Object source = event.getSource();
-    		String propertyKey = this.getClass().getEnclosingClass().getCanonicalName() + "." + columnId.toString() + "." + "collapsed";
+    		String propertyKey = this.getClass().getEnclosingClass().getCanonicalName() + "." + columnId.toString() + ".collapsed";
     		if (source instanceof CustomTable){
     			if (((CustomTable)source).isColumnCollapsed(columnId)) {
     				user.addToProperties(propertyKey, "true");
@@ -458,11 +477,25 @@
     table.addColumnReorderListener(new ColumnReorderListener(){
     	public void columnReorder(ColumnReorderEvent event) {
     		Object source = event.getSource();
-    		String propertyKey = this.getClass().getEnclosingClass().getCanonicalName() + "." + "columns";
-    		if (source instanceof CustomTable){
-    			Object[] visibleColumns = ((CustomTable)source).getVisibleColumns();
+    		String propertyKey = this.getClass().getEnclosingClass().getCanonicalName() + ".columns";
+    		if (source instanceof CellSetFilterTable){
+    			Map<Object, Integer> visibleColumnsPositions = new HashMap<>();
+    			Object[] visibleColumns = ((CellSetFilterTable)source).getVisibleColumns();
+    			for (int i = 0; i < visibleColumns.length; i++) {
+    				CellSetIndexedContainer container = ((CellSetFilterTable)source).getCellSetIndexedContainer();
+    				Object visibleColumnKey = visibleColumns[i];
+    				// creates a hash code by the column position members		
+    				int membersHash = 0;
+    				if (container != null) {
+    					List<DerivedMember> members = container.getColumnPosition(visibleColumnKey).getMembers();
+    					for (DerivedMember member : members) {
+    						membersHash += (member.getUniqueName() != null) ? member.getUniqueName().hashCode() : member.hashCode();
+    					}
+    				}
+    				visibleColumnsPositions.put(visibleColumnKey, membersHash);
+    			}
     			if (visibleColumns!=null){
-    				user.addToProperties(propertyKey, visibleColumns);
+    				user.addToProperties(propertyKey, visibleColumnsPositions);
     			}
     		}
     	}
@@ -474,7 +507,7 @@
     		
     		// Get the property ID of the resized column
     		Object columnId = event.getPropertyId();
-    		user.addToProperties(this.getClass().getEnclosingClass().getCanonicalName() + "." + columnId.toString() + "." + "width", String.valueOf(width));
+    		user.addToProperties(this.getClass().getEnclosingClass().getCanonicalName() + "." + columnId.toString() + ".width", String.valueOf(width));
     	}
     });
     // Must be immediate to send the resize events immediately
@@ -509,14 +542,8 @@
   public boolean renderAllowed() {
     if (getSelectById() && getSelectedId()==null) {
     	for (DatamartFilter filter : datamartInstance.getFilters()) {
-    		List<IDualData> selectedData = filter.getSelectedData();
-    		if (!selectedData.isEmpty()) {
-    			for (IDualData iDualData : selectedData) {
-    				if (!"*".equals(iDualData.getFormattedValue()) || !"*".equals(iDualData.getSelectionValue())){
-    					return true;
-    				}
-    			}
-    			return false;
+    		if(filter.isOptional()) {
+    			return true;
     		}
     	} 
     	return false;
@@ -545,9 +572,10 @@
   @Override
   public void receiveEvent(final EventDispatcherEvent event) {
     switch(event.getCommand()) {
-    	case SELECT:
-    		PerspectiveImpl perspective = (PerspectiveImpl) eclipseContext.getActive(MPerspective.class);
-    		if(event.getPerspective() == null || (perspective != null && event.getPerspective().equals(perspective))){ 
+    	case SELECT: 
+    		MPerspective perspective = eclipseContext.get(MPerspective.class);
+    		ArrayList<String> allowedSenderParts = (ArrayList<String>) eclipseContext.getActive(MPart.class).getTransientData().get(IPerspectiveProvider.EventDispatcherConstants.ACCEPTED_SENDERS);
+    		if((event.getPerspective() == null || (perspective != null && event.getPerspective().equals(perspective))) && ((allowedSenderParts != null && allowedSenderParts.contains(event.getSender())) || allowedSenderParts == null)){
     			if(!event.getSender().equals("org.eclipse.osbp.authentication.account.tables.UserAdministration")) {
     				if(filterGenerator.selectItem(event, getSelectById())) {
     					selectedId = event.getData().get(EventDispatcherDataTag.ID);
@@ -577,6 +605,9 @@
     				dataRefresh();
     			}
     		}
+    		if (filterGenerator != null) {
+    			filterGenerator.updateFilter();
+    		}
     		break;
     	}
     
@@ -585,9 +616,8 @@
   @Override
   public void filterChanged(final DatamartFilter changedFilter) {
     if(changedFilter != null) {
-    	EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, changedFilter.getName(), "org.eclipse.osbp.authentication.account.tables.UserAdministration");
-    	PerspectiveImpl perspective = (PerspectiveImpl) getContext().get(MPerspective.class);
-    	if(perspective != null){evnt.setPerspective(perspective);}
+    	MPerspective perspective = eclipseContext.get(MPerspective.class);
+    	EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, changedFilter.getName(), "org.eclipse.osbp.authentication.account.tables.UserAdministration");
     	evnt.addData(changedFilter.getSelectedData());
     	eventDispatcher.sendEvent(evnt);
     }
diff --git a/org.eclipse.osbp.authentication.ui/src/account.datamart b/org.eclipse.osbp.authentication.ui/src/account.datamart
index 54a48e8..5702290 100644
--- a/org.eclipse.osbp.authentication.ui/src/account.datamart
+++ b/org.eclipse.osbp.authentication.ui/src/account.datamart
@@ -16,7 +16,7 @@
 package org.eclipse.osbp.authentication.account.datamarts{ 
 
 	datamart UserAccount 
-	using entity UserAccount { 
+	using entity UserAccount {
 		attributes {
 			attribute userName axis columns
 			attribute email axis columns
diff --git a/org.eclipse.osbp.authentication.ui/src/account.table b/org.eclipse.osbp.authentication.ui/src/account.table
index 66694a0..ecf0df3 100644
--- a/org.eclipse.osbp.authentication.ui/src/account.table
+++ b/org.eclipse.osbp.authentication.ui/src/account.table
@@ -15,5 +15,5 @@
  */
 package org.eclipse.osbp.authentication.account.tables {
 
-	table UserAdministration as readOnly filtering using datamart UserAccount 
+	table UserAdministration as readOnly filtering using datamart UserAccount
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/Activator.java b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/Activator.java
index 3fedcb5..3903ae3 100644
--- a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/Activator.java
+++ b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/Activator.java
@@ -29,7 +29,7 @@
 	/** The context. */
 	private static BundleContext context;
 	
-	/** The Constant LOGGER. */
+	/** The constant LOGGER. */
 	private static final Logger LOGGER = LoggerFactory.getLogger("activator");
 
 	/**
diff --git a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/AuthenticationProvider.java b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/AuthenticationProvider.java
index 0b5c461..db95a6b 100644
--- a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/AuthenticationProvider.java
+++ b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/AuthenticationProvider.java
@@ -15,7 +15,10 @@
 package org.eclipse.osbp.authentication.ui.login;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.security.Key;
+import java.text.MessageFormat;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.List;
@@ -29,7 +32,6 @@
 import org.apache.commons.lang.SerializationUtils;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.mail.Email;
-import org.apache.commons.mail.EmailException;
 import org.apache.shiro.codec.Hex;
 import org.apache.shiro.crypto.AesCipherService;
 import org.apache.shiro.crypto.CryptoException;
@@ -165,6 +167,7 @@
 		this.postAuthentication = postAuthentication;
 	}
 
+	@SuppressWarnings("restriction")
 	@PostConstruct
 	public void init(VerticalLayout parent) {
 		LOGGER.debug("AuthenticationProvider init");
@@ -185,7 +188,7 @@
 		String appName = brandingName != null ? brandingName : "App";
 		Dictionary<String, String> headers = bundle.getHeaders();
 		String brandingVendor = headers.get("Bundle-Vendor");
-		String vendor = brandingVendor != null ? brandingVendor : "Loetz GmbH & Co. KG Heidelberg Germany";
+		String vendor = brandingVendor != null ? brandingVendor : "Loetz GmbH&Co.KG Heidelberg Germany";
 		/* --------------------------- */
 		
 		// set polling is necessary due to possible progress bars
@@ -330,8 +333,8 @@
 			register = new Button();
 			register.setSizeFull();
 			registerArea.addComponent(register);
-			register.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "register"));
-			register.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "register_tip"));
+			register.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "register_new_user"));
+			register.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "register_new_user_tip"));
 			register.addClickListener(new ClickListener() {
 				@Override
 				public void buttonClick(ClickEvent event) {
@@ -344,7 +347,8 @@
 		copyrightField.setSizeFull();
 		copyrightArea.addComponent(copyrightField);
 		copyrightArea.setComponentAlignment(copyrightField, Alignment.MIDDLE_CENTER);
-		String cprText = dslMetadataService.translate(locale.toLanguageTag(), "copyright") + " " + vendor;
+		String actualYear = String.valueOf(LocalDate.now().getYear());
+		String cprText = dslMetadataService.translate(locale.toLanguageTag(), "copyright") + actualYear + " " + vendor;
 		String trdmText = dslMetadataService.translate(locale.toLanguageTag(), "trademark");
 		copyrightField.setValue(cprText + "<br>" + trdmText);
 		copyrightField.setContentMode(ContentMode.HTML);
@@ -385,19 +389,24 @@
 		if ( "email_password_reset_subject".equals(emailSubject) ){
 			emailSubject = "Your new password";
 		}
+		String charset=Charset.defaultCharset().name();		
+		email.setCharset(charset);  
+		
 		email.setSubject(emailSubject);
 		try {
-			email.setFrom(ProductConfiguration.getAdminEmail());
+			email.setFrom(ProductConfiguration.getAdminEmail(), ProductConfiguration.getAdminEmailUsername() );
 			String emailBody = dslMetadataService.translate(locale.toLanguageTag(), "email_password_reset_body");
 			if ( "email_password_reset_body".equals(emailBody) ){
-				emailBody="Please find your new password here.\nYou have to change it with your next login!\n\nYour new password is:";
+				emailBody="Please find your new password here.\nYou have to change it with your next login!\n\nYour new password is: {0}.";
 			}
-			email.setMsg(emailBody + " '" + resetPassword + "'.");
+			
+			String fmt=MessageFormat.format(emailBody,resetPassword).replace("\\n", "\n");
+			email.setMsg(fmt);
 			email.addTo(user.getEmail());
 			email.send();
-		} catch (EmailException e) {
+		} catch (Exception e) {
 			LOGGER.error("EmailException: " + e.getLocalizedMessage());
-			LOGGER.info("failed to send password {} to user {}", resetPassword, user.getUserName() );
+			LOGGER.error("failed to send password {} to user {} to address {}", resetPassword, user.getUserName(), user.getEmail() );
 		}
 	}
 
diff --git a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/NewPasswordDialog.java b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/NewPasswordDialog.java
index 6199a81..7e1122e 100644
--- a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/NewPasswordDialog.java
+++ b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/NewPasswordDialog.java
@@ -14,6 +14,8 @@
  */
 package org.eclipse.osbp.authentication.ui.login;
 
+import java.time.LocalDate;
+
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.osbp.authentication.account.dtos.UserAccountDto;
 import org.eclipse.osbp.authentication.providerimpl.UserProtocol;
@@ -122,7 +124,8 @@
 		copyrightField.setSizeFull();
 		copyrightArea.addComponent(copyrightField);
 		copyrightArea.setComponentAlignment(copyrightField, Alignment.MIDDLE_CENTER);
-		copyrightField.setValue(dslMetadataService.translate(getLocale().toLanguageTag(), "copyright"));
+		String actualYear = String.valueOf(LocalDate.now().getYear());
+		copyrightField.setValue(dslMetadataService.translate(getLocale().toLanguageTag(), "copyright") + actualYear);
 
 		// Text field OLDPASSWORD
 		PasswordField oldPasswordField = new PasswordField();
diff --git a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/RegistrationDialog.java b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/RegistrationDialog.java
index 6702a9a..9f32347 100644
--- a/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/RegistrationDialog.java
+++ b/org.eclipse.osbp.authentication.ui/src/org/eclipse/osbp/authentication/ui/login/RegistrationDialog.java
@@ -14,6 +14,8 @@
  */
 package org.eclipse.osbp.authentication.ui.login;
 
+import java.time.LocalDate;
+
 import org.apache.commons.validator.routines.EmailValidator;
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.osbp.authentication.account.dtos.UserAccountDto;
@@ -137,7 +139,8 @@
 		copyrightField.setSizeFull();
 		copyrightArea.addComponent(copyrightField);
 		copyrightArea.setComponentAlignment(copyrightField, Alignment.MIDDLE_CENTER);
-		copyrightField.setValue(dslMetadataService.translate(getLocale().toLanguageTag(), "copyright"));
+		String actualYear = String.valueOf(LocalDate.now().getYear());
+		copyrightField.setValue(dslMetadataService.translate(getLocale().toLanguageTag(), "copyright") + actualYear);
 
 		// Text field USERNAME
 		TextField userNameField = new TextField();
@@ -173,7 +176,7 @@
 		Button registerButton = new Button();
 		registerButton.setSizeFull();
 		registerArea.addComponent(registerButton);
-		registerButton.setCaption(dslMetadataService.translate(getLocale().toLanguageTag(), "register"));
+		registerButton.setCaption(dslMetadataService.translate(getLocale().toLanguageTag(), "register_new_user"));
 		registerButton.setDescription(dslMetadataService.translate(getLocale().toLanguageTag(), "register_tip"));
 		registerButton.addClickListener(new Button.ClickListener() {