catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/META-INF/MANIFEST.MF
index 994f92a..6bdc7ef 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/META-INF/MANIFEST.MF
@@ -103,11 +103,13 @@
  org.eclipse.xtext.resource,
  org.vaadin.hene.popupbutton;version="2.5.0"
 Export-Package: org.eclipse.osbp.vaaclipse.addons.softwarefactory;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.addons.softwarefactory.administration;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.handler;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.keybinding;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.maintoolbar;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.perspective;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.service;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.addons.softwarefactory.systemsettings;version="0.9.9",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.userfilter;version="0.9.0",
  org.eclipse.osbp.vaaclipse.addons.softwarefactory.welcome;version="0.9.0"
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
index 4fff1b0..386f7f5 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
@@ -25,12 +25,24 @@
 
 acceptsave_title = acceptsave_title
 
+activation_time = activation_time
+
+actual_owner = actual_owner
+
+add_entry = add_entry
+
 all = all
 
 all_tip = all_tip
 
 alt = alt
 
+clean = clean
+
+created_by = created by
+
+created_on = created on
+
 ctrl = ctrl
 
 data = data
@@ -43,6 +55,12 @@
 
 deleted = deleted
 
+description = description
+
+dirty = dirty
+
+download = download
+
 entity = entity
 
 entity_tip = Choose here  which entity data is to be locked or unlocked
@@ -51,6 +69,8 @@
 
 except_for = except_for
 
+expiration_time = expiration_time
+
 ge = greater equal
 
 groups = groups
@@ -59,14 +79,28 @@
 
 here_are_some_resources_that_will_help_you_to_get_started = here_are_some_resources_that_will_help_you_to_get_started
 
+invalid = invalid
+
 invers = inverse
 
 invers_tip = If you check this box then the selected data is locked. Unselected data will be unlocked.
 
+javax_validation_constraints_decimal_max_message = decimal_max_message
+
+javax_validation_constraints_decimal_min_message = decimal_min_message
+
+javax_validation_constraints_future_message = must_be_in_future
+
+javax_validation_constraints_max_message = max_message
+
+javax_validation_constraints_min_message = min_message
+
 javax_validation_constraints_not_null_message = must not be null
 
 javax_validation_constraints_past_message = must_be_in_past
 
+javax_validation_constraints_pattern_message = pattern_message
+
 javax_validation_constraints_size_message = size is invalid
 
 keybinding_category = keybindingCategory
@@ -91,6 +125,8 @@
 
 lt = less
 
+modify_entry = modify_entry
+
 ne = not equal
 
 no = no
@@ -125,6 +161,14 @@
 
 print_service_tooltip = Print Service
 
+priority = priority
+
+process_id = process_id
+
+process_instance_id = process_instance_id
+
+process_session_id = process_session_id
+
 query_delete = query_delete
 
 query_delete_title = query_delete_title
@@ -149,18 +193,30 @@
 
 saved = saved
 
+savedandnew = savedandnew
+
+savedas = savedas
+
 search = search
 
 shift = shift
 
 start_process_text = start_process_text
 
+status = status
+
 strategy_tooltip = strategy_tooltip
 
+subject = subject
+
+task_id = task_id
+
 themes_tooltip = themes
 
 unique_attribute_validator_error = unique_attribute_validator_error
 
+upload = upload
+
 user_label_tooltip = user_label_tooltip
 
 user_menu_tooltip = user_menu_tooltip
@@ -171,6 +227,8 @@
 
 users = users
 
+valid = valid
+
 welcome = welcome
 
 yes = yes
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
index 8d48d62..27687b5 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
@@ -25,12 +25,24 @@
 
 acceptsave_title = Achtung
 
+activation_time = Aktivierungszeit
+
+actual_owner = Aktueller Besitzer
+
+add_entry = Eintrag zuf\u00FCgen
+
 all = alle
 
 all_tip = Alle Eintr\u00E4ge der Entit\u00E4t zuf\u00FCgen
 
 alt = Alt
 
+clean = Daten unver\u00E4ndert
+
+created_by = Erzeugt von
+
+created_on = Erzeugt am
+
 ctrl = Strg
 
 data = Daten der Entit\u00E4t
@@ -43,13 +55,21 @@
 
 deleted = gel\u00F6scht
 
+description = Beschreibung
+
+dirty = Daten ver\u00E4ndert
+
+download = herunterladen
+
 entity = Entit\u00E4t ausw\u00E4hlen
 
 entity_tip = W\u00E4hlen Sie hier welche Entit\u00E4tsdaten gesperrt oder freigegeben werden sollen
 
 eq = gleich
 
-except_for = 
+except_for = Au\u00DFer
+
+expiration_time = Ablaufzeit
 
 ge = gr\u00F6\u00DFer gleich
 
@@ -59,15 +79,29 @@
 
 here_are_some_resources_that_will_help_you_to_get_started = Hier finden Sie einige Quellen, um Ihnen den Anfang zu erleichtern
 
+invalid = Daten sind ung\u00FCltig
+
 invers = umgekehrt
 
 invers_tip = Wenn Sie diese Option aktivieren , dann werden die ausgew\u00E4hlten Daten gesperrt. Nicht ausgew\u00E4hlte Daten werden entsperrt.
 
+javax_validation_constraints_decimal_max_message = Die Zahl muss kleiner als {value} sein
+
+javax_validation_constraints_decimal_min_message = Die Zahl muss gr\u00F6\u00DFer als {value} sein
+
+javax_validation_constraints_future_message = Das Datum muss in der Zukunft liegen
+
+javax_validation_constraints_max_message = Die Zahl muss kleiner als {value] sein
+
+javax_validation_constraints_min_message = Die Zahl muss gr\u00F6\u00DFer als {value} sein
+
 javax_validation_constraints_not_null_message = Dieses Attribut darf nicht leer sein
 
 javax_validation_constraints_past_message = Das Datum muss in der Vergangenheit liegen
 
-javax_validation_constraints_size_message = L\u00E4nge der Eingabe stimmt nicht mit Vorgabe \u00FCberein.
+javax_validation_constraints_pattern_message = Die Eingabe entspricht nicht "{regexp}"
+
+javax_validation_constraints_size_message = Die L\u00E4nge der Eingabe muss zwischen {min} und {max} liegen
 
 keybinding_category = Kategorie
 
@@ -91,6 +125,8 @@
 
 lt = weniger
 
+modify_entry = Eintrag \u00E4ndern
+
 ne = ungleich
 
 no = nein
@@ -125,29 +161,41 @@
 
 print_service_tooltip = Drucker
 
+priority = Priorit\u00E4t
+
+process_id = Prozess ID
+
+process_instance_id = 
+
+process_session_id = Prozesssitzung ID
+
 query_delete = Wollen Sie den Datensatz l\u00F6schen?
 
 query_delete_title = L\u00F6schen
 
-reset = R\u00FCcksetzen
+reset = Zur\u00FCcksetzen
 
-reset_jpa_cache = Datenbank zur\u00FCcksetzen
+reset_jpa_cache = Datenbank
 
 reset_jpa_cache_tip = Wenn Daten mit externen Werkzeugen ge\u00E4ndert wurden und die Datenbank zwischenspeichert, muss zur\u00FCckgesetzt werden, damit die externe \u00C4nderung in der Anwendung sichtbar wird.
 
-reset_mondrian_cache = BI zur\u00FCcksetzen
+reset_mondrian_cache = BI Daten
 
 reset_mondrian_cache_tip = Wenn Daten mit externen Werkzeugen ge\u00E4ndert wurden und die BI zwischenspeichert, muss zur\u00FCckgesetzt werden, damit die externe \u00C4nderung in der Anwendung sichtbar wird.
 
-reset_user_properties = Oberfl\u00E4che zur\u00FCcksetzen
+reset_user_properties = Oberfl\u00E4che
 
 reset_user_properties_tip = Wenn Perspektiventeiler, Spaltenanordnungen oder andere Einstellungen ge\u00E4ndert wurden, werden diese gespeichert. Hier k\u00F6nnen diese Einstellungen auf die Ursprungseinstellung zur\u00FCckgesetzt werden.
 
-save = speichern
+save = Speichern
 
 save_tip = Wenn Sie diese Taste dr\u00FCcken, wird die aktuelle Auswahl gespeichert. Nur die ausgew\u00E4hlten Eintr\u00E4ge sind dann f\u00FCr den Benutzer sichtbar. Wenn die Option "umgekehrt" gew\u00E4hlt ist, sind die gew\u00E4hlten Eintr\u00E4ge unsichtbar.
 
-saved = gespeichert
+saved = Gespeichert
+
+savedandnew = Speichern und Neu
+
+savedas = Gespeichert als
 
 search = Suchen
 
@@ -155,12 +203,20 @@
 
 start_process_text = Prozess starten?
 
+status = Status
+
 strategy_tooltip = Anordnungsstrategie
 
+subject = Gegenstand
+
+task_id = Aufgabe ID
+
 themes_tooltip = Darstellungen
 
 unique_attribute_validator_error = Dieses Attribut muss eindeutig sein und ist bereits in der Datenbank vorhanden
 
+upload = hochladen
+
 user_label_tooltip = Benutzername
 
 user_menu_tooltip = Aufklappmen\u00FC
@@ -171,6 +227,8 @@
 
 users = Benutzer
 
+valid = Daten sind g\u00FCltig
+
 welcome = Willkommen
 
 yes = ja
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de_AT.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de_AT.properties
deleted file mode 100644
index 45bcb5d..0000000
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de_AT.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-#Generated by Eclipse Messages Editor (Eclipse Babel)
-#de_AT
-
-acceptsave_title = Achtung
-
-alt = 
-
-ctlr = 
-
-datainterchange_started = 
-
-del = 
-
-deleted = 
-
-eq = 
-
-except_for = Au\u00DFer
-
-ge = 
-
-groups = 
-
-gt = 
-
-here_are_some_resources_that_will_help_you_to_get_started = 
-
-javax_validation_constraints_not_null_message = 
-
-javax_validation_constraints_size_message = 
-
-keybinding_category = 
-
-keybinding_context_description = 
-
-keybinding_context_name = Kontextname
-
-keybinding_description = 
-
-keybinding_key_sequence = 
-
-keybinding_name = 
-
-le = 
-
-like = 
-
-lt = 
-
-ne = 
-
-no = 
-
-options_query_delete = 
-
-print_service_tooltip = 
-
-query_delete = 
-
-query_delete_title = 
-
-reset = 
-
-reset_jpa_cache = 
-
-reset_jpa_cache_tip = 
-
-reset_mondrian_cache = 
-
-reset_mondrian_cache_tip = 
-
-reset_user_properties = 
-
-reset_user_properties_tip = 
-
-saved = 
-
-search = 
-
-shift = 
-
-start_process_text = 
-
-unique_attribute_validator_error = 
-
-users = 
-
-welcome = 
-
-yes = 
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
index 24d28f2..ae52f55 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
@@ -25,12 +25,24 @@
 
 acceptsave_title = Attention
 
+activation_time = Activation time
+
+actual_owner = Actual owner
+
+add_entry = Add entry
+
 all = all
 
 all_tip = add all entries
 
 alt = Alt
 
+clean = Data unmodified
+
+created_by = Created by
+
+created_on = Created on
+
 ctrl = Ctrl
 
 data = data
@@ -43,6 +55,12 @@
 
 deleted = deleted
 
+description = Description
+
+dirty = Data changed
+
+download = download
+
 entity = select entity
 
 entity_tip = Choose here  which entity data is to be locked or unlocked
@@ -51,6 +69,8 @@
 
 except_for = Except for
 
+expiration_time = Expiration time
+
 ge = greater equal
 
 groups = Roles
@@ -59,15 +79,29 @@
 
 here_are_some_resources_that_will_help_you_to_get_started = Here are some resources that will help you to get started
 
+invalid = Data invalid
+
 invers = inverse
 
 invers_tip = If you check this box then the selected data is locked. Unselected data will be unlocked.
 
+javax_validation_constraints_decimal_max_message = The number must be less than {value}
+
+javax_validation_constraints_decimal_min_message = The number must be greater than {value}
+
+javax_validation_constraints_future_message = The date must be in future
+
+javax_validation_constraints_max_message = The number must be less than {value}
+
+javax_validation_constraints_min_message = The number must be greater than {value}
+
 javax_validation_constraints_not_null_message = This attribute must not be empty
 
 javax_validation_constraints_past_message = The date must be in past
 
-javax_validation_constraints_size_message = Length doesn't match the constraint given.
+javax_validation_constraints_pattern_message = Input must match "{regexp}"
+
+javax_validation_constraints_size_message = Length of input must be between {min} and {max}
 
 keybinding_category = Category
 
@@ -91,6 +125,8 @@
 
 lt = less
 
+modify_entry = Modify entry
+
 ne = not equal
 
 no = no
@@ -125,29 +161,41 @@
 
 print_service_tooltip = Print Service
 
+priority = Priority
+
+process_id = Process ID
+
+process_instance_id = 
+
+process_session_id = Process session ID
+
 query_delete = Do you want to delete this entry?
 
 query_delete_title = Delete
 
 reset = Reset
 
-reset_jpa_cache = Reset database
+reset_jpa_cache = Database
 
 reset_jpa_cache_tip = If data has been changed with external tools and the database is cached, it must be reset for the external change to become visible in the application.
 
-reset_mondrian_cache = Reset BI data
+reset_mondrian_cache = BI data
 
 reset_mondrian_cache_tip = If data was changed with external tools and the BI caches, it must be reset for the external change to be visible in the application.
 
-reset_user_properties = Reset surface settings
+reset_user_properties = Surface
 
 reset_user_properties_tip = If perspective separators, column arrangements, or other settings have been changed, they will be saved. Here, these settings can be reset to factory setting.
 
-save = save
+save = Save
 
 save_tip = If you press this button , the current selection is stored . Only the selected items are then visible to the user . If the option is "inverse" is selected, the selected entries are invisible .
 
-saved = saved
+saved = Saved
+
+savedandnew = Saved and new
+
+savedas = Saved as
 
 search = Search
 
@@ -155,12 +203,20 @@
 
 start_process_text = Start process?
 
+status = Status
+
 strategy_tooltip = Layout strategy
 
+subject = Subject
+
+task_id = Task ID
+
 themes_tooltip = Themes
 
 unique_attribute_validator_error = This attribute must be unique and is already present in the database
 
+upload = upload
+
 user_label_tooltip = User name
 
 user_menu_tooltip = Drop-down menu
@@ -171,6 +227,8 @@
 
 users = Users
 
+valid = Data valid
+
 welcome = Welcome
 
 yes = yes
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en_US.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en_US.properties
deleted file mode 100644
index 2b19926..0000000
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en_US.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-#Generated by Eclipse Messages Editor (Eclipse Babel)
-#en_US
-
-acceptsave_title = Attention
-
-alt = 
-
-ctlr = 
-
-datainterchange_started = 
-
-del = 
-
-deleted = 
-
-eq = 
-
-except_for = 
-
-ge = 
-
-groups = 
-
-gt = 
-
-here_are_some_resources_that_will_help_you_to_get_started = 
-
-javax_validation_constraints_not_null_message = 
-
-javax_validation_constraints_size_message = 
-
-keybinding_category = 
-
-keybinding_context_description = 
-
-keybinding_context_name = Context name
-
-keybinding_description = 
-
-keybinding_key_sequence = 
-
-keybinding_name = 
-
-le = 
-
-like = 
-
-lt = 
-
-ne = 
-
-no = 
-
-options_query_delete = 
-
-print_service_tooltip = 
-
-query_delete = 
-
-query_delete_title = 
-
-reset = 
-
-reset_jpa_cache = 
-
-reset_jpa_cache_tip = 
-
-reset_mondrian_cache = 
-
-reset_mondrian_cache_tip = 
-
-reset_user_properties = 
-
-reset_user_properties_tip = 
-
-saved = 
-
-search = 
-
-shift = 
-
-start_process_text = 
-
-unique_attribute_validator_error = 
-
-users = 
-
-welcome = 
-
-yes = 
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
index 3a4993a..cb2a02a 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
@@ -19,12 +19,24 @@
 
 acceptreload_title = acceptreload_title
 
+activation_time = Temps d'activation
+
+actual_owner = Propri\u00E9taire actuel
+
+add_entry = Ajouter une entr\u00E9e
+
 all = tout
 
 all_tip = Ajouter tous les entr\u00E9es de l'entit\u00E9
 
 alt = Alt
 
+clean = Donn\u00E9es inchang\u00E9es
+
+created_by = Cr\u00E9e par
+
+created_on = Cr\u00E9\u00E9 sur\n
+
 ctrl = Ctrl
 
 data = Les donn\u00E9es de l'entit\u00E9
@@ -37,6 +49,12 @@
 
 deleted = supprim\u00E9
 
+description = Description
+
+dirty = Donn\u00E9es modifi\u00E9es
+
+download = t\u00E9l\u00E9charger vers le bas
+
 entity = S\u00E9lectionnez l'entit\u00E9
 
 entity_tip = Choisissez ici quelles donn\u00E9es entit\u00E9 doit \u00EAtre verrouill\u00E9 ou d\u00E9verrouill\u00E9
@@ -45,6 +63,8 @@
 
 except_for = Sauf de
 
+expiration_time = Date d'expiration
+
 ge = plus ou \u00E9gal
 
 groups = R\u00F4les
@@ -53,15 +73,29 @@
 
 here_are_some_resources_that_will_help_you_to_get_started = Voici quelques ressources pour vous aider \u00E0 d\u00E9marrer
 
+invalid = Les donn\u00E9es sont invalides
+
 invers = invers\u00E9e
 
 invers_tip = Si vous cochez cette case , puis les donn\u00E9es s\u00E9lectionn\u00E9es est verrouill\u00E9. Des donn\u00E9es non s\u00E9lectionn\u00E9s seront d\u00E9verrouill\u00E9s.
 
+javax_validation_constraints_decimal_max_message = Le nombre doit \u00EAtre inf\u00E9rieur \u00E0 {value}
+
+javax_validation_constraints_decimal_min_message = Le nombre doit \u00EAtre sup\u00E9rieur \u00E0 {value}
+
+javax_validation_constraints_future_message = La date doit \u00EAtre dans le futur
+
+javax_validation_constraints_max_message = Le nombre doit \u00EAtre inf\u00E9rieur \u00E0 {value}
+
+javax_validation_constraints_min_message = Le nombre doit \u00EAtre sup\u00E9rieur \u00E0 {value}
+
 javax_validation_constraints_not_null_message = Cet attribut ne peut pas \u00EAtre vide
 
 javax_validation_constraints_past_message = La date doit \u00EAtre dans le pass\u00E9
 
-javax_validation_constraints_size_message = La longueur de l'entr\u00E9e ne correspond pas \u00E0 la sp\u00E9cification.
+javax_validation_constraints_pattern_message = L'entr\u00E9e ne correspond pas \u00E0 "{regexp}"
+
+javax_validation_constraints_size_message = La longueur de l'entr\u00E9e doit \u00EAtre comprise entre {min} et {max}
 
 keybinding_category = Cat\u00E9gorie
 
@@ -85,6 +119,8 @@
 
 lt = plus petit
 
+modify_entry = Modifier l'entr\u00E9e
+
 ne = in\u00E9gal
 
 no = non
@@ -119,29 +155,41 @@
 
 print_service_tooltip = 
 
+priority = Priorit\u00E9
+
+process_id = Processus ID
+
+process_instance_id = Instance de processus ID
+
+process_session_id = Session de processus ID
+
 query_delete = Voulez-vous supprimer l'enregistrement?
 
 query_delete_title = Supprimer
 
 reset = R\u00E9initialiser
 
-reset_jpa_cache = R\u00E9initialiser base de donn\u00E9es
+reset_jpa_cache = Base de donn\u00E9es
 
 reset_jpa_cache_tip = Si les donn\u00E9es ont \u00E9t\u00E9 modifi\u00E9es avec des outils externes et que la base de donn\u00E9es est mise en cache, elle doit \u00EAtre r\u00E9initialis\u00E9e pour que la modification externe devienne visible dans l'application.
 
-reset_mondrian_cache = R\u00E9initialiser donn\u00E9es de BI
+reset_mondrian_cache = Donn\u00E9es de BI
 
 reset_mondrian_cache_tip = Si les donn\u00E9es ont \u00E9t\u00E9 modifi\u00E9es avec des outils externes et les caches BI, elles doivent \u00EAtre r\u00E9initialis\u00E9es pour que la modification externe soit visible dans l'application.
 
-reset_user_properties = R\u00E9initialiser interface utilisateur
+reset_user_properties = Interface
 
 reset_user_properties_tip = Si des s\u00E9parateurs de perspective, des arrangements de colonnes ou d'autres param\u00E8tres ont \u00E9t\u00E9 modifi\u00E9s, ils seront sauvegard\u00E9s. Ici, ces param\u00E8tres peuvent \u00EAtre r\u00E9initialis\u00E9s au r\u00E9glage d'origine.
 
-save = sauvegarder
+save = Enregistrer
 
 save_tip = Si vous appuyez sur ce bouton , la s\u00E9lection en cours est stock\u00E9 . Seuls les \u00E9l\u00E9ments s\u00E9lectionn\u00E9s sont alors visibles \u00E0 l'utilisateur. Si l'option est "invers\u00E9e" est s\u00E9lectionn\u00E9, les entr\u00E9es s\u00E9lectionn\u00E9es sont invisibles .
 
-saved = sauv\u00E9
+saved = Enregistr\u00E9
+
+savedandnew = Enregistrer et nouveau 
+
+savedas = Enregistr\u00E9 comme
 
 search = rechercher
 
@@ -149,12 +197,20 @@
 
 start_process_text = D\u00E9marrer le processus?
 
+status = \u00C9tat
+
 strategy_tooltip = Strat\u00E9gy d'arrangement
 
+subject = Sujet
+
+task_id = T\u00E2che ID
+
 themes_tooltip = Pr\u00E9sentations
 
 unique_attribute_validator_error = Cet attribut doit \u00EAtre unique et existe d\u00E9j\u00E0 dans la base de donn\u00E9es
 
+upload = t\u00E9l\u00E9charger en haut
+
 user_label_tooltip = Nom d'utiliseur
 
 user_menu_tooltip = Menu d\u00E9roulant
@@ -165,6 +221,8 @@
 
 users = Utilisateur
 
+valid = Les donn\u00E9es sont valides
+
 welcome = Bienvenue
 
 yes = oui
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/administration/ReportPrinterDialogProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/administration/ReportPrinterDialogProvider.java
index 4fcffe5..b70fe97 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/administration/ReportPrinterDialogProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/administration/ReportPrinterDialogProvider.java
@@ -16,31 +16,18 @@
 package org.eclipse.osbp.vaaclipse.addons.softwarefactory.administration;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 
 import javax.inject.Inject;
 
-import org.eclipse.core.commands.CommandManager;
-import org.eclipse.core.commands.common.NotDefinedException;
-import org.eclipse.e4.ui.model.application.commands.MBindingContext;
-import org.eclipse.e4.ui.model.application.commands.MBindingTable;
-import org.eclipse.e4.ui.model.application.commands.MCommand;
-import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.osbp.dsl.metadata.service.DSLBuilderParticipant.DSLMetadataService;
 import org.eclipse.osbp.ecview.extension.strategy.util.PdfPrintService;
 import org.eclipse.osbp.preferences.ProductConfiguration;
-import org.eclipse.osbp.preferences.ProductConfigurationPrefs;
-import org.eclipse.osbp.runtime.common.i18n.II18nService;
 import org.eclipse.osbp.ui.api.contextfunction.IVaadinDialogProvider;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.user.IUser;
-import org.eclipse.osbp.utils.vaadin.MDXDialog;
-import org.eclipse.osbp.vaaclipse.addons.keybinding.IKeyBindingService;
 import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
-import org.eclipse.osbp.vaadin.emf.data.fields.EObjectComboBox;
 import org.eclipse.osbp.xtext.reportdsl.Report;
 import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
 import org.osgi.service.prefs.BackingStoreException;
@@ -48,16 +35,13 @@
 import org.slf4j.LoggerFactory;
 
 import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.util.BeanItemContainer;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.ui.Button;
 import com.vaadin.ui.ComboBox;
 import com.vaadin.ui.Component;
+import com.vaadin.ui.DateField;
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
 
 /**
@@ -170,6 +154,13 @@
 			fillTableItems();
 		});
 		horizontalLayout.addComponent(deleteButton);
+		
+		DateField dateField = new DateField();
+		dateField.setCaption("DateTest");
+		dateField.setVisible(false);
+		horizontalLayout.addComponent(dateField);
+		
+		
 		innerLayout.addComponent(horizontalLayout);
 		
 	}
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/BrowserView.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/BrowserView.java
new file mode 100644
index 0000000..a939fff
--- /dev/null
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/BrowserView.java
@@ -0,0 +1,120 @@
+package org.eclipse.osbp.vaaclipse.addons.softwarefactory.perspective;
+
+import java.util.Locale;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+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.emf.ecore.EObject;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YBrowser;
+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.IEventDispatcher;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.BrowserComponent;
+import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.FilteringComponentEmbeddable;
+import org.eclipse.osbp.ui.api.e4.IE4Dialog;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+import com.vaadin.server.ClientConnector;
+import com.vaadin.server.ClientConnector.AttachEvent;
+import com.vaadin.server.ClientConnector.DetachEvent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+public class BrowserView<T>
+		implements IUser.UserLocaleListener, ClientConnector.DetachListener, ClientConnector.AttachListener, IE4Dialog {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	@Inject
+	MPart part;
+
+	@Inject
+	private IUser user;
+
+	@Inject
+	private IEventDispatcher eventDispatcher;
+
+	@Inject
+	private IDSLMetadataService dslMetadataService;
+	
+	private VerticalLayout parent;
+	private BrowserComponent browserComponent;
+	private transient IEclipseContext context;
+
+	@Inject
+	public BrowserView(VerticalLayout parent, IEclipseContext context, MApplication app) {
+		this.parent = parent;
+		this.context = context;
+	}
+
+	@SuppressWarnings("unchecked")
+	@PostConstruct
+	public void createView() {
+		context.set(IE4Dialog.class, this);
+		parent.setPrimaryStyleName("osbp");
+		parent.setId("parent");
+		parent.setSizeFull();
+		parent.addAttachListener(this);
+		parent.addDetachListener(this);
+
+//		EObject eObject = (EObject) part.getTransientData().get(IPerspectiveProvider.FilterConstants.FILTER_DTO_CLASS);
+//		Class<T> dto = (Class<T>) dslMetadataService.getClass(eObject, "dto");
+//		int depth = (int) part.getTransientData().get(IPerspectiveProvider.FilterConstants.FILTER_DEPTH);
+		String url = (String) part.getTransientData().get(IPerspectiveProvider.BrowserConstants.URL);
+		browserComponent = new BrowserComponent(url); 
+		parent.addComponent(browserComponent);
+		browserComponent.setSizeFull();
+
+		browserComponent.init(user.getLocale());
+//		browserComponent.setAcceptCallback(p -> {
+//			MPerspective perspective = context.get(MPerspective.class);
+//			EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, dto.getName(), getClass().getSimpleName());
+//			evnt.addItem(EventDispatcherDataTag.DTO, p);
+//			eventDispatcher.sendEvent(evnt);
+//		});
+	}
+
+	@Override
+	public void attach(AttachEvent event) {
+		user.addUserLocaleListener(this);
+	}
+
+	@Override
+	public void detach(DetachEvent event) {
+		user.removeUserLocaleListener(this);
+	}
+
+	@Focus
+	public void setFocus() {
+		Component parent = this.parent;
+		while (!(parent instanceof Panel) && parent != null) {
+			parent = parent.getParent();
+		}
+		if (parent != null) {
+			((Panel) parent).focus();
+		}
+	}
+
+	@Override
+	public void localeChanged(Locale locale) {
+		browserComponent.setLocale(locale);
+		browserComponent.getViewContext().setLocale(locale);
+	}
+
+	@Override
+	public String getStateLabelUUID() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/KanbanView.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/KanbanView.java
index 223deb2..79ae946 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/KanbanView.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/KanbanView.java
@@ -140,4 +140,10 @@
 		kanbanBoard.setLocale(locale);
 		kanbanBoard.getViewContext().setLocale(locale);
 	}
+
+	@Override
+	public String getStateLabelUUID() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/PerspectiveProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/PerspectiveProvider.java
index f8dd1da..ecc097c 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/PerspectiveProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/PerspectiveProvider.java
@@ -15,6 +15,7 @@
  */
 package org.eclipse.osbp.vaaclipse.addons.softwarefactory.perspective;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -67,6 +68,7 @@
 import org.eclipse.osbp.bpm.api.IBlipBPMWorkloadModifiableItem;
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
 import org.eclipse.osbp.ecview.core.extension.model.extension.ExtensionModelPackage;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiModel;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
 import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
 import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
@@ -93,19 +95,23 @@
 import org.eclipse.osbp.xtext.chart.ChartPackage;
 import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
 import org.eclipse.osbp.xtext.dialogdsl.Dialog;
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
 import org.eclipse.osbp.xtext.dialogdsl.DialogPackage;
+import org.eclipse.osbp.xtext.dialogdsl.mapper.AutowireUiFactory;
 import org.eclipse.osbp.xtext.organizationdsl.Organization;
 import org.eclipse.osbp.xtext.organizationdsl.OrganizationDSLPackage;
 import org.eclipse.osbp.xtext.organizationdsl.OrganizationPackage;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBrowser;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
 import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
+import org.eclipse.osbp.xtext.perspective.PerspectiveEvent;
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
 import org.eclipse.osbp.xtext.perspective.PerspectiveKanban;
 import org.eclipse.osbp.xtext.perspective.PerspectiveOrganization;
@@ -136,10 +142,12 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * The Class PerspectiveProvider. Available as injectable service to create and maintain perspectives coming from the perspective DSL model.
+ * The Class PerspectiveProvider. Available as injectable service to create and
+ * maintain perspectives coming from the perspective DSL model.
  */
 @SuppressWarnings("restriction")
-public class PerspectiveProvider implements IPerspectiveProvider, IBPMTaskEventNotification, IEventDispatcher.Receiver, BPMTaskClientPerspectiveListener {
+public class PerspectiveProvider implements IPerspectiveProvider, IBPMTaskEventNotification, IEventDispatcher.Receiver,
+		BPMTaskClientPerspectiveListener {
 
 	/** The log. */
 	private static Logger log = LoggerFactory.getLogger(PerspectiveProvider.class);
@@ -147,7 +155,7 @@
 	/** The event broker. */
 	@Inject
 	private IEventBroker eventBroker;
-
+	
 	/** The app model. */
 	@Inject
 	private MApplication appModel;
@@ -243,22 +251,25 @@
 		((EObject) stack).eAdapters().add(new AdapterImpl() {
 			@Override
 			public void notifyChanged(Notification notification) {
-				if (notification.getEventType() == Notification.SET
-						&& notification.getFeatureID(MElementContainer.class) == AdvancedPackageImpl.PERSPECTIVE_STACK__SELECTED_ELEMENT) {
+				if (notification.getEventType() == Notification.SET && notification.getFeatureID(
+						MElementContainer.class) == AdvancedPackageImpl.PERSPECTIVE_STACK__SELECTED_ELEMENT) {
 					log.debug("perspective stack changed selection");
-					if (notification.getNewValue() == null && notification.getOldValue() != null
-							&& PerspectiveProvider.isPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId())) {
-						closePerspective(PerspectiveProvider.fromPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId()));
+					if (notification.getNewValue() == null && notification.getOldValue() != null && PerspectiveProvider
+							.isPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId())) {
+						closePerspective(PerspectiveProvider
+								.fromPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId()));
 					}
 					// perspective changed
 					if (notification.getNewValue() == null && notification.getOldValue() != null) {
 						// deactivate old perspective - hide its toolBar
-						String perspectiveId = PerspectiveProvider.fromPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId());
+						String perspectiveId = PerspectiveProvider
+								.fromPerspectiveElementId(((MPerspective) notification.getOldValue()).getElementId());
 						toolbarProvider.setActive(perspectiveId, false);
 					}
 					if (notification.getNewValue() != null && notification.getOldValue() == null) {
 						// activate new perspective - show its toolbar
-						String perspectiveId = PerspectiveProvider.fromPerspectiveElementId(((MPerspective) notification.getNewValue()).getElementId());
+						String perspectiveId = PerspectiveProvider
+								.fromPerspectiveElementId(((MPerspective) notification.getNewValue()).getElementId());
 						toolbarProvider.setActive(perspectiveId, true);
 					}
 				}
@@ -309,7 +320,8 @@
 	 *            - unique identifier for a perspective in the model
 	 * @return the m perspective
 	 */
-	private MPerspective createPerspective(MPerspectiveStack stack, Perspective perspectiveModel, String perspectiveId) {
+	private MPerspective createPerspective(MPerspectiveStack stack, Perspective perspectiveModel,
+			String perspectiveId) {
 		MPerspective perspective = AdvancedFactoryImpl.eINSTANCE.createPerspective();
 
 		perspective.getTags().add(IPerspectiveProvider.E4Constants.TAG_REMOVE_ON_CLOSE);
@@ -395,7 +407,8 @@
 	}
 
 	/**
-	 * for every model element that can hold children, traverse recursively the model.
+	 * for every model element that can hold children, traverse recursively the
+	 * model.
 	 * 
 	 * @param parent
 	 *            - the parent e4 node to which the next child is added
@@ -452,25 +465,29 @@
 		} else if (parent instanceof MPartSashContainer) {
 			((MPartSashContainer) parent).getChildren().add(sashContainer);
 		}
-		
+
 		// go deeper
 		traverseModel(sashContainer, element);
 		// set selected references
 		for (MPartSashContainerElement child : sashContainer.getChildren()) {
-			if (sashModel.getSelectedElement() != null && child.getElementId().equals(sashModel.getSelectedElement().getElementId())) {
+			if (sashModel.getSelectedElement() != null
+					&& child.getElementId().equals(sashModel.getSelectedElement().getElementId())) {
 				sashContainer.setSelectedElement(child);
 				break;
 			}
 		}
 
 		// DON´T MOVE THE FOLLOWING CODE LINES !!!!
-		// The reading of the container data from the user properties in 'getElementContainerData' below 
-		// requires the element id and the parent information set to the part above.
+		// The reading of the container data from the user properties in
+		// 'getElementContainerData' below
+		// requires the element id and the parent information set to the part
+		// above.
 		String elementContainerData = getElementContainerData(sashContainer);
 		if (elementContainerData != null) {
 			sashContainer.setContainerData(elementContainerData);
 		} else {
-			sashContainer.setContainerData(sashModel.getContainerData()!=null?sashModel.getContainerData().replace("\"", ""):"50");
+			sashContainer.setContainerData(
+					sashModel.getContainerData() != null ? sashModel.getContainerData().replace("\"", "") : "50");
 		}
 
 	}
@@ -501,26 +518,30 @@
 		traverseModel(stack, element);
 		// set selected references
 		for (MStackElement child : stack.getChildren()) {
-			if (stackModel.getSelectedElement() != null && child.getElementId().equals(stackModel.getSelectedElement().getElementId())) {
+			if (stackModel.getSelectedElement() != null
+					&& child.getElementId().equals(stackModel.getSelectedElement().getElementId())) {
 				stack.setSelectedElement(child);
 				break;
 			}
 		}
-		
+
 		// DON´T MOVE THE FOLLOWING CODE LINES !!!!
-		// The reading of the container data from the user properties in 'getElementContainerData' below 
-		// requires the element id and the parent information set to the part above.
+		// The reading of the container data from the user properties in
+		// 'getElementContainerData' below
+		// requires the element id and the parent information set to the part
+		// above.
 		String elementContainerData = getElementContainerData(stack);
 		if (elementContainerData != null) {
 			stack.setContainerData(elementContainerData);
 		} else {
-			stack.setContainerData(stackModel.getContainerData()!=null?stackModel.getContainerData().replace("\"", ""):"50");
+			stack.setContainerData(
+					stackModel.getContainerData() != null ? stackModel.getContainerData().replace("\"", "") : "50");
 		}
 
 	}
 
 	private String getElementContainerData(MUIElement element) {
-		return (String)user.getProperty(getFQNKey(element));
+		return (String) user.getProperty(getFQNKey(element));
 	}
 
 	/**
@@ -547,6 +568,26 @@
 		part.getPersistedState().put(IPerspectiveProvider.E4Constants.OSBP_NS_URI, getNsURI(partModel.getView()));
 		part.getPersistedState().put(IPerspectiveProvider.E4Constants.OSBP_FQN, getFQN(partModel.getView()));
 
+		EObject container = partModel.eContainer();
+		while (!(container instanceof Perspective)) {
+			container = container.eContainer();
+		}
+		Perspective perspective = (Perspective) container;
+		if (perspective.getEventmanager() != null && perspective.getEventmanager().getEvents() != null
+				&& !perspective.getEventmanager().getEvents().isEmpty()) {
+			for (PerspectiveEvent event : perspective.getEventmanager().getEvents()) {
+				if (event.getTarget().getElementId().equals(partModel.getElementId())) {
+					ArrayList<String> senders = new ArrayList<>();
+					senders.add(getViewPartID(partModel.getView()));
+					for(PerspectivePart source : event.getAllowedsources()){
+						senders.add(getViewPartID(source.getView()));
+					}
+					part.getTransientData().put(IPerspectiveProvider.EventDispatcherConstants.ACCEPTED_SENDERS,senders);
+					break;
+				}
+			}
+		}
+
 		String flavor = getFlavor(partModel.getView());
 		if (flavor != null) {
 			part.getPersistedState().put(IPerspectiveProvider.E4Constants.OSBP_FLAVOR, flavor);
@@ -561,22 +602,89 @@
 			((MPartStack) parent).getChildren().add(part);
 		}
 		if (partModel.getView() != null) {
+			log.debug("set contribution URI for part {} to {} ", part.getElementId(),
+					getContributionURI(part, partModel));
 			part.setContributionURI(getContributionURI(part, partModel));
 		}
-		
+
 		// DON´T MOVE THE FOLLOWING CODE LINES !!!!
-		// The reading of the container data from the user properties in 'getElementContainerData' below 
-		// requires the element id and the parent information set to the part above.
+		// The reading of the container data from the user properties in
+		// 'getElementContainerData' below
+		// requires the element id and the parent information set to the part
+		// above.
 		String elementContainerData = getElementContainerData(part);
 		if (elementContainerData != null) {
 			part.setContainerData(elementContainerData);
 		} else {
-			part.setContainerData(partModel.getContainerData()!=null?partModel.getContainerData().replace("\"", ""):"50");
+			part.setContainerData(
+					partModel.getContainerData() != null ? partModel.getContainerData().replace("\"", "") : "50");
 		}
 
 	}
 
 	/**
+	 * Returns the corresponding viewid or fully qualified name of a PerspectivePart, which is needed
+	 * for EventDispatcherEvent's recognition within a perspective.
+	 * @param viewModel the {@link PerspectiveView} view model of the PerspectivePart 
+	 * @return {@link String} the view id or fully qualified name
+	 */
+	private String getViewPartID(PerspectiveView viewModel) {
+		if (viewModel instanceof PerspectiveDialog) {
+			Dialog dialog = ((PerspectiveDialog) viewModel).getRef();
+			if (dialog.isAutowire()) {
+				return AutowireUiFactory.getECViewPackage(dialog) +"."+ AutowireUiFactory.getECViewName(dialog);
+			} else {
+				EObject parent = dialog.getUiView().eContainer();
+				while (!(parent instanceof UiModel)) {
+					parent = parent.eContainer();
+				}
+				UiModel uiModel = (UiModel) parent;
+				return uiModel.getPackageName() +"."+ dialog.getUiView().getName();
+			}
+		}
+		else if (viewModel instanceof PerspectiveTable) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveTable) viewModel).getRef());
+		}
+		else if (viewModel instanceof PerspectiveSelection) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveSelection) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveGrid) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveGrid) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveChart) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveChart) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveReport) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveReport) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveOrganization) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveOrganization) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveTopology) {
+			return dslMetadataService.getFullyQualifiedName(((PerspectiveTopology) viewModel).getRef());
+		} else if (viewModel instanceof PerspectiveDataInterchange) {
+			return getFQN(viewModel);
+		} else if (viewModel instanceof PerspectiveBPMN) {
+			String className = BpmnView.class.getCanonicalName();
+			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.BPMN);
+		} else if (viewModel instanceof PerspectiveWelcome) {
+			String className = WelcomeView.class.getCanonicalName();
+			Bundle bundle = FrameworkUtil.getBundle(WelcomeView.class);
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
+		} else if (viewModel instanceof PerspectiveSearch) {
+			String className = SearchView.class.getCanonicalName();
+			Bundle bundle = FrameworkUtil.getBundle(SearchView.class);
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
+		} else if (viewModel instanceof PerspectiveKanban) {
+			String className = KanbanView.class.getCanonicalName();
+			Bundle bundle = FrameworkUtil.getBundle(KanbanView.class);
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
+		} else if (viewModel instanceof PerspectiveBrowser) {
+			String className = BrowserView.class.getCanonicalName();
+			Bundle bundle = FrameworkUtil.getBundle(BrowserView.class);
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
+		}
+		else {
+			return null;
+		}
+	}
+
+	/**
 	 * for every model element create an e4 element by it's factory.
 	 * 
 	 * @param parent
@@ -604,19 +712,19 @@
 	private String getContributionURI(MPart part, PerspectivePart partModel) { // NOSONAR
 		PerspectiveView viewModel = partModel.getView();
 		if (viewModel instanceof PerspectiveTable) {
-			String className = ((PerspectiveTable) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Table";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.TABLE);
 		} else if (viewModel instanceof PerspectiveSelection) {
-			String className = ((PerspectiveSelection) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Select";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.TABLE);
 		} else if (viewModel instanceof PerspectiveGrid) {
-			String className = ((PerspectiveGrid) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Grid";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.TABLE);
 		} else if (viewModel instanceof PerspectiveChart) {
-			String className = ((PerspectiveChart) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Chart";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.CHART);
 		} else if (viewModel instanceof PerspectiveReport) {
-			String className = ((PerspectiveReport) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Report";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.REPORT);
 		} else if (viewModel instanceof PerspectiveOrganization) {
 			if (optionalOrgURIProvider != null) {
@@ -625,13 +733,13 @@
 				return null;
 			}
 		} else if (viewModel instanceof PerspectiveTopology) {
-			String className = ((PerspectiveTopology) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Topology";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.TOPOLOGY);
 		} else if (viewModel instanceof PerspectiveDialog) {
-			String className = ((PerspectiveDialog) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"Dialog";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.DIALOG);
 		} else if (viewModel instanceof PerspectiveDataInterchange) {
-			String className = ((PerspectiveDataInterchange) viewModel).getRefTypeJvm().getQualifiedName();
+			String className = getFQN(viewModel)+"TriggerView";
 			return dslMetadataService.getClassURI(className, IPerspectiveProvider.PerspectiveViewType.DATAINTERCHANGE);
 		} else if (viewModel instanceof PerspectiveBPMN) {
 			String className = BpmnView.class.getCanonicalName();
@@ -639,21 +747,33 @@
 		} else if (viewModel instanceof PerspectiveWelcome) {
 			String className = WelcomeView.class.getCanonicalName();
 			Bundle bundle = FrameworkUtil.getBundle(WelcomeView.class);
-			return E4Constants.BUNDLE_PROTOCOL_SCHEME+"://" + bundle.getSymbolicName() + "/" + className;
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
 		} else if (viewModel instanceof PerspectiveSearch) {
-			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_DTO_CLASS, ((PerspectiveSearch) viewModel).getDtoRef());
-			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_DEPTH, ((PerspectiveSearch) viewModel).getDepth());
-			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_COLUMNS, Math.max(1, ((PerspectiveSearch) viewModel).getFilterCols()));
+			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_DTO_CLASS,
+					((PerspectiveSearch) viewModel).getDtoRef());
+			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_DEPTH,
+					((PerspectiveSearch) viewModel).getDepth());
+			part.getTransientData().put(IPerspectiveProvider.FilterConstants.FILTER_COLUMNS,
+					Math.max(1, ((PerspectiveSearch) viewModel).getFilterCols()));
 			String className = SearchView.class.getCanonicalName();
 			Bundle bundle = FrameworkUtil.getBundle(SearchView.class);
-			return E4Constants.BUNDLE_PROTOCOL_SCHEME+"://" + bundle.getSymbolicName() + "/" + className;
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
 		} else if (viewModel instanceof PerspectiveKanban) {
-			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.DTO, ((PerspectiveKanban) viewModel).getDtoRef());
-			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.DIALOG, ((PerspectiveKanban) viewModel).getDialogRef());
-			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.CARD, ((PerspectiveKanban) viewModel).getCardRef());
+			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.DTO,
+					((PerspectiveKanban) viewModel).getDtoRef());
+			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.DIALOG,
+					((PerspectiveKanban) viewModel).getDialogRef());
+			part.getTransientData().put(IPerspectiveProvider.KanbanConstants.CARD,
+					((PerspectiveKanban) viewModel).getCardRef());
 			String className = KanbanView.class.getCanonicalName();
 			Bundle bundle = FrameworkUtil.getBundle(KanbanView.class);
-			return E4Constants.BUNDLE_PROTOCOL_SCHEME+"://" + bundle.getSymbolicName() + "/" + className;
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
+		} else if (viewModel instanceof PerspectiveBrowser) {
+			part.getTransientData().put(IPerspectiveProvider.BrowserConstants.URL,
+					((PerspectiveBrowser) viewModel).getUrl());
+			String className = BrowserView.class.getCanonicalName();
+			Bundle bundle = FrameworkUtil.getBundle(BrowserView.class);
+			return E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/" + className;
 		}
 		return null;
 	}
@@ -700,13 +820,15 @@
 			return pkg == null ? "" : toFQN(pkg.getName(), object.getName());
 		} else if (viewModel instanceof PerspectiveDataInterchange) {
 			DataInterchangeGroup group = ((PerspectiveDataInterchange) viewModel).getRef();
-			return group == null ? "" : group.getName();
+			DataInterchangePackage pkg = (DataInterchangePackage) group.eContainer();
+			return group == null ? "" : toFQN(pkg.getName(), group.getName());
 		}
 		return null;
 	}
 
 	/**
-	 * Return the NS-URI for the content of the view. Used as a content type marker.
+	 * Return the NS-URI for the content of the view. Used as a content type
+	 * marker.
 	 *
 	 * @param viewModel
 	 *            the view model
@@ -733,6 +855,8 @@
 			return Bpmn2Package.eNS_URI;
 		} else if (viewModel instanceof PerspectiveKanban) {
 			return ExtensionModelPackage.eNS_URI;
+		} else if (viewModel instanceof PerspectiveBrowser) {
+			return ExtensionModelPackage.eNS_URI;
 		} else if (viewModel instanceof PerspectiveDataInterchange) {
 			return DataDSLPackage.eNS_URI;
 		}
@@ -765,7 +889,7 @@
 	 * Subscribe.
 	 */
 	protected void subscribe() {
-		if(taskClient != null) {
+		if (taskClient != null) {
 			taskClient.registerPerspectiveListener(this);
 		}
 		createEventHandlers();
@@ -778,7 +902,7 @@
 	@PreDestroy
 	protected void unsubscribe() {
 		taskClient.unsubscribeTaskEventNotification(this);
-		if(taskClient != null) {
+		if (taskClient != null) {
 			taskClient.unregisterPerspectiveListener(this);
 		}
 	}
@@ -799,13 +923,16 @@
 	 */
 	private void suspendAllTasks() {
 		for (Long taskId : perspectiveTasks.keySet()) {
-			log.debug("suspend task {}", taskId);
-			taskClient.operations(taskId, user, null, BPMOperation.Suspend);
+			if(taskId != -1) {
+				log.debug("suspend task {}", taskId);
+				taskClient.operations(taskId, user, null, BPMOperation.Suspend);
+			}
 		}
 	}
 
 	/**
-	 * Tries to find the perspective model using the perspective builder service.
+	 * Tries to find the perspective model using the perspective builder
+	 * service.
 	 *
 	 * @param perspectiveId
 	 *            - the id of the perspective used in the model
@@ -813,7 +940,9 @@
 	 */
 	protected PerspectiveFound findPerspective(String perspectiveId) {
 		log.debug("find perspective model by id");
-		return new PerspectiveFound(null, (Perspective) dslMetadataService.getMetadata(perspectiveId, PerspectiveDslPackage.Literals.PERSPECTIVE), null, null);
+		return new PerspectiveFound(null,
+				(Perspective) dslMetadataService.getMetadata(perspectiveId, PerspectiveDslPackage.Literals.PERSPECTIVE),
+				null, null);
 	}
 
 	private final class PerspectiveFound {
@@ -822,7 +951,8 @@
 		public final BlipItem blipTask;
 		public final Task bpmTask;
 
-		protected PerspectiveFound(BPMTaskSummary taskSummary, Perspective perspective, BlipItem blipTask, Task bpmTask) {
+		protected PerspectiveFound(BPMTaskSummary taskSummary, Perspective perspective, BlipItem blipTask,
+				Task bpmTask) {
 			this.taskSummary = taskSummary;
 			this.perspective = perspective;
 			this.blipTask = blipTask;
@@ -831,7 +961,8 @@
 	}
 
 	/**
-	 * Tries to find the perspective model using the perspective builder service.
+	 * Tries to find the perspective model using the perspective builder
+	 * service.
 	 *
 	 * @param task
 	 *            the task
@@ -846,7 +977,7 @@
 				if ((process != null) && (process.getId().equals(taskSummary.getProcessId()))) {
 					Task bpmTask = blipTask.getTask();
 					if ((bpmTask != null) && bpmTask.getName().equals(taskSummary.getName())) {
-						return new PerspectiveFound(taskSummary, (Perspective)eObj, blipTask, bpmTask);
+						return new PerspectiveFound(taskSummary, (Perspective) eObj, blipTask, bpmTask);
 					}
 				}
 			}
@@ -869,7 +1000,10 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.osbp.bpm.api.IBPMTaskEventNotification#notifyTaskEvent(org .jbpm.task.event.entity.TaskEventType, org.jbpm.task.event.entity.TaskUserEvent)
+	 * @see
+	 * org.eclipse.osbp.bpm.api.IBPMTaskEventNotification#notifyTaskEvent(org
+	 * .jbpm.task.event.entity.TaskEventType,
+	 * org.jbpm.task.event.entity.TaskUserEvent)
 	 */
 	@Override
 	public void notifyTaskEvent(BPMTaskEventType type, BPMTaskUserEvent event) {
@@ -883,29 +1017,34 @@
 
 	@Override
 	public void receiveEvent(EventDispatcherEvent event) {
-		if(event.getCommand() == EventDispatcherCommand.ACTION &&
-			event.getData().containsKey(EventDispatcherDataTag.BUTTON_ID) && 
-			event.getData().get(EventDispatcherDataTag.BUTTON_ID) instanceof TaskActionEnum &&
-			event.getData().containsKey(EventDispatcherDataTag.TASK_ID) &&
-			event.getData().get(EventDispatcherDataTag.TASK_ID) instanceof Long) {
-			Object buttonId = event.getData().get(EventDispatcherDataTag.BUTTON_ID) ;
+		if (event.getCommand() == EventDispatcherCommand.ACTION
+				&& event.getData().containsKey(EventDispatcherDataTag.BUTTON_ID)
+				&& event.getData().get(EventDispatcherDataTag.BUTTON_ID) instanceof TaskActionEnum
+				&& event.getData().containsKey(EventDispatcherDataTag.TASK_ID)
+				&& event.getData().get(EventDispatcherDataTag.TASK_ID) instanceof Long) {
+			Object buttonId = event.getData().get(EventDispatcherDataTag.BUTTON_ID);
 			TaskActionEnum enumId = (TaskActionEnum) buttonId;
-			Long taskId = (Long)event.getData().get(EventDispatcherDataTag.TASK_ID);
-			if(enumId == TaskActionEnum.TASK_ACTION_DELEGATE) {
-				log.debug("dispatch action received in PerspectiveSupport for " + TaskActionEnum.TASK_ACTION_DELEGATE.getLiteral());
+			Long taskId = (Long) event.getData().get(EventDispatcherDataTag.TASK_ID);
+			if (enumId == TaskActionEnum.TASK_ACTION_DELEGATE) {
+				log.debug("dispatch action received in PerspectiveSupport for "
+						+ TaskActionEnum.TASK_ACTION_DELEGATE.getLiteral());
 			} else {
 				taskClient.operations(taskId, user, null, BPMOperation.valueOf(enumId.getLiteral()));
 			}
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider#openPerspective(java.lang.String, java.lang.String, java.lang.Class)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider#openPerspective(
+	 * java.lang.String, java.lang.String, java.lang.Class)
 	 */
 	@Override
 	public void openPerspective(String elementId, String labelName, Class<?> clazz) {
 		MPerspectiveStack stack = initPerspectiveStack();
-		if(stack != null) {
+		if (stack != null) {
 			// bring to top if already contained in model
 			for (MPerspective perspective : stack.getChildren()) {
 				if ((PerspectiveProvider.toPerspectiveElementId(elementId)).equals(perspective.getElementId())) {
@@ -914,10 +1053,10 @@
 				}
 			}
 			MPerspective perspective = AdvancedFactoryImpl.eINSTANCE.createPerspective();
-			
+
 			perspective.getTags().add(IPerspectiveProvider.E4Constants.TAG_REMOVE_ON_CLOSE);
 			perspective.getTags().add(IPerspectiveProvider.E4Constants.TAG_NOT_IN_OPEN_PERSPECTIVE_DIALOG);
-			
+
 			perspective.setElementId(PerspectiveProvider.toPerspectiveElementId(elementId));
 			perspective.setLabel(labelName);
 			perspective.setVisible(true);
@@ -929,7 +1068,8 @@
 			perspective.getChildren().add(part);
 			String className = clazz.getCanonicalName();
 			Bundle bundle = FrameworkUtil.getBundle(clazz);
-			String contributionURI = E4Constants.BUNDLE_PROTOCOL_SCHEME+"://" + bundle.getSymbolicName() + "/" + className;
+			String contributionURI = E4Constants.BUNDLE_PROTOCOL_SCHEME + "://" + bundle.getSymbolicName() + "/"
+					+ className;
 			part.setContributionURI(contributionURI);
 			stack.getChildren().add(perspective);
 			stack.setSelectedElement(perspective);
@@ -953,13 +1093,16 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider#openPerspectiveEvent(java.lang.String)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider#
+	 * openPerspectiveEvent(java.lang.String)
 	 */
 	@Override
-	public void openPerspective(String perspectiveId) { 
+	public void openPerspective(String perspectiveId) {
 		PerspectiveFound perspectiveFound = findPerspective(perspectiveId);
-		if(perspectiveFound != null) {
+		if (perspectiveFound != null) {
 			openPerspective(perspectiveFound, -1L);
 		} else {
 			log.error("perspective id {} not found", perspectiveId);
@@ -978,10 +1121,12 @@
 		MPerspectiveStack stack = initPerspectiveStack();
 		if (stack != null && perspectiveFound.perspective != null) {
 			// bring to top if already contained in model
-			// lo wants multiple manually opened perspectives of same type by 02/28/2018
-			if(taskId > 0L) {
+			// lo wants multiple manually opened perspectives of same type by
+			// 02/28/2018
+			if (taskId > 0L) {
 				for (MPerspective perspective : stack.getChildren()) {
-					if ((PerspectiveProvider.toPerspectiveElementId(perspectiveFound.perspective.getName())).equals(perspective.getElementId())) {
+					if ((PerspectiveProvider.toPerspectiveElementId(perspectiveFound.perspective.getName()))
+							.equals(perspective.getElementId())) {
 						modelService.bringToTop(perspective);
 						return;
 					}
@@ -990,12 +1135,14 @@
 
 			log.debug("open perspective {}", perspectiveFound.perspective.getName());
 			log.debug("add perspective");
-			MPerspective perspective = createPerspective(stack, perspectiveFound.perspective, perspectiveFound.perspective.getName());
+			MPerspective perspective = createPerspective(stack, perspectiveFound.perspective,
+					perspectiveFound.perspective.getName());
 			if (taskId != -1L) {
 				registerContext(perspective.getTransientData(), perspectiveFound);
 				// create the toolbar
 				if (perspectiveFound.perspective.getToolbarTypeJvm() != null) {
-					String toolBarId = perspectiveFound.perspective.getToolbarTypeJvm().getQualifiedName().replace("Toolbar", "");
+					String toolBarId = perspectiveFound.perspective.getToolbarTypeJvm().getQualifiedName()
+							.replace("Toolbar", "");
 					toolbarProvider.addToolbar(perspectiveFound.perspective.getName(), findToolbar(toolBarId));
 				}
 			}
@@ -1006,7 +1153,7 @@
 			perspectives.put(perspectiveFound.perspective.getName(), perspective);
 			perspectiveTasks.put(taskId, perspectiveFound.perspective.getName());
 			// get notified from bpm
-			if(taskClient != null) {
+			if (taskClient != null) {
 				taskClient.subscribeProcessCompletedEventNotification(this);
 				taskClient.subscribeTaskEventNotification(BPMTaskEventType.Release, this);
 				taskClient.subscribeTaskEventNotification(BPMTaskEventType.Complete, this);
@@ -1059,28 +1206,30 @@
 
 	@Override
 	public void closePerspective(BPMTaskSummary taskSummary) {
-		log.debug("close perspective {}", taskSummary.getId());
-		// awaits a Long object as taskId
-		closePerspective(taskSummary.getId());
+		if(taskSummary != null) {
+			log.debug("close perspective {}", taskSummary.getId());
+			// awaits a Long object as taskId
+			closePerspective(taskSummary.getId());
+		}
 	}
-	
+
 	private void addAdapter(MUIElement element) {
-	    ((EObject)element).eAdapters().add(new AdapterImpl() {
-	    	public void notifyChanged(Notification notification) {
-	    		if (notification.getEventType()==Notification.SET && 
-	    				notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA && element.getElementId() != null)
-	    		{
-	    			user.addToProperties(getFQNKey(element), element.getContainerData());
-	    		}
-	    	}
-	    });
+		((EObject) element).eAdapters().add(new AdapterImpl() {
+			public void notifyChanged(Notification notification) {
+				if (notification.getEventType() == Notification.SET
+						&& notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA
+						&& element.getElementId() != null) {
+					user.addToProperties(getFQNKey(element), element.getContainerData());
+				}
+			}
+		});
 	}
-	
-	private String getFQNKey(MUIElement element){
+
+	private String getFQNKey(MUIElement element) {
 		MUIElement muiElement = element;
 		List<String> elementIds = new LinkedList<>();
 		StringBuffer strBuffer = new StringBuffer();
-		while (muiElement!= null){
+		while (muiElement != null) {
 			if (muiElement.getElementId() != null) {
 				elementIds.add(muiElement.getElementId());
 				if (muiElement.getElementId().startsWith(E4Constants.PERSPECTIVE_PREFIX)) {
@@ -1090,10 +1239,10 @@
 			}
 		}
 		for (int i = elementIds.size(); i > 0; i--) {
-			if (strBuffer.length()!=0){
+			if (strBuffer.length() != 0) {
 				strBuffer.append(".");
 			}
-			strBuffer.append(elementIds.get(i-1));
+			strBuffer.append(elementIds.get(i - 1));
 		}
 		return strBuffer.toString();
 	}
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/SearchView.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/SearchView.java
index 0669773..f7884aa 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/SearchView.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/SearchView.java
@@ -8,6 +8,7 @@
 import org.eclipse.e4.core.contexts.IEclipseContext;
 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.emf.ecore.EObject;
 import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
@@ -44,7 +45,7 @@
 
 	@Inject
 	private IDSLMetadataService dslMetadataService;
-
+	
 	private VerticalLayout parent;
 	private FilteringComponentEmbeddable<T> filteringComponent;
 	private transient IEclipseContext context;
@@ -74,10 +75,9 @@
 		filteringComponent.setSizeFull();
 
 		filteringComponent.init(user.getLocale());
-
 		filteringComponent.setAcceptCallback(p -> {
-			EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, dto.getName(),
-					getClass().getSimpleName());
+			MPerspective perspective = context.get(MPerspective.class);
+			EventDispatcherEvent evnt = new EventDispatcherEvent(perspective, EventDispatcherCommand.SELECT, dto.getName(), getClass().getSimpleName());
 			evnt.addItem(EventDispatcherDataTag.DTO, p);
 			eventDispatcher.sendEvent(evnt);
 		});
@@ -109,4 +109,10 @@
 		filteringComponent.setLocale(locale);
 		filteringComponent.getViewContext().setLocale(locale);
 	}
+
+	@Override
+	public String getStateLabelUUID() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/service/OSBPServiceAddon.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/service/OSBPServiceAddon.java
index ce1bff2..d54cac8 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/service/OSBPServiceAddon.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/service/OSBPServiceAddon.java
@@ -23,7 +23,6 @@
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
-import javax.inject.Named;
 
 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
 import org.eclipse.e4.core.contexts.IEclipseContext;
@@ -43,7 +42,6 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.equinox.app.IApplicationContext;
-import org.eclipse.osbp.bpm.api.IBlipBPMFunctionProvider;
 import org.eclipse.osbp.core.api.persistence.IPersistenceException;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.core.api.persistence.PersistenceExceptionEvent;
@@ -317,7 +315,12 @@
 			messageDialog.addButtonListener(this);
 		}
 		messageDialogs.put(messageDialog.getId(), messageDialog);
-		UI.getCurrent().addWindow(messageDialog);
+		UI current=UI.getCurrent();
+		if ( current != null ) {
+			current.addWindow(messageDialog);
+		} else {
+			log.error("exceptionEvent is unable to present the message '{}' due to missing current window information!",event.getMessage());
+		}
 	}
 
 	@Override
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/systemsettings/SystemSettingsDialogProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/systemsettings/SystemSettingsDialogProvider.java
index 24746cb..6f87a56 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/systemsettings/SystemSettingsDialogProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/systemsettings/SystemSettingsDialogProvider.java
@@ -30,6 +30,7 @@
 import com.vaadin.ui.Button.ClickListener;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Panel;
 import com.vaadin.ui.VerticalLayout;
 
 /**
@@ -62,6 +63,9 @@
 	@Inject
 	private IUser user;
 
+	/** The button panel. */
+	private Panel buttonPanel;
+
 	/**
 	 * The listener interface for receiving resetMondrianCacheClick events. The
 	 * class that is interested in processing a resetMondrianCacheClick event
@@ -182,13 +186,22 @@
 		parent.setSizeFull();
 		parent.setPrimaryStyleName("osbp");
 
-		HorizontalLayout buttonArea = new HorizontalLayout();
-		buttonArea.addStyleName("systemSettingsButtonArea");
-		buttonArea.setSizeFull();
+		HorizontalLayout area = new HorizontalLayout();
+		area.addStyleName("systemSettingsArea");
+		area.setSizeFull();
 		parent.setSpacing(true);
+		area.setMargin(true);
+		area.setSpacing(true);
+		parent.addComponent(area);
+		
+		buttonPanel = new Panel("reset");
+		buttonPanel.addStyleName("os-group-panel");
+		area.addComponent(buttonPanel);
+		HorizontalLayout buttonArea = new HorizontalLayout();
+		buttonArea.setSizeFull();
 		buttonArea.setMargin(true);
 		buttonArea.setSpacing(true);
-		parent.addComponent(buttonArea);
+		buttonPanel.setContent(buttonArea);
 
 		resetUserProperties = new Button("reset_user_properties");
 		resetUserProperties.setSizeFull();
@@ -223,6 +236,8 @@
 	 */
 	@Override
 	public void localeChanged(Locale locale) {
+		buttonPanel.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "resetcache"));
+		resetUserProperties.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "reset_user_properties"));
 		resetUserProperties.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "reset_user_properties"));
 		resetUserProperties.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "reset_user_properties_tip"));
 		resetMondrianCache.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "reset_mondrian_cache"));