Merge remote-tracking branch 'remotes/origin/releases/7.0.x' into
releases/8.0.x
diff --git a/org.eclipse.scout.sdk-feature/.project b/org.eclipse.scout.sdk-feature/.project
index 760e72b..631b87e 100644
--- a/org.eclipse.scout.sdk-feature/.project
+++ b/org.eclipse.scout.sdk-feature/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk-feature/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk-feature/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk-feature/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk-feature/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk-feature/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk-feature/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk-feature/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk-feature/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk-feature/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk-feature/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk-feature/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk-feature/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk-feature/feature.xml b/org.eclipse.scout.sdk-feature/feature.xml
index 29d2461..7f26e2e 100644
--- a/org.eclipse.scout.sdk-feature/feature.xml
+++ b/org.eclipse.scout.sdk-feature/feature.xml
@@ -14,7 +14,7 @@
 <feature
       id="org.eclipse.scout.sdk-feature"
       label="%featureName"
-      version="7.0.300.qualifier"
+      version="8.0.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.scout.sdk.s2e"
       license-feature="org.eclipse.license"
diff --git a/org.eclipse.scout.sdk-feature/pom.xml b/org.eclipse.scout.sdk-feature/pom.xml
index 107abfe..4df7480 100644
--- a/org.eclipse.scout.sdk-feature/pom.xml
+++ b/org.eclipse.scout.sdk-feature/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk.p2</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk.p2/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk-repository/.project b/org.eclipse.scout.sdk-repository/.project
index d82f3f3..a89ed56 100644
--- a/org.eclipse.scout.sdk-repository/.project
+++ b/org.eclipse.scout.sdk-repository/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk-repository/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk-repository/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk-repository/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk-repository/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk-repository/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk-repository/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk-repository/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk-repository/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk-repository/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk-repository/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk-repository/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk-repository/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk-repository/index-runtime.html b/org.eclipse.scout.sdk-repository/index-runtime.html
index e47a869..d020d6a 100644
--- a/org.eclipse.scout.sdk-repository/index-runtime.html
+++ b/org.eclipse.scout.sdk-repository/index-runtime.html
@@ -3,7 +3,7 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-    <title>Eclipse Scout SDK 7.0 Repository</title>
+    <title>Eclipse Scout SDK 8.0 Repository</title>
     <style type="text/css">
     <!--
       * {
@@ -13,14 +13,12 @@
     </style>
   </head>
   <body>
-    <h1>Eclipse Scout SDK 7.0 Repository</h1>
+    <h1>Eclipse Scout SDK 8.0 Repository</h1>
     <p>
-      This is the software repository that contains the runtime for
-      <a href="http://eclipse.org/scout">Eclipse Scout</a>, version 7.0.
+      This is the software repository that contains the runtime for <a href="https://www.eclipse.org/scout/">Eclipse Scout</a>, version 8.0.
     </p>
     <p>
-      The contents are also available as downloadable zip files from our
-      <a href="http://eclipse.org/scout/downloads/">download site</a>.
+      The contents are also available as downloadable zip files from our <a href="https://www.eclipse.org/scout/">download site</a>.
     </p>
   </body>
 </html>
diff --git a/org.eclipse.scout.sdk-repository/pom.xml b/org.eclipse.scout.sdk-repository/pom.xml
index 47015a5..dd02d5d 100644
--- a/org.eclipse.scout.sdk-repository/pom.xml
+++ b/org.eclipse.scout.sdk-repository/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk.p2</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk.p2/pom.xml</relativePath>
   </parent>
 
@@ -36,7 +36,7 @@
 
       <properties>
         <buildType>N</buildType>
-        <stageTargetDir>nightly/7.0</stageTargetDir>
+        <stageTargetDir>nightly/8.0</stageTargetDir>
         <buildId>${buildType}${master_build_timestamp}</buildId>
         <buildsToKeep>3</buildsToKeep>
       </properties>
diff --git a/org.eclipse.scout.sdk-settings/.project b/org.eclipse.scout.sdk-settings/.project
index 828acf4..dfdf2ee 100644
--- a/org.eclipse.scout.sdk-settings/.project
+++ b/org.eclipse.scout.sdk-settings/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk-settings/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk-settings/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk-settings/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk-settings/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk-settings/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk-settings/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk-settings/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk-settings/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk-settings/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk-settings/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk-settings/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk-settings/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk-settings/files/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk-settings/files/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk-settings/files/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk-settings/files/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk-settings/files/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk-settings/files/org.sonarlint.eclipse.core.prefs
index 176e21a..4368e94 100644
--- a/org.eclipse.scout.sdk-settings/files/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk-settings/files/org.sonarlint.eclipse.core.prefs
@@ -1,5 +1,5 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk-settings/pom.xml b/org.eclipse.scout.sdk-settings/pom.xml
index b2a4830..efaddaa 100644
--- a/org.eclipse.scout.sdk-settings/pom.xml
+++ b/org.eclipse.scout.sdk-settings/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk-target/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk-target/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk-target/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk-target/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk-target/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk-target/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk-target/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk-target/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk-target/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk-target/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk-target/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk-target/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk-target/pom.xml b/org.eclipse.scout.sdk-target/pom.xml
index 42ba61e..e7bc866 100644
--- a/org.eclipse.scout.sdk-target/pom.xml
+++ b/org.eclipse.scout.sdk-target/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk.p2</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk.p2/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.core.s.test/.project b/org.eclipse.scout.sdk.core.s.test/.project
index 2159ada..8e71f79 100644
--- a/org.eclipse.scout.sdk.core.s.test/.project
+++ b/org.eclipse.scout.sdk.core.s.test/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.core.resources.prefs b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.core.resources.prefs
index 2da41a5..a658c0b 100644
--- a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.core.resources.prefs
@@ -5,6 +5,5 @@
 encoding//src/main/resources=UTF-8
 encoding//src/main/shared=UTF-8
 encoding//src/test/java=UTF-8
-encoding//src/test/resources=UTF-8
 encoding/<project>=UTF-8
 encoding/files=UTF-8
diff --git a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.core.s.test/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.core.s.test/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.core.s.test/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.core.s.test/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.core.s.test/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.core.s.test/pom.xml b/org.eclipse.scout.sdk.core.s.test/pom.xml
index 38f2d21..3b33c68 100644
--- a/org.eclipse.scout.sdk.core.s.test/pom.xml
+++ b/org.eclipse.scout.sdk.core.s.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
@@ -58,6 +58,10 @@
       <groupId>org.eclipse.scout.rt</groupId>
       <artifactId>org.eclipse.scout.rt.server.jaxws</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.dataobject</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/TableFieldForm.java b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/TableFieldForm.java
index efb770e..259b4ba 100644
--- a/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/TableFieldForm.java
+++ b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/TableFieldForm.java
@@ -25,7 +25,7 @@
 import org.eclipse.scout.rt.client.ui.form.fields.tablefield.AbstractTableField;
 import org.eclipse.scout.rt.platform.Order;
 import org.eclipse.scout.rt.platform.exception.ProcessingException;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 
 import formdata.client.ui.forms.TableFieldForm.MainBox.CompanyTableField;
 import formdata.client.ui.forms.TableFieldForm.MainBox.PersonTableField;
diff --git a/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/formfieldmenu/FormFieldMenuTestForm.java b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/formfieldmenu/FormFieldMenuTestForm.java
new file mode 100644
index 0000000..a8f11bc
--- /dev/null
+++ b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/forms/formfieldmenu/FormFieldMenuTestForm.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package formdata.client.ui.forms.formfieldmenu;
+
+import org.eclipse.scout.rt.client.dto.FormData;
+import org.eclipse.scout.rt.client.ui.action.menu.form.fields.AbstractFormFieldMenu;
+import org.eclipse.scout.rt.client.ui.form.AbstractForm;
+import org.eclipse.scout.rt.client.ui.form.fields.booleanfield.AbstractBooleanField;
+import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox;
+import org.eclipse.scout.rt.platform.Order;
+
+import formdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData;
+
+@FormData(value = FormFieldMenuTestFormData.class, sdkCommand = FormData.SdkCommand.CREATE)
+public class FormFieldMenuTestForm extends AbstractForm {
+
+  @Order(10.0)
+  public class MainBox extends AbstractGroupBox {
+
+    @Order(5)
+    public class TestFormMenu extends AbstractFormFieldMenu {
+
+      @Order(10)
+      public class TestBooleanField extends AbstractBooleanField {
+
+      }
+    }
+  }
+}
diff --git a/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/template/formfield/AbstractCompanyTableField.java b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/template/formfield/AbstractCompanyTableField.java
index c654bc8..6de541b 100644
--- a/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/template/formfield/AbstractCompanyTableField.java
+++ b/org.eclipse.scout.sdk.core.s.test/src/main/client/formdata/client/ui/template/formfield/AbstractCompanyTableField.java
@@ -16,7 +16,7 @@
 import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractStringColumn;
 import org.eclipse.scout.rt.client.ui.form.fields.tablefield.AbstractTableField;
 import org.eclipse.scout.rt.platform.Order;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 
 import formdata.shared.services.process.AbstractCompanyTableFieldData;
 
diff --git a/org.eclipse.scout.sdk.core.s.test/src/main/java/org/eclipse/scout/sdk/core/s/testing/CoreScoutTestingUtils.java b/org.eclipse.scout.sdk.core.s.test/src/main/java/org/eclipse/scout/sdk/core/s/testing/CoreScoutTestingUtils.java
index 21e7157..8985ab8 100644
--- a/org.eclipse.scout.sdk.core.s.test/src/main/java/org/eclipse/scout/sdk/core/s/testing/CoreScoutTestingUtils.java
+++ b/org.eclipse.scout.sdk.core.s.test/src/main/java/org/eclipse/scout/sdk/core/s/testing/CoreScoutTestingUtils.java
@@ -58,8 +58,7 @@
   }
 
   /**
-   * @return a {@link IJavaEnvironment} for org.eclipse.*.shared tests, without the org.eclipse.scout.rt.client
-   *         dependency
+   * @return a {@link IJavaEnvironment} for org.eclipse.*.shared tests, without the org.eclipse.scout.rt.client dependency
    */
   public static IJavaEnvironment createSharedJavaEnvironment() {
     return new JavaEnvironmentBuilder()
@@ -171,19 +170,20 @@
   }
 
   /**
-   * Creates a new Scout project based on the helloworld archetype using group id {@link #PROJECT_GROUP_ID} and
-   * artifactId {@link #PROJECT_ARTIFACT_ID}.
+   * Creates a new Scout project based on the helloworld archetype using group id {@link #PROJECT_GROUP_ID} and artifactId
+   * {@link #PROJECT_ARTIFACT_ID}.
    *
    * @return The root directory that contains the created projects.
    * @throws IOException
    */
   public static File createTestProject() throws IOException {
     File targetDirectory = Files.createTempDirectory(CoreScoutTestingUtils.class.getSimpleName() + "-projectDir").toFile();
-    ScoutProjectNewHelper.createProject(targetDirectory, PROJECT_GROUP_ID, PROJECT_ARTIFACT_ID, "Display Name", SystemUtils.JAVA_SPECIFICATION_VERSION);
+    ScoutProjectNewHelper.createProject(targetDirectory, PROJECT_GROUP_ID, PROJECT_ARTIFACT_ID, "Display Name", SystemUtils.JAVA_SPECIFICATION_VERSION,
+        ScoutProjectNewHelper.SCOUT_ARCHETYPES_GROUP_ID, ScoutProjectNewHelper.SCOUT_ARCHETYPES_HELLOWORLD_ARTIFACT_ID, ScoutProjectNewHelper.SCOUT_ARCHETYPES_VERSION);
 
     // create a config.properties in the src/test/resources of the server to use the jax-ws-ri of the JRE instead of metro which is the default.
     File testConfigProperties = new File(targetDirectory, PROJECT_ARTIFACT_ID + '/' + PROJECT_ARTIFACT_ID + ".server/src/test/resources/config.properties");
-    byte[] configContent = ("jaxws.implementor=" + IScoutRuntimeTypes.JaxWsRISpecifics + "\n").getBytes(StandardCharsets.UTF_8);
+    byte[] configContent = ("scout.jaxws.implementor=" + IScoutRuntimeTypes.JaxWsRISpecifics + "\n").getBytes(StandardCharsets.UTF_8);
     Files.write(testConfigProperties.toPath(), configContent, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
 
     return targetDirectory;
@@ -196,7 +196,7 @@
    *          The directory in which the maven command should be executed. Must contain a pom.xml file.
    * @throws IOException
    */
-  public static void runMavenCleanCompile(File pomDir) throws IOException {
+  public static void runMavenCleanCompile(File pomDir) {
     MavenRunner.execute(new MavenBuild()
         .withWorkingDirectory(pomDir)
         .withGoal("clean")
@@ -212,7 +212,7 @@
    *          The directory in which the maven command should be executed. Must contain a pom.xml file.
    * @throws IOException
    */
-  public static void runMavenCleanTest(File pomDir) throws IOException {
+  public static void runMavenCleanTest(File pomDir) {
     MavenRunner.execute(new MavenBuild()
         .withWorkingDirectory(pomDir)
         .withGoal("clean")
diff --git a/org.eclipse.scout.sdk.core.s.test/src/main/shared/formdata/shared/ui/forms/formfieldmenu/FormFieldMenuTestFormData.java b/org.eclipse.scout.sdk.core.s.test/src/main/shared/formdata/shared/ui/forms/formfieldmenu/FormFieldMenuTestFormData.java
new file mode 100644
index 0000000..2fdf13c
--- /dev/null
+++ b/org.eclipse.scout.sdk.core.s.test/src/main/shared/formdata/shared/ui/forms/formfieldmenu/FormFieldMenuTestFormData.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package formdata.shared.ui.forms.formfieldmenu;
+
+import javax.annotation.Generated;
+
+import org.eclipse.scout.rt.shared.data.form.AbstractFormData;
+import org.eclipse.scout.rt.shared.data.form.fields.AbstractValueFieldData;
+
+/**
+ * <b>NOTE:</b><br>
+ * This class is auto generated by the Scout SDK. No manual modifications recommended.
+ */
+@Generated(value = "formdata.client.ui.forms.formfieldmenu.FormFieldMenuTestForm", comments = "This class is auto generated by the Scout SDK. No manual modifications recommended.")
+public class FormFieldMenuTestFormData extends AbstractFormData {
+
+  private static final long serialVersionUID = 1L;
+
+  public TestBoolean getTestBoolean() {
+    return getFieldByClass(TestBoolean.class);
+  }
+
+  public static class TestBoolean extends AbstractValueFieldData<Boolean> {
+
+    private static final long serialVersionUID = 1L;
+  }
+}
diff --git a/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtilsTest.java b/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtilsTest.java
index 36746a9..d5a198b 100644
--- a/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtilsTest.java
+++ b/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/jaxws/JaxWsUtilsTest.java
@@ -39,7 +39,6 @@
   public void testJaxWsBindingMapping() {
     JaxWsBindingMapping m = new JaxWsBindingMapping(true, "wsdlName", "className");
     Assert.assertFalse(m.equals(null));
-    Assert.assertFalse(m.equals(""));
     Assert.assertFalse(m.equals(new JaxWsBindingMapping(true, "wsdlName", "className2")));
     Assert.assertFalse(m.equals(new JaxWsBindingMapping(true, "wsdlName2", "className")));
     Assert.assertFalse(m.equals(new JaxWsBindingMapping(false, "wsdlName", "className")));
diff --git a/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/FormFieldMenuTest.java b/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/FormFieldMenuTest.java
new file mode 100644
index 0000000..1e60740
--- /dev/null
+++ b/org.eclipse.scout.sdk.core.s.test/src/test/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/FormFieldMenuTest.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.sdk.core.s.sourcebuilder.dto;
+
+import org.eclipse.scout.sdk.core.model.api.IField;
+import org.eclipse.scout.sdk.core.model.api.IMethod;
+import org.eclipse.scout.sdk.core.model.api.IType;
+import org.eclipse.scout.sdk.core.s.testing.CoreScoutTestingUtils;
+import org.eclipse.scout.sdk.core.testing.SdkAssert;
+import org.junit.Assert;
+import org.junit.Test;
+
+import formdata.client.ui.forms.formfieldmenu.FormFieldMenuTestForm;
+
+/**
+ * @since 7.1.0
+ */
+public class FormFieldMenuTest {
+  @Test
+  public void testCreateFormData() {
+    IType dto = CoreScoutTestingUtils.createFormDataAssertNoCompileErrors(FormFieldMenuTestForm.class.getName());
+    testApiOfFormFieldMenuTestFormData(dto);
+  }
+
+  /**
+   * @Generated with org.eclipse.scout.sdk.core.testing.ApiTestGenerator
+   */
+  private static void testApiOfFormFieldMenuTestFormData(IType formFieldMenuTestFormData) {
+    SdkAssert.assertHasFlags(formFieldMenuTestFormData, 1);
+    SdkAssert.assertHasSuperTypeSignature(formFieldMenuTestFormData, "Lorg.eclipse.scout.rt.shared.data.form.AbstractFormData;");
+    Assert.assertEquals("annotation count", 1, formFieldMenuTestFormData.annotations().list().size());
+    SdkAssert.assertAnnotation(formFieldMenuTestFormData, "javax.annotation.Generated");
+
+    // fields of FormFieldMenuTestFormData
+    Assert.assertEquals("field count of 'formdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData'", 1, formFieldMenuTestFormData.fields().list().size());
+    IField serialVersionUID = SdkAssert.assertFieldExist(formFieldMenuTestFormData, "serialVersionUID");
+    SdkAssert.assertHasFlags(serialVersionUID, 26);
+    SdkAssert.assertFieldSignature(serialVersionUID, "J");
+    Assert.assertEquals("annotation count", 0, serialVersionUID.annotations().list().size());
+
+    Assert.assertEquals("method count of 'formdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData'", 1, formFieldMenuTestFormData.methods().list().size());
+    IMethod getTestBoolean = SdkAssert.assertMethodExist(formFieldMenuTestFormData, "getTestBoolean", new String[]{});
+    SdkAssert.assertMethodReturnTypeSignature(getTestBoolean, "Lformdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData$TestBoolean;");
+    Assert.assertEquals("annotation count", 0, getTestBoolean.annotations().list().size());
+
+    Assert.assertEquals("inner types count of 'FormFieldMenuTestFormData'", 1, formFieldMenuTestFormData.innerTypes().list().size());
+    // type TestBoolean
+    IType testBoolean = SdkAssert.assertTypeExists(formFieldMenuTestFormData, "TestBoolean");
+    SdkAssert.assertHasFlags(testBoolean, 9);
+    SdkAssert.assertHasSuperTypeSignature(testBoolean, "Lorg.eclipse.scout.rt.shared.data.form.fields.AbstractValueFieldData<Ljava.lang.Boolean;>;");
+    Assert.assertEquals("annotation count", 0, testBoolean.annotations().list().size());
+
+    // fields of TestBoolean
+    Assert.assertEquals("field count of 'formdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData$TestBoolean'", 1, testBoolean.fields().list().size());
+    IField serialVersionUID1 = SdkAssert.assertFieldExist(testBoolean, "serialVersionUID");
+    SdkAssert.assertHasFlags(serialVersionUID1, 26);
+    SdkAssert.assertFieldSignature(serialVersionUID1, "J");
+    Assert.assertEquals("annotation count", 0, serialVersionUID1.annotations().list().size());
+
+    Assert.assertEquals("method count of 'formdata.shared.ui.forms.formfieldmenu.FormFieldMenuTestFormData$TestBoolean'", 0, testBoolean.methods().list().size());
+
+    Assert.assertEquals("inner types count of 'TestBoolean'", 0, testBoolean.innerTypes().list().size());
+  }
+}
diff --git a/org.eclipse.scout.sdk.core.s/.project b/org.eclipse.scout.sdk.core.s/.project
index 3a79b9f..17c8427 100644
--- a/org.eclipse.scout.sdk.core.s/.project
+++ b/org.eclipse.scout.sdk.core.s/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.core.s/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.core.s/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.core.s/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.core.s/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.core.s/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.core.s/pom.xml b/org.eclipse.scout.sdk.core.s/pom.xml
index b570830..ff34c68 100644
--- a/org.eclipse.scout.sdk.core.s/pom.xml
+++ b/org.eclipse.scout.sdk.core.s/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/IScoutRuntimeTypes.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/IScoutRuntimeTypes.java
index b673281..1708b6f 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/IScoutRuntimeTypes.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/IScoutRuntimeTypes.java
@@ -65,13 +65,12 @@
   String AbstractColumn = "org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractColumn";
   String AbstractComposerField = "org.eclipse.scout.rt.client.ui.form.fields.composer.AbstractComposerField";
   String AbstractCompositeField = "org.eclipse.scout.rt.client.ui.form.fields.AbstractCompositeField";
-  String AbstractContentAssistField = "org.eclipse.scout.rt.client.ui.form.fields.smartfield.AbstractContentAssistField";
   String AbstractDataModel = "org.eclipse.scout.rt.shared.data.model.AbstractDataModel";
   String AbstractDataModelEntity = "org.eclipse.scout.rt.shared.data.model.AbstractDataModelEntity";
   String AbstractDateField = "org.eclipse.scout.rt.client.ui.form.fields.datefield.AbstractDateField";
   String AbstractDesktop = "org.eclipse.scout.rt.client.ui.desktop.AbstractDesktop";
   String AbstractDesktopExtension = "org.eclipse.scout.rt.client.ui.desktop.AbstractDesktopExtension";
-  String AbstractDynamicNlsTextProviderService = "org.eclipse.scout.rt.shared.services.common.text.AbstractDynamicNlsTextProviderService";
+  String AbstractDynamicNlsTextProviderService = "org.eclipse.scout.rt.platform.text.AbstractDynamicNlsTextProviderService";
   String AbstractExtension = "org.eclipse.scout.rt.shared.extension.AbstractExtension";
   String AbstractFileChooserField = "org.eclipse.scout.rt.client.ui.form.fields.filechooserfield.AbstractFileChooserField";
   String AbstractForm = "org.eclipse.scout.rt.client.ui.form.AbstractForm";
@@ -133,7 +132,6 @@
   String IColumn = "org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn";
   String ICompositeField = "org.eclipse.scout.rt.client.ui.form.fields.ICompositeField";
   String ICompositeFieldExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.ICompositeFieldExtension";
-  String IContentAssistFieldTable = "org.eclipse.scout.rt.client.ui.form.fields.smartfield.IContentAssistFieldTable";
   String IContextMenuOwner = "org.eclipse.scout.rt.client.ui.action.menu.root.IContextMenuOwner";
   String IDataModelAttribute = "org.eclipse.scout.rt.shared.data.model.IDataModelAttribute";
   String IDataModelEntity = "org.eclipse.scout.rt.shared.data.model.IDataModelEntity";
@@ -146,6 +144,7 @@
   String IFormExtension = "org.eclipse.scout.rt.client.extension.ui.form.IFormExtension";
   String IFormField = "org.eclipse.scout.rt.client.ui.form.fields.IFormField";
   String IFormFieldExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.IFormFieldExtension";
+  String IFormFieldMenu = "org.eclipse.scout.rt.client.ui.action.menu.form.fields.IFormFieldMenu";
   String IFormHandler = "org.eclipse.scout.rt.client.ui.form.IFormHandler";
   String IGroupBox = "org.eclipse.scout.rt.client.ui.form.fields.groupbox.IGroupBox";
   String IHtmlField = "org.eclipse.scout.rt.client.ui.form.fields.htmlfield.IHtmlField";
@@ -189,11 +188,13 @@
   String IViewButton = "org.eclipse.scout.rt.client.ui.action.view.IViewButton";
   String IWizard = "org.eclipse.scout.rt.client.ui.wizard.IWizard";
   String IWizardStep = "org.eclipse.scout.rt.client.ui.wizard.IWizardStep";
+  String IDataObject = "org.eclipse.scout.rt.platform.dataobject.IDataObject";
+  String IUuId = "org.eclipse.scout.rt.dataobject.id.IUuId";
 
   // other runtime classes
   String ACCESS = "org.eclipse.scout.rt.shared.services.common.security.ACCESS";
   String BEANS = "org.eclipse.scout.rt.platform.BEANS";
-  String TEXTS = "org.eclipse.scout.rt.shared.TEXTS";
+  String TEXTS = "org.eclipse.scout.rt.platform.text.TEXTS";
   String Logger = "org.slf4j.Logger";
   String CollectionUtility = "org.eclipse.scout.rt.platform.util.CollectionUtility";
   String VetoException = "org.eclipse.scout.rt.platform.exception.VetoException";
@@ -255,7 +256,6 @@
   String AbstractListBoxExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.listbox.AbstractListBoxExtension";
   String AbstractPlannerFieldExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.plannerfield.AbstractPlannerFieldExtension";
   String AbstractRadioButtonGroupExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.radiobuttongroup.AbstractRadioButtonGroupExtension";
-  String AbstractContentAssistFieldExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.smartfield.AbstractContentAssistFieldExtension";
   String AbstractTabBoxExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.tabbox.AbstractTabBoxExtension";
   String AbstractTableFieldExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.tablefield.AbstractTableFieldExtension";
   String AbstractTreeBoxExtension = "org.eclipse.scout.rt.client.extension.ui.form.fields.treebox.AbstractTreeBoxExtension";
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/model/ScoutModelHierarchy.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/model/ScoutModelHierarchy.java
index e0ba642..81f477b 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/model/ScoutModelHierarchy.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/model/ScoutModelHierarchy.java
@@ -100,8 +100,6 @@
     addContainerElement(IScoutRuntimeTypes.AbstractPlannerFieldExtension, IScoutRuntimeTypes.IPlanner);
     addContainerElement(IScoutRuntimeTypes.AbstractRadioButtonGroup, IScoutRuntimeTypes.IFormField);
     addContainerElement(IScoutRuntimeTypes.AbstractRadioButtonGroupExtension, IScoutRuntimeTypes.IFormField);
-    addContainerElement(IScoutRuntimeTypes.AbstractContentAssistField, IScoutRuntimeTypes.IContentAssistFieldTable);
-    addContainerElement(IScoutRuntimeTypes.AbstractContentAssistFieldExtension, IScoutRuntimeTypes.IContentAssistFieldTable);
     addContainerElement(IScoutRuntimeTypes.AbstractTabBox, IScoutRuntimeTypes.IMenu);
     addContainerElement(IScoutRuntimeTypes.AbstractTabBoxExtension, IScoutRuntimeTypes.IMenu);
     addContainerElement(IScoutRuntimeTypes.AbstractTableField, IScoutRuntimeTypes.ITable);
@@ -151,7 +149,6 @@
     addInterfaceSuperType(IScoutRuntimeTypes.IColumn, IScoutRuntimeTypes.ITypeWithClassId);
     addInterfaceSuperType(IScoutRuntimeTypes.ICompositeField, IScoutRuntimeTypes.IFormField);
     addInterfaceSuperType(IScoutRuntimeTypes.ICompositeFieldExtension, IScoutRuntimeTypes.IExtension);
-    addInterfaceSuperType(IScoutRuntimeTypes.IContentAssistFieldTable, IScoutRuntimeTypes.ITable);
     addInterfaceSuperType(IScoutRuntimeTypes.IDataModelAttribute, IScoutRuntimeTypes.IOrdered);
     addInterfaceSuperType(IScoutRuntimeTypes.IDataModelEntity, IScoutRuntimeTypes.IOrdered);
     addInterfaceSuperType(IScoutRuntimeTypes.IDateField, IScoutRuntimeTypes.IValueField);
@@ -180,7 +177,7 @@
     addInterfaceSuperType(IScoutRuntimeTypes.IPageWithTableExtension, IScoutRuntimeTypes.IExtension);
     addInterfaceSuperType(IScoutRuntimeTypes.IPlanner, IScoutRuntimeTypes.IContextMenuOwner);
     addInterfaceSuperType(IScoutRuntimeTypes.IPlannerField, IScoutRuntimeTypes.IFormField);
-    addInterfaceSuperType(IScoutRuntimeTypes.IProposalField, IScoutRuntimeTypes.IValueField);
+    addInterfaceSuperType(IScoutRuntimeTypes.IProposalField, IScoutRuntimeTypes.ISmartField);
     addInterfaceSuperType(IScoutRuntimeTypes.IRadioButton, IScoutRuntimeTypes.IButton);
     addInterfaceSuperType(IScoutRuntimeTypes.IRadioButtonGroup, IScoutRuntimeTypes.IValueField);
     addInterfaceSuperType(IScoutRuntimeTypes.IRadioButtonGroup, IScoutRuntimeTypes.ICompositeField);
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/project/ScoutProjectNewHelper.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/project/ScoutProjectNewHelper.java
index 14ab652..a7f8f0a 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/project/ScoutProjectNewHelper.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/project/ScoutProjectNewHelper.java
@@ -47,8 +47,9 @@
  */
 public final class ScoutProjectNewHelper {
 
-  public static final String SCOUT_ARCHETYPES_VERSION = "7.0.300-SNAPSHOT";
+  public static final String SCOUT_ARCHETYPES_VERSION = "8.0.0-SNAPSHOT";
   public static final String SCOUT_ARCHETYPES_HELLOWORLD_ARTIFACT_ID = "scout-helloworld-app";
+  public static final String SCOUT_ARCHETYPES_HELLOJS_ARTIFACT_ID = "scout-hellojs-app";
   public static final String SCOUT_ARCHETYPES_GROUP_ID = "org.eclipse.scout.archetypes";
 
   public static final Pattern DISPLAY_NAME_PATTERN = Pattern.compile("[^\"\\/<>=:]+");
@@ -72,15 +73,15 @@
 
     // validate input
     Validate.notNull(workingDir);
-    String groupIdMsg = getMavenNameErrorMessage(groupId, "groupId");
+    String groupIdMsg = getMavenGroupIdErrorMessage(groupId);
     if (groupIdMsg != null) {
       throw new IllegalArgumentException(groupIdMsg);
     }
-    String artifactIdMsg = getMavenNameErrorMessage(artifactId, "artifactId");
+    String artifactIdMsg = getMavenArtifactIdErrorMessage(artifactId);
     if (artifactIdMsg != null) {
       throw new IllegalArgumentException(artifactIdMsg);
     }
-    String displayNameMsg = getDisplayNameErrorMEssage(displayName);
+    String displayNameMsg = getDisplayNameErrorMessage(displayName);
     if (displayNameMsg != null) {
       throw new IllegalArgumentException(displayNameMsg);
     }
@@ -90,17 +91,12 @@
     if (StringUtils.isBlank(archetypeGroupId) || StringUtils.isBlank(archeTypeArtifactId) || StringUtils.isBlank(archetypeVersion)) {
       // use default
       archetypeGroupId = SCOUT_ARCHETYPES_GROUP_ID;
-      archeTypeArtifactId = SCOUT_ARCHETYPES_HELLOWORLD_ARTIFACT_ID;
+      archeTypeArtifactId = SCOUT_ARCHETYPES_HELLOJS_ARTIFACT_ID;
       archetypeVersion = SCOUT_ARCHETYPES_VERSION;
     }
 
-    String pck = null;
-    if (groupId.equals(artifactId)) {
-      pck = artifactId;
-    }
-    else {
-      pck = new StringBuilder(groupId).append('.').append(artifactId).toString();
-    }
+    String pck = getPackage(groupId, artifactId);
+    String artifactName = getArtifactName(artifactId);
 
     // create command
     String[] authKeysForWar = generateKeyPair();
@@ -122,6 +118,7 @@
         .withProperty("scoutAuthPublicKeyDev", authKeysForDev[1])
         .withProperty("scoutAuthPrivateKeyDev", authKeysForDev[0])
         .withProperty("javaVersion", javaVersion)
+        .withProperty("simpleArtifactName", artifactName)
         .withProperty("userName", CoreUtils.getUsername());
 
     // execute archetype generation
@@ -130,6 +127,21 @@
     postProcessRootPom(new File(workingDir, artifactId));
   }
 
+  static String getArtifactName(String artifactId) {
+    int pos = artifactId.lastIndexOf('.');
+    if (pos < 0 || pos >= artifactId.length() - 1) {
+      return artifactId;
+    }
+    return artifactId.substring(pos + 1);
+  }
+
+  static String getPackage(String groupId, String artifactId) {
+    if (artifactId.startsWith(groupId)) {
+      return artifactId;
+    }
+    return new StringBuilder(groupId).append('.').append(artifactId).toString();
+  }
+
   static String[] generateKeyPair() {
     try {
       return CoreUtils.generateKeyPair();
@@ -182,7 +194,7 @@
     transformer.transform(new DOMSource(document), result);
   }
 
-  public static String getDisplayNameErrorMEssage(String displayNameCandidate) {
+  public static String getDisplayNameErrorMessage(String displayNameCandidate) {
     if (StringUtils.isEmpty(displayNameCandidate)) {
       return "Display Name is not set.";
     }
@@ -192,17 +204,25 @@
     return null;
   }
 
-  public static String getMavenNameErrorMessage(String symbolicNameCandidate, String attribName) {
-    if (StringUtils.isEmpty(symbolicNameCandidate)) {
-      return attribName + " is not set.";
+  public static String getMavenArtifactIdErrorMessage(String artifactIdCandidate) {
+    return getMavenNameErrorMessage(artifactIdCandidate, "Artifact Id");
+  }
+
+  public static String getMavenGroupIdErrorMessage(String groupIdCandidate) {
+    return getMavenNameErrorMessage(groupIdCandidate, "Group Id");
+  }
+
+  private static String getMavenNameErrorMessage(String nameCandidate, String attributeName) {
+    if (StringUtils.isEmpty(nameCandidate)) {
+      return attributeName + " is not set.";
     }
-    if (!SYMBOLIC_NAME_PATTERN.matcher(symbolicNameCandidate).matches()) {
-      return "The " + attribName + " value is not valid.";
+    if (!SYMBOLIC_NAME_PATTERN.matcher(nameCandidate).matches()) {
+      return "The " + attributeName + " value is not valid.";
     }
     // reserved java keywords
-    String jkw = getContainingJavaKeyWord(symbolicNameCandidate);
+    String jkw = getContainingJavaKeyWord(nameCandidate);
     if (jkw != null) {
-      return "The " + attribName + " must not contain the Java keyword '" + jkw + "'.";
+      return "The " + attributeName + " must not contain the Java keyword '" + jkw + "'.";
     }
     return null;
   }
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/CompositeFormDataTypeSourceBuilder.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/CompositeFormDataTypeSourceBuilder.java
index 5b3ebff..1acad71 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/CompositeFormDataTypeSourceBuilder.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/dto/CompositeFormDataTypeSourceBuilder.java
@@ -10,8 +10,6 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.core.s.sourcebuilder.dto;
 
-import java.util.List;
-
 import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.eclipse.scout.sdk.core.model.api.Flags;
 import org.eclipse.scout.sdk.core.model.api.IJavaEnvironment;
@@ -46,87 +44,107 @@
   @Override
   protected void createContent() {
     super.createContent();
-    createCompositeFieldFormData(getModelType());
+    processCompositeField(getModelType());
   }
 
-  private void createCompositeFieldFormData(IType compositeType) {
-    List<IType> innerTypes = compositeType.innerTypes().withInstanceOf(IScoutRuntimeTypes.IFormField).list();
-    for (IType formField : innerTypes) {
-      boolean fieldExtendsTemplateField = false;
+  protected void processFormField(IType formField) {
+    FormDataAnnotationDescriptor fieldAnnotation = DtoUtils.getFormDataAnnotationDescriptor(formField);
+    if (FormDataAnnotationDescriptor.isIgnore(fieldAnnotation)) {
+      return;
+    }
 
-      if (Flags.isPublic(formField.flags())) {
-        FormDataAnnotationDescriptor fieldAnnotation = DtoUtils.getFormDataAnnotationDescriptor(formField);
+    boolean fieldExtendsTemplateField = false;
+    boolean isCompositeField = formField.isInstanceOf(IScoutRuntimeTypes.ICompositeField);
+    if (FormDataAnnotationDescriptor.isCreate(fieldAnnotation)) {
+      IType formDataType = fieldAnnotation.getFormDataType();
+      String formDataTypeName = null;
+      if (formDataType == null) {
+        formDataTypeName = DtoUtils.removeFieldSuffix(formField.elementName());
+      }
+      else {
+        formDataTypeName = formDataType.elementName();
+      }
 
-        if (FormDataAnnotationDescriptor.isCreate(fieldAnnotation)) {
-          IType formDataType = fieldAnnotation.getFormDataType();
-          String formDataTypeName = null;
-          if (formDataType == null) {
-            formDataTypeName = DtoUtils.removeFieldSuffix(formField.elementName());
+      ITypeSourceBuilder fieldSourceBuilder = null;
+      if (fieldAnnotation.getSuperType().isInstanceOf(IScoutRuntimeTypes.AbstractTableFieldBeanData)) {
+        // fill table bean
+        fieldSourceBuilder = new TableFieldBeanFormDataSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
+      }
+      else if (isCompositeField && !formField.isInstanceOf(IScoutRuntimeTypes.IValueField)) {
+        // field extends a field template.
+        fieldExtendsTemplateField = true;
+        fieldSourceBuilder = new CompositeFormDataTypeSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
+      }
+      else {
+        fieldSourceBuilder = new FormDataTypeSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
+
+        // special case if a property has the same name as a form field -> show warning
+        for (IMethodSourceBuilder msb : getMethods()) {
+          String methodName = CoreUtils.getGetterMethodPrefix(msb.getReturnTypeSignature()) + formDataTypeName;
+          if (methodName.equals(msb.getElementName())) {
+            fieldSourceBuilder.setComment(CommentSourceBuilderFactory.createCustomCommentBuilder("TODO [everyone] Duplicate names '" + formDataTypeName + "'. Rename property or form field."));
+            break;
           }
-          else {
-            formDataTypeName = formDataType.elementName();
-          }
-
-          ITypeSourceBuilder fieldSourceBuilder = null;
-          if (fieldAnnotation.getSuperType().isInstanceOf(IScoutRuntimeTypes.AbstractTableFieldBeanData)) {
-            // fill table bean
-            fieldSourceBuilder = new TableFieldBeanFormDataSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
-          }
-          else if (formField.isInstanceOf(IScoutRuntimeTypes.ICompositeField) && !formField.isInstanceOf(IScoutRuntimeTypes.IValueField)) {
-            // field extends a field template.
-            fieldExtendsTemplateField = true;
-            fieldSourceBuilder = new CompositeFormDataTypeSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
-          }
-          else {
-            fieldSourceBuilder = new FormDataTypeSourceBuilder(formField, fieldAnnotation, getTargetPackage(), formDataTypeName, getJavaEnvironment());
-
-            // special case if a property has the same name as a form field -> show warning
-            for (IMethodSourceBuilder msb : getMethods()) {
-              String methodName = CoreUtils.getGetterMethodPrefix(msb.getReturnTypeSignature()) + formDataTypeName;
-              if (methodName.equals(msb.getElementName())) {
-                fieldSourceBuilder.setComment(CommentSourceBuilderFactory.createCustomCommentBuilder("TODO [everyone] Duplicate names '" + formDataTypeName + "'. Rename property or form field."));
-                break;
-              }
-            }
-          }
-          fieldSourceBuilder.setFlags(fieldSourceBuilder.getFlags() | Flags.AccStatic);
-          addSortedType(SortedMemberKeyFactory.createTypeFormDataPropertyKey(fieldSourceBuilder), fieldSourceBuilder);
-
-          // add interfaces specified on the formdata annotation
-          DtoUtils.addFormDataAdditionalInterfaces(fieldAnnotation, fieldSourceBuilder, getJavaEnvironment());
-
-          // Scout RT requires the first char to be upper-case for a getter.
-          // See org.eclipse.scout.rt.platform.reflect.FastBeanUtility.BEAN_METHOD_PAT.
-          String methodName = CoreUtils.ensureStartWithUpperCase(formDataTypeName);
-
-          // getter for field
-          IMethodSourceBuilder getterBuilder = new MethodSourceBuilder("get" + methodName);
-          getterBuilder.setFlags(Flags.AccPublic);
-          getterBuilder.setReturnTypeSignature(Signature.createTypeSignature(formDataTypeName, false));
-          getterBuilder.setBody(new RawSourceBuilder(new StringBuilder("return getFieldByClass(").append(formDataTypeName).append(SuffixConstants.SUFFIX_class).append(");").toString()));
-          addSortedMethod(SortedMemberKeyFactory.createMethodPropertyKey(getterBuilder), getterBuilder);
-        }
-        else if (FormDataAnnotationDescriptor.isIgnore(fieldAnnotation)) {
-          continue;
-        }
-
-        if (formField.isInstanceOf(IScoutRuntimeTypes.ICompositeField) && !fieldExtendsTemplateField) {
-          createCompositeFieldFormData(formField);
         }
       }
+      fieldSourceBuilder.setFlags(fieldSourceBuilder.getFlags() | Flags.AccStatic);
+      addSortedType(SortedMemberKeyFactory.createTypeFormDataPropertyKey(fieldSourceBuilder), fieldSourceBuilder);
+
+      // add interfaces specified on the formdata annotation
+      DtoUtils.addFormDataAdditionalInterfaces(fieldAnnotation, fieldSourceBuilder, getJavaEnvironment());
+
+      // Scout RT requires the first char to be upper-case for a getter.
+      // See org.eclipse.scout.rt.platform.reflect.FastBeanUtility.BEAN_METHOD_PAT.
+      String methodName = CoreUtils.ensureStartWithUpperCase(formDataTypeName);
+
+      // getter for field
+      IMethodSourceBuilder getterBuilder = new MethodSourceBuilder("get" + methodName);
+      getterBuilder.setFlags(Flags.AccPublic);
+      getterBuilder.setReturnTypeSignature(Signature.createTypeSignature(formDataTypeName, false));
+      getterBuilder.setBody(new RawSourceBuilder(new StringBuilder("return getFieldByClass(").append(formDataTypeName).append(SuffixConstants.SUFFIX_class).append(");").toString()));
+      addSortedMethod(SortedMemberKeyFactory.createMethodPropertyKey(getterBuilder), getterBuilder);
     }
 
+    if (isCompositeField && !fieldExtendsTemplateField) {
+      processCompositeField(formField);
+    }
+  }
+
+  protected void processTableExtension(IType tableExtension) {
+    String rowDataName = DtoUtils.getRowDataName(tableExtension.elementName());
+    TableRowDataTypeSourceBuilder rowDataSourceBuilder = new TableRowDataTypeSourceBuilder(rowDataName, tableExtension, tableExtension, getJavaEnvironment());
+    addSortedType(SortedMemberKeyFactory.createTypeFormDataPropertyKey(rowDataSourceBuilder), rowDataSourceBuilder);
+    DtoUtils.addDtoExtendsAnnotation(rowDataSourceBuilder, tableExtension);
+  }
+
+  protected void processCompositeField(IType compositeType) {
+    // nested form fields
+    compositeType.innerTypes()
+        .withFlags(Flags.AccPublic)
+        .withInstanceOf(IScoutRuntimeTypes.IFormField)
+        .list()
+        .forEach(this::processFormField);
+
+    // step into formFieldMenus (special menu that may contain more form fields)
+    compositeType.innerTypes()
+        .withFlags(Flags.AccPublic)
+        .withInstanceOf(IScoutRuntimeTypes.IFormFieldMenu)
+        .list()
+        .forEach(this::processCompositeField);
+
     // step into extensions
-    for (IType formFieldExtension : compositeType.innerTypes().withInstanceOf(IScoutRuntimeTypes.ICompositeFieldExtension).list()) {
-      createCompositeFieldFormData(formFieldExtension);
-    }
+    compositeType.innerTypes()
+        .withFlags(Flags.AccPublic)
+        .withInstanceOf(IScoutRuntimeTypes.ICompositeFieldExtension)
+        .list()
+        .forEach(this::processCompositeField);
 
     // step into table extensions of table-fields
-    for (IType tableExtension : compositeType.innerTypes().withRecursiveInnerTypes(true).withInstanceOf(IScoutRuntimeTypes.ITableExtension).list()) {
-      String rowDataName = DtoUtils.getRowDataName(tableExtension.elementName());
-      TableRowDataTypeSourceBuilder rowDataSourceBuilder = new TableRowDataTypeSourceBuilder(rowDataName, tableExtension, tableExtension, getJavaEnvironment());
-      addSortedType(SortedMemberKeyFactory.createTypeFormDataPropertyKey(rowDataSourceBuilder), rowDataSourceBuilder);
-      DtoUtils.addDtoExtendsAnnotation(rowDataSourceBuilder, tableExtension);
-    }
+    compositeType.innerTypes()
+        .withFlags(Flags.AccPublic)
+        .withRecursiveInnerTypes(true)
+        .withInstanceOf(IScoutRuntimeTypes.ITableExtension)
+        .list()
+        .forEach(this::processTableExtension);
   }
 }
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/form/FormSourceBuilder.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/form/FormSourceBuilder.java
index 4ca24f9..e0ec754 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/form/FormSourceBuilder.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/form/FormSourceBuilder.java
@@ -194,7 +194,7 @@
 
   protected HandlerMethodBodySourceBuilder createExecLoadStoreBody(IMethodSourceBuilder methodBuilder, ITypeSourceBuilder handlerBuilder) {
     HandlerMethodBodySourceBuilder handlerMehodBodySourceBuilder = new HandlerMethodBodySourceBuilder(methodBuilder, handlerBuilder);
-    handlerMehodBodySourceBuilder.setFormDataStaticSignature(getFormDataSignature());
+    handlerMehodBodySourceBuilder.setFormDataSignature(getFormDataSignature());
     handlerMehodBodySourceBuilder.setServiceIfcSignature(getServiceIfcSignature());
     if (MODIFY_HANDLER_NAME.equals(handlerBuilder.getElementName())) {
       handlerMehodBodySourceBuilder.setPermissionSignature(getUpdatePermissionSignature());
@@ -220,8 +220,7 @@
     public static final String FORM_DATA_VAR_NAME = "formData";
 
     private String m_serviceIfcSignature;
-    private String m_formDataStaticSignature;
-    private String m_formDataDynamicSignature;
+    private String m_formDataSignature;
     private String m_permissionSignature;
     private ISourceBuilder m_methodArgSourceBuilder;
     private ISourceBuilder m_permissionArgSourceBuilder;
@@ -243,25 +242,19 @@
       final boolean isLoad = LOAD_METHOD_NAME.equals(getHandlerMethodBuilder().getElementName());
 
       if (getServiceIfcSignature() != null) {
-        final boolean isDtoAvailable = getFormDataStaticSignature() != null;
         final String serviceInterfaceName = validator.useSignature(getServiceIfcSignature());
-
-        String formDataStaticTypeName = null;
-        String formDataDynamicTypeName = null;
-        if (isDtoAvailable) {
-          formDataStaticTypeName = validator.useSignature(getFormDataStaticSignature());
-          formDataDynamicTypeName = validator.useSignature(getFormDataDynamicSignature());
-        }
         source.append(serviceInterfaceName).append(' ').append(SERVICE_VAR_NAME).append(" = ");
         source.append(validator.useSignature(Signature.createTypeSignature(IScoutRuntimeTypes.BEANS))).append(".get(");
         source.append(serviceInterfaceName).append(SuffixConstants.SUFFIX_class).append(");").append(lineDelimiter);
 
+        final boolean isDtoAvailable = getFormDataSignature() != null;
         if (isDtoAvailable) {
-          source.append(formDataStaticTypeName).append(' ').append(FORM_DATA_VAR_NAME).append(" = ");
+          String formDataTypeName = validator.useSignature(getFormDataSignature());
+          source.append(formDataTypeName).append(' ').append(FORM_DATA_VAR_NAME).append(" = ");
           if (!isLoad || isCreateFormDataInLoad()) {
             ISourceBuilder formDataInstanceCreationBuilder = getFormDataInstanceCreationBuilder();
             if (formDataInstanceCreationBuilder == null) {
-              source.append("new ").append(formDataDynamicTypeName).append("();").append(lineDelimiter);
+              source.append("new ").append(formDataTypeName).append("();").append(lineDelimiter);
             }
             else {
               formDataInstanceCreationBuilder.createSource(source, lineDelimiter, context, validator);
@@ -318,23 +311,12 @@
       m_serviceIfcSignature = serviceIfcSignature;
     }
 
-    public String getFormDataStaticSignature() {
-      return m_formDataStaticSignature;
+    public String getFormDataSignature() {
+      return m_formDataSignature;
     }
 
-    public void setFormDataStaticSignature(String formDataStaticSignature) {
-      m_formDataStaticSignature = formDataStaticSignature;
-    }
-
-    public String getFormDataDynamicSignature() {
-      if (m_formDataDynamicSignature == null) {
-        return m_formDataStaticSignature;
-      }
-      return m_formDataDynamicSignature;
-    }
-
-    public void setFormDataDynamicSignature(String formDataDynamicSignature) {
-      m_formDataDynamicSignature = formDataDynamicSignature;
+    public void setFormDataSignature(String formDataSignature) {
+      m_formDataSignature = formDataSignature;
     }
 
     public String getPermissionSignature() {
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/jaxws/WebServiceClientSourceBuilder.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/jaxws/WebServiceClientSourceBuilder.java
index c5e1f68..9060e1f 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/jaxws/WebServiceClientSourceBuilder.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/sourcebuilder/jaxws/WebServiceClientSourceBuilder.java
@@ -28,6 +28,7 @@
 import org.eclipse.scout.sdk.core.sourcebuilder.compilationunit.AbstractEntitySourceBuilder;
 import org.eclipse.scout.sdk.core.sourcebuilder.method.IMethodSourceBuilder;
 import org.eclipse.scout.sdk.core.sourcebuilder.method.MethodBodySourceBuilderFactory;
+import org.eclipse.scout.sdk.core.sourcebuilder.method.MethodSourceBuilder;
 import org.eclipse.scout.sdk.core.sourcebuilder.method.MethodSourceBuilderFactory;
 import org.eclipse.scout.sdk.core.sourcebuilder.methodparameter.IMethodParameterSourceBuilder;
 import org.eclipse.scout.sdk.core.sourcebuilder.type.ITypeSourceBuilder;
@@ -121,7 +122,6 @@
   }
 
   protected ITypeSourceBuilder createUrlPropertyType() {
-
     ITypeSourceBuilder urlProperty = new TypeSourceBuilder(getBaseName() + ISdkProperties.SUFFIX_WS_URL_PROPERTY);
     urlProperty.setFlags(Flags.AccPublic | Flags.AccStatic);
     urlProperty.setSuperTypeSignature(Signature.createTypeSignature(IScoutRuntimeTypes.AbstractStringConfigProperty));
@@ -130,6 +130,12 @@
     getKey.setBody(new RawSourceBuilder("return " + CoreUtils.toStringLiteral(getUrlPropertyName()) + ';'));
     urlProperty.addMethod(getKey);
 
+    IMethodSourceBuilder description = new MethodSourceBuilder("description");
+    description.setFlags(Flags.AccPublic);
+    description.setReturnTypeSignature(Signature.createTypeSignature(String.class.getName()));
+    description.setBody(new RawSourceBuilder("return null; " + CoreUtils.getCommentBlock("documentation")));
+    urlProperty.addMethod(description);
+
     return urlProperty;
   }
 
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/CoreScoutUtils.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/CoreScoutUtils.java
index 138d70a..008ac31 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/CoreScoutUtils.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/CoreScoutUtils.java
@@ -128,7 +128,7 @@
    *          the declaring type.
    * @return the new order value that should be used.
    */
-  @SuppressWarnings("squid:S2583") // second arg is required so that the compiler is happy
+  @SuppressWarnings("squid:S2589") // second arg is required so that the compiler is happy
   public static double getNewViewOrderValue(IType declaringType, String orderDefinitionType, int pos) {
     IType[] siblings = findSiblings(declaringType, pos, orderDefinitionType);
     Double orderValueBefore = getOrderAnnotationValue(siblings[0]);
@@ -219,18 +219,22 @@
     double prevIntHigh = Math.max(lowCeil, highFloor);
 
     // special case for stepwise increase
-    if (low % ISdkProperties.VIEW_ORDER_ANNOTATION_VALUE_STEP == 0 && low + ISdkProperties.VIEW_ORDER_ANNOTATION_VALUE_STEP < high) {
+    if ((int) low % ISdkProperties.VIEW_ORDER_ANNOTATION_VALUE_STEP == 0 && low + ISdkProperties.VIEW_ORDER_ANNOTATION_VALUE_STEP < high) {
       return low + ISdkProperties.VIEW_ORDER_ANNOTATION_VALUE_STEP;
     }
 
-    if (lowFloor != highFloor && ((lowFloor != low && highFloor != high) || dif > 1.0)) {
+    if (isDoubleDifferent(lowFloor, highFloor) && ((isDoubleDifferent(lowFloor, low) && isDoubleDifferent(highFloor, high)) || dif > 1.0)) {
       // integer value possible
-      double intDif = prevIntHigh - nextIntLow;
-      if (intDif == 1.0) {
+      final double intDif = prevIntHigh - nextIntLow;
+      if (!isDoubleDifferent(intDif, 1.0)) {
         return prevIntHigh;
       }
       return nextIntLow + Math.floor(intDif / 2.0);
     }
     return low + (dif / 2);
   }
+
+  static boolean isDoubleDifferent(final double d1, final double d2) {
+    return CoreUtils.isDoubleDifferent(d1, d2, 0.0000000001);
+  }
 }
diff --git a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/DtoUtils.java b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/DtoUtils.java
index 29a4a43..82b4c93 100644
--- a/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/DtoUtils.java
+++ b/org.eclipse.scout.sdk.core.s/src/main/java/org/eclipse/scout/sdk/core/s/util/DtoUtils.java
@@ -64,8 +64,8 @@
   }
 
   /**
-   * Parses the possible available {@link IScoutRuntimeTypes#ColumnData} annotation on the given type. If the type is
-   * not annotated, <code>null</code> is returned.
+   * Parses the possible available {@link IScoutRuntimeTypes#ColumnData} annotation on the given type. If the type is not
+   * annotated, <code>null</code> is returned.
    *
    * @since 3.10.0-M5
    */
@@ -89,6 +89,12 @@
     return sdkColumnCommand;
   }
 
+  /**
+   * Gets the data type signature of the specified column type.
+   * 
+   * @param columnContainer
+   * @return
+   */
   public static String getColumnValueTypeSignature(IType columnContainer) {
     List<String> resolvedTypeParamValues = CoreUtils.getResolvedTypeParamValueSignature(columnContainer, IScoutRuntimeTypes.IColumn, IScoutRuntimeTypes.TYPE_PARAM_COLUMN__VALUE_TYPE);
     if (resolvedTypeParamValues.isEmpty()) {
@@ -118,8 +124,8 @@
   }
 
   /**
-   * @return Returns the form field data/form data for the given form field/form or <code>null</code> if it does not
-   *         have one.
+   * @return Returns the form field data/form data for the given form field/form or <code>null</code> if it does not have
+   *         one.
    * @since 3.8.2
    */
   private static IType getFormDataType(IType modelType) {
@@ -144,9 +150,8 @@
   }
 
   /**
-   * @return Returns the form field data/form data for the given form field/form or <code>null</code> if it does not
-   *         have one. The method walks recursively through the list of declaring classes until it has reached a primary
-   *         type.
+   * @return Returns the form field data/form data for the given form field/form or <code>null</code> if it does not have
+   *         one. The method walks recursively through the list of declaring classes until it has reached a primary type.
    * @since 3.8.2
    */
   private static IType getFormFieldDataPrimaryTypeRec(IType recursiveDeclaringType) {
diff --git a/org.eclipse.scout.sdk.core.test/.project b/org.eclipse.scout.sdk.core.test/.project
index 8e6a1e3..637ee84 100644
--- a/org.eclipse.scout.sdk.core.test/.project
+++ b/org.eclipse.scout.sdk.core.test/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.core.resources.prefs b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.core.resources.prefs
index 2da41a5..a658c0b 100644
--- a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.core.resources.prefs
+++ b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.core.resources.prefs
@@ -5,6 +5,5 @@
 encoding//src/main/resources=UTF-8
 encoding//src/main/shared=UTF-8
 encoding//src/test/java=UTF-8
-encoding//src/test/resources=UTF-8
 encoding/<project>=UTF-8
 encoding/files=UTF-8
diff --git a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.core.test/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.core.test/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.core.test/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.core.test/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.core.test/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.core.test/pom.xml b/org.eclipse.scout.sdk.core.test/pom.xml
index b6309b2..4087a8e 100644
--- a/org.eclipse.scout.sdk.core.test/pom.xml
+++ b/org.eclipse.scout.sdk.core.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/CoreUtilsTest.java b/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/CoreUtilsTest.java
index 211b130..3d640ae 100644
--- a/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/CoreUtilsTest.java
+++ b/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/CoreUtilsTest.java
@@ -10,6 +10,9 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.core.util;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
@@ -603,4 +606,41 @@
       CoreUtils.deleteDirectory(targetDirectory.toFile());
     }
   }
+
+  @Test
+  public void testIsDoubleDifferent() {
+    assertTrue(CoreUtils.isDoubleDifferent(1.1113d, 1.1115d, 0.0001d));
+    assertTrue(CoreUtils.isDoubleDifferent(1.0d, 2.0d, 0.9d));
+    assertFalse(CoreUtils.isDoubleDifferent(1.111d, 1.112d, 0.01d));
+    assertFalse(CoreUtils.isDoubleDifferent(-0.0d, 0.0d, 0.000000001d));
+    assertFalse(CoreUtils.isDoubleDifferent(-0.0d, 0.0d, 1.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(-0.0d, 0.0d, 0.0d));
+
+    // min/max values
+    assertTrue(CoreUtils.isDoubleDifferent(-Double.MAX_VALUE, Double.MAX_VALUE, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.MAX_VALUE, Double.MIN_VALUE, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.MIN_VALUE, Double.MAX_VALUE, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.MAX_VALUE, -Double.MAX_VALUE, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.MIN_VALUE, -Double.MIN_VALUE, 0.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.MAX_VALUE, Double.MAX_VALUE, 10000.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.MIN_VALUE, Double.MIN_VALUE, 10000.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(-Double.MAX_VALUE, -Double.MAX_VALUE, 10000.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(-Double.MIN_VALUE, -Double.MIN_VALUE, 10000.0d));
+
+    // infinity comparisons
+    assertFalse(CoreUtils.isDoubleDifferent(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, 10000.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.NEGATIVE_INFINITY, 100.0d, 10000.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.POSITIVE_INFINITY, 100.0d, 10000.0d));
+
+    // NaN comparisons
+    assertTrue(CoreUtils.isDoubleDifferent(1.0d, Double.NaN, 1.0d));
+    assertTrue(CoreUtils.isDoubleDifferent(Double.NaN, 1.0d, 1.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.NaN, Double.NaN, 1.0d));
+    assertFalse(CoreUtils.isDoubleDifferent(Float.NaN, Float.NaN, Float.POSITIVE_INFINITY));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.NaN, Double.NaN, Double.POSITIVE_INFINITY));
+    assertFalse(CoreUtils.isDoubleDifferent(Double.NaN, Double.NaN, Double.NEGATIVE_INFINITY));
+  }
 }
diff --git a/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/SdkLogTest.java b/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/SdkLogTest.java
index f31a6f4..4fb7204 100644
--- a/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/SdkLogTest.java
+++ b/org.eclipse.scout.sdk.core.test/src/test/java/org/eclipse/scout/sdk/core/util/SdkLogTest.java
@@ -98,7 +98,7 @@
 
   @Test
   public void testLogOfObjectWithToStringThrowingException() throws Exception {
-    runWithPrivateLogger(new ILogTestRunner() {
+    runWithPrivateLogger(Level.WARNING, new ILogTestRunner() {
       @Override
       public void run(StringBuilder logContent) throws Exception {
         SdkLog.error("Msg: {}", new ClassWithToStringThrowingNpeFixture());
@@ -110,7 +110,7 @@
 
   @Test
   public void testLog() throws Exception {
-    runWithPrivateLogger(new ILogTestRunner() {
+    runWithPrivateLogger(Level.WARNING, new ILogTestRunner() {
       @Override
       public void run(StringBuilder logContent) {
         SdkLog.warning("hello");
@@ -161,12 +161,14 @@
     void run(StringBuilder logContent) throws Exception;
   }
 
-  private static void runWithPrivateLogger(ILogTestRunner runnable) throws Exception {
+  private static void runWithPrivateLogger(Level initialLevel, ILogTestRunner runnable) throws Exception {
     // lock on console to ensure no other thread writes to the console while we are testing (in case tests are running in parallel)
     synchronized (SdkConsole.class) {
       ISdkConsoleSpi backup = SdkConsole.getConsoleSpi();
+      Level levelBackup = SdkLog.getLogLevel();
       try {
         final StringBuilder logContent = new StringBuilder();
+        SdkLog.setLogLevel(initialLevel);
         SdkConsole.setConsoleSpi(new ISdkConsoleSpi() {
 
           @Override
@@ -192,6 +194,7 @@
 
       }
       finally {
+        SdkLog.setLogLevel(levelBackup);
         SdkConsole.setConsoleSpi(backup);
       }
     }
diff --git a/org.eclipse.scout.sdk.core/.project b/org.eclipse.scout.sdk.core/.project
index f2b9825..87f84ec 100644
--- a/org.eclipse.scout.sdk.core/.project
+++ b/org.eclipse.scout.sdk.core/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.core/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.core/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.core/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.core/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.core/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.core/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.core/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.core/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.core/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.core/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.core/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.core/pom.xml b/org.eclipse.scout.sdk.core/pom.xml
index 921eb78..828a030 100644
--- a/org.eclipse.scout.sdk.core/pom.xml
+++ b/org.eclipse.scout.sdk.core/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/AstCompiler.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/AstCompiler.java
index bae2695..68de989 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/AstCompiler.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/AstCompiler.java
@@ -34,12 +34,13 @@
  */
 public class AstCompiler extends org.eclipse.jdt.internal.compiler.Compiler {
 
+  private static final int MAJOR_VERSION_10 = 54;
   static final CompilerOptions opts;
   static final Map<String, String> optsMap;
   static {
     opts = new CompilerOptions();
     opts.produceDebugAttributes = 0;
-    opts.complianceLevel = ClassFileConstants.JDK1_9;
+    opts.complianceLevel = ((long) MAJOR_VERSION_10 << 16) + ClassFileConstants.MINOR_VERSION_0; /* JDK10. can be removed as soon as ECJ 3.14 is used as compile dependency */
     opts.originalComplianceLevel = opts.complianceLevel;
     opts.sourceLevel = opts.complianceLevel;
     opts.originalSourceLevel = opts.complianceLevel;
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/ClasspathBuilder.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/ClasspathBuilder.java
index 564f54b..cb60eba 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/ClasspathBuilder.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/model/spi/internal/ClasspathBuilder.java
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.core.model.spi.internal;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -43,6 +44,8 @@
 
   private static final Map<Path, JreInfo> JRE_INFOS = new ConcurrentHashMap<>();
 
+  private static final ClasspathAccessor CLASSPATH_ACCESSOR;
+
   private final Classpath[] m_full;
   private final List<Classpath> m_bootClasspath;
   private final Collection<Classpath> m_classpath;
@@ -177,6 +180,39 @@
     if (f == null || !Files.isReadable(f)) {
       return null;
     }
-    return FileSystem.getClasspath(f.toString(), encoding, isSourceOnly, null, null, null);
+
+    try {
+      return CLASSPATH_ACCESSOR.toClasspath(f, isSourceOnly, encoding);
+    }
+    catch (final IllegalArgumentException | ReflectiveOperationException e) {
+      throw new SdkException(e);
+    }
+  }
+
+  private interface ClasspathAccessor {
+    Classpath toClasspath(final Path f, final boolean isSourceOnly, final String encoding) throws IllegalAccessException, InvocationTargetException;
+  }
+
+  static {
+    ClasspathAccessor accessor = (f, isSourceOnly, encoding) -> {
+      throw new SdkException("getClasspath method on FileSystem.class could not be found.");
+    };
+    try {
+      // try ECJ 3.14 version first
+      // this version includes an additional parameter 'release'.
+      final Method getClasspath = FileSystem.class.getMethod("getClasspath", String.class, String.class, boolean.class, AccessRuleSet.class, String.class, Map.class, String.class);
+      accessor = (f, isSourceOnly, encoding) -> (Classpath) getClasspath.invoke(null, f.toString(), encoding, isSourceOnly, null, null, null, null);
+    }
+    catch (final NoSuchMethodException nsme) {
+      SdkLog.debug("Fallback to legacy ECJ.", nsme);
+      try {
+        final Method getClasspath = FileSystem.class.getMethod("getClasspath", String.class, String.class, boolean.class, AccessRuleSet.class, String.class, Map.class);
+        accessor = (f, isSourceOnly, encoding) -> (Classpath) getClasspath.invoke(null, f.toString(), encoding, isSourceOnly, null, null, null);
+      }
+      catch (final NoSuchMethodException e) {
+        SdkLog.error("No supported ECJ found.", e);
+      }
+    }
+    CLASSPATH_ACCESSOR = accessor;
   }
 }
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java
index ef288c5..e881d93 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java
@@ -87,29 +87,7 @@
    * @return an array builder that creates a { ... } expression that can be used for annotation values of type array
    */
   public static ISourceBuilder createArray(final Collection<? extends ISourceBuilder> elements, final boolean formatWithNewlines) {
-    return new ISourceBuilder() {
-      @Override
-      public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) {
-        //use newlines on multi-dimensional arrays and annotation arrays only
-        String blockSeparator = formatWithNewlines ? lineDelimiter : " ";
-        source.append('{');
-        source.append(blockSeparator);
-        int n = elements.size();
-        if (n > 0) {
-          int i = 0;
-          for (ISourceBuilder element : elements) {
-            if (i > 0) {
-              source.append(',');
-              source.append(blockSeparator);
-            }
-            element.createSource(source, lineDelimiter, context, validator);
-            i++;
-          }
-          source.append(blockSeparator);
-        }
-        source.append('}');
-      }
-    };
+    return new ArrayExpressionSourceBuilder(elements, formatWithNewlines);
   }
 
   public static ISourceBuilder createFromMetaValue(final IMetaValue metaValue) {
@@ -161,4 +139,40 @@
         return new RawSourceBuilder("UNKNOWN(" + metaValue.type() + ", " + metaValue + ")");
     }
   }
+
+  public static class ArrayExpressionSourceBuilder implements ISourceBuilder {
+    private final boolean m_formatWithNewlines;
+    private final Collection<? extends ISourceBuilder> m_elements;
+
+    public ArrayExpressionSourceBuilder(Collection<? extends ISourceBuilder> elements, boolean formatWithNewlines) {
+      m_formatWithNewlines = formatWithNewlines;
+      m_elements = elements;
+    }
+
+    public Collection<? extends ISourceBuilder> getElements() {
+      return m_elements;
+    }
+
+    @Override
+    public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) {
+      //use newlines on multi-dimensional arrays and annotation arrays only
+      String blockSeparator = m_formatWithNewlines ? lineDelimiter : " ";
+      source.append('{');
+      source.append(blockSeparator);
+      int n = m_elements.size();
+      if (n > 0) {
+        int i = 0;
+        for (ISourceBuilder element : m_elements) {
+          if (i > 0) {
+            source.append(',');
+            source.append(blockSeparator);
+          }
+          element.createSource(source, lineDelimiter, context, validator);
+          i++;
+        }
+        source.append(blockSeparator);
+      }
+      source.append('}');
+    }
+  }
 }
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/util/CoreUtils.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/util/CoreUtils.java
index 829dfea..49b9b7b 100644
--- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/util/CoreUtils.java
+++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/util/CoreUtils.java
@@ -118,6 +118,34 @@
   }
 
   /**
+   * Compares the given double values. Returns {@code true} if the difference between the two double values is bigger than
+   * the given delta.<br>
+   * <br>
+   * Special cases:
+   * <ul>
+   * <li>{@code -0} and {@code +0} are considered to be equal even though
+   * {@code Double.valueOf(0d).equals(Double.valueOf(-0d))} returns {@code false}!</li>
+   * <li>{@link Double#NaN} and {@link Double#NaN} are considered to be equal even though {@code Double.NaN == Double.NaN}
+   * returns {@code false}!</li>
+   * </ul>
+   *
+   * @param d1
+   *          The first double value
+   * @param d2
+   *          The second double value
+   * @param delta
+   *          The difference between the two to be considered equal.
+   * @return {@code false} if the difference between the two values is less or equal to the given delta.
+   */
+  public static boolean isDoubleDifferent(final double d1, final double d2, final double delta) {
+    if (Double.compare(d1, d2) == 0) {
+      // handles NaN, Double.POSITIVE_INFINITY and Double.NEGATIVE_INFINITY
+      return false;
+    }
+    return !(Math.abs(d1 - d2) <= Math.abs(delta));
+  }
+
+  /**
    * Creates a new key pair (private and public key) compatible with the Scout Runtime.<br>
    * <b>This method must behave exactly like the one implemented in
    * org.eclipse.scout.rt.platform.security.SecurityUtility.generateKeyPair().</b>
@@ -280,8 +308,8 @@
   }
 
   /**
-   * Converts the given string into a string literal with leading and ending double-quotes including escaping of the
-   * given string.<br>
+   * Converts the given string into a string literal with leading and ending double-quotes including escaping of the given
+   * string.<br>
    * This is the inverse function of {@link #fromStringLiteral(String)}.
    *
    * @param s
@@ -458,8 +486,8 @@
   }
 
   /**
-   * If the given name is a reserved java keyword a suffix is added to ensure it is a valid name to use e.g. for
-   * variables or parameters.
+   * If the given name is a reserved java keyword a suffix is added to ensure it is a valid name to use e.g. for variables
+   * or parameters.
    *
    * @param parameterName
    *          The original name.
@@ -707,8 +735,8 @@
    * @param env
    *          The context to search in.
    * @param typeToSearchFqn
-   *          The fully qualified name to search. See {@link IJavaEnvironment#existsType(String)} for detailed
-   *          constraints on the name.
+   *          The fully qualified name to search. See {@link IJavaEnvironment#existsType(String)} for detailed constraints
+   *          on the name.
    * @return <code>true</code> if the given type exists, <code>false</code> otherwise.
    */
   public static boolean isOnClasspath(IJavaEnvironment env, String typeToSearchFqn) {
@@ -1015,8 +1043,8 @@
   }
 
   /**
-   * Moves the given directory to the given target directory. This means after this method call the source directory
-   * does not exist anymore and the target directory contains a new folder with the name of the source and its content.
+   * Moves the given directory to the given target directory. This means after this method call the source directory does
+   * not exist anymore and the target directory contains a new folder with the name of the source and its content.
    *
    * @param sourceDir
    *          Must be an existing directory.
@@ -1198,8 +1226,8 @@
    *          The base {@link URI} from which point the relative {@link URI} should be created. Must not be
    *          <code>null</code>.
    * @param child
-   *          The target {@link URI} that should be relatively expressed from the point of the base {@link URI}. Must
-   *          not be <code>null</code>.
+   *          The target {@link URI} that should be relatively expressed from the point of the base {@link URI}. Must not
+   *          be <code>null</code>.
    * @return A new relative {@link URI} to get to the child {@link URI} from the base {@link URI}.
    */
   public static URI relativizeURI(URI base, URI child) {
diff --git a/org.eclipse.scout.sdk.p2/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.p2/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.p2/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.p2/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.p2/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.p2/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.p2/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.p2/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.p2/pom.xml b/org.eclipse.scout.sdk.p2/pom.xml
index d9dacbd..87712b4 100644
--- a/org.eclipse.scout.sdk.p2/pom.xml
+++ b/org.eclipse.scout.sdk.p2/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.eclipse.scout.sdk</groupId>
   <artifactId>org.eclipse.scout.sdk.p2</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>8.0.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Eclipse Scout SDK P2</name>
   <description>Eclipse Scout SDK - Eclipse Features/Repository</description>
@@ -39,9 +39,9 @@
   </modules>
 
   <properties>
-    <scout.base.version>7.0.300</scout.base.version>
+    <scout.base.version>8.0.0</scout.base.version>
     <base.version>${scout.base.version}</base.version>
-    <org.eclipse.scout.rt_version>7.0.300-SNAPSHOT</org.eclipse.scout.rt_version>
+    <org.eclipse.scout.rt_version>8.0.0-SNAPSHOT</org.eclipse.scout.rt_version>
   </properties>
 
   <dependencyManagement>
@@ -186,7 +186,7 @@
   <scm>
     <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout.sdk.git</connection>
     <developerConnection>scm:git:ssh://${eclipse_gerrit_username}@git.eclipse.org:29418/scout/org.eclipse.scout.sdk</developerConnection>
-    <tag>releases/7.0.x</tag>
+    <tag>releases/8.0.x</tag>
     <url>http://git.eclipse.org/c/scout/org.eclipse.scout.sdk.git/</url>
   </scm>
 
diff --git a/org.eclipse.scout.sdk.s2e.doc/.project b/org.eclipse.scout.sdk.s2e.doc/.project
index 6bc0630..990144e 100644
--- a/org.eclipse.scout.sdk.s2e.doc/.project
+++ b/org.eclipse.scout.sdk.s2e.doc/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.doc/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.s2e.doc/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e.doc/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e.doc/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.doc/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/scout_user_guide.html b/org.eclipse.scout.sdk.s2e.doc/html/scout_user_guide.html
index 788b224..eed0c8f 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/scout_user_guide.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/scout_user_guide.html
@@ -27,7 +27,7 @@
   <div id="header">
    <h1>Eclipse Scout User Guide</h1>
    <div class="details">
-    <span id="revnumber">version 7.0</span>
+    <span id="revnumber">version 8.0</span>
    </div>
   </div>
   <div id="content">
@@ -42,7 +42,7 @@
    </div>
    <hr>
    <div class="paragraph">
-    <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/scout_user_guide.adoc" target="_blank">sources</a> on GitHub.</p>
+    <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/scout_user_guide.adoc" target="_blank">sources</a> on GitHub.</p>
    </div>
   </div>
   <table border="0" class="navigation" style="width: 100%;" summary="navigation">
@@ -59,9 +59,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk.html
index 265b925..8e43990 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk.html
@@ -62,7 +62,7 @@
       </div>
       <hr>
       <div class="paragraph">
-       <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk.adoc" target="_blank">sources</a> on GitHub.</p>
+       <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk.adoc" target="_blank">sources</a> on GitHub.</p>
       </div>
      </div>
     </div>
@@ -82,9 +82,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_java.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_java.html
index 5284074..6d9b269 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_java.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_java.html
@@ -116,7 +116,7 @@
       <p>Go back to the <a href="sdk.html">Scout Tooling</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_editor_java.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_editor_java.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -135,9 +135,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_nls.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_nls.html
index 4db5ca6..b3c486c 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_nls.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_editor_nls.html
@@ -159,7 +159,7 @@
       <p>Go back to the <a href="sdk.html">Scout Tooling</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_editor_nls.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_editor_nls.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -178,9 +178,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard.html
index b246709..45bb478 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard.html
@@ -77,7 +77,7 @@
       <p>Go back to the <a href="sdk.html">Scout Tooling</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -96,9 +96,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_code-type.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_code-type.html
index d16d1af..6d4a3b1 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_code-type.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_code-type.html
@@ -112,7 +112,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_code-type.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_code-type.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -131,9 +131,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_form.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_form.html
index d783e55..753fc5c 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_form.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_form.html
@@ -150,7 +150,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_form.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_form.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -169,9 +169,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_language.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_language.html
index 65bd392..3465b8c 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_language.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_language.html
@@ -67,7 +67,7 @@
      <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
     </div>
     <div class="paragraph">
-     <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_language.adoc" target="_blank">sources</a> on GitHub.</p>
+     <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_language.adoc" target="_blank">sources</a> on GitHub.</p>
     </div>
    </div>
   </div>
@@ -85,9 +85,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_lookupcall.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_lookupcall.html
index 19f9ece..03e3065 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_lookupcall.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_lookupcall.html
@@ -130,7 +130,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_lookupcall.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_lookupcall.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -149,9 +149,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_nls-entry.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_nls-entry.html
index 620c1fa..4ca5b0b 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_nls-entry.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_nls-entry.html
@@ -79,7 +79,7 @@
      <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
     </div>
     <div class="paragraph">
-     <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_nls-entry.adoc" target="_blank">sources</a> on GitHub.</p>
+     <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_nls-entry.adoc" target="_blank">sources</a> on GitHub.</p>
     </div>
    </div>
   </div>
@@ -97,9 +97,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_page.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_page.html
index 38c5981..5756043 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_page.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_page.html
@@ -125,7 +125,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_page.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_page.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -144,9 +144,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_permission.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_permission.html
index 60511f0..36e548e 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_permission.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_permission.html
@@ -100,7 +100,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_permission.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_permission.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -119,9 +119,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_project.html b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_project.html
index 6242033..c982039 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_project.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/sdk_wizard_project.html
@@ -165,7 +165,7 @@
       <p>Go back to the <a href="sdk_wizard.html">Scout Wizards</a>.</p>
      </div>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_project.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/sdk_wizard_project.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -184,9 +184,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/tutorial.html b/org.eclipse.scout.sdk.s2e.doc/html/tutorial.html
index afcba0f..c84d79b 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/tutorial.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/tutorial.html
@@ -41,7 +41,7 @@
      </div>
      <hr>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/tutorial.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/tutorial.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -60,9 +60,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/tutorial_existingdemo.html b/org.eclipse.scout.sdk.s2e.doc/html/tutorial_existingdemo.html
index 9e5b012..7830fa5 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/tutorial_existingdemo.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/tutorial_existingdemo.html
@@ -274,7 +274,7 @@
      </div>
      <hr>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/tutorial_existingdemo.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/tutorial_existingdemo.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -293,9 +293,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/html/tutorial_helloworld.html b/org.eclipse.scout.sdk.s2e.doc/html/tutorial_helloworld.html
index ea26da6..a82f39b 100644
--- a/org.eclipse.scout.sdk.s2e.doc/html/tutorial_helloworld.html
+++ b/org.eclipse.scout.sdk.s2e.doc/html/tutorial_helloworld.html
@@ -133,7 +133,7 @@
      </div>
      <hr>
      <div class="paragraph">
-      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/7.0.x/docs/build/eclipse_help/src/docs/tutorial_helloworld.adoc" target="_blank">sources</a> on GitHub.</p>
+      <p>Do you want to improve this document? Have a look at the <a href="https://github.com/BSI-Business-Systems-Integration-AG/org.eclipse.scout.docs/blob/releases/8.0.x/docs/build/eclipse_help/src/docs/tutorial_helloworld.adoc" target="_blank">sources</a> on GitHub.</p>
      </div>
     </div>
    </div>
@@ -152,9 +152,9 @@
   </table>
   <div id="footer">
    <div id="footer-text">
-     Version 7.0
-    <br> Last updated 2017-05-26 14:49:24 CEST
+     Version 8.0
+    <br> Last updated 2018-04-03 14:49:24 CEST
    </div>
   </div>
  </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.eclipse.scout.sdk.s2e.doc/pom.xml b/org.eclipse.scout.sdk.s2e.doc/pom.xml
index 41b4bc0..32601ac 100644
--- a/org.eclipse.scout.sdk.s2e.doc/pom.xml
+++ b/org.eclipse.scout.sdk.s2e.doc/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
@@ -29,7 +29,7 @@
   <properties>
     <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
     <bundle.namespace>${project.artifactId}</bundle.namespace>
-    <bundle.version>7.0.300</bundle.version>
+    <bundle.version>8.0.0</bundle.version>
   </properties>
 
   <dependencies>
diff --git a/org.eclipse.scout.sdk.s2e.nls/.project b/org.eclipse.scout.sdk.s2e.nls/.project
index 3306467..665064a 100644
--- a/org.eclipse.scout.sdk.s2e.nls/.project
+++ b/org.eclipse.scout.sdk.s2e.nls/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.nls/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.s2e.nls/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e.nls/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e.nls/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.nls/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e.nls/plugin.xml b/org.eclipse.scout.sdk.s2e.nls/plugin.xml
index 072da76..4b91d89 100644
--- a/org.eclipse.scout.sdk.s2e.nls/plugin.xml
+++ b/org.eclipse.scout.sdk.s2e.nls/plugin.xml
@@ -53,7 +53,7 @@
       </javaCompletionProposalComputer>
    </extension>
    <extension point="org.eclipse.ui.menus">
-      <menuContribution locationURI="menu:org.eclipse.scout.sdk.s2e.ui.menu?after=org.eclipse.scout.sdk.s2e.ui.menu.missingClassIdSelected">
+      <menuContribution locationURI="menu:org.eclipse.scout.sdk.s2e.ui.menu?after=org.eclipse.scout.sdk.s2e.ui.menu.searchForDuplicateClassIdValues">
          <separator
                name="org.eclipse.scout.sdk.s2e.nls.menu.separator01"
                visible="true">
diff --git a/org.eclipse.scout.sdk.s2e.nls/pom.xml b/org.eclipse.scout.sdk.s2e.nls/pom.xml
index 85bbd39..3365358 100644
--- a/org.eclipse.scout.sdk.s2e.nls/pom.xml
+++ b/org.eclipse.scout.sdk.s2e.nls/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
@@ -29,7 +29,7 @@
   <properties>
     <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
     <bundle.namespace>${project.artifactId}</bundle.namespace>
-    <bundle.version>7.0.300</bundle.version>
+    <bundle.version>8.0.0</bundle.version>
   </properties>
 
   <dependencies>
@@ -74,7 +74,7 @@
               *;ui.workbench=!
             </Import-Package>
             <Require-Bundle>
-              org.eclipse.scout.sdk.s2e;bundle-version="[7.0,7.1)";visibility:=reexport,
+              org.eclipse.scout.sdk.s2e;bundle-version="[8.0,8.1)";visibility:=reexport,
               org.eclipse.jdt.ui;bundle-version="[3.12,4)";visibility:=reexport,
               org.eclipse.ui.editors;bundle-version="[3.10,4)";visibility:=reexport,
               org.eclipse.jface;bundle-version="[3.12,4)";visibility:=reexport,
diff --git a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/search/NlsFindMissingKeysJob.java b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/search/NlsFindMissingKeysJob.java
index ca2dd63..dd39bae 100644
--- a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/search/NlsFindMissingKeysJob.java
+++ b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/search/NlsFindMissingKeysJob.java
@@ -45,8 +45,8 @@
 import org.eclipse.scout.sdk.s2e.nls.internal.ui.formatter.InputValidator;
 import org.eclipse.scout.sdk.s2e.nls.project.INlsProject;
 import org.eclipse.scout.sdk.s2e.util.EclipseWorkspaceWalker;
-import org.eclipse.scout.sdk.s2e.util.S2eUtils;
 import org.eclipse.scout.sdk.s2e.util.EclipseWorkspaceWalker.WorkspaceFile;
+import org.eclipse.scout.sdk.s2e.util.S2eUtils;
 import org.eclipse.search.ui.text.Match;
 
 /**
@@ -75,7 +75,7 @@
     final String nlsKeyPattern = InputValidator.REGEX_NLS_KEY_NAME.pattern();
     final Pattern jsonTextKeyPat = Pattern.compile("\\$\\{textKey:(" + nlsKeyPattern + ')');
     final Pattern jsTextKeyPat = Pattern.compile("session\\.text\\(('?)(" + nlsKeyPattern + ")('?)");
-    m_patternsByFileType.put(SuffixConstants.EXTENSION_java, Collections.singletonList(Pattern.compile("TEXTS\\.get\\((\"?)(" + nlsKeyPattern + ")(\"?)")));
+    m_patternsByFileType.put(SuffixConstants.EXTENSION_java, Collections.singletonList(Pattern.compile("TEXTS\\.get\\((?:[a-zA-Z0-9_]+,\\s*)?(\"?)(" + nlsKeyPattern + ")(\"?)")));
     m_patternsByFileType.put("json", Collections.singletonList(jsonTextKeyPat));
     m_patternsByFileType.put("js", Arrays.asList(jsTextKeyPat, jsonTextKeyPat));
     m_patternsByFileType.put("html", Arrays.asList(Pattern.compile("\\<scout:message key=\"(" + nlsKeyPattern + ")\"\\s*/?\\>"), jsTextKeyPat, jsonTextKeyPat));
diff --git a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/SimpleNlsProject.java b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/SimpleNlsProject.java
index 0700531..083350a 100644
--- a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/SimpleNlsProject.java
+++ b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/SimpleNlsProject.java
@@ -136,7 +136,7 @@
     return resourceName.matches(prefix + "(_[a-zA-Z]{2}){0,3}" + "\\.properties");
   }
 
-  private void createTranslationFile(Language language, IFolder folder, IProgressMonitor monitor) throws CoreException {
+  private void createTranslationFile(Language language, IFolder folder, IProgressMonitor monitor) {
     String fileName = getLocalizedPropertiesFileName(getNlsType().getTranslationsPrefix(), language);
     IFile file = folder.getFile(new Path(fileName));
     if (!file.exists()) {
@@ -158,12 +158,7 @@
 
       @Override
       public void execute(IProgressMonitor monitor) {
-        try {
-          createTranslationFile(m_model.getLanguage(), m_model.getFolder(), new NullProgressMonitor());
-        }
-        catch (CoreException e) {
-          SdkLog.error("Unable to create new language.", e);
-        }
+        createTranslationFile(m_model.getLanguage(), m_model.getFolder(), new NullProgressMonitor());
       }
 
       @Override
diff --git a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/WorkspaceTranslationFile.java b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/WorkspaceTranslationFile.java
index 4b9ffde..64cfa9e 100644
--- a/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/WorkspaceTranslationFile.java
+++ b/org.eclipse.scout.sdk.s2e.nls/src/main/java/org/eclipse/scout/sdk/s2e/nls/internal/simpleproject/WorkspaceTranslationFile.java
@@ -146,7 +146,7 @@
 
         S2eUtils.writeFiles(Collections.singletonList(new ResourceWriteOperation(m_file, builder.toString())), monitor, true);
       }
-      catch (IOException | CoreException e) {
+      catch (IOException e) {
         SdkLog.error("could not refresh file: {}", m_file.getName(), e);
       }
     }
diff --git a/org.eclipse.scout.sdk.s2e.releng/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e.releng/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e.releng/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.releng/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e.releng/pom.xml b/org.eclipse.scout.sdk.s2e.releng/pom.xml
index 5992033..335fb54 100644
--- a/org.eclipse.scout.sdk.s2e.releng/pom.xml
+++ b/org.eclipse.scout.sdk.s2e.releng/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.s2e.test/.project b/org.eclipse.scout.sdk.s2e.test/.project
index a68246b..9c81616 100644
--- a/org.eclipse.scout.sdk.s2e.test/.project
+++ b/org.eclipse.scout.sdk.s2e.test/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.test/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.s2e.test/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e.test/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e.test/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.test/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e.test/pom.xml b/org.eclipse.scout.sdk.s2e.test/pom.xml
index 0c31a93..46539fa 100644
--- a/org.eclipse.scout.sdk.s2e.test/pom.xml
+++ b/org.eclipse.scout.sdk.s2e.test/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
diff --git a/org.eclipse.scout.sdk.s2e.test/src/test/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperationTest.java b/org.eclipse.scout.sdk.s2e.test/src/test/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperationTest.java
index 30aeeff..adf24b6 100644
--- a/org.eclipse.scout.sdk.s2e.test/src/test/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperationTest.java
+++ b/org.eclipse.scout.sdk.s2e.test/src/test/java/org/eclipse/scout/sdk/s2e/operation/jaxws/WebServiceNewOperationTest.java
@@ -185,13 +185,8 @@
       }
 
       @Override
-      protected void createDerivedResources(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
-        try {
-          CoreScoutTestingUtils.runMavenCleanCompile(getJaxWsProject().getProject().getLocation().toFile());
-        }
-        catch (IOException e) {
-          throw new CoreException(new ScoutStatus(e));
-        }
+      protected void createDerivedResources(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) {
+        CoreScoutTestingUtils.runMavenCleanCompile(getJaxWsProject().getProject().getLocation().toFile());
       }
     };
     op.setCreateConsumer(isConsumer);
diff --git a/org.eclipse.scout.sdk.s2e.ui/.project b/org.eclipse.scout.sdk.s2e.ui/.project
index 8dc84d3..3f02d2b 100644
--- a/org.eclipse.scout.sdk.s2e.ui/.project
+++ b/org.eclipse.scout.sdk.s2e.ui/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.ui/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.s2e.ui/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e.ui/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e.ui/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e.ui/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e.ui/plugin.xml b/org.eclipse.scout.sdk.s2e.ui/plugin.xml
index 505b78d..d9ce547 100644
--- a/org.eclipse.scout.sdk.s2e.ui/plugin.xml
+++ b/org.eclipse.scout.sdk.s2e.ui/plugin.xml
@@ -103,6 +103,12 @@
                tooltip="Creates all @ClassId Annotations on classes in the selected scope that support the annotation but currently don't have one."
                style="push">
             </command>
+            <command
+               commandId="org.eclipse.scout.sdk.s2e.ui.commands.searchForDuplicateClassIdValues"
+               id="org.eclipse.scout.sdk.s2e.ui.menu.searchForDuplicateClassIdValues"
+               tooltip="Searches duplicate @ClassId Values in the current Workspace and marks all findings with Error Markers in the Problems View."
+               style="push">
+            </command>
          </menu>
       </menuContribution>
    </extension>
@@ -190,22 +196,22 @@
             id="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </category>
       <command
-            name="Update all derived resources..."
+            name="Update all Derived Resources..."
             id="org.eclipse.scout.sdk.s2e.ui.commands.triggerAllTypeChangedHandlers"
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
       <command
-            name="Update derived resources in selected scope..."
+            name="Update Derived Resources in selected Scope..."
             id="org.eclipse.scout.sdk.s2e.ui.commands.triggerSelectedTypeChangedHandlers"
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
       <command
-            name="Wellform all Scout classes..."
+            name="Wellform all Scout Classes..."
             id="org.eclipse.scout.sdk.s2e.ui.commands.wellform"
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
       <command
-            name="Wellform classes in selected scope"
+            name="Wellform Classes in selected Scope"
             id="org.eclipse.scout.sdk.s2e.ui.commands.wellformSelected"
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
@@ -215,7 +221,12 @@
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
       <command
-            name="Create missing @ClassId Annotations in selected scope"
+            name="Search for duplicate @ClassId Values"
+            id="org.eclipse.scout.sdk.s2e.ui.commands.searchForDuplicateClassIdValues"
+            categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
+      </command>
+      <command
+            name="Create missing @ClassId Annotations in selected Scope"
             id="org.eclipse.scout.sdk.s2e.ui.commands.missingClassIdSelected"
             categoryId="org.eclipse.scout.sdk.s2e.ui.commands.category">
       </command>
@@ -242,6 +253,10 @@
             class="org.eclipse.scout.sdk.s2e.ui.internal.handler.CreateAllMissingClassIdsHandler">
       </handler>
       <handler
+            commandId="org.eclipse.scout.sdk.s2e.ui.commands.searchForDuplicateClassIdValues"
+            class="org.eclipse.scout.sdk.s2e.ui.internal.handler.SearchDuplicateClassIdValuesHandler">
+      </handler>
+      <handler
             commandId="org.eclipse.scout.sdk.s2e.ui.commands.missingClassIdSelected"
             class="org.eclipse.scout.sdk.s2e.ui.internal.handler.CreateSelectedMissingClassIdsHandler">
       </handler>
diff --git a/org.eclipse.scout.sdk.s2e.ui/pom.xml b/org.eclipse.scout.sdk.s2e.ui/pom.xml
index 2537fcd..094e8ca 100644
--- a/org.eclipse.scout.sdk.s2e.ui/pom.xml
+++ b/org.eclipse.scout.sdk.s2e.ui/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
@@ -29,7 +29,7 @@
   <properties>
     <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
     <bundle.namespace>${project.artifactId}</bundle.namespace>
-    <bundle.version>7.0.300</bundle.version>
+    <bundle.version>8.0.0</bundle.version>
   </properties>
 
   <dependencies>
@@ -89,9 +89,11 @@
               *
             </Import-Package>
             <Require-Bundle>
-              org.eclipse.scout.sdk.s2e;bundle-version="[7.0,7.1)";visibility:=reexport,
-              org.eclipse.scout.sdk.s2e.doc;bundle-version="[7.0,7.1)";visibility:=reexport,
+              org.eclipse.scout.sdk.s2e;bundle-version="[8.0,8.1)";visibility:=reexport,
+              org.eclipse.scout.sdk.s2e.doc;bundle-version="[8.0,8.1)";visibility:=reexport,
               org.eclipse.jdt.ui;bundle-version="[3.12,4)";visibility:=reexport,
+              org.eclipse.jdt.core.manipulation;bundle-version="[1.7,2)";visibility:=reexport,
+              org.eclipse.jdt.debug.ui;bundle-version="[3.7.200,4)";visibility:=reexport,
               org.eclipse.ui.ide;bundle-version="[3.12,4)";visibility:=reexport,
               org.eclipse.ui.workbench;bundle-version="[3.108,4)";visibility:=reexport,
               org.eclipse.ui.workbench.texteditor;bundle-version="[3.10,4)";visibility:=reexport,
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/S2ESdkUiActivator.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/S2ESdkUiActivator.java
index 852696d..b0a5daa 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/S2ESdkUiActivator.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/S2ESdkUiActivator.java
@@ -15,6 +15,8 @@
 
 import org.apache.commons.lang3.StringUtils;
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.jdt.internal.debug.ui.DetailFormatter;
+import org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager;
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -22,6 +24,7 @@
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.m2e.core.internal.preferences.MavenPreferenceConstants;
 import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
+import org.eclipse.scout.sdk.core.s.IScoutRuntimeTypes;
 import org.eclipse.scout.sdk.core.sourcebuilder.comment.CommentSourceBuilderFactory;
 import org.eclipse.scout.sdk.core.util.SdkConsole;
 import org.eclipse.scout.sdk.core.util.SdkLog;
@@ -49,6 +52,7 @@
   private static S2ESdkUiActivator plugin;
 
   private IPropertyChangeListener m_preferencesPropertyListener;
+  private DetailFormatter m_iDataObjectDetailFormatter;
 
   @Override
   public void start(BundleContext context) throws Exception {
@@ -86,6 +90,9 @@
     // modify default m2e settings
     setDefaultMavenSettings();
 
+    // register detail formatters
+    registerDetailFormatters();
+
     // start DTO auto-update manager if required
     getPreferenceStore().setDefault(IDerivedResourceManager.PROP_AUTO_UPDATE, true);
     ScoutSdkCore.getDerivedResourceManager().setEnabled(getPreferenceStore().getBoolean(IDerivedResourceManager.PROP_AUTO_UPDATE));
@@ -95,7 +102,17 @@
     ClassIdGenerators.setAutomaticallyCreateClassIdAnnotation(getPreferenceStore().getBoolean(ClassIdGenerators.PROP_AUTOMATICALLY_CREATE_CLASS_ID_ANNOTATION));
 
     // start class id validation
-    ClassIdValidationJob.executeAsync(TimeUnit.MINUTES.toMillis(5));
+    ClassIdValidationJob.executeAsync(TimeUnit.MINUTES.toMillis(5), false);
+  }
+
+  private void registerDetailFormatters() {
+    String src = "return " + IScoutRuntimeTypes.BEANS + ".get(org.eclipse.scout.rt.platform.dataobject.IPrettyPrintDataObjectMapper.class).writeValue(this);";
+    m_iDataObjectDetailFormatter = new DetailFormatter(IScoutRuntimeTypes.IDataObject, src, true);
+    JavaDetailFormattersManager.getDefault().setAssociatedDetailFormatter(m_iDataObjectDetailFormatter);
+  }
+
+  private void deregisterDetailFormatters() {
+    m_iDataObjectDetailFormatter = null;
   }
 
   @Override
@@ -109,6 +126,8 @@
 
     SdkConsole.setConsoleSpi(null); // reset to default
 
+    deregisterDetailFormatters();
+
     plugin = null;
 
     super.stop(context);
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/CreateSelectedMissingClassIdsHandler.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/CreateSelectedMissingClassIdsHandler.java
index 11b0eaa..6da6f3c 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/CreateSelectedMissingClassIdsHandler.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/CreateSelectedMissingClassIdsHandler.java
@@ -16,7 +16,6 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.scout.sdk.core.util.SdkLog;
 import org.eclipse.scout.sdk.s2e.classid.MissingClassIdsNewOperation;
 import org.eclipse.scout.sdk.s2e.job.ResourceBlockingOperationJob;
@@ -40,23 +39,9 @@
     }
 
     final IOperation operation = new MissingClassIdsNewOperation()
-        .withFilter(res -> isInResources(resourcesFromSelection, res));
+        .withSelection(resourcesFromSelection);
 
-    new ResourceBlockingOperationJob(operation, resourcesFromSelection.toArray(new IResource[resourcesFromSelection.size()]))
-        .schedule();
+    new ResourceBlockingOperationJob(operation, resourcesFromSelection.toArray(new IResource[resourcesFromSelection.size()])).schedule();
     return null;
   }
-
-  protected static boolean isInResources(final Set<IResource> resourcesFromSelection, final IResource candidate) {
-    if (resourcesFromSelection == null) {
-      return true;
-    }
-    final IPath location = candidate.getLocation();
-    for (IResource r : resourcesFromSelection) {
-      if (r.getLocation().isPrefixOf(location)) {
-        return true;
-      }
-    }
-    return false;
-  }
 }
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/SearchDuplicateClassIdValuesHandler.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/SearchDuplicateClassIdValuesHandler.java
new file mode 100644
index 0000000..5f0728b
--- /dev/null
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/handler/SearchDuplicateClassIdValuesHandler.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.sdk.s2e.ui.internal.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.scout.sdk.s2e.classid.ClassIdValidationJob;
+
+/**
+ * <h3>{@link SearchDuplicateClassIdValuesHandler}</h3>
+ *
+ * @since 8.0.0
+ */
+public class SearchDuplicateClassIdValuesHandler extends AbstractHandler {
+
+  @Override
+  public Object execute(ExecutionEvent event) throws ExecutionException {
+    ClassIdValidationJob.executeAsync(0, true);
+    return null;
+  }
+}
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/AbstractTypeProposal.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/AbstractTypeProposal.java
index 3c4231c..8183dba 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/AbstractTypeProposal.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/AbstractTypeProposal.java
@@ -31,15 +31,14 @@
 import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
 import org.eclipse.jdt.core.dom.rewrite.ITrackedNodePosition;
 import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
-import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility;
 import org.eclipse.jdt.internal.corext.fix.LinkedProposalModel;
 import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup;
-import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup.PositionInformation;
 import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup.Proposal;
 import org.eclipse.jdt.internal.ui.JavaPlugin;
 import org.eclipse.jdt.internal.ui.JavaUIStatus;
 import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
 import org.eclipse.jdt.internal.ui.viewsupport.BindingLabelProvider;
+import org.eclipse.jdt.ui.CodeStyleConfiguration;
 import org.eclipse.jdt.ui.JavaElementLabels;
 import org.eclipse.jdt.ui.SharedASTProvider;
 import org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal;
@@ -218,10 +217,10 @@
         new LinkedAsyncProposalModelPresenter().enterLinkedMode(viewer, part, didOpenEditor(), m_linkedProposalModel);
       }
       else if (part instanceof ITextEditor) {
-        LinkedProposalPositionGroup.PositionInformation endPosition = m_linkedProposalModel.getEndPosition();
+        Object endPosition = PositionInformationBridge.getEndPosition(m_linkedProposalModel);
         if (endPosition != null) {
           // select a result
-          int pos = endPosition.getOffset() + endPosition.getLength();
+          int pos = PositionInformationBridge.getOffset(endPosition) + PositionInformationBridge.getLength(endPosition);
           ((ITextEditor) part).selectAndReveal(pos, 0);
         }
       }
@@ -250,12 +249,12 @@
       m_asyncProposalProviders.add(newGroup);
       if (group != null) {
         // already added positions. copy over
-        for (PositionInformation info : group.getPositions()) {
-          newGroup.addPosition(info);
+        for (Object info : PositionInformationBridge.getPositions(group)) {
+          PositionInformationBridge.addPosition(newGroup, info);
         }
       }
       group = newGroup;
-      m_linkedProposalModel.addPositionGroup(group);
+      PositionInformationBridge.addPositionGroup(m_linkedProposalModel, group);
     }
   }
 
@@ -336,7 +335,7 @@
 
     @Override
     public TextEdit computeEdits(int offset, LinkedPosition position, char trigger, int stateMask, LinkedModeModel model) throws CoreException {
-      ImportRewrite impRewrite = StubUtility.createImportRewrite(m_compilationUnit, true);
+      ImportRewrite impRewrite = CodeStyleConfiguration.createImportRewrite(m_compilationUnit, true);
       String replaceString = impRewrite.addImport(m_typeProposal);
 
       MultiTextEdit composedEdit = new MultiTextEdit();
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/LinkedAsyncProposalModelPresenter.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/LinkedAsyncProposalModelPresenter.java
index 4674047..78ed8f0 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/LinkedAsyncProposalModelPresenter.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/LinkedAsyncProposalModelPresenter.java
@@ -15,7 +15,6 @@
 
 import org.eclipse.jdt.internal.corext.fix.LinkedProposalModel;
 import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup;
-import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup.PositionInformation;
 import org.eclipse.jdt.internal.ui.JavaPlugin;
 import org.eclipse.jdt.internal.ui.javaeditor.EditorHighlightingSynchronizer;
 import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
@@ -82,27 +81,28 @@
       LinkedProposalPositionGroup curr = iterator.next();
 
       LinkedPositionGroup group = new LinkedPositionGroup();
-      LinkedProposalPositionGroup.PositionInformation[] positions = curr.getPositions();
+
+      Object[] positions = PositionInformationBridge.getPositions(curr);
       if (positions.length > 0) {
         if (curr instanceof ICompletionProposalProvider) {
           // lazy provider
           for (int i = 0; i < positions.length; i++) {
-            LinkedProposalPositionGroup.PositionInformation pos = positions[i];
-            if (pos.getOffset() != -1) {
+            Object pos = positions[i];
+            if (PositionInformationBridge.getOffset(pos) != -1) {
               ICompletionProposalProvider proposalProvider = (ICompletionProposalProvider) curr;
               if (display != null) {
                 proposalProvider.addListener(listener);
               }
-              group.addPosition(new AsyncProposalPosition(document, pos.getOffset(), pos.getLength(), pos.getSequenceRank(), proposalProvider, model));
+              group.addPosition(new AsyncProposalPosition(document, PositionInformationBridge.getOffset(pos), PositionInformationBridge.getLength(pos), PositionInformationBridge.getSequenceRank(pos), proposalProvider, model));
             }
           }
         }
         else {
           LinkedProposalPositionGroup.Proposal[] linkedModeProposals = curr.getProposals();
           if (linkedModeProposals.length <= 1) {
-            for (PositionInformation pos : positions) {
-              if (pos.getOffset() != -1) {
-                group.addPosition(new LinkedPosition(document, pos.getOffset(), pos.getLength(), pos.getSequenceRank()));
+            for (Object pos : positions) {
+              if (PositionInformationBridge.getOffset(pos) != -1) {
+                group.addPosition(new LinkedPosition(document, PositionInformationBridge.getOffset(pos), PositionInformationBridge.getLength(pos), PositionInformationBridge.getSequenceRank(pos)));
               }
             }
           }
@@ -112,9 +112,9 @@
               proposalImpls[i] = new LinkedPositionProposalImpl(linkedModeProposals[i], model);
             }
 
-            for (PositionInformation pos : positions) {
-              if (pos.getOffset() != -1) {
-                group.addPosition(new ProposalPosition(document, pos.getOffset(), pos.getLength(), pos.getSequenceRank(), proposalImpls));
+            for (Object pos : positions) {
+              if (PositionInformationBridge.getOffset(pos) != -1) {
+                group.addPosition(new ProposalPosition(document, PositionInformationBridge.getOffset(pos), PositionInformationBridge.getLength(pos), PositionInformationBridge.getSequenceRank(pos), proposalImpls));
               }
             }
           }
@@ -131,9 +131,13 @@
 
     final LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
     holder[0] = ui;
-    LinkedProposalPositionGroup.PositionInformation endPosition = linkedProposalModel.getEndPosition();
-    if (endPosition != null && endPosition.getOffset() != -1) {
-      ui.setExitPosition(viewer, endPosition.getOffset() + endPosition.getLength(), 0, Integer.MAX_VALUE);
+    Object endPosition = PositionInformationBridge.getEndPosition(linkedProposalModel);
+    int offset = -1;
+    if (endPosition != null) {
+      offset = PositionInformationBridge.getOffset(endPosition);
+    }
+    if (offset != -1) {
+      ui.setExitPosition(viewer, offset + PositionInformationBridge.getLength(endPosition), 0, Integer.MAX_VALUE);
     }
     else if (!switchedEditor) {
       int cursorPosition = viewer.getSelectedRange().x;
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/PositionInformationBridge.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/PositionInformationBridge.java
new file mode 100644
index 0000000..bb8fdf7
--- /dev/null
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/template/PositionInformationBridge.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.sdk.s2e.ui.internal.template;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.eclipse.jdt.internal.corext.fix.LinkedProposalModel;
+import org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup;
+import org.eclipse.scout.sdk.core.util.SdkLog;
+
+/**
+ * <h3>{@link PositionInformationBridge}</h3> This class is used to bridge the
+ *
+ * <pre>
+ * org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup.PositionInformation
+ * </pre>
+ *
+ * to
+ *
+ * <pre>
+ * org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroupCore.PositionInformation
+ * </pre>
+ *
+ * The API of JDT did change with release Photon SR1 M2. Once Photon is not supported anymore this class can be removed.
+ */
+@SuppressWarnings("squid:S1166")
+public final class PositionInformationBridge {
+
+  private static final String POSITION_INFORMATION_FQN = "org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroupCore$PositionInformation";
+  private static final String POSITION_INFORMATION_FQN_OLD = "org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup$PositionInformation";
+
+  private static final String LINKED_POSITION_GROUP_CORE_FQN = "org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroupCore";
+  private static final String LINKED_POSITION_GROUP_FQN = "org.eclipse.jdt.internal.corext.fix.LinkedProposalPositionGroup";
+
+  private static String[] fqnOrder = {POSITION_INFORMATION_FQN_OLD, POSITION_INFORMATION_FQN};
+
+  private PositionInformationBridge() {
+  }
+
+  @SuppressWarnings("squid:S1168")
+  public static Object[] getPositions(LinkedProposalPositionGroup group) {
+    // call with reflection
+    try {
+      Method method = LinkedProposalPositionGroup.class.getMethod("getPositions");
+      method.setAccessible(true);
+      return (Object[]) method.invoke(group);
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+      return null;
+    }
+  }
+
+  public static void addPosition(LinkedAsyncProposalPositionGroup group, Object position) {
+    try {
+      Method method = LinkedProposalPositionGroup.class.getMethod("addPosition", findPostionInformationClass());
+      method.setAccessible(true);
+      method.invoke(group, position);
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | ClassNotFoundException e) {
+      SdkLog.error(e);
+    }
+  }
+
+  private static Class<?> findPostionInformationClass() throws ClassNotFoundException {
+    Class<?> positionInformationClazz = null;
+    try {
+      positionInformationClazz = Class.forName(fqnOrder[0]);
+      return positionInformationClazz;
+    }
+    catch (ClassNotFoundException e) {
+      // try second
+    }
+    positionInformationClazz = Class.forName(fqnOrder[1]);
+    // switch
+    String[] newOrder = {fqnOrder[1], fqnOrder[0]};
+    fqnOrder = newOrder;
+    return positionInformationClazz;
+  }
+
+  public static Object getEndPosition(LinkedProposalModel model) {
+    // call with reflection
+    try {
+      Method method = LinkedProposalModel.class.getMethod("getEndPosition");
+      method.setAccessible(true);
+      return method.invoke(model);
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+      return null;
+    }
+  }
+
+  public static int getOffset(Object positionInformation) {
+    // call with reflection
+    try {
+      Method method = positionInformation.getClass().getMethod("getOffset");
+      method.setAccessible(true);
+      Object resultRaw = method.invoke(positionInformation);
+      return ((Integer) resultRaw).intValue();
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+      return -1;
+    }
+  }
+
+  public static int getLength(Object positionInformation) {
+    // call with reflection
+    try {
+      Method method = positionInformation.getClass().getMethod("getLength");
+      method.setAccessible(true);
+      Object resultRaw = method.invoke(positionInformation);
+      return ((Integer) resultRaw).intValue();
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+      return -1;
+    }
+  }
+
+  public static int getSequenceRank(Object positionInformation) {
+    // call with reflection
+    try {
+      Method method = positionInformation.getClass().getMethod("getSequenceRank");
+      method.setAccessible(true);
+      Object resultRaw = method.invoke(positionInformation);
+      return ((Integer) resultRaw).intValue();
+    }
+    catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+      return -1;
+    }
+
+  }
+
+  @SuppressWarnings("squid:S1141")
+  public static void addPositionGroup(LinkedProposalModel linkedProposalModel, LinkedProposalPositionGroup group) {
+    Method method = null;
+    try {
+      try {
+        // step 1
+        method = linkedProposalModel.getClass().getMethod("addPositionGroup", Class.forName(LINKED_POSITION_GROUP_FQN));
+      }
+      catch (NoSuchMethodException | SecurityException | ClassNotFoundException e) {
+        // step 2
+        method = linkedProposalModel.getClass().getMethod("addPositionGroup", Class.forName(LINKED_POSITION_GROUP_CORE_FQN));
+      }
+      method.setAccessible(true);
+      method.invoke(linkedProposalModel, group);
+    }
+    catch (NoSuchMethodException | SecurityException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+      SdkLog.error(e);
+    }
+  }
+
+}
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/CodeTemplateContextBridge.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/CodeTemplateContextBridge.java
new file mode 100644
index 0000000..3885964
--- /dev/null
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/CodeTemplateContextBridge.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.sdk.s2e.ui.internal.util;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jface.text.templates.TemplateContext;
+import org.eclipse.scout.sdk.core.util.SdkLog;
+
+/**
+ * <h3>{@link CodeTemplateContextBridge}</h3>Bridge to support Eclipse IDE 2018-12 and older.<br>
+ * The class CodeTemplateContext was moved for release 2018-12. This class can be deleted as soon as 2018-12 is the
+ * oldest supported version.
+ *
+ * @since 8.0.0
+ */
+public final class CodeTemplateContextBridge {
+
+  private static Class<?> codeTemplateContextClass;
+
+  private CodeTemplateContextBridge() {
+  }
+
+  @SuppressWarnings({"squid:S1181", "squid:S2259"})
+  public static TemplateContext createCodeTemplateContext(String contextTypeName, IJavaProject project, String lineDelim) {
+    try {
+      return (TemplateContext) getCodeTemplateContextClass()
+          .getConstructor(String.class, IJavaProject.class, String.class)
+          .newInstance(contextTypeName, project, lineDelim);
+    }
+    catch (Throwable e) {
+      SdkLog.error(e);
+      return null;
+    }
+  }
+
+  @SuppressWarnings("squid:S1166")
+  private static Class<?> getCodeTemplateContextClass() {
+    Class<?> ret = codeTemplateContextClass;
+    if (ret == null) {
+      try {
+        ret = CodeTemplateContextBridge.class.getClassLoader().loadClass("org.eclipse.jdt.internal.core.manipulation.CodeTemplateContext");
+      }
+      catch (ClassNotFoundException e) {
+        ret = loadLegacyCodeTemplateContextClass();
+      }
+      codeTemplateContextClass = ret;
+    }
+    return ret;
+  }
+
+  @SuppressWarnings("squid:S1166")
+  private static Class<?> loadLegacyCodeTemplateContextClass() {
+    try {
+      return CodeTemplateContextBridge.class.getClassLoader().loadClass("org.eclipse.jdt.internal.corext.template.java.CodeTemplateContext");
+    }
+    catch (ClassNotFoundException e1) {
+      SdkLog.error("Could not found a CodeTemplateContext class on classpath.");
+      return null;
+    }
+  }
+}
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/JdtSettingsCommentSourceBuilderDelegate.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/JdtSettingsCommentSourceBuilderDelegate.java
index 75502d3..f85eea2 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/JdtSettingsCommentSourceBuilderDelegate.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/JdtSettingsCommentSourceBuilderDelegate.java
@@ -10,11 +10,11 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.s2e.ui.internal.util;
 
-import java.io.IOException;
 import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Matcher;
 
+import org.apache.commons.lang3.StringUtils;
 import org.eclipse.core.resources.ProjectScope;
 import org.eclipse.core.runtime.preferences.DefaultScope;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
@@ -22,11 +22,7 @@
 import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.internal.corext.template.java.CodeTemplateContext;
 import org.eclipse.jdt.internal.corext.template.java.CodeTemplateContextType;
-import org.eclipse.jdt.internal.corext.util.Strings;
-import org.eclipse.jdt.internal.ui.JavaPlugin;
-import org.eclipse.jdt.internal.ui.viewsupport.ProjectTemplateStore;
 import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jdt.ui.PreferenceConstants;
 import org.eclipse.jface.text.BadLocationException;
@@ -54,7 +50,6 @@
 import org.eclipse.scout.sdk.core.util.CoreUtils;
 import org.eclipse.scout.sdk.core.util.PropertyMap;
 import org.eclipse.scout.sdk.core.util.SdkException;
-import org.eclipse.scout.sdk.core.util.SdkLog;
 import org.eclipse.scout.sdk.s2e.util.S2eUtils;
 
 /**
@@ -85,7 +80,7 @@
         IJavaProject ownerProject = builderCtx.getProperty(ISdkProperties.CONTEXT_PROPERTY_JAVA_PROJECT, IJavaProject.class);
         Template template = getCodeTemplate(CodeTemplateContextType.FILECOMMENT_ID, ownerProject);
         if (template != null) {
-          CodeTemplateContext context = new CodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
+          TemplateContext context = CodeTemplateContextBridge.createCodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
           context.setVariable(CodeTemplateContextType.FILENAME, target.getElementName());
 
           String packageName = target.getPackageName();
@@ -120,7 +115,7 @@
         if (template == null) {
           return;
         }
-        CodeTemplateContext context = new CodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
+        TemplateContext context = CodeTemplateContextBridge.createCodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
         context.setVariable(CodeTemplateContextType.FILENAME, UNDEFINED_VAR_VALUE);
         context.setVariable(CodeTemplateContextType.PACKAGENAME, Signature.getQualifier(target.getFullyQualifiedName()));
         if (S2eUtils.exists(ownerProject)) {
@@ -129,7 +124,7 @@
         context.setVariable(CodeTemplateContextType.ENCLOSING_TYPE, Signature.getQualifier(target.getElementName()));
         context.setVariable(CodeTemplateContextType.TYPENAME, Signature.getSimpleName(target.getElementName()));
 
-        TemplateBuffer buffer;
+        final TemplateBuffer buffer;
         try {
           buffer = context.evaluate(template);
         }
@@ -140,15 +135,13 @@
           throw new SdkException(e);
         }
         String str = buffer.getString();
-        if (Strings.containsOnlyWhitespaces(str)) {
+        if (StringUtils.isBlank(str)) {
           return;
         }
 
         TemplateVariable position = findVariable(buffer, CodeTemplateContextType.TAGS); // look if Javadoc tags have to be added
         if (position == null) {
-          if (str != null) {
-            source.append(str);
-          }
+          source.append(str);
           return;
         }
 
@@ -182,7 +175,7 @@
         IJavaProject ownerProject = builderCtx.getProperty(ISdkProperties.CONTEXT_PROPERTY_JAVA_PROJECT, IJavaProject.class);
         Template template = getCodeTemplate(CodeTemplateContextType.OVERRIDECOMMENT_ID, ownerProject);
         if (template != null) {
-          CodeTemplateContext context = new CodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
+          TemplateContext context = CodeTemplateContextBridge.createCodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
           context.setVariable(CodeTemplateContextType.PACKAGENAME, UNDEFINED_VAR_VALUE);
           if (S2eUtils.exists(ownerProject)) {
             context.setVariable(CodeTemplateContextType.PROJECTNAME, ownerProject.getElementName());
@@ -275,7 +268,7 @@
         if (template == null) {
           return;
         }
-        CodeTemplateContext context = new CodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
+        TemplateContext context = CodeTemplateContextBridge.createCodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
         String getterSetterName = UNDEFINED_VAR_VALUE;
         Matcher matcher = CoreUtils.BEAN_METHOD_NAME.matcher(target.getElementName());
         if (matcher.find()) {
@@ -317,7 +310,7 @@
         }
 
         String str = buffer.getString();
-        if (Strings.containsOnlyWhitespaces(str)) {
+        if (StringUtils.isBlank(str)) {
           return;
         }
         TemplateVariable position = findVariable(buffer, CodeTemplateContextType.TAGS); // look if Javadoc tags have to be added
@@ -362,7 +355,7 @@
         IJavaProject ownerProject = builderCtx.getProperty(ISdkProperties.CONTEXT_PROPERTY_JAVA_PROJECT, IJavaProject.class);
         Template template = getCodeTemplate(CodeTemplateContextType.FIELDCOMMENT_ID, ownerProject);
         if (template != null) {
-          CodeTemplateContext context = new CodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
+          TemplateContext context = CodeTemplateContextBridge.createCodeTemplateContext(template.getContextTypeId(), ownerProject, lineDelimiter);
           context.setVariable(CodeTemplateContextType.FIELD_TYPE, Signature.getSignatureSimpleName(target.getSignature()));
           context.setVariable(CodeTemplateContextType.FIELD, target.getElementName());
           if (S2eUtils.exists(ownerProject)) {
@@ -399,7 +392,7 @@
     return true;
   }
 
-  private static String evaluateTemplate(CodeTemplateContext context, Template template) {
+  private static String evaluateTemplate(TemplateContext context, Template template) {
     // replace the user name resolver with our own to ensure we can respect the scout specific user names.
     Iterator<TemplateVariableResolver> resolvers = context.getContextType().resolvers();
     while (resolvers.hasNext()) {
@@ -425,26 +418,14 @@
       return null;
     }
     String str = buffer.getString();
-
-    if (Strings.containsOnlyWhitespaces(str)) {
+    if (StringUtils.isBlank(str)) {
       return null;
     }
     return str;
   }
 
   private static Template getCodeTemplate(String id, IJavaProject project) {
-    if (!S2eUtils.exists(project)) {
-      return JavaPlugin.getDefault().getCodeTemplateStore().findTemplateById(id);
-    }
-
-    ProjectTemplateStore projectStore = new ProjectTemplateStore(project.getProject());
-    try {
-      projectStore.load();
-    }
-    catch (IOException e) {
-      SdkLog.error(e);
-    }
-    return projectStore.findTemplateById(id);
+    return StubUtilityBridge.getCodeTemplate(id, project);
   }
 
   private static TemplateVariable findVariable(TemplateBuffer buffer, String variable) {
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/StubUtilityBridge.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/StubUtilityBridge.java
new file mode 100644
index 0000000..aad893f
--- /dev/null
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/StubUtilityBridge.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2018 BSI Business Systems Integration AG.
+ * 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:
+ *     BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.sdk.s2e.ui.internal.util;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jface.text.templates.Template;
+import org.eclipse.scout.sdk.core.util.SdkLog;
+
+/**
+ * <h3>{@link StubUtilityBridge}</h3> Bridge to support Eclipse IDE 2018-12 and older.<br>
+ * The class StubUtility was moved for release 2018-12. This class can be deleted as soon as 2018-12 is the oldest
+ * supported version.
+ *
+ * @since 8.0.0
+ */
+public final class StubUtilityBridge {
+
+  private static Class<?> stubUtilityClass;
+
+  private StubUtilityBridge() {
+  }
+
+  @SuppressWarnings({"squid:S1181", "squid:S2259"})
+  public static Template getCodeTemplate(String id, IJavaProject project) {
+    try {
+      return (Template) getStubUtilityClass()
+          .getMethod("getCodeTemplate", String.class, IJavaProject.class)
+          .invoke(null, id, project);
+    }
+    catch (Throwable e) {
+      SdkLog.error(e);
+      return null;
+    }
+  }
+
+  @SuppressWarnings("squid:S1166")
+  private static Class<?> getStubUtilityClass() {
+    Class<?> ret = stubUtilityClass;
+    if (ret == null) {
+      try {
+        ret = StubUtilityBridge.class.getClassLoader().loadClass("org.eclipse.jdt.internal.core.manipulation.StubUtility");
+      }
+      catch (ClassNotFoundException e) {
+        ret = loadLegacyStubUtilityClass();
+      }
+      stubUtilityClass = ret;
+    }
+    return ret;
+  }
+
+  @SuppressWarnings("squid:S1166")
+  private static Class<?> loadLegacyStubUtilityClass() {
+    try {
+      return StubUtilityBridge.class.getClassLoader().loadClass("org.eclipse.jdt.internal.corext.codemanipulation.StubUtility");
+    }
+    catch (ClassNotFoundException e1) {
+      SdkLog.error("Could not found a StubUtility class on classpath.");
+      return null;
+    }
+  }
+}
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/ast/AstNodeFactory.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/ast/AstNodeFactory.java
index 8a49160..09486c8 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/ast/AstNodeFactory.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/util/ast/AstNodeFactory.java
@@ -49,8 +49,8 @@
 import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.eclipse.jdt.internal.corext.codemanipulation.CodeGenerationSettings;
 import org.eclipse.jdt.internal.corext.codemanipulation.ContextSensitiveImportRewriteContext;
-import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility;
 import org.eclipse.jdt.internal.ui.preferences.JavaPreferencesSettings;
+import org.eclipse.jdt.ui.CodeStyleConfiguration;
 import org.eclipse.scout.sdk.core.IJavaRuntimeTypes;
 import org.eclipse.scout.sdk.core.model.api.IJavaEnvironment;
 import org.eclipse.scout.sdk.core.s.IScoutRuntimeTypes;
@@ -135,7 +135,12 @@
     m_ast = m_declaringType.getAST();
     m_rewrite = ASTRewrite.create(m_ast);
     m_root = (CompilationUnit) type.getRoot();
-    m_importRewrite = StubUtility.createImportRewrite(m_root, true);
+
+    m_importRewrite = CodeStyleConfiguration.createImportRewrite(m_root, true);
+    if (m_root.getAST().hasResolvedBindings()) {
+      m_importRewrite.setUseContextToFilterImplicitImports(true);
+    }
+
     m_importsRewrite = m_rewrite.getListRewrite(m_root, CompilationUnit.IMPORTS_PROPERTY);
     m_context = new ContextSensitiveImportRewriteContext(m_root, m_importRewrite);
     m_javaProject = m_icu.getJavaProject();
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceMessageDialog.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceMessageDialog.java
index 61ed8f4..49857bb 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceMessageDialog.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceMessageDialog.java
@@ -23,6 +23,7 @@
 import org.eclipse.jface.layout.GridLayoutFactory;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.scout.sdk.core.s.jaxws.ParsedWsdl.WebServiceNames;
+import org.eclipse.scout.sdk.core.s.project.ScoutProjectNewHelper;
 import org.eclipse.scout.sdk.s2e.operation.jaxws.WebServiceNewOperation;
 import org.eclipse.scout.sdk.s2e.ui.internal.S2ESdkUiActivator;
 import org.eclipse.scout.sdk.s2e.ui.util.S2eUiUtils;
@@ -50,7 +51,6 @@
  */
 public class WebServiceMessageDialog extends MessageDialogWithToggle {
 
-  public static final String SCOUT_JAX_WS_DOCUMENTATION_URL = "https://eclipsescout.github.io/7.0/technical-guide.html#webservices-with-jax-ws";
   public static final String HIDE_CONSUMER_MSG = "hideWebServiceConsumerInfoMessage";
   public static final String HIDE_PROVIDER_MSG = "hideWebServiceProviderInfoMessage";
 
@@ -60,6 +60,15 @@
     super(parentShell, dialogTitle, image, message, dialogImageType, dialogButtonLabels, defaultIndex, toggleMessage, toggleState);
   }
 
+  protected static String getScoutJaxWsDocumentationUrl() {
+    String version = ScoutProjectNewHelper.SCOUT_ARCHETYPES_VERSION;
+    int secondDotPos = version.indexOf('.', 2);
+    if (secondDotPos > 0) {
+      version = version.substring(0, secondDotPos);
+    }
+    return "http://eclipsescout.github.io/" + version + "/technical-guide.html#webservices-with-jax-ws";
+  }
+
   public static WebServiceMessageDialog open(Shell shell, WebServiceNewOperation op) {
     String message = null;
     String dialogTitle = null;
@@ -90,7 +99,7 @@
     dialog.open();
     if (dialog.isCopyToClipboard()) {
       Clipboard clipboard = new Clipboard(shell.getDisplay());
-      clipboard.setContents(new Object[]{message + "\n\nJAX-WS Documentation: " + SCOUT_JAX_WS_DOCUMENTATION_URL}, new Transfer[]{TextTransfer.getInstance()});
+      clipboard.setContents(new Object[]{message + "\n\nJAX-WS Documentation: " + getScoutJaxWsDocumentationUrl()}, new Transfer[]{TextTransfer.getInstance()});
       clipboard.dispose();
     }
     return dialog;
@@ -132,7 +141,7 @@
     h.addHyperlinkListener(new HyperlinkAdapter() {
       @Override
       public void linkActivated(HyperlinkEvent e) {
-        S2eUiUtils.showUrlInBrowser(SCOUT_JAX_WS_DOCUMENTATION_URL);
+        S2eUiUtils.showUrlInBrowser(getScoutJaxWsDocumentationUrl());
       }
     });
     GridDataFactory
@@ -200,7 +209,7 @@
 
   protected static void addImplementorMsg(StringBuilder builder) {
     builder.append("\nThen you have to decide which JAX-WS implementor you want to use. It is strongly recommended to use the implementor that is included in your J2EE application server if any. ");
-    builder.append("As soon as the implementor is known add the 'jaxws.implementor' property to your config.properties files.\n");
+    builder.append("As soon as the implementor is known add the 'scout.jaxws.implementor' property to your config.properties files.\n");
     builder.append("If the desired JAX-WS implementor is not included in your application server, you also have to add the necessary dependencies to your pom.xml files to include this implementor in the deployment.");
   }
 }
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceNewWizardPage.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceNewWizardPage.java
index 435e59d..4db471d 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceNewWizardPage.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/jaxws/WebServiceNewWizardPage.java
@@ -706,7 +706,7 @@
     }
 
     // check name pattern
-    String msg = ScoutProjectNewHelper.getMavenNameErrorMessage(getArtifactId(), "Artifact Id");
+    String msg = ScoutProjectNewHelper.getMavenArtifactIdErrorMessage(getArtifactId());
     if (msg != null) {
       return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, msg);
     }
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizard.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizard.java
index 3d72f4a..9ae608f 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizard.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizard.java
@@ -75,6 +75,7 @@
     op.setGroupId(m_page1.getGroupId());
     op.setArtifactId(m_page1.getArtifactId());
     op.setJavaVersion(getDefaultWorkspaceJavaVersion());
+    op.setUseJsClient(m_page1.isUseJsClient());
     if (m_page1.isUseWorkspaceLocation()) {
       op.setTargetDirectory(ScoutProjectNewWizardPage.getWorkspaceLocation());
     }
@@ -150,8 +151,8 @@
   }
 
   /**
-   * Converts the specified {@link Version} to a {@link String}. Only the major and minor parts are used. Trailing
-   * zeroes are omitted.<br>
+   * Converts the specified {@link Version} to a {@link String}. Only the major and minor parts are used. Trailing zeroes
+   * are omitted.<br>
    *
    * @param version
    *          The {@link Version} to convert.
diff --git a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizardPage.java b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizardPage.java
index 13fef1c..7985e46 100644
--- a/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizardPage.java
+++ b/org.eclipse.scout.sdk.s2e.ui/src/main/java/org/eclipse/scout/sdk/s2e/ui/internal/wizard/project/ScoutProjectNewWizardPage.java
@@ -56,11 +56,16 @@
   public static final String PROP_DISPLAY_NAME = "dispName";
   public static final String PROP_DIR = "dir";
   public static final String PROP_USE_WORKSPACE_LOC = "useWorkspaceLoc";
+  public static final String PROP_USE_JS_CLIENT = "useJsClient";
   public static final String SETTINGS_TARGET_DIR = "targetDirSetting";
 
   protected StyledTextField m_groupIdField;
   protected StyledTextField m_artifactIdField;
   protected StyledTextField m_displayNameField;
+
+  protected Button m_javaScriptButton;
+  protected Button m_javaButton;
+
   protected Button m_useWsLoc;
   protected ResourceTextField m_targetDirectoryField;
 
@@ -79,6 +84,7 @@
 
     int labelWidth = 100;
     createProjectNameGroup(parent, labelWidth);
+    createClientLanguageGroup(parent);
     createProjectLocationGroup(parent, labelWidth);
 
     PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IScoutHelpContextIds.SCOUT_PROJECT_NEW_WIZARD_PAGE);
@@ -158,6 +164,52 @@
         .applyTo(m_displayNameField);
   }
 
+  protected void createClientLanguageGroup(Composite parent) {
+
+    Group uiLangBox = getFieldToolkit().createGroupBox(parent, "Programming language of the user interface");
+
+    m_javaScriptButton = new Button(uiLangBox, SWT.RADIO);
+    m_javaScriptButton.setText("JavaScript && JSON");
+    m_javaScriptButton.setSelection(isUseJsClient());
+    m_javaScriptButton.addSelectionListener(new SelectionAdapter() {
+      @Override
+      public void widgetSelected(SelectionEvent e) {
+        setUseJsClientInternal(m_javaScriptButton.getSelection());
+        pingStateChanging();
+      }
+    });
+
+    m_javaButton = new Button(uiLangBox, SWT.RADIO);
+    m_javaButton.setText("Java");
+    m_javaButton.setSelection(!isUseJsClient());
+    m_javaButton.addSelectionListener(new SelectionAdapter() {
+      @Override
+      public void widgetSelected(SelectionEvent e) {
+        setUseJsClientInternal(!m_javaButton.getSelection());
+        pingStateChanging();
+      }
+    });
+
+    // layout
+    GridLayoutFactory
+        .swtDefaults()
+        .applyTo(uiLangBox);
+    GridDataFactory
+        .defaultsFor(uiLangBox)
+        .align(SWT.FILL, SWT.CENTER)
+        .grab(true, false)
+        .indent(0, 10)
+        .applyTo(uiLangBox);
+    GridDataFactory
+        .defaultsFor(m_javaScriptButton)
+        .indent(13, 5)
+        .applyTo(m_javaScriptButton);
+    GridDataFactory
+        .defaultsFor(m_javaButton)
+        .indent(13, 2)
+        .applyTo(m_javaButton);
+  }
+
   protected void createProjectLocationGroup(Composite parent, int labelWidth) {
     Group locationGroup = getFieldToolkit().createGroupBox(parent, "Project Location");
 
@@ -243,6 +295,9 @@
     // display name
     setDisplayNameInternal("My Application");
 
+    // ui language
+    setUseJsClientInternal(false);
+
     // use workspace loc
     setUseWorkspaceLocationInternal(true);
 
@@ -291,7 +346,7 @@
 
   protected IStatus getStatusGroupId() {
     // check name pattern
-    String msg = ScoutProjectNewHelper.getMavenNameErrorMessage(getGroupId(), "Group Id");
+    String msg = ScoutProjectNewHelper.getMavenGroupIdErrorMessage(getGroupId());
     if (msg != null) {
       return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, msg);
     }
@@ -300,7 +355,8 @@
 
   protected IStatus getStatusArtifactId() {
     // check name pattern
-    String msg = ScoutProjectNewHelper.getMavenNameErrorMessage(getArtifactId(), "Artifact Id");
+    String artifactId = getArtifactId();
+    String msg = ScoutProjectNewHelper.getMavenArtifactIdErrorMessage(artifactId);
     if (msg != null) {
       return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, msg);
     }
@@ -313,13 +369,13 @@
     else {
       folder = getTargetDirectory();
     }
-    if (folder != null && new File(folder, getArtifactId()).exists()) {
+    if (folder != null && new File(folder, artifactId).exists()) {
       return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, "A project with this Artifact Id already exists in this target directory.");
     }
 
     // check project existence in workspace
     for (IProject p : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
-      if (p.getName().startsWith(getArtifactId() + '.')) {
+      if (p.getName().startsWith(artifactId + '.')) {
         return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, "A project with this Artifact Id already exists in the workspace.");
       }
     }
@@ -327,7 +383,7 @@
   }
 
   protected IStatus getStatusDisplayName() {
-    String msg = ScoutProjectNewHelper.getDisplayNameErrorMEssage(getDisplayName());
+    String msg = ScoutProjectNewHelper.getDisplayNameErrorMessage(getDisplayName());
     if (msg != null) {
       return new Status(IStatus.ERROR, S2ESdkUiActivator.PLUGIN_ID, msg);
     }
@@ -448,4 +504,26 @@
   protected void setTargetDirectoryInternal(File f) {
     setProperty(PROP_DIR, f);
   }
+
+  public boolean isUseJsClient() {
+    return getPropertyBool(PROP_USE_JS_CLIENT);
+  }
+
+  public void setUseJsClient(boolean isUseJsClient) {
+    try {
+      setStateChanging(true);
+      setUseJsClientInternal(isUseJsClient);
+      if (isControlCreated()) {
+        m_javaButton.setSelection(!isUseJsClient);
+        m_javaScriptButton.setSelection(isUseJsClient);
+      }
+    }
+    finally {
+      setStateChanging(false);
+    }
+  }
+
+  protected void setUseJsClientInternal(boolean isUseJsClient) {
+    setPropertyBool(PROP_USE_JS_CLIENT, isUseJsClient);
+  }
 }
diff --git a/org.eclipse.scout.sdk.s2e/.project b/org.eclipse.scout.sdk.s2e/.project
index 63c031e..af72f2a 100644
--- a/org.eclipse.scout.sdk.s2e/.project
+++ b/org.eclipse.scout.sdk.s2e/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk.s2e/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk.s2e/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk.s2e/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk.s2e/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk.s2e/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk.s2e/pom.xml b/org.eclipse.scout.sdk.s2e/pom.xml
index 586a997..c703932 100644
--- a/org.eclipse.scout.sdk.s2e/pom.xml
+++ b/org.eclipse.scout.sdk.s2e/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.scout.sdk</groupId>
     <artifactId>org.eclipse.scout.sdk</artifactId>
-    <version>7.0.300-SNAPSHOT</version>
+    <version>8.0.0-SNAPSHOT</version>
     <relativePath>../org.eclipse.scout.sdk/pom.xml</relativePath>
   </parent>
 
@@ -29,7 +29,7 @@
   <properties>
     <bundle.symbolicName>${project.artifactId}</bundle.symbolicName>
     <bundle.namespace>${project.artifactId}</bundle.namespace>
-    <bundle.version>7.0.300</bundle.version>
+    <bundle.version>8.0.0</bundle.version>
   </properties>
 
   <dependencies>
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/ClassIdValidationJob.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/ClassIdValidationJob.java
index 3ce6b2f..2a86ba4 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/ClassIdValidationJob.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/ClassIdValidationJob.java
@@ -67,10 +67,10 @@
 
   private final Set<IType> m_classIdTypes;
 
-  private ClassIdValidationJob(Set<IType> classIdTypes) {
+  private ClassIdValidationJob(Set<IType> classIdTypes, boolean showToUser) {
     super(ClassIdValidationJob.class.getName());
-    setSystem(true);
-    setUser(false);
+    setSystem(!showToUser);
+    setUser(showToUser);
     setRule(new P_SchedulingRule());
     setPriority(Job.BUILD);
     m_classIdTypes = classIdTypes;
@@ -232,7 +232,7 @@
     createDuplicateMarkers(classIdOccurrences);
   }
 
-  public static synchronized void executeAsync(final long startDelay) {
+  public static synchronized void executeAsync(final long startDelay, final boolean showToUser) {
     Job currentJob = Job.getJobManager().currentJob();
     if (currentJob instanceof ResourceBlockingOperationJob) {
       // do not schedule a check run if the event comes from the scout sdk itself. we assume it does a correct job.
@@ -256,7 +256,7 @@
           Job.getJobManager().cancel(CLASS_ID_VALIDATION_JOB_FAMILY);
 
           // start the new validation
-          new ClassIdValidationJob(classIds).schedule(TimeUnit.SECONDS.toMillis(1));
+          new ClassIdValidationJob(classIds, showToUser).schedule(TimeUnit.SECONDS.toMillis(1));
         }
         catch (IllegalStateException e) {
           // can happen e.g. when the preference nodes are changed: "java.lang.IllegalStateException: Preference node "org.eclipse.jdt.core" has been removed."
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/MissingClassIdsNewOperation.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/MissingClassIdsNewOperation.java
index 468f415..722f3de 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/MissingClassIdsNewOperation.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/classid/MissingClassIdsNewOperation.java
@@ -16,12 +16,11 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Optional;
 import java.util.Set;
-import java.util.function.Predicate;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -29,8 +28,12 @@
 import org.eclipse.jdt.core.IAnnotation;
 import org.eclipse.jdt.core.IBuffer;
 import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IRegion;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.Document;
 import org.eclipse.scout.sdk.core.importcollector.IImportCollector;
@@ -60,7 +63,7 @@
  */
 public class MissingClassIdsNewOperation implements IOperation {
 
-  private Predicate<IResource> m_filter;
+  private Set<IResource> m_selection;
 
   @Override
   public String getOperationName() {
@@ -76,11 +79,11 @@
   public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
     SubMonitor progress = SubMonitor.convert(monitor, 10);
     try {
-      Collection<IType> candidates = findCandidates(progress.newChild(2));
+      Collection<IType> candidates = findCandidates(progress.newChild(8));
       if (candidates.isEmpty()) {
         return;
       }
-      processCandidates(candidates, progress.newChild(8), workingCopyManager);
+      processCandidates(candidates, progress.newChild(2), workingCopyManager);
     }
     catch (OperationCanceledException e) {
       SdkLog.debug("Creation of missing @ClassId annotations has been cancelled.", e);
@@ -88,9 +91,41 @@
   }
 
   protected ITypeHierarchy createHierarchy(IType iTypeWithClassId, SubMonitor monitor) throws CoreException {
+    if (useRegion()) {
+      return createRegionHierarchy(monitor);
+    }
     return iTypeWithClassId.newTypeHierarchy(monitor);
   }
 
+  /**
+   * Decides whether to use a resource based type hierarchy or if the full classid hierarchy should be calculated.
+   */
+  protected boolean useRegion() {
+    Set<IResource> selection = selection();
+    if (selection.isEmpty() || selection.size() > 100) {
+      return false;
+    }
+    for (IResource r : selection) {
+      if (r.getType() != IResource.FILE) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  protected ITypeHierarchy createRegionHierarchy(SubMonitor monitor) throws JavaModelException {
+    IRegion region = JavaCore.newRegion();
+    for (IResource r : selection()) {
+      if (r != null && r.isAccessible()) {
+        IJavaElement element = JavaCore.create(r);
+        if (S2eUtils.exists(element)) {
+          region.add(element);
+        }
+      }
+    }
+    return JavaCore.newTypeHierarchy(region, null, monitor);
+  }
+
   protected Collection<IType> findCandidates(SubMonitor monitor) throws CoreException {
     Set<IType> result = new HashSet<>();
     Set<IType> startTypes = S2eUtils.resolveJdtTypes(IScoutRuntimeTypes.ITypeWithClassId);
@@ -117,15 +152,26 @@
     return result;
   }
 
-  protected boolean acceptFilter(IType candidate) {
+  protected boolean acceptType(IType candidate) {
     final IResource resource = candidate.getResource();
     if (resource == null || !resource.isAccessible()) {
       return false; // exclude binary types
     }
-    return filter()
-        .map(f -> f.test(resource))
-        .orElse(Boolean.TRUE)
-        .booleanValue();
+
+    if (selection().isEmpty()) {
+      return true; // not limited to resources: accept all
+    }
+    return isInResources(resource);
+  }
+
+  protected boolean isInResources(final IResource candidate) {
+    final IPath location = candidate.getLocation();
+    for (IResource r : selection()) {
+      if (r.getLocation().isPrefixOf(location)) {
+        return true;
+      }
+    }
+    return false;
   }
 
   protected void processCandidates(Collection<IType> candidates, SubMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
@@ -140,7 +186,7 @@
           && t.isClass()
           && !t.isBinary()
           && !t.isAnonymous();
-      if (isValidType && acceptFilter(t)) {
+      if (isValidType && acceptType(t)) {
         IAnnotation annotation = S2eUtils.getAnnotation(t, IScoutRuntimeTypes.ClassId);
         if (annotation == null) {
           ICompilationUnit icu = t.getCompilationUnit();
@@ -207,12 +253,15 @@
     }
   }
 
-  public Optional<Predicate<IResource>> filter() {
-    return Optional.ofNullable(m_filter);
+  public Set<IResource> selection() {
+    if (m_selection == null) {
+      return Collections.emptySet();
+    }
+    return m_selection;
   }
 
-  public MissingClassIdsNewOperation withFilter(final Predicate<IResource> filter) {
-    m_filter = filter;
+  public MissingClassIdsNewOperation withSelection(Set<IResource> selection) {
+    m_selection = selection;
     return this;
   }
 }
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/internal/trigger/DerivedResourceManager.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/internal/trigger/DerivedResourceManager.java
index f80999a..ea7618f 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/internal/trigger/DerivedResourceManager.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/internal/trigger/DerivedResourceManager.java
@@ -416,12 +416,10 @@
     /**
      * An abort stops the current or next run of this job.<br>
      * <br>
-     * An abort differs to a cancel() in that way, that a cancel (can only be performed by the user) discards all
-     * operations that are not yet executed while an abort keeps them and will continue to work on them in the next
-     * schedule().<br>
+     * An abort differs to a cancel() in that way, that a cancel (can only be performed by the user) discards all operations
+     * that are not yet executed while an abort keeps them and will continue to work on them in the next schedule().<br>
      * <br>
-     * An abort will automatically re-schedule this job (if this is no already done) to ensure that no work remains
-     * undone.
+     * An abort will automatically re-schedule this job (if this is no already done) to ensure that no work remains undone.
      */
     private void abort() {
       m_isAborted = true;
@@ -471,7 +469,6 @@
         IDerivedResourceHandler handler = m_queueToConsume.poll();
         try {
           progress.setTaskName(handler.getName() + " [" + i + " of " + numOperations + "]");
-          progress.subTask("");
           handler.validate();
 
           long start = System.currentTimeMillis();
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/project/ScoutProjectNewOperation.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/project/ScoutProjectNewOperation.java
index 6983ed4..d492491 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/project/ScoutProjectNewOperation.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/operation/project/ScoutProjectNewOperation.java
@@ -46,14 +46,13 @@
  */
 public class ScoutProjectNewOperation implements IOperation {
 
-  public static final String TEMPLATE_GROUP_ID = "org.eclipse.scout.archetype.groupId";
-  public static final String TEMPLATE_ARTIFACT_ID = "org.eclipse.scout.archetype.artifactId";
   public static final String TEMPLATE_VERSION = "org.eclipse.scout.archetype.version";
 
   private String m_groupId;
   private String m_artifactId;
   private String m_displayName;
   private String m_javaVersion;
+  private boolean m_useJsClient = true;
   private File m_targetDirectory;
   private List<IProject> m_createdProjects;
 
@@ -70,15 +69,17 @@
   @Override
   public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
     try {
-      // get archetype settings
-      String groupId = S2ESdkActivator.getDefault().getBundle().getBundleContext().getProperty(TEMPLATE_GROUP_ID);
-      String artifactId = S2ESdkActivator.getDefault().getBundle().getBundleContext().getProperty(TEMPLATE_ARTIFACT_ID);
       String version = S2ESdkActivator.getDefault().getBundle().getBundleContext().getProperty(TEMPLATE_VERSION);
-      if (StringUtils.isBlank(groupId) || StringUtils.isBlank(artifactId) || StringUtils.isBlank(version)) {
-        // use default
-        groupId = null;
-        artifactId = null;
-        version = null;
+      if (StringUtils.isBlank(version)) {
+        version = ScoutProjectNewHelper.SCOUT_ARCHETYPES_VERSION;
+      }
+
+      final String artifactId;
+      if (isUseJsClient()) {
+        artifactId = ScoutProjectNewHelper.SCOUT_ARCHETYPES_HELLOJS_ARTIFACT_ID;
+      }
+      else {
+        artifactId = ScoutProjectNewHelper.SCOUT_ARCHETYPES_HELLOWORLD_ARTIFACT_ID;
       }
 
       if (monitor.isCanceled()) {
@@ -87,7 +88,8 @@
 
       // create project on disk (using archetype)
       SubMonitor progress = SubMonitor.convert(monitor, getOperationName(), 100);
-      ScoutProjectNewHelper.createProject(getTargetDirectory(), getGroupId(), getArtifactId(), getDisplayName(), getJavaVersion(), groupId, artifactId, version);
+      ScoutProjectNewHelper.createProject(getTargetDirectory(), getGroupId(), getArtifactId(), getDisplayName(), getJavaVersion(),
+          ScoutProjectNewHelper.SCOUT_ARCHETYPES_GROUP_ID, artifactId, version);
       progress.worked(5);
 
       // import into workspace
@@ -199,4 +201,12 @@
   public void setArtifactId(String artifactId) {
     m_artifactId = artifactId;
   }
+
+  public boolean isUseJsClient() {
+    return m_useJsClient;
+  }
+
+  public void setUseJsClient(boolean useJsClient) {
+    m_useJsClient = useJsClient;
+  }
 }
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/trigger/DefaultResourceChangeEventFilter.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/trigger/DefaultResourceChangeEventFilter.java
index f2dad04..0429795 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/trigger/DefaultResourceChangeEventFilter.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/trigger/DefaultResourceChangeEventFilter.java
@@ -16,7 +16,6 @@
 import java.util.Collections;
 import java.util.function.Predicate;
 
-import org.apache.commons.lang3.Validate;
 import org.eclipse.core.resources.IResourceChangeEvent;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.jobs.Job;
@@ -45,28 +44,28 @@
   public static final String WORKSPACE_INIT_JOB = "org.eclipse.jdt.internal.ui.InitializeAfterLoadJob.RealJob";
   public static final String TEAM_UPDATES = "org.eclipse.team.";
   public static final String SEARCH = "org.eclipse.search2.";
+  public static final String MARKER_UPDATE = "org.eclipse.ui.internal.views.markers.";
+  public static final String JAVA_INDEX_UPDATE_JOB_NAME = "Updating Java index";
 
+  private final Collection<String> m_excludedJobClassNamePrefixes;
+  private final Collection<String> m_excludedJobNames;
   private boolean m_isIgnoreBuildEvents;
   private boolean m_isIgnoreScoutSdkEvents;
-  private Collection<String> m_excludedJobNamePrefixes;
 
   public DefaultResourceChangeEventFilter() {
-    String[] exclusions = new String[]{GIT_UPDATES, MAVEN_UPDATES, SONAR_UPDATE, WEB_TOOLS_UPDATE, DEBUG_EVENT,
+    String[] defaultJobExclusionsFqn = new String[]{GIT_UPDATES, MAVEN_UPDATES, SONAR_UPDATE, WEB_TOOLS_UPDATE, DEBUG_EVENT,
         JDT_DEBUG_EVENT, ANNOTATION_PROCESSING_JOB, ANOTATION_PROCESSING_BUILD, EXTERNAL_FOLDER_UPDATE, DEBUG_INIT,
-        REFRESH_JOB, WORKSPACE_INIT_JOB, TEAM_UPDATES, SEARCH};
-    m_excludedJobNamePrefixes = new ArrayList<>(exclusions.length);
-    Collections.addAll(m_excludedJobNamePrefixes, exclusions);
+        REFRESH_JOB, WORKSPACE_INIT_JOB, TEAM_UPDATES, SEARCH, MARKER_UPDATE};
+    m_excludedJobClassNamePrefixes = new ArrayList<>(defaultJobExclusionsFqn.length);
+    Collections.addAll(m_excludedJobClassNamePrefixes, defaultJobExclusionsFqn);
+
+    m_excludedJobNames = new ArrayList<>(1);
+    m_excludedJobNames.add(JAVA_INDEX_UPDATE_JOB_NAME);
 
     m_isIgnoreBuildEvents = true;
     m_isIgnoreScoutSdkEvents = true;
   }
 
-  public DefaultResourceChangeEventFilter(Collection<String> excludedJobNamePrefixes, boolean ignoreBuildEvents, boolean ignoreScoutSdkEvents) {
-    m_excludedJobNamePrefixes = new ArrayList<>(Validate.notNull(excludedJobNamePrefixes));
-    m_isIgnoreBuildEvents = ignoreBuildEvents;
-    m_isIgnoreScoutSdkEvents = ignoreScoutSdkEvents;
-  }
-
   @Override
   @SuppressWarnings("pmd:NPathComplexity")
   public boolean test(IResourceChangeEvent event) {
@@ -95,20 +94,23 @@
     }
 
     String jobFqn = curJob.getClass().getName().replace('$', '.');
-    Predicate<String> excludedByNamePrefix = className -> getExcludedJobNamePrefixes().stream().anyMatch(prefix -> className.startsWith(prefix));
-    if (excludedByNamePrefix.test(jobFqn)) {
-      return false;
-    }
+    String jobName = curJob.getName();
 
-    if (!"org.eclipse.core.internal.jobs.ThreadJob".equals(jobFqn)) {
-      return true;
-    }
+    Predicate<String> excludedClassNamePrefixes = className -> getExcludedJobClassNamePrefixes().stream().anyMatch(prefix -> className.startsWith(prefix));
+    Predicate<String> excludedJobNames = name -> getExcludedJobNames().stream().anyMatch(n -> name.equals(n));
 
-    StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
-    boolean isStackTraceElementExcluded = Arrays.stream(stackTrace)
-        .map(element -> element.getClassName())
-        .anyMatch(excludedByNamePrefix);
-    return !isStackTraceElementExcluded;
+    if ("org.eclipse.core.internal.jobs.ThreadJob".equals(jobFqn)) {
+      // for thread jobs: check current stack trace
+      StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+      return !Arrays.stream(stackTrace)
+          .map(element -> element.getClassName())
+          .anyMatch(excludedClassNamePrefixes);
+    }
+    if (jobFqn.startsWith("org.eclipse.core.runtime.jobs.Job.")) {
+      // for Job factory methods: check job name
+      return !excludedJobNames.test(jobName);
+    }
+    return !excludedClassNamePrefixes.test(jobFqn) && !excludedJobNames.test(jobName);
   }
 
   /**
@@ -143,23 +145,41 @@
   }
 
   /**
-   * @return A live list of fully qualified class name prefixes of jobs that should be excluded. The returned list may
-   *         be modified directly.
+   * @return A live list of fully qualified job class name prefixes that should be excluded. The returned list may be
+   *         modified directly.
    */
-  public Collection<String> getExcludedJobNamePrefixes() {
-    return m_excludedJobNamePrefixes;
+  public Collection<String> getExcludedJobClassNamePrefixes() {
+    return m_excludedJobClassNamePrefixes;
   }
 
   /**
-   * @param excludedJobNamePrefixes
-   *          The new excluded job fully qualified class names. May be <code>null</code>.
+   * @param excludedJobClassNamePrefixes
+   *          The new list of fully qualified class names of jobs to be excluded. Inner types are separated using '.'. May
+   *          be {@code null}.
    */
-  public void setExcludedJobNamePrefixes(Collection<String> excludedJobNamePrefixes) {
-    if (excludedJobNamePrefixes == null || excludedJobNamePrefixes.isEmpty()) {
-      m_excludedJobNamePrefixes = Collections.emptyList();
+  public void setExcludedJobClassNamePrefixes(final Collection<String> excludedJobClassNamePrefixes) {
+    m_excludedJobClassNamePrefixes.clear();
+    if (excludedJobClassNamePrefixes != null) {
+      m_excludedJobClassNamePrefixes.addAll(excludedJobClassNamePrefixes);
     }
-    else {
-      m_excludedJobNamePrefixes = new ArrayList<>(excludedJobNamePrefixes);
+  }
+
+  /**
+   * @return A live list of job names ({@link Job#getName()}) that should be excluded. Please note: Job names may be
+   *         language dependent! The returned list may be modified directly.
+   */
+  public Collection<String> getExcludedJobNames() {
+    return m_excludedJobNames;
+  }
+
+  /**
+   * @param excludedJobNames
+   *          The new list of job names ({@link Job#getName()}) that should be excluded. May be {@code null}.
+   */
+  public void setExcludedJobNames(final Collection<String> excludedJobNames) {
+    m_excludedJobNames.clear();
+    if (excludedJobNames != null) {
+      m_excludedJobNames.addAll(excludedJobNames);
     }
   }
 }
diff --git a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/util/S2eUtils.java b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/util/S2eUtils.java
index cc30fcd..2297bb2 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/util/S2eUtils.java
+++ b/org.eclipse.scout.sdk.s2e/src/main/java/org/eclipse/scout/sdk/s2e/util/S2eUtils.java
@@ -135,7 +135,6 @@
    * @param jdtType
    *          The input jdt {@link IType}
    * @return The resulting {@link org.eclipse.scout.sdk.core.model.api.IType}
-   * @throws CoreException
    */
   public static org.eclipse.scout.sdk.core.model.api.IType jdtTypeToScoutType(IType jdtType) {
     return jdtTypeToScoutType(jdtType, ScoutSdkCore.createJavaEnvironment(jdtType.getJavaProject()));
@@ -182,8 +181,7 @@
    * @param jdtType
    *          The jdt {@link IType} to convert.
    * @param env
-   *          The {@link IJavaEnvironment} to use to find the matching
-   *          {@link org.eclipse.scout.sdk.core.model.api.IType}.
+   *          The {@link IJavaEnvironment} to use to find the matching {@link org.eclipse.scout.sdk.core.model.api.IType}.
    * @return The {@link org.eclipse.scout.sdk.core.model.api.IType} matching the given JDT {@link IType}.
    */
   public static org.eclipse.scout.sdk.core.model.api.IType jdtTypeToScoutType(IType jdtType, IJavaEnvironment env) {
@@ -200,8 +198,8 @@
    *          The fully qualified name of the base class. The sub classes of this class are searched.
    * @param monitor
    *          The monitor or <code>null</code>. If the monitor becomes canceled, the search is aborted and an incomplete
-   *          result may be returned. The caller of this method is responsible to react on this fact based on the
-   *          monitor state ({@link IProgressMonitor#isCanceled()}).
+   *          result may be returned. The caller of this method is responsible to react on this fact based on the monitor
+   *          state ({@link IProgressMonitor#isCanceled()}).
    * @return A {@link Set} containing all {@link IType}s sorted ascending by fully qualified name.
    * @throws CoreException
    */
@@ -220,9 +218,8 @@
   }
 
   /**
-   * Gets all {@link IType}s on the classpath of the give {@link IJavaProject} that are sub classes of the given
-   * baseType and fulfill the given filter. If the base type itself fulfills the given filter, it is included in the
-   * result.
+   * Gets all {@link IType}s on the classpath of the give {@link IJavaProject} that are sub classes of the given baseType
+   * and fulfill the given filter. If the base type itself fulfills the given filter, it is included in the result.
    *
    * @param sourceProject
    *          The {@link IJavaProject} defining the classpath.
@@ -230,8 +227,8 @@
    *          The base class of the hierarchy.
    * @param monitor
    *          The monitor or <code>null</code>. If the monitor becomes canceled, the search is aborted and an incomplete
-   *          result may be returned. The caller of this method is responsible to react on this fact based on the
-   *          monitor state ({@link IProgressMonitor#isCanceled()}).
+   *          result may be returned. The caller of this method is responsible to react on this fact based on the monitor
+   *          state ({@link IProgressMonitor#isCanceled()}).
    * @param filter
    *          A filter to decide which matches are accepted or <code>null</code> if all matches should be accepted.
    * @return A {@link Set} containing the {@link IType}s sorted ascending by simple name and fully qualified name
@@ -291,8 +288,8 @@
    * Gets all {@link IType}s that are accessible in the current workspace having the given fully qualified name.
    *
    * @param fqn
-   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator
-   *          (e.g. <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
+   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator (e.g.
+   *          <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
    * @return
    * @throws CoreException
    */
@@ -304,8 +301,8 @@
    * Gets all {@link IType}s that are accessible in the given scope having the given fully qualified name.
    *
    * @param fqn
-   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator
-   *          (e.g. <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
+   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator (e.g.
+   *          <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
    * @param scope
    *          The {@link IJavaSearchScope} that defines where to search.
    * @return A {@link Set} with all {@link IType}s
@@ -393,8 +390,8 @@
    *          The {@link IType} where to start the search.
    * @param fullyQualifiedAnnotations
    *          The fully qualified names of the annotations to search.
-   * @return The first of the annotations found in the super hierarchy of the given {@link IType} or <code>null</code>
-   *         if it could not be found.
+   * @return The first of the annotations found in the super hierarchy of the given {@link IType} or <code>null</code> if
+   *         it could not be found.
    * @throws CoreException
    */
   public static IAnnotation getFirstAnnotationInSupertypeHierarchy(IType type, String... fullyQualifiedAnnotations) throws CoreException {
@@ -532,8 +529,8 @@
    *          {@link SearchEngine#createJavaSearchScope(IJavaElement[])}.
    * @param monitor
    *          The monitor or <code>null</code>. If the monitor becomes canceled, the search is aborted and an incomplete
-   *          result may be returned. The caller of this method is responsible to react on this fact based on the
-   *          monitor state ({@link IProgressMonitor#isCanceled()}).
+   *          result may be returned. The caller of this method is responsible to react on this fact based on the monitor
+   *          state ({@link IProgressMonitor#isCanceled()}).
    * @throws CoreException
    */
   public static Set<IType> findAllTypesAnnotatedWith(String annotationName, IJavaSearchScope scope, final IProgressMonitor monitor) throws CoreException {
@@ -651,8 +648,8 @@
    *          The {@link IAnnotation} for which the attribute should be converted.
    * @param name
    *          The name of attribute.
-   * @return A {@link String} with the value of the given attribute or <code>null</code> if the value is
-   *         <code>null</code> or could not be found.
+   * @return A {@link String} with the value of the given attribute or <code>null</code> if the value is <code>null</code>
+   *         or could not be found.
    * @throws JavaModelException
    */
   public static String getAnnotationValueString(IAnnotation annotation, String name) throws JavaModelException {
@@ -707,8 +704,8 @@
    *          The resources that should be written
    * @return An {@link IStatus} describing if the given resources can be written now. If {@link IStatus#isOK()} returns
    *         <code>true</code>, it is safe to continue the write operation. Otherwise the {@link IStatus} contains the
-   *         files and reasons why this is not possible. This may be the case if the file is still read-only or because
-   *         it changed value in the mean time.
+   *         files and reasons why this is not possible. This may be the case if the file is still read-only or because it
+   *         changed value in the mean time.
    */
   @SuppressWarnings("pmd:NPathComplexity")
   public static IStatus makeCommittable(Collection<IResource> resources) {
@@ -797,14 +794,14 @@
   }
 
   /**
-   * Executes the given {@link CompilationUnitWriteOperation}s in a new {@link ResourceBlockingOperationJob}, waits
-   * until all have finished and returns the resulting first {@link IType}s of each created or updated
+   * Executes the given {@link CompilationUnitWriteOperation}s in a new {@link ResourceBlockingOperationJob}, waits until
+   * all have finished and returns the resulting first {@link IType}s of each created or updated
    * {@link ICompilationUnit}.<br>
    * If you don't need the created or updated {@link IType}s it is faster to call
    * {@link #writeFiles(Collection, IProgressMonitor, boolean)}.<br>
    * <br>
-   * <b>Important:</b> If the {@link Job} invoking this method uses an {@link ISchedulingRule} that conflicts with one
-   * of the {@link IFile}s to be written, this will result in a deadlock! In that case use
+   * <b>Important:</b> If the {@link Job} invoking this method uses an {@link ISchedulingRule} that conflicts with one of
+   * the {@link IFile}s to be written, this will result in a deadlock! In that case use
    * {@link #writeType(IPackageFragmentRoot, ICompilationUnitSourceBuilder, IJavaEnvironment, IProgressMonitor, IWorkingCopyManager)}
    * instead or write the types sync using
    * {@link CompilationUnitWriteOperation#run(IProgressMonitor, IWorkingCopyManager)}.
@@ -861,11 +858,11 @@
    * If you don't need the created or updated {@link IFile}s it is faster to call
    * {@link #writeFiles(Collection, IProgressMonitor, boolean)}.<br>
    * <br>
-   * <b>Important:</b> If the {@link Job} invoking this method uses an {@link ISchedulingRule} that conflicts with one
-   * of the {@link IFile}s to be written, this will result in a deadlock! In that case use
+   * <b>Important:</b> If the {@link Job} invoking this method uses an {@link ISchedulingRule} that conflicts with one of
+   * the {@link IFile}s to be written, this will result in a deadlock! In that case use
    * {@link #writeFiles(Collection, IProgressMonitor, boolean)} without waiting instead or write the files sync using
-   * {@link IFileWriteOperation#run(IProgressMonitor, IWorkingCopyManager)} if you need the resulting {@link IFile}
-   * after the invocation of this method.
+   * {@link IFileWriteOperation#run(IProgressMonitor, IWorkingCopyManager)} if you need the resulting {@link IFile} after
+   * the invocation of this method.
    *
    * @param ops
    *          The {@link IFileWriteOperation}s to execute
@@ -874,9 +871,8 @@
    * @return A {@link List} containing all created or updated {@link IFile}s in the same order as the given
    *         {@link Collection} returns {@link IFileWriteOperation}s. Therefore the first {@link IFile} in the resulting
    *         {@link List} belongs to the first {@link IFileWriteOperation} in ops.
-   * @throws CoreException
    */
-  public static List<IFile> writeFiles(Collection<? extends IFileWriteOperation> ops, IProgressMonitor monitor) throws CoreException {
+  public static List<IFile> writeFiles(Collection<? extends IFileWriteOperation> ops, IProgressMonitor monitor) {
     if (ops == null || ops.isEmpty()) {
       return Collections.emptyList();
     }
@@ -903,16 +899,15 @@
    * @param monitor
    *          The {@link IProgressMonitor}
    * @param waitUntilWritten
-   *          <code>true</code> if this method should block until all operations have been executed. <code>false</code>
-   *          if this method should directly return after the {@link ResourceWriteOperation}s have been scheduled.<br>
+   *          <code>true</code> if this method should block until all operations have been executed. <code>false</code> if
+   *          this method should directly return after the {@link ResourceWriteOperation}s have been scheduled.<br>
    *          Important: If this parameter is <code>true</code> and the {@link Job} invoking this method uses an
    *          {@link ISchedulingRule} that conflicts with one of the {@link IFile}s to be written, this will result in a
    *          deadlock! In that case consider writing the files sync using
    *          {@link IFileWriteOperation#run(IProgressMonitor, IWorkingCopyManager)} if you need the resulting
    *          {@link IFile} after the invocation of this method.
-   * @throws CoreException
    */
-  public static void writeFiles(Collection<? extends IFileWriteOperation> ops, IProgressMonitor monitor, boolean waitUntilWritten) throws CoreException {
+  public static void writeFiles(Collection<? extends IFileWriteOperation> ops, IProgressMonitor monitor, boolean waitUntilWritten) {
     if (ops == null || ops.isEmpty()) {
       return;
     }
@@ -956,13 +951,13 @@
    * Creates a {@link IJavaSearchScope} based on the given {@link IResource}s.<br>
    * The search scope contains the following items depending on the resource type:
    * <ul>
-   * <li>{@link IResource#PROJECT}: If the project has the java nature ({@link JavaCore#NATURE_ID}) and is open all
-   * source folders of the project are added (no libraries or dependent projects).</li>
+   * <li>{@link IResource#PROJECT}: If the project has the java nature ({@link JavaCore#NATURE_ID}) and is open all source
+   * folders of the project are added (no libraries or dependent projects).</li>
    * <li>{@link IResource#FOLDER}: The {@link IPackageFragment} or {@link IPackageFragmentRoot} is added if the folder
    * belongs to one. All sub-packages are included as well!</li>
    * <li>{@link IResource#FILE}: If the file is a java file, the corresponding {@link ICompilationUnit} is added. If the
-   * resource is a class file, the corresponding {@link IClassFile} is added. If the file is a jar file, the
-   * corresponding {@link IPackageFragmentRoot} is added.</li>
+   * resource is a class file, the corresponding {@link IClassFile} is added. If the file is a jar file, the corresponding
+   * {@link IPackageFragmentRoot} is added.</li>
    * <li>{@link IResource#ROOT}: All source folders of all {@link IJavaProject}s in the workspace are added.</li>
    * <ul>
    *
@@ -1067,8 +1062,8 @@
    * @param projects
    *          The {@link IJavaProject}s in which the source folders should be searched.
    * @param monitor
-   *          The {@link IProgressMonitor} to use. The search aborts if the given {@link IProgressMonitor} is canceled.
-   *          In this case an empty {@link Set} is returned.
+   *          The {@link IProgressMonitor} to use. The search aborts if the given {@link IProgressMonitor} is canceled. In
+   *          this case an empty {@link Set} is returned.
    * @return A {@link Set} with all source folders ({@link IPackageFragmentRoot}s of kind
    *         {@link IPackageFragmentRoot#K_SOURCE}) of the given {@link IJavaProject}s ordered by relevance and project.
    * @throws JavaModelException
@@ -1085,8 +1080,8 @@
    * @param filter
    *          The {@link Predicate} the {@link IPackageFragmentRoot} candidates must fulfill.
    * @param monitor
-   *          The {@link IProgressMonitor} to use. The search aborts if the given {@link IProgressMonitor} is canceled.
-   *          In this case an empty {@link Set} is returned.
+   *          The {@link IProgressMonitor} to use. The search aborts if the given {@link IProgressMonitor} is canceled. In
+   *          this case an empty {@link Set} is returned.
    * @return A {@link Set} with all source folders ({@link IPackageFragmentRoot}s of kind
    *         {@link IPackageFragmentRoot#K_SOURCE}) of the given {@link IJavaProject}s that accept the given
    *         {@link Predicate} ordered by relevance and project.
@@ -1214,8 +1209,8 @@
    * @param h
    *          The hierarchy to search in.
    * @param fqn
-   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator
-   *          (e.g. <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
+   *          The fully qualified name of the types to search. Inner types must use the '$' enclosing type separator (e.g.
+   *          <code>org.eclipse.scout.TestClass$InnerClass$NextLevelInnerClass</code>).
    * @return <code>true</code> if it is part of the given {@link ITypeHierarchy}, <code>false</code> otherwise.
    */
   public static boolean hierarchyContains(ITypeHierarchy h, String fqn) {
@@ -1521,8 +1516,8 @@
    *
    * @param file
    *          The {@link IFile} that should be loaded. Must be an XML file!
-   * @return a {@link Document} holding the contents of the {@link IFile} or <code>null</code> if the given
-   *         {@link IFile} does not exist.
+   * @return a {@link Document} holding the contents of the {@link IFile} or <code>null</code> if the given {@link IFile}
+   *         does not exist.
    * @throws CoreException
    */
   public static Document readXmlDocument(IFile file) throws CoreException {
@@ -1581,8 +1576,8 @@
    *          Specifies if the project should be refreshed from disk.
    * @param monitor
    *          The {@link IProgressMonitor} for the update operation.
-   * @return A {@link Map} containing the project name as key and an {@link IStatus} describing the update result for
-   *         the corresponding project.
+   * @return A {@link Map} containing the project name as key and an {@link IStatus} describing the update result for the
+   *         corresponding project.
    */
   public static Map<String, IStatus> mavenUpdate(Set<IProject> projects, boolean updateSnapshots, boolean updateConfig, boolean cleanProject, boolean refreshFromDisk, IProgressMonitor monitor) {
     if (projects == null || projects.isEmpty()) {
diff --git a/org.eclipse.scout.sdk.s2e/src/main/resources/about.ini b/org.eclipse.scout.sdk.s2e/src/main/resources/about.ini
index a0a47c2..68c3da4 100644
--- a/org.eclipse.scout.sdk.s2e/src/main/resources/about.ini
+++ b/org.eclipse.scout.sdk.s2e/src/main/resources/about.ini
@@ -7,8 +7,8 @@
 # Property "aboutText" contains blurb for "About" dialog (translated)
 aboutText=Eclipse Scout Project\n\
 \n\
-Copyright (c) 2011, 2016 Scout project committers and others.  All rights reserved.\n\
-Visit: http://eclipse.org/scout
+Copyright (c) 2011, 2018 Scout project committers and others.  All rights reserved.\n\
+Visit: https://www.eclipse.org/scout/
 
 # Property "featureImage" contains path to feature image (32x32)
 featureImage=scout.jpg
diff --git a/org.eclipse.scout.sdk/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.sdk/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/org.eclipse.scout.sdk/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.scout.sdk/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/org.eclipse.scout.sdk/.settings/org.eclipse.wst.jsdt.core.prefs b/org.eclipse.scout.sdk/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/org.eclipse.scout.sdk/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/org.eclipse.scout.sdk/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/org.eclipse.scout.sdk/.settings/org.sonarlint.eclipse.core.prefs b/org.eclipse.scout.sdk/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/org.eclipse.scout.sdk/.settings/org.sonarlint.eclipse.core.prefs
+++ b/org.eclipse.scout.sdk/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/org.eclipse.scout.sdk/pom.xml b/org.eclipse.scout.sdk/pom.xml
index 626f769..44d18f4 100644
--- a/org.eclipse.scout.sdk/pom.xml
+++ b/org.eclipse.scout.sdk/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.eclipse.scout.sdk</groupId>
   <artifactId>org.eclipse.scout.sdk</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>8.0.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Eclipse Scout SDK</name>
   <description>Eclipse Scout SDK</description>
@@ -36,6 +36,7 @@
     <!-- Must be at first position -->
     <module>../scout-helloworld-app</module>
     <module>../scout-jaxws-module</module>
+    <module>../scout-hellojs-app</module>
 
     <module>../org.eclipse.scout.sdk.core</module>
     <module>../org.eclipse.scout.sdk.core.test</module>
@@ -52,23 +53,23 @@
   </modules>
 
   <properties>
-    <scout.base.version>7.0.300</scout.base.version>
+    <scout.base.version>8.0.0</scout.base.version>
     <base.version>${scout.base.version}</base.version>
-    <org.eclipse.scout.rt_version>7.0.300-SNAPSHOT</org.eclipse.scout.rt_version>
+    <org.eclipse.scout.rt_version>8.0.0-SNAPSHOT</org.eclipse.scout.rt_version>
 
     <master_coverage_jacoco_destFile>${basedir}/../org.eclipse.scout.sdk/target/jacoco-all.exec</master_coverage_jacoco_destFile>
     <master_test_forkCount>1</master_test_forkCount>
 
     <!-- Sonar properties -->
-    <sonar.branch>releases_7.0.x</sonar.branch>
+    <sonar.branch>releases_8.0.x</sonar.branch>
     <master_test_timeout>1800</master_test_timeout>
     <sonar.jacoco.reportPath>${master_coverage_jacoco_destFile}</sonar.jacoco.reportPath>
 
      <!-- exclude fixtures -->
     <sonar.exclusions>
-      **/src/main/fixture/**,
-      **/src/main/client/**,
-      **/src/main/shared/**
+      **/src/main/fixture/**/*,
+      **/src/main/client/**/*,
+      **/src/main/shared/**/*
     </sonar.exclusions>
 
     <!-- exclude fixtures, archetypes, UI -->
@@ -263,78 +264,78 @@
       <dependency>
         <groupId>org.eclipse.scout.sdk</groupId>
         <artifactId>org.eclipse.scout.sdk.core</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.scout.sdk</groupId>
         <artifactId>org.eclipse.scout.sdk.core.test</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk</groupId>
         <artifactId>org.eclipse.scout.sdk.core.s</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk</groupId>
         <artifactId>org.eclipse.scout.sdk.core.s.test</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
         <classifier>sources</classifier>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.doc</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.doc</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
         <classifier>sources</classifier>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.nls</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.nls</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
         <classifier>sources</classifier>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.ui</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.ui</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
         <classifier>sources</classifier>
       </dependency>
 
       <dependency>
         <groupId>org.eclipse.scout.sdk.s2e</groupId>
         <artifactId>org.eclipse.scout.sdk.s2e.test</artifactId>
-        <version>7.0.300-SNAPSHOT</version>
+        <version>8.0.0-SNAPSHOT</version>
       </dependency>
 
       <!-- Build Dependencies -->
@@ -727,7 +728,7 @@
   <scm>
     <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout.sdk.git</connection>
     <developerConnection>scm:git:ssh://${eclipse_gerrit_username}@git.eclipse.org:29418/scout/org.eclipse.scout.sdk</developerConnection>
-    <tag>releases/7.0.x</tag>
+    <tag>releases/8.0.x</tag>
     <url>http://git.eclipse.org/c/scout/org.eclipse.scout.sdk.git/</url>
   </scm>
 
diff --git a/pom.xml b/pom.xml
index 05f923a..e8e106f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
 
   <groupId>org.eclipse.scout.sdk</groupId>
   <artifactId>org.eclipse.scout.sdk-root</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>7.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>Eclipse Scout SDK</name>
 
diff --git a/scout-hellojs-app/.classpath b/scout-hellojs-app/.classpath
new file mode 100644
index 0000000..c6d82cd
--- /dev/null
+++ b/scout-hellojs-app/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+  <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+    <attributes>
+      <attribute name="optional" value="true"/>
+      <attribute name="maven.pomderived" value="true"/>
+    </attributes>
+  </classpathentry>
+  <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+    <attributes>
+      <attribute name="optional" value="true"/>
+      <attribute name="maven.pomderived" value="true"/>
+    </attributes>
+  </classpathentry>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+    <attributes>
+      <attribute name="maven.pomderived" value="true"/>
+    </attributes>
+  </classpathentry>
+  <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+    <attributes>
+      <attribute name="maven.pomderived" value="true"/>
+    </attributes>
+  </classpathentry>
+  <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/scout-hellojs-app/.project b/scout-hellojs-app/.project
new file mode 100644
index 0000000..ed91e68
--- /dev/null
+++ b/scout-hellojs-app/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>scout-hellojs-app</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/scout-hellojs-app/.settings/.jsdtscope b/scout-hellojs-app/.settings/.jsdtscope
new file mode 100644
index 0000000..555a5ca
--- /dev/null
+++ b/scout-hellojs-app/.settings/.jsdtscope
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+  <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="src" path="src/main/js" excluding="*-module.js"/>
+  <classpathentry kind="lib" path="src/main/resources/WebContent/res" excluding="*-macro.js"/>
+  <classpathentry exported="true" kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+  <classpathentry kind="output" path=""/>
+</classpath>
diff --git a/scout-hellojs-app/.settings/com.eclipsesource.jshint.ui.prefs b/scout-hellojs-app/.settings/com.eclipsesource.jshint.ui.prefs
new file mode 100644
index 0000000..00492d9
--- /dev/null
+++ b/scout-hellojs-app/.settings/com.eclipsesource.jshint.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+included=src/main/js//*.js\:src/test/js//*.js
+projectSpecificOptions=true
diff --git a/scout-hellojs-app/.settings/de.loskutov.anyedit.AnyEditTools.prefs b/scout-hellojs-app/.settings/de.loskutov.anyedit.AnyEditTools.prefs
new file mode 100644
index 0000000..9e00de0
--- /dev/null
+++ b/scout-hellojs-app/.settings/de.loskutov.anyedit.AnyEditTools.prefs
@@ -0,0 +1,18 @@
+activeContentFilterList=*.makefile,makefile,*.Makefile,Makefile,Makefile.*,*.mk,MANIFEST.MF,.project,*.target
+addNewLine=true
+convertActionOnSaave=AnyEdit.CnvrtTabToSpaces
+eclipse.preferences.version=1
+fixLineDelimiters=true
+ignoreBlankLinesWhenTrimming=false
+inActiveContentFilterList=
+javaTabWidthForJava=true
+org.eclipse.jdt.ui.editor.tab.width=2
+projectPropsEnabled=true
+removeTrailingSpaces=true
+replaceAllSpaces=false
+replaceAllTabs=true
+saveAndAddLine=true
+saveAndConvert=true
+saveAndFixLineDelimiters=true
+saveAndTrim=true
+useModulo4Tabs=true
diff --git a/scout-hellojs-app/.settings/org.eclipse.core.resources.prefs b/scout-hellojs-app/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..13d34f3
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,18 @@
+eclipse.preferences.version=1
+encoding//src/main/client=UTF-8
+encoding//src/main/fixture=UTF-8
+encoding//src/main/java=UTF-8
+encoding//src/main/java-jcl=UTF-8
+encoding//src/main/java-log4j=UTF-8
+encoding//src/main/java-original=UTF-8
+encoding//src/main/js=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/main/shared=UTF-8
+encoding//src/main/webapp=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/js=UTF-8
+encoding//src/test/resources=UTF-8
+encoding//target/generated-sources/annotations=UTF-8
+encoding//target/generated-sources/wsimport=UTF-8
+encoding/<project>=UTF-8
+encoding/files=UTF-8
diff --git a/scout-hellojs-app/.settings/org.eclipse.core.runtime.prefs b/scout-hellojs-app/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/scout-hellojs-app/.settings/org.eclipse.jdt.core.prefs b/scout-hellojs-app/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9f76e
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,394 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=m_
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=error
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=disabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=error
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
+org.eclipse.jdt.core.formatter.lineSplit=240
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/scout-hellojs-app/.settings/org.eclipse.jdt.ui.prefs b/scout-hellojs-app/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..c0e09bf
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,116 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=false
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=false
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_Eclipse Scout
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Eclipse Scout
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=false
+sp_cleanup.add_missing_deprecated_annotations=false
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=false
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=false
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/scout-hellojs-app/.settings/org.eclipse.m2e.core.prefs b/scout-hellojs-app/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.core.prefs b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.core.prefs
new file mode 100644
index 0000000..1b2735d
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -0,0 +1,307 @@
+eclipse.preferences.version=1
+org.eclipse.wst.jsdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.wst.jsdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.wst.jsdt.core.compiler.compliance=1.4
+org.eclipse.wst.jsdt.core.compiler.debug.lineNumber=generate
+org.eclipse.wst.jsdt.core.compiler.debug.localVariable=generate
+org.eclipse.wst.jsdt.core.compiler.debug.sourceFile=generate
+org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.wst.jsdt.core.compiler.problem.duplicateLocalVariables=warning
+org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
+org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning
+org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
+org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedGlobalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedLocalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.wst.jsdt.core.compiler.source=1.3
+org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment=0
+org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field=0
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package=0
+org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations=0
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments=true
+org.eclipse.wst.jsdt.core.formatter.comment.format_header=false
+org.eclipse.wst.jsdt.core.formatter.comment.format_html=true
+org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments=true
+org.eclipse.wst.jsdt.core.formatter.comment.format_source_code=true
+org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.wst.jsdt.core.formatter.comment.line_length=80
+org.eclipse.wst.jsdt.core.formatter.compact_else_if=true
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation=2
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer=1
+org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.wst.jsdt.core.formatter.indent_empty_lines=false
+org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.wst.jsdt.core.formatter.indentation.size=2
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_object_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_object_initializer=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line=true
+org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line=false
+org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line=true
+org.eclipse.wst.jsdt.core.formatter.lineSplit=9999
+org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.wst.jsdt.core.formatter.tabulation.char=space
+org.eclipse.wst.jsdt.core.formatter.tabulation.size=2
+org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator=true
+semanticValidation=disabled
diff --git a/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.prefs b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.prefs
new file mode 100644
index 0000000..114189d
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.prefs
@@ -0,0 +1,100 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.format_source_code=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=false
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_Eclipse Scout
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.wst.jsdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Eclipse Scout
+formatter_settings_version=11
+org.eclipse.wst.jsdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.format_source_code=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.container b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..49c8cd4
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.JRE_CONTAINER
\ No newline at end of file
diff --git a/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.name b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..11006e2
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Global
\ No newline at end of file
diff --git a/scout-hellojs-app/.settings/org.sonarlint.eclipse.core.prefs b/scout-hellojs-app/.settings/org.sonarlint.eclipse.core.prefs
new file mode 100644
index 0000000..aac1181
--- /dev/null
+++ b/scout-hellojs-app/.settings/org.sonarlint.eclipse.core.prefs
@@ -0,0 +1,7 @@
+autoEnabled=false
+eclipse.preferences.version=1
+extraProperties=
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+serverId=Scout
diff --git a/scout-hellojs-app/about.html b/scout-hellojs-app/about.html
new file mode 100644
index 0000000..c258ef5
--- /dev/null
+++ b/scout-hellojs-app/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/scout-hellojs-app/epl-v10.html b/scout-hellojs-app/epl-v10.html
new file mode 100644
index 0000000..84ec251
--- /dev/null
+++ b/scout-hellojs-app/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/scout-hellojs-app/pom.xml b/scout-hellojs-app/pom.xml
new file mode 100644
index 0000000..2b2ec89
--- /dev/null
+++ b/scout-hellojs-app/pom.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Copyright (c) 2015 BSI Business Systems Integration AG.
+  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:
+  BSI Business Systems Integration AG - initial API and implementation
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.scout</groupId>
+    <artifactId>maven_sdk_plugin_config-master</artifactId>
+    <version>2.0.13</version>
+    <relativePath></relativePath>
+  </parent>
+
+  <groupId>org.eclipse.scout.archetypes</groupId>
+  <artifactId>scout-hellojs-app</artifactId>
+  <version>8.0.0-SNAPSHOT</version>
+  <packaging>maven-archetype</packaging>
+
+  <name>ScoutJS Sample Application</name>
+  <description>Maven Archetype which creates a ScoutJS Sample Application</description>
+  <url>https://eclipse.org/scout</url>
+
+  <properties>
+    <scout.base.version>8.0.0</scout.base.version>
+    <base.version>${scout.base.version}</base.version>
+
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-archetype-plugin</artifactId>
+          <version>2.4</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>com.mycila</groupId>
+        <artifactId>license-maven-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.archetype</groupId>
+        <artifactId>archetype-packaging</artifactId>
+        <version>2.4</version>
+      </extension>
+    </extensions>
+  </build>
+
+  <!-- primarily for license header generation -->
+  <inceptionYear>2018</inceptionYear>
+
+  <organization>
+    <name>Eclipse Scout Project</name>
+    <url>${project.url}</url>
+  </organization>
+
+  <licenses>
+    <license>
+      <name>Eclipse Public License v1.0</name>
+      <url>http://www.eclipse.org/legal/epl-v10.html</url>
+      <comments>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.htm</comments>
+    </license>
+  </licenses>
+
+  <developers>
+    <developer>
+      <id>bsi</id>
+      <name>BSI Business Systems Integration AG</name>
+      <organization>BSI Business Systems Integration AG</organization>
+      <organizationUrl>https://www.bsi-software.com/en/technology/eclipse-scout.html</organizationUrl>
+    </developer>
+  </developers>
+
+  <mailingLists>
+    <mailingList>
+      <name>scout-dev Mailing List</name>
+      <subscribe>https://dev.eclipse.org/mailman/listinfo/scout-dev</subscribe>
+      <unsubscribe>https://dev.eclipse.org/mailman/listinfo/scout-dev</unsubscribe>
+      <post>scout-dev@eclipse.org</post>
+      <archive>http://dev.eclipse.org/mhonarc/lists/scout-dev</archive>
+    </mailingList>
+  </mailingLists>
+
+  <scm>
+    <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout.sdk.git</connection>
+    <developerConnection>scm:git:ssh://${eclipse_gerrit_username}@git.eclipse.org:29418/scout/org.eclipse.scout.sdk</developerConnection>
+    <tag>releases/8.0.x</tag>
+    <url>http://git.eclipse.org/c/scout/org.eclipse.scout.sdk.git/</url>
+  </scm>
+
+  <issueManagement>
+    <system>Bugzilla</system>
+    <url>https://bugs.eclipse.org/bugs/buglist.cgi?classification=Technology;component=Scout SDK;product=Scout;query_format=advanced</url>
+  </issueManagement>
+
+  <repositories>
+    <repository>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <id>eclipse.release</id>
+      <name>eclipse-release-repo</name>
+      <url>https://repo.eclipse.org/content/groups/releases/</url>
+    </repository>
+    <repository>
+      <snapshots></snapshots>
+      <id>eclipse.snapshot</id>
+      <name>eclipse-snapshot-repo</name>
+      <url>https://repo.eclipse.org/content/groups/snapshots/</url>
+    </repository>
+  </repositories>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <id>eclipse.release</id>
+      <name>eclipse-release-repo</name>
+      <url>https://repo.eclipse.org/content/groups/releases/</url>
+    </pluginRepository>
+    <pluginRepository>
+      <snapshots></snapshots>
+      <id>eclipse.snapshot</id>
+      <name>eclipse-snapshot-repo</name>
+      <url>https://repo.eclipse.org/content/groups/snapshots/</url>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <distributionManagement>
+    <repository>
+      <id>repo.eclipse.org</id>
+      <name>Scout Repository - Releases</name>
+      <url>https://repo.eclipse.org/content/repositories/scout-releases/</url>
+    </repository>
+    <snapshotRepository>
+      <id>repo.eclipse.org</id>
+      <name>Scout Repository - Snapshots</name>
+      <url>https://repo.eclipse.org/content/repositories/scout-snapshots/</url>
+    </snapshotRepository>
+  </distributionManagement>
+
+  <profiles>
+    <profile>
+      <id>release.setversion</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>com.google.code.maven-replacer-plugin</groupId>
+            <artifactId>replacer</artifactId>
+            <executions>
+              <execution>
+                <id>replace_scout_version</id>
+                <goals>
+                  <goal>replace</goal>
+                </goals>
+                <phase>generate-resources</phase>
+                <configuration>
+                  <basedir>${project.basedir}/src/main/resources/archetype-resources</basedir>
+                  <includes>
+                    <include>**/pom.xml</include>
+                  </includes>
+                  <!-- token finds the scout version property tag and places the current version string there -->
+                  <token>(\\x3corg.eclipse.scout.rt.version\\x3e)[0-9A-Z\\.-]*(\\x3c/org.eclipse.scout.rt.version\\x3e)</token>
+                  <value>$1${org.eclipse.scout.rt_version}$2</value>
+                  <unescape>true</unescape>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/META-INF/maven/archetype-metadata.xml b/scout-hellojs-app/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 0000000..679585c
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2015 BSI Business Systems Integration AG. 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:
+  BSI Business Systems Integration AG - initial API and implementation -->
+<archetype-descriptor
+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
+  name="org.eclipse.scout.hello.world"
+  xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <requiredProperties>
+    <requiredProperty key="javaVersion">
+      <defaultValue>1.8</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="displayName">
+      <defaultValue>My JS Application</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="simpleArtifactName">
+      <defaultValue>Artifact Simple Name</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="scoutAuthPublicKeyDev">
+      <defaultValue>changeme_database_password</defaultValue>
+    </requiredProperty>
+  </requiredProperties>
+  <modules>
+    <module id="parent" dir="__rootArtifactId__" name="parent">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory></directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="api" dir="__rootArtifactId__.api" name="api">
+      <fileSets>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="app" dir="__rootArtifactId__.app" name="app">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+            <include>**/*.js</include>
+            <include>**/*.json</include>
+            <include>**/*.less</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="false" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.png</include>
+            <include>**/*.ico</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="app.dev" dir="__rootArtifactId__.app.dev"
+      name="app.dev">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory></directory>
+          <includes>
+            <include>**/*.launch</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.properties</include>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="app.war" dir="__rootArtifactId__.app.war"
+      name="app.war">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="core" dir="__rootArtifactId__.core" name="core">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory></directory>
+          <includes>
+            <include>**/*.nls</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="core.test" dir="__rootArtifactId__.core.test"
+      name="core.test">
+      <fileSets>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="data" dir="__rootArtifactId__.data" name="data">
+      <fileSets>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="db" dir="__rootArtifactId__.db" name="db">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory></directory>
+          <includes>
+            <include>**/*.launch</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="persistence" dir="__rootArtifactId__.persistence"
+      name="persistence">
+      <fileSets>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/generated/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="persistence.test"
+      dir="__rootArtifactId__.persistence.test" name="persistence.test">
+      <fileSets>
+        <fileSet filtered="true" packaged="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="ui" dir="__rootArtifactId__.ui" name="ui">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory></directory>
+          <includes>
+            <include>**/*.launch</include>
+            <include>**/*.jshintrc</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/js</directory>
+          <includes>
+            <include>**/*.js</include>
+            <include>**/*.json</include>
+            <include>**/*.less</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/js</directory>
+          <includes>
+            <include>**/*.js</include>
+            <include>**/*.json</include>
+            <include>**/*.less</include>
+            <include>**/*.html</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+  </modules>
+</archetype-descriptor>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/pom.xml
new file mode 100644
index 0000000..7bbba2d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.api</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.server</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.rest</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/RestAuthFilter.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/RestAuthFilter.java
new file mode 100644
index 0000000..81badb1
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/RestAuthFilter.java
@@ -0,0 +1,50 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.api;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.server.commons.authentication.DevelopmentAccessController;
+import org.eclipse.scout.rt.server.commons.authentication.DevelopmentAccessController.DevelopmentAuthConfig;
+
+/**
+ * <h3>{@link RestAuthFilter}</h3>
+ */
+public class RestAuthFilter implements Filter {
+
+  private DevelopmentAccessController m_developmentAccessController;
+
+  @Override
+  public void init(FilterConfig filterConfig) throws ServletException {
+    m_developmentAccessController = BEANS.get(DevelopmentAccessController.class).init(new DevelopmentAuthConfig()
+        .withPutPrincipalOnSession(false));
+  }
+
+  @Override
+  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+    final HttpServletRequest req = (HttpServletRequest) request;
+    final HttpServletResponse resp = (HttpServletResponse) response;
+
+    if (m_developmentAccessController.handle(req, resp, chain)) {
+      return;
+    }
+
+    resp.sendError(HttpServletResponse.SC_FORBIDDEN);
+  }
+
+  @Override
+  public void destroy() {
+    m_developmentAccessController.destroy();
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/ServerSession.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/ServerSession.java
new file mode 100644
index 0000000..8d4e11d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/ServerSession.java
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.api;
+
+import org.eclipse.scout.rt.platform.IPlatform.State;
+import org.eclipse.scout.rt.platform.Platform;
+import org.eclipse.scout.rt.platform.util.Assertions;
+import org.eclipse.scout.rt.server.AbstractServerSession;
+import org.eclipse.scout.rt.server.session.ServerSessionProvider;
+
+public class ServerSession extends AbstractServerSession {
+
+  private static final long serialVersionUID = 1L;
+
+  public ServerSession() {
+    super(true);
+  }
+
+  /**
+   * @return The {@link ServerSession} which is associated with the current thread, or <code>null</code> if not found.
+   */
+  public static ServerSession get() {
+    return ServerSessionProvider.currentSession(ServerSession.class);
+  }
+
+  @Override
+  protected void execLoadSession() {
+    Assertions.assertEquals(State.PlatformStarted, Platform.get().getState(), "Expected the platform to be started, but state is {}", Platform.get().getState());
+    super.execLoadSession();
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/person/PersonResource.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/person/PersonResource.java
new file mode 100644
index 0000000..34d46ad
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/java/api/person/PersonResource.java
@@ -0,0 +1,66 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.api.person;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.rest.IRestResource;
+
+import ${package}.core.person.PersonService;
+import ${package}.data.person.PersonDo;
+import ${package}.data.person.PersonResponse;
+
+@Path("persons")
+public class PersonResource implements IRestResource {
+
+  @GET
+  @Path("/{id}")
+  @Produces(MediaType.APPLICATION_JSON)
+  public PersonResponse getById(@PathParam("id") String id) {
+    return BEANS.get(PersonService.class)
+        .getById(id)
+        .map(item -> BEANS.get(PersonResponse.class).withItem(item))
+        .orElseGet(PersonResponse::new);
+  }
+
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  public PersonResponse list() {
+    return BEANS.get(PersonResponse.class)
+        .withItems(BEANS.get(PersonService.class).list());
+  }
+
+  @PUT
+  @Path("/{id}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  public PersonResponse store(@PathParam("id") String id, PersonDo person) {
+    return BEANS.get(PersonResponse.class)
+        .withItem(BEANS.get(PersonService.class).store(id, person));
+  }
+
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  public PersonResponse create(PersonDo person) {
+    return BEANS.get(PersonResponse.class)
+        .withItem(BEANS.get(PersonService.class).create(person));
+  }
+
+  @DELETE
+  @Path("/{id}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  public void remove(@PathParam("id") String id) {
+    BEANS.get(PersonService.class).remove(id);
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.api/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/Launch __simpleArtifactName__ dev server.launch b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/Launch __simpleArtifactName__ dev server.launch
new file mode 100644
index 0000000..d278205
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/Launch __simpleArtifactName__ dev server.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/${rootArtifactId}.app.dev"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.scout.dev.jetty.JettyServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="${rootArtifactId}.app.dev"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dscout.jetty.port=8084&#13;&#10;-Djandex.rebuild=true"/>
+</launchConfiguration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/pom.xml
new file mode 100644
index 0000000..c271be8
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.app.dev</artifactId>
+  <packaging>war</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.app</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.rest.jackson</artifactId>
+    </dependency>
+
+    <!-- JAX-RS Jersey -->
+    <dependency>
+      <groupId>org.glassfish.jersey.containers</groupId>
+      <artifactId>jersey-container-servlet-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.media</groupId>
+      <artifactId>jersey-media-json-jackson</artifactId>
+    </dependency>
+
+    <!-- Jetty Server -->
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.dev.jetty</artifactId>
+    </dependency>
+
+    <!-- Logging -->
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/config.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/config.properties
new file mode 100644
index 0000000..598edc6
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/config.properties
@@ -0,0 +1,16 @@
+### Application
+scout.application.name=${displayName}
+scout.application.version=0.0.1
+
+### UI
+scout.ui.prebuild.files=/index.html
+scout.ui.locales=en
+
+### Storage location for FileSystemUserPreferencesStorageService
+scout.client.userArea=${user.home}/${rootArtifactId}-dev
+
+### Environment
+scout.devMode=true
+scout.auth.cookieSessionValidateSecure=false
+
+import=classpath:dev.db.config.properties
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/dev.db.config.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/dev.db.config.properties
new file mode 100644
index 0000000..5e81aec
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/dev.db.config.properties
@@ -0,0 +1,3 @@
+### persistence
+persistence.sql.jdbc.mapping.name=jdbc:derby:./db;create=true
+persistence.sql.password=${scoutAuthPublicKeyDev}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/logback.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/logback.xml
new file mode 100644
index 0000000..56985b9
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/resources/logback.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <variable scope="context" name="mdcPattern" value="principal=%X{subject.principal.name}, httpUri=%X{http.request.uri}, uiSession=%X{scout.ui.session.id}, scoutSession=%X{scout.session.id}, jobName=%X{scout.job.name}, cid=%X{scout.correlation.id}" />
+  <variable scope="context" name="mdcPatternWithoutEmptyValues" value="%replace(${mdcPattern}){'(, )?\\w+=((?=\\1)|, |$)', ''}" />
+  <variable scope="context" name="logPattern" value="%date{ISO8601} %-5level [%thread] %logger.%method\\(%file:%line\\) - %msg - MDC[${mdcPatternWithoutEmptyValues}]%n%ex" />
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>TRACE</levelMin>
+      <levelMax>INFO</levelMax>
+    </filter>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>WARN</levelMin>
+      <levelMax>ERROR</levelMax>
+    </filter>
+    <target>System.err</target>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="STDERR" />
+  </root>
+
+  <logger name="org.quartz" level="WARN" />
+</configuration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/WEB-INF/web.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7ecc421
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app
+  metadata-complete="true"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+  version="3.0">
+
+  <display-name>${displayName}</display-name>
+
+  <welcome-file-list>
+    <welcome-file>redir.html</welcome-file>
+  </welcome-file-list>
+
+  <listener>
+    <listener-class>org.eclipse.scout.rt.server.commons.WebappEventListener</listener-class>
+  </listener>
+  <listener>
+    <listener-class>org.eclipse.scout.rt.server.commons.HttpSessionMutex</listener-class>
+  </listener>
+
+  <!-- filters for API access -->
+  <filter>
+    <filter-name>RestAuthFilter</filter-name>
+    <filter-class>${package}.api.RestAuthFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>RestAuthFilter</filter-name>
+    <url-pattern>/api/*</url-pattern>
+  </filter-mapping>
+
+  <filter>
+    <filter-name>ServerRunContextFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.context.ServerRunContextFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>ServerRunContextFilter</filter-name>
+    <url-pattern>/api/*</url-pattern>
+  </filter-mapping>
+
+  <filter>
+    <filter-name>GzipServletFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.commons.servlet.filter.gzip.GzipServletFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>GzipServletFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <!-- JAX-RS Jersey Servlet that processes REST requests -->
+  <servlet>
+    <servlet-name>api</servlet-name>
+    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
+    <init-param>
+      <param-name>javax.ws.rs.Application</param-name>
+      <param-value>org.eclipse.scout.rt.rest.RestApplication</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>api</servlet-name>
+    <url-pattern>/api/*</url-pattern>
+  </servlet-mapping>
+
+  <!-- UI Servlet that provides resources (js, html, css, ...) -->
+  <servlet>
+    <servlet-name>UiServlet</servlet-name>
+    <servlet-class>org.eclipse.scout.rt.ui.html.UiServlet</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>UiServlet</servlet-name>
+    <url-pattern>/ui/*</url-pattern>
+  </servlet-mapping>
+
+  <session-config>
+    <!-- Session timeout in minutes -->
+    <session-timeout>60</session-timeout>
+    <cookie-config>
+      <http-only>true</http-only>
+    </cookie-config>
+  </session-config>
+
+</web-app>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/redir.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/redir.html
new file mode 100644
index 0000000..8e947ae
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.dev/src/main/webapp/redir.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<meta http-equiv="refresh" content="0; url=ui/" />
+</head>
+</html>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/pom.xml
new file mode 100644
index 0000000..fc5d03c
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.app.war</artifactId>
+  <packaging>war</packaging>
+
+  <build>
+    <finalName>${displayName}</finalName>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.app</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.rest.jackson</artifactId>
+    </dependency>
+
+    <!-- JAX-RS Jersey -->
+    <dependency>
+      <groupId>org.glassfish.jersey.containers</groupId>
+      <artifactId>jersey-container-servlet-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.media</groupId>
+      <artifactId>jersey-media-json-jackson</artifactId>
+    </dependency>
+
+    <!-- provided by container -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- Logging -->
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/config.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/config.properties
new file mode 100644
index 0000000..b6f81a2
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/config.properties
@@ -0,0 +1,14 @@
+### Application
+scout.application.name=${displayName}
+scout.application.version=0.0.1
+
+### UI
+scout.ui.prebuild=true
+scout.ui.prebuild.files=/index.html
+scout.ui.locales=en
+
+### Storage location for FileSystemUserPreferencesStorageService
+scout.client.userArea=\${user.home}/${rootArtifactId}
+
+### TODO: Adapt import location for environment specific configuration
+import=file:${CATALINA_HOME}/conf/${rootArtifactId}-config.properties
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/logback.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/logback.xml
new file mode 100644
index 0000000..f8e91e2
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/resources/logback.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <variable scope="context" name="mdcPattern" value="principal=%X{subject.principal.name}, httpUri=%X{http.request.uri}, uiSession=%X{scout.ui.session.id}, scoutSession=%X{scout.session.id}, jobName=%X{scout.job.name}, cid=%X{scout.correlation.id}" />
+  <variable scope="context" name="mdcPatternWithoutEmptyValues" value="%replace(${mdcPattern}){'(, )?\\w+=((?=\\1)|, |$)', ''}" />
+  <variable scope="context" name="logPattern" value="%date{ISO8601} %-5level [%thread] %logger.%method\\(%file:%line\\) - %msg - MDC[${mdcPatternWithoutEmptyValues}]%n%ex" />
+
+  <timestamp key="tsByMinute" datePattern="yyyyMMdd-HHmm"/>
+
+  <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILE">
+    <file>${catalina.base}/logs/${rootArtifactId}-${tsByMinute}.log</file>
+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      <fileNamePattern>${catalina.base}/logs/${rootArtifactId}-${tsByMinute}-%d{yyyy-MM-dd}.log</fileNamePattern>
+      <maxHistory>100</maxHistory>
+    </rollingPolicy>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="FILE" />
+  </root>
+
+  <logger name="org.quartz" level="WARN" />
+</configuration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/WEB-INF/web.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ae1375b
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app
+  metadata-complete="true"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+  version="3.0">
+
+  <display-name>${displayName}</display-name>
+
+  <welcome-file-list>
+    <welcome-file>redir.html</welcome-file>
+  </welcome-file-list>
+
+  <listener>
+    <listener-class>org.eclipse.scout.rt.server.commons.WebappEventListener</listener-class>
+  </listener>
+  <listener>
+    <listener-class>org.eclipse.scout.rt.server.commons.HttpSessionMutex</listener-class>
+  </listener>
+
+  <!-- filters for API access -->
+  <filter>
+    <filter-name>RestAuthFilter</filter-name>
+    <filter-class>${package}.api.RestAuthFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>RestAuthFilter</filter-name>
+    <url-pattern>/api/*</url-pattern>
+  </filter-mapping>
+
+  <filter>
+    <filter-name>ServerRunContextFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.context.ServerRunContextFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>ServerRunContextFilter</filter-name>
+    <url-pattern>/api/*</url-pattern>
+  </filter-mapping>
+
+  <filter>
+    <filter-name>GzipServletFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.commons.servlet.filter.gzip.GzipServletFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>GzipServletFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <!-- JAX-RS Jersey Servlet that processes REST requests -->
+  <servlet>
+    <servlet-name>api</servlet-name>
+    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
+    <init-param>
+      <param-name>javax.ws.rs.Application</param-name>
+      <param-value>org.eclipse.scout.rt.rest.RestApplication</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>api</servlet-name>
+    <url-pattern>/api/*</url-pattern>
+  </servlet-mapping>
+
+
+ <!-- UI Servlet that provides resources (js, html, css, ...) -->
+  <servlet>
+    <servlet-name>UiServlet</servlet-name>
+    <servlet-class>org.eclipse.scout.rt.ui.html.UiServlet</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>UiServlet</servlet-name>
+    <url-pattern>/ui/*</url-pattern>
+  </servlet-mapping>
+
+  <session-config>
+    <!-- Session timeout in minutes -->
+    <session-timeout>60</session-timeout>
+    <cookie-config>
+      <http-only>true</http-only>
+    </cookie-config>
+  </session-config>
+
+</web-app>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/redir.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/redir.html
new file mode 100644
index 0000000..8e947ae
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app.war/src/main/webapp/redir.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<meta http-equiv="refresh" content="0; url=ui/" />
+</head>
+</html>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/pom.xml
new file mode 100644
index 0000000..1a3d4bb
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.app</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.ui</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.persistence</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/head.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/head.html
new file mode 100644
index 0000000..0fe69c9
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/head.html
@@ -0,0 +1,25 @@
+<meta name="apple-mobile-web-app-capable" content="yes"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+<!-- BEGIN favicon -->
+<link rel="apple-touch-icon" sizes="57x57" href="res/favicon/apple-touch-icon-57x57.png">
+<link rel="apple-touch-icon" sizes="60x60" href="res/favicon/apple-touch-icon-60x60.png">
+<link rel="apple-touch-icon" sizes="72x72" href="res/favicon/apple-touch-icon-72x72.png">
+<link rel="apple-touch-icon" sizes="76x76" href="res/favicon/apple-touch-icon-76x76.png">
+<link rel="apple-touch-icon" sizes="114x114" href="res/favicon/apple-touch-icon-114x114.png">
+<link rel="apple-touch-icon" sizes="120x120" href="res/favicon/apple-touch-icon-120x120.png">
+<link rel="apple-touch-icon" sizes="144x144" href="res/favicon/apple-touch-icon-144x144.png">
+<link rel="apple-touch-icon" sizes="152x152" href="res/favicon/apple-touch-icon-152x152.png">
+<link rel="apple-touch-icon" sizes="180x180" href="res/favicon/apple-touch-icon-180x180.png">
+<link rel="icon" type="image/png" href="res/favicon/favicon-32x32.png" sizes="32x32">
+<link rel="icon" type="image/png" href="res/favicon/android-chrome-192x192.png" sizes="192x192">
+<link rel="icon" type="image/png" href="res/favicon/favicon-96x96.png" sizes="96x96">
+<link rel="icon" type="image/png" href="res/favicon/favicon-16x16.png" sizes="16x16">
+<link rel="manifest" href="res/favicon/manifest.json">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-TileImage" content="res/favicon/mstile-144x144.png">
+<meta name="theme-color" content="#ffffff">
+<link rel="shortcut icon" href="res/favicon/favicon.ico">
+<meta name="apple-mobile-web-app-title" content="${displayName}">
+<meta name="application-name" content="${displayName}">
+<meta name="msapplication-config" content="res/favicon/browserconfig.xml">
+<!-- END favicon -->
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/no-script.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/no-script.html
new file mode 100644
index 0000000..3f97dac
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/includes/no-script.html
@@ -0,0 +1,11 @@
+<noscript class="box">
+  <div class="wrapper">
+    <div class="box-content small">
+      <div class="header">
+        <img class="logo" src="res/logo.png"/>
+      </div>
+      <h1><scout:message key="ui.JavaScriptDisabledTitle" /></h1>
+      <scout:message key="ui.JavaScriptDisabledText" />
+    </div>
+  </div>
+</noscript>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/index.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/index.html
new file mode 100644
index 0000000..112e4cf
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title>${displayName}</title>
+    <scout:include template="head.html" />
+    <scout:stylesheet src="res/libs-all-macro.less" />
+    <scout:stylesheet src="res/${simpleArtifactName}-all-macro.less" />
+    <scout:script src="res/libs-all-macro.js" />
+    <scout:script src="res/${simpleArtifactName}-all-macro.js" />
+    <scout:script src="res/index.js" />
+  </head>
+  <body>
+    <scout:include template="no-script.html" />
+    <div class="scout" data-partid="1"></div>
+    <scout:version />
+  </body>
+</html>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/popup-window.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/popup-window.html
new file mode 100644
index 0000000..9534345
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/popup-window.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <title><scout:message key="ui.LoadingPopupWindow" /></title>
+    <scout:include template="head.html" />
+    <scout:stylesheet src="res/${simpleArtifactName}-all-macro.less" />
+  </head>
+  <body>
+    <div class="scout"></div>
+    <scout:script src="res/popup-window.js" />
+  </body>
+</html>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.js
new file mode 100644
index 0000000..5545c65
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.js
@@ -0,0 +1 @@
+__include("${simpleArtifactName}-module.js");
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.json
new file mode 100644
index 0000000..920fc4f
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.json
@@ -0,0 +1,8 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+{
+  "files": [
+    "${simpleArtifactName}-module.json"
+  ]
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.less b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.less
new file mode 100644
index 0000000..fe2ceea
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/__simpleArtifactName__-all-macro.less
@@ -0,0 +1 @@
+@import "${simpleArtifactName}-module.less";
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-144x144.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-144x144.png
new file mode 100644
index 0000000..4a0c499
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-144x144.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-192x192.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-192x192.png
new file mode 100644
index 0000000..0b31029
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-192x192.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-36x36.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-36x36.png
new file mode 100644
index 0000000..813bda4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-36x36.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-48x48.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-48x48.png
new file mode 100644
index 0000000..783f3f0
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-48x48.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-72x72.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-72x72.png
new file mode 100644
index 0000000..1632c8f
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-72x72.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-96x96.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-96x96.png
new file mode 100644
index 0000000..26aa73d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/android-chrome-96x96.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-114x114.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-114x114.png
new file mode 100644
index 0000000..e816b23
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-114x114.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-120x120.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-120x120.png
new file mode 100644
index 0000000..31b6398
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-120x120.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-144x144.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-144x144.png
new file mode 100644
index 0000000..4a0c499
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-144x144.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-152x152.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-152x152.png
new file mode 100644
index 0000000..be0d8ed
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-152x152.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-180x180.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-180x180.png
new file mode 100644
index 0000000..76f86ed
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-180x180.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-57x57.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-57x57.png
new file mode 100644
index 0000000..805619a
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-57x57.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-60x60.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-60x60.png
new file mode 100644
index 0000000..e2c3b39
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-60x60.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-72x72.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-72x72.png
new file mode 100644
index 0000000..1632c8f
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-72x72.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-76x76.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-76x76.png
new file mode 100644
index 0000000..e4a5776
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-76x76.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-precomposed.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-precomposed.png
new file mode 100644
index 0000000..3c1e867
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon-precomposed.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon.png
new file mode 100644
index 0000000..76f86ed
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/apple-touch-icon.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/browserconfig.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/browserconfig.xml
new file mode 100644
index 0000000..0b12aab
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/browserconfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+  <msapplication>
+    <tile>
+      <square70x70logo src="res/favicon/mstile-70x70.png"/>
+      <square150x150logo src="res/favicon/mstile-150x150.png"/>
+      <square310x310logo src="res/favicon/mstile-310x310.png"/>
+      <wide310x150logo src="res/favicon/mstile-310x150.png"/>
+      <TileColor>#da532c</TileColor>
+    </tile>
+  </msapplication>
+</browserconfig>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-16x16.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-16x16.png
new file mode 100644
index 0000000..0b66799
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-16x16.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-32x32.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-32x32.png
new file mode 100644
index 0000000..f1a61c4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-32x32.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-96x96.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-96x96.png
new file mode 100644
index 0000000..26aa73d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon-96x96.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon.ico b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon.ico
new file mode 100644
index 0000000..34f7bef
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/favicon.ico
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/manifest.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/manifest.json
new file mode 100644
index 0000000..3ea4b0e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/manifest.json
@@ -0,0 +1,41 @@
+{
+	"name": "My Application",
+	"icons": [
+		{
+			"src": "android-chrome-36x36.png",
+			"sizes": "36x36",
+			"type": "image\/png",
+			"density": "0.75"
+		},
+		{
+			"src": "android-chrome-48x48.png",
+			"sizes": "48x48",
+			"type": "image\/png",
+			"density": "1.0"
+		},
+		{
+			"src": "android-chrome-72x72.png",
+			"sizes": "72x72",
+			"type": "image\/png",
+			"density": "1.5"
+		},
+		{
+			"src": "android-chrome-96x96.png",
+			"sizes": "96x96",
+			"type": "image\/png",
+			"density": "2.0"
+		},
+		{
+			"src": "android-chrome-144x144.png",
+			"sizes": "144x144",
+			"type": "image\/png",
+			"density": "3.0"
+		},
+		{
+			"src": "android-chrome-192x192.png",
+			"sizes": "192x192",
+			"type": "image\/png",
+			"density": "4.0"
+		}
+	]
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-144x144.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-144x144.png
new file mode 100644
index 0000000..0e0c3e8
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-144x144.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-150x150.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-150x150.png
new file mode 100644
index 0000000..34d4ce1
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-150x150.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x150.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x150.png
new file mode 100644
index 0000000..e47c9bc
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x150.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x310.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x310.png
new file mode 100644
index 0000000..397462c
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-310x310.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-70x70.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-70x70.png
new file mode 100644
index 0000000..8f020cf
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/favicon/mstile-70x70.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/img/eclipse_scout_logo.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/img/eclipse_scout_logo.png
new file mode 100644
index 0000000..11c5047
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/img/eclipse_scout_logo.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/index.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/index.js
new file mode 100644
index 0000000..4a4f897
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/index.js
@@ -0,0 +1,13 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_dollar}(document).ready(function() {
+  var app = new ${simpleArtifactName}.App();
+  app.init({
+    bootstrap: {
+      modelsUrl: 'res/${simpleArtifactName}-all-macro.json',
+      textsUrl: 'res/texts.json',
+      localesUrl: 'res/locales.json'
+    }
+  });
+});
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.js
new file mode 100644
index 0000000..c093eb6
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.js
@@ -0,0 +1,3 @@
+__include("jquery-all-macro.js");
+__include("scout-module.js");
+__include("svg-module.js");
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.less b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.less
new file mode 100644
index 0000000..b150994
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/libs-all-macro.less
@@ -0,0 +1,2 @@
+@import "scout-module.less";
+@import "svg-module.less";
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/logo.png b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/logo.png
new file mode 100644
index 0000000..afd6a72
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/logo.png
Binary files differ
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/popup-window.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/popup-window.js
new file mode 100644
index 0000000..cae1b39
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/res/popup-window.js
@@ -0,0 +1,17 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+// Note: all other forms of attaching a 'load' listener
+// to either the window or the document are not reliable.
+
+// When window is opened by main-window the popupWindow instance is always set
+var url, eventData = {
+  window: window
+};
+if (window.popupWindow) {
+  eventData.popupWindow = window.popupWindow;
+} else {
+  url = new window.opener.scout.URL(document.location);
+  eventData.formId = url.getParameter('formId');
+}
+window.opener.${symbol_dollar}(window.opener.document).trigger('popupWindowReady', eventData);
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/unsupported-browser.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/unsupported-browser.html
new file mode 100644
index 0000000..f9690e9
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.app/src/main/resources/WebContent/unsupported-browser.html
@@ -0,0 +1,18 @@
+<div class="box">
+  <div class="wrapper">
+    <div class="box-content small">
+      <div class="header">
+        <img class="logo" src="res/logo.png"/>
+      </div>
+      <scout:message key="ui.BrowserTooOld" />
+      <ul>
+        <li><scout:message key="ui.BrowserChrome" /></li>
+        <li><scout:message key="ui.BrowserFirefox" /></li>
+        <li><scout:message key="ui.BrowserInternetExplorer" /></li>
+      </ul>
+      <div class="button-bar">
+        <button class="button"><scout:message key="ui.ContinueAnyway" /></button>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/pom.xml
new file mode 100644
index 0000000..63ae4d4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.core.test</artifactId>
+
+  <dependencies>
+    <!-- Test dependencies -->
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.shared.test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/config.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/config.properties
new file mode 100644
index 0000000..2bb14c4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/config.properties
@@ -0,0 +1,6 @@
+### Application
+scout.application.name=${displayName}
+scout.application.version=0.0.1
+
+### Job manager
+scout.jobmanager.corePoolSize=10
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/logback.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/logback.xml
new file mode 100644
index 0000000..7833a07
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core.test/src/test/resources/logback.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <contextListener class="org.eclipse.scout.rt.platform.logger.AutoRegisteringJulLevelChangePropagator" />
+
+  <variable scope="context" name="mdcPattern" value="principal=%X{subject.principal.name}, jobName=%X{scout.job.name}, cid=%X{scout.correlation.id}" />
+  <variable scope="context" name="mdcPatternWithoutEmptyValues" value="%replace(${mdcPattern}){'(, )?\\w+=((?=\\1)|, |$)', ''}" />
+  <variable scope="context" name="logPattern" value="%date{ISO8601} %-5level [%thread] %logger.%method\\(%file:%line\\) - %msg - MDC[${mdcPatternWithoutEmptyValues}]%n%ex" />
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>TRACE</levelMin>
+      <levelMax>INFO</levelMax>
+    </filter>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>WARN</levelMin>
+      <levelMax>ERROR</levelMax>
+    </filter>
+    <target>System.err</target>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="STDERR" />
+  </root>
+
+  <logger name="org.quartz" level="WARN" />
+
+  <!-- early deadlock detection during bean creation -->
+  <logger name="org.eclipse.scout.rt.platform.internal.DefaultBeanInstanceProducer" level="DEBUG" />
+
+</configuration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/pom.xml
new file mode 100644
index 0000000..f368e36
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.core</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.data</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/AccessControlService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/AccessControlService.java
new file mode 100644
index 0000000..1a69f06
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/AccessControlService.java
@@ -0,0 +1,21 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.core;
+
+import java.security.PermissionCollection;
+
+import org.eclipse.scout.rt.shared.services.common.security.AbstractAccessControlService;
+
+public class AccessControlService extends AbstractAccessControlService<String> {
+
+  @Override
+  protected String getCurrentUserCacheKey() {
+    return getUserIdOfCurrentUser();
+  }
+
+  @Override
+  protected PermissionCollection execLoadPermissions(String userId) {
+    return null;
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/TextProviderService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/TextProviderService.java
new file mode 100644
index 0000000..93c2989
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/TextProviderService.java
@@ -0,0 +1,16 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.core;
+
+import org.eclipse.scout.rt.platform.Order;
+import org.eclipse.scout.rt.platform.text.AbstractDynamicNlsTextProviderService;
+
+@Order(3550)
+public class TextProviderService extends AbstractDynamicNlsTextProviderService {
+
+  @Override
+  public String getDynamicNlsBaseName() {
+    return "${package}.core.texts.Texts";
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/person/PersonService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/person/PersonService.java
new file mode 100644
index 0000000..38d2607
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/java/core/person/PersonService.java
@@ -0,0 +1,51 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.core.person;
+
+import static org.eclipse.scout.rt.platform.util.Assertions.assertNotNull;
+import static org.eclipse.scout.rt.platform.util.Assertions.assertTrue;
+import static org.eclipse.scout.rt.platform.util.StringUtility.hasText;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.platform.service.IService;
+
+import ${package}.data.person.IPersonRepository;
+import ${package}.data.person.PersonDo;
+
+public class PersonService implements IService {
+
+  public PersonDo store(String id, PersonDo personDo) {
+    //TODO add validation and business logic here
+    BEANS.get(IPersonRepository.class).store(id, assertPersonDo(personDo));
+    return personDo;
+  }
+
+  public Optional<PersonDo> getById(String personId) {
+    //TODO add validation and business logic here
+    return BEANS.get(IPersonRepository.class).getById(personId);
+  }
+
+  public PersonDo create(PersonDo person) {
+    //TODO add validation and business logic here
+    return BEANS.get(IPersonRepository.class).create(assertPersonDo(person));
+  }
+
+  public int remove(String id) {
+    //TODO add validation and business logic here
+    return BEANS.get(IPersonRepository.class).remove(id);
+  }
+
+  public Stream<PersonDo> list() {
+    //TODO add validation and business logic here
+    return BEANS.get(IPersonRepository.class).list();
+  }
+
+  protected PersonDo assertPersonDo(PersonDo person) {
+    assertTrue(hasText(assertNotNull(person).getLastName()));
+    return person;
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/core/texts/Texts.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/core/texts/Texts.properties
new file mode 100644
index 0000000..03834b5
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/src/main/resources/core/texts/Texts.properties
@@ -0,0 +1,11 @@
+ApplicationTitle=${displayName}
+CancelMenuTooltip=Closes the form if there are no changes made. Otherwise it shows a message box asking to save the changes.
+CreatePerson=Create Person
+DeletePerson=Delete Person
+EditPerson=Edit Person
+FirstName=Firstname
+LanguageSwitchLoading=Reloading language
+LastName=Lastname
+MyDataOutlineTitle=My Data
+OkMenuTooltip=Saves and closes the form.
+Persons=Persons
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/translation.nls b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/translation.nls
new file mode 100644
index 0000000..9a8c1c2
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.core/translation.nls
@@ -0,0 +1,6 @@
+##################################################
+# This file is maintained by the nls editor      #
+# To ensure a properly working nls support of    #
+# keep this file untouched directly.             #
+##################################################
+Nls-Class=${package}.core.TextProviderService
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/pom.xml
new file mode 100644
index 0000000..f13d06c
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.data</artifactId>
+
+  <dependencies>
+   <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.shared</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/IPersonRepository.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/IPersonRepository.java
new file mode 100644
index 0000000..d55b37e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/IPersonRepository.java
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.data.person;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.ApplicationScoped;
+
+@ApplicationScoped
+public interface IPersonRepository {
+
+  void store(String id, PersonDo person);
+
+  Stream<PersonDo> list();
+
+  Optional<PersonDo> getById(String id);
+
+  int remove(String id);
+
+  PersonDo create(PersonDo person);
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonDo.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonDo.java
new file mode 100644
index 0000000..5b460bb
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonDo.java
@@ -0,0 +1,63 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.data.person;
+
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.eclipse.scout.rt.platform.dataobject.DoValue;
+import org.eclipse.scout.rt.platform.dataobject.TypeName;
+
+@TypeName("Person")
+public class PersonDo extends DoEntity {
+  public DoValue<String> firstName() {
+    return doValue("firstName");
+  }
+
+  public PersonDo withFirstName(String firstName) {
+    firstName().set(firstName);
+    return this;
+  }
+
+  public String getFirstName() {
+    return firstName().get();
+  }
+
+  public DoValue<String> lastName() {
+    return doValue("lastName");
+  }
+
+  public PersonDo withLastName(String lastName) {
+    lastName().set(lastName);
+    return this;
+  }
+
+  public String getLastName() {
+    return lastName().get();
+  }
+
+  public DoValue<String> personId() {
+    return doValue("personId");
+  }
+
+  public PersonDo withPersonId(String personId) {
+    personId().set(personId);
+    return this;
+  }
+
+  public String getPersonId() {
+    return personId().get();
+  }
+
+  public DoValue<String> sex() {
+    return doValue("sex");
+  }
+
+  public PersonDo withSex(String sex) {
+    personId().set(sex);
+    return this;
+  }
+
+  public String getSex() {
+    return sex().get();
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonResponse.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonResponse.java
new file mode 100644
index 0000000..cf12ce1
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/java/data/person/PersonResponse.java
@@ -0,0 +1,50 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.data.person;
+
+import static java.util.Arrays.asList;
+import static java.util.stream.Collectors.toCollection;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.eclipse.scout.rt.platform.dataobject.DoList;
+import org.eclipse.scout.rt.platform.dataobject.TypeName;
+
+@TypeName("PersonResponse")
+public class PersonResponse extends DoEntity {
+
+  public DoList<PersonDo> items() {
+    return doList("items");
+  }
+
+  public PersonResponse withItem(PersonDo persons) {
+    items().get().add(persons);
+    return this;
+  }
+
+  public PersonResponse withItems(Stream<PersonDo> persons) {
+    items().clear();
+    persons.collect(toCollection(items()::get));
+    return this;
+  }
+
+  public PersonResponse withItems(Collection<? extends PersonDo> persons) {
+    items().clear();
+    items().get().addAll(persons);
+    return this;
+  }
+
+  public PersonResponse withItems(PersonDo... persons) {
+    items().clear();
+    return withItems(asList(persons));
+  }
+
+  public List<PersonDo> getItems() {
+    return items().get();
+  }
+
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.data/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Generate jooq classes based on DB.launch b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Generate jooq classes based on DB.launch
new file mode 100644
index 0000000..2ab4495
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Generate jooq classes based on DB.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/${rootArtifactId}.db/src/main/java/${packageInPathFormat}/db/generator/GeneratorApplication.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="${package}.db.generator.GeneratorApplication"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="${rootArtifactId}.db"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dscout.jandex.rebuild=true&#13;&#10;-Dconfig.properties=../${rootArtifactId}.app.dev/src/main/resources/dev.db.config.properties&#13;&#10;-Dpersistence.sql.jdbc.mapping.name=jdbc:derby:./../${rootArtifactId}.app.dev/db"/>
+</launchConfiguration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Setup Local Database.launch b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Setup Local Database.launch
new file mode 100644
index 0000000..fbc6cc5
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/Setup Local Database.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/${rootArtifactId}.db/src/main/java/${packageInPathFormat}/db/setup/DbSetup.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="${package}.db.setup.DbSetup"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="${rootArtifactId}.db"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dscout.jandex.rebuild=true&#13;&#10;-Dconfig.properties=../${rootArtifactId}.app.dev/src/main/resources/dev.db.config.properties&#13;&#10;-Dpersistence.sql.jdbc.mapping.name=jdbc:derby:./../${rootArtifactId}.app.dev/db;create=true"/>
+</launchConfiguration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/pom.xml
new file mode 100644
index 0000000..b9402fe
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/pom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.db</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.persistence</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/Environment.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/Environment.java
new file mode 100644
index 0000000..6377917
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/Environment.java
@@ -0,0 +1,28 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db;
+
+import java.util.function.Consumer;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.platform.util.Assertions;
+import org.jooq.DSLContext;
+
+import ${package}.persistence.PersistenceProperties.DialectProperty;
+import ${package}.persistence.PersistenceProperties.JdbcMappingNameProperty;
+import ${package}.persistence.PersistenceProperties.PasswordProperty;
+import ${package}.persistence.PersistenceProperties.UsernameProperty;
+
+public class Environment {
+
+  public void runWithConfig(Consumer<DSLContext> task) {
+    Assertions.assertNotNull(task);
+    BEANS.get(JooqEnvironmentService.class).runInJooq(task,
+        CONFIG.getPropertyValue(JdbcMappingNameProperty.class),
+        CONFIG.getPropertyValue(DialectProperty.class),
+        CONFIG.getPropertyValue(UsernameProperty.class),
+        CONFIG.getPropertyValue(PasswordProperty.class));
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/JooqEnvironmentService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/JooqEnvironmentService.java
new file mode 100644
index 0000000..47bfb18
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/JooqEnvironmentService.java
@@ -0,0 +1,57 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.function.Consumer;
+import java.util.regex.Pattern;
+
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.platform.service.IService;
+import org.jooq.Configuration;
+import org.jooq.DSLContext;
+import org.jooq.SQLDialect;
+import org.jooq.conf.MappedSchema;
+import org.jooq.conf.RenderMapping;
+import org.jooq.conf.Settings;
+import org.jooq.impl.DSL;
+import org.jooq.impl.DefaultConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+
+public class JooqEnvironmentService implements IService {
+
+  private static final Logger LOG = LoggerFactory.getLogger(JooqEnvironmentService.class);
+
+  public void runInJooq(Consumer<DSLContext> task, String jdbcMappingName, SQLDialect dialect, String username, String password) {
+	    try (Connection connection = DriverManager.getConnection(jdbcMappingName, username, password)) {
+	      Configuration configuration = new DefaultConfiguration()
+	          .set(connection)
+	          .set(dialect);
+
+	      Settings s = configuration.settings();
+	      s.withRenderMapping(new RenderMapping()
+	          .withSchemata(
+	              new MappedSchema()
+	          .withInputExpression(Pattern.compile("Schema"))
+	                  .withOutput(CONFIG.getPropertyValue(SchemaProperty.class))));
+
+	      configuration.set(s);
+	      runWithConfiguration(task, configuration);
+	    }
+	    catch (SQLException e) {
+	      LOG.error("Failed to create connection.", e);
+	    }
+	  }
+
+  protected void runWithConfiguration(Consumer<DSLContext> task, Configuration configuration) {
+    try (DSLContext ctx = DSL.using(configuration)) {
+      task.accept(ctx);
+    }
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/generator/GeneratorApplication.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/generator/GeneratorApplication.java
new file mode 100644
index 0000000..416fa37
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/generator/GeneratorApplication.java
@@ -0,0 +1,71 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.generator;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.UUID;
+
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.platform.exception.PlatformException;
+import org.jooq.DSLContext;
+import org.jooq.codegen.GenerationTool;
+import org.jooq.codegen.JavaGenerator;
+import org.jooq.meta.derby.DerbyDatabase;
+import org.jooq.meta.jaxb.Configuration;
+import org.jooq.meta.jaxb.Database;
+import org.jooq.meta.jaxb.ForcedType;
+import org.jooq.meta.jaxb.Generator;
+import org.jooq.meta.jaxb.Schema;
+import org.jooq.meta.jaxb.Target;
+
+import ${package}.db.Environment;
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+import ${package}.persistence.common.DateConverter;
+
+public class GeneratorApplication {
+
+  public static final String OUTPUT_DIRECTORY = "../${rootArtifactId}.persistence/src/generated/java";
+  public static final String OUTPUT_PACKAGE = "${package}.persistence";
+
+  public static void main(String[] args) {
+    new Environment().runWithConfig(new GeneratorApplication()::generate);
+  }
+
+  public void generate(DSLContext context) {
+	    Configuration configuration = new Configuration()
+	        .withGenerator(new Generator()
+	            .withName(JavaGenerator.class.getName())
+	            .withDatabase(new Database()
+	                .withForcedTypes(
+	                    new ForcedType()
+	                        .withName(UUID.class.getName())
+	                        .withTypes("varchar(36)"),
+	                    new ForcedType()
+	                        .withUserType(Date.class.getName())
+	                        .withConverter(DateConverter.class.getName())
+	                        .withTypes("timestamp"),
+	                    new ForcedType()
+	                        .withName(BigDecimal.class.getName())
+	                        .withTypes("bigint"))
+	                .withName(DerbyDatabase.class.getName())
+	                .withIncludes(".*")
+	                .withSchemata(new Schema()
+	                    .withInputSchema(CONFIG.getPropertyValue(SchemaProperty.class))
+	                    .withOutputSchema("Schema"))
+	                .withExcludes("SYS*.*"))
+	            .withTarget(new Target()
+	                .withDirectory(OUTPUT_DIRECTORY)
+	                .withPackageName(OUTPUT_PACKAGE)));
+
+	    GenerationTool tool = new GenerationTool();
+	    tool.setConnection(context.configuration().connectionProvider().acquire());
+	    try {
+	      tool.run(configuration);
+	    }
+	    catch (Exception e) {
+	      throw new PlatformException("Error generating jooq classes.", e);
+	    }
+	  }
+	}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/helper/DatabaseHelper.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/helper/DatabaseHelper.java
new file mode 100644
index 0000000..516f11b
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/helper/DatabaseHelper.java
@@ -0,0 +1,38 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.helper;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.scout.rt.platform.Bean;
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.platform.util.StringUtility;
+import org.jooq.DSLContext;
+import org.jooq.Named;
+
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+
+@Bean
+public class DatabaseHelper {
+
+  public Set<String> getSchemaNames(DSLContext context) {
+    return context
+        .meta()
+        .getSchemas()
+        .stream()
+        .map(Named::getName)
+        .collect(Collectors.toSet());
+  }
+
+  public Set<String> getTableNames(DSLContext context) {
+    return context
+        .meta()
+        .getTables()
+        .stream()
+        .filter(table -> StringUtility.equalsIgnoreCase(table.getSchema().getName(), CONFIG.getPropertyValue(SchemaProperty.class)))
+        .map(Named::getName)
+        .collect(Collectors.toSet());
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractDatabaseObject.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractDatabaseObject.java
new file mode 100644
index 0000000..2922d5b
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractDatabaseObject.java
@@ -0,0 +1,44 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup;
+
+import org.eclipse.scout.rt.platform.util.StringUtility;
+import org.jooq.DSLContext;
+
+public abstract class AbstractDatabaseObject implements IDatabaseObject {
+
+  private DSLContext context;
+
+  @Override
+  public void setContext(DSLContext context) {
+    this.context = context;
+  }
+
+  @Override
+  public DSLContext getContext() {
+    return context;
+  }
+
+  @Override
+  public String getCreateSQL() {
+    return context
+        .createSchema(getName())
+        .getSQL();
+  }
+
+  @Override
+  public void create() {
+    String sql = getCreateSQL();
+    getLogger().info("SQL-DEV sql statement: {}", sql);
+
+    if (StringUtility.hasText(sql)) {
+      context.execute(sql);
+    }
+  }
+
+  @Override
+  public void drop() {
+
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractTable.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractTable.java
new file mode 100644
index 0000000..117a936
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/AbstractTable.java
@@ -0,0 +1,69 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup;
+
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.platform.util.StringUtility;
+import org.jooq.impl.DSL;
+
+import ${package}.db.setup.table.IGenerateTable;
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+
+public abstract class AbstractTable extends AbstractDatabaseObject implements IGenerateTable {
+
+  public static final String PRIMARY_KEY_POSTFIX = "_pk";
+
+  @Override
+  public String getSchemaName() {
+    return CONFIG.getPropertyValue(SchemaProperty.class);
+  }
+
+  @Override
+  public void create() {
+    getLogger().info("SQL-DEV create table: {}", getName());
+    super.create();
+  }
+
+  @Override
+  public void drop() {
+    getLogger().info("SQL-DEV drop table: {}", getName());
+
+    boolean exists = getContext().fetchExists(DSL.table(DSL.name(getName())));
+
+    if (exists) {
+      getContext().dropTable(getName()).execute();
+    }
+  }
+
+  protected String getPKName() {
+    return getName() + PRIMARY_KEY_POSTFIX;
+  }
+
+  @Override
+  public String getCreateSQL() {
+    return postProcessForSchema(createSQLInternal());
+  }
+
+  private String postProcessForSchema(String sql) {
+    if (!StringUtility.hasText(sql)) {
+      return null;
+    }
+
+    String schema = getSchemaName();
+    if (!StringUtility.hasText(schema)) {
+      return sql;
+    }
+
+    String sqlLC = sql.toLowerCase();
+    if (!sqlLC.startsWith("create table")) {
+      return sql;
+    }
+
+    if (!sqlLC.startsWith("create table \"" + schema + "\".")) {
+      return String.format("create table \"%s\".%s", schema, sql.substring(13));
+    }
+
+    return sql;
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/DbSetup.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/DbSetup.java
new file mode 100644
index 0000000..cce5922
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/DbSetup.java
@@ -0,0 +1,69 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup;
+
+import java.util.Set;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.jooq.DSLContext;
+
+import ${package}.db.Environment;
+import ${package}.db.helper.DatabaseHelper;
+import ${package}.db.setup.schema.IDatabaseSchema;
+import ${package}.db.setup.table.IGenerateTable;
+import ${package}.db.setup.table.data.IDataInitializer;
+import ${package}.persistence.PersistenceProperties.DatabaseAddSamplesProperty;
+
+public class DbSetup {
+
+  public static void main(String[] args) {
+    new Environment().runWithConfig(new DbSetup()::setup);
+  }
+
+  public void setup(DSLContext context) {
+    createDatabase(context);
+    insertData(context);
+  }
+
+  private void createDatabase(DSLContext context) {
+    createSchemas(context);
+    createTables(context);
+  }
+
+  private void createTables(DSLContext context) {
+    Set<String> tables = BEANS.get(DatabaseHelper.class).getTableNames(context);
+    for (IGenerateTable table : BEANS.all(IGenerateTable.class)) {
+      executeCreateSQL(context, tables, table);
+    }
+  }
+
+  private void createSchemas(DSLContext context) {
+    Set<String> schemas = BEANS.get(DatabaseHelper.class).getSchemaNames(context);
+    for (IDatabaseSchema schema : BEANS.all(IDatabaseSchema.class)) {
+      executeCreateSQL(context, schemas, schema);
+    }
+  }
+
+  private void executeCreateSQL(DSLContext context, Set<String> databaseObjects, IDatabaseObject databaseObjectToGenerate) {
+    if (databaseObjects.contains(databaseObjectToGenerate.getName())) {
+      return; // already exists
+    }
+
+    databaseObjectToGenerate.setContext(context);
+    context.execute(databaseObjectToGenerate.getCreateSQL());
+  }
+
+  private void insertData(DSLContext context) {
+    for (IDataInitializer table : BEANS.all(IDataInitializer.class)) {
+      // insert initial data (minimal data, required to run the application)
+      table.initialize(context);
+
+      // insert sample data (for development / demo)
+      if (CONFIG.getPropertyValue(DatabaseAddSamplesProperty.class)) {
+        table.addSamples(context);
+      }
+    }
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/IDatabaseObject.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/IDatabaseObject.java
new file mode 100644
index 0000000..7c15d48
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/IDatabaseObject.java
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup;
+
+import org.eclipse.scout.rt.platform.ApplicationScoped;
+import org.jooq.DSLContext;
+import org.slf4j.Logger;
+
+@ApplicationScoped
+public interface IDatabaseObject {
+
+	void setContext(DSLContext context);
+	DSLContext getContext();
+
+	String getName();
+	String getCreateSQL();
+
+	void create();
+	void drop();
+
+	Logger getLogger();
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/AbstractSchema.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/AbstractSchema.java
new file mode 100644
index 0000000..1634516
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/AbstractSchema.java
@@ -0,0 +1,22 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.schema;
+
+import ${package}.db.setup.AbstractDatabaseObject;
+
+public abstract class AbstractSchema extends AbstractDatabaseObject implements IDatabaseSchema {
+
+  @Override
+  public void create() {
+    getLogger().info("SQL-DEV create schema: {}", getName());
+    super.create();
+  }
+
+  @Override
+  public void drop() {
+    getContext()
+        .dropSchemaIfExists(getName())
+        .execute();
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/IDatabaseSchema.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/IDatabaseSchema.java
new file mode 100644
index 0000000..6c9ee05
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/IDatabaseSchema.java
@@ -0,0 +1,10 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.schema;
+
+import ${package}.db.setup.IDatabaseObject;
+
+public interface IDatabaseSchema extends IDatabaseObject {
+
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/Schema.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/Schema.java
new file mode 100644
index 0000000..30cad5f
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/schema/Schema.java
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.schema;
+
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+
+public class Schema extends AbstractSchema {
+
+  @Override
+  public String getName() {
+    return CONFIG.getPropertyValue(SchemaProperty.class);
+  }
+
+  @Override
+  public Logger getLogger() {
+    return LoggerFactory.getLogger(Schema.class);
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/IGenerateTable.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/IGenerateTable.java
new file mode 100644
index 0000000..3831159
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/IGenerateTable.java
@@ -0,0 +1,30 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.table;
+
+import java.sql.Date;
+
+import org.jooq.DataType;
+import org.jooq.impl.SQLDataType;
+
+import ${package}.db.setup.IDatabaseObject;
+
+public interface IGenerateTable extends IDatabaseObject {
+
+  DataType<String> TYPE_ID = SQLDataType.VARCHAR.length(36).nullable(false);
+
+  DataType<Boolean> TYPE_BOOLEAN = SQLDataType.BOOLEAN;
+  DataType<Integer> TYPE_INTEGER = SQLDataType.INTEGER;
+  DataType<Double> TYPE_DOUBLE = SQLDataType.DOUBLE;
+  DataType<byte[]> TYPE_BLOB = SQLDataType.BLOB;
+  DataType<Date> TYPE_DATE = SQLDataType.DATE;
+
+  DataType<String> TYPE_STRING_S = SQLDataType.VARCHAR.length(64).nullable(false);
+  DataType<String> TYPE_STRING_S_OPTIONAL = SQLDataType.VARCHAR.length(64).nullable(true);
+
+  String getSchemaName();
+
+  String createSQLInternal();
+
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/PersonTable.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/PersonTable.java
new file mode 100644
index 0000000..c507bb5
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/PersonTable.java
@@ -0,0 +1,41 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.table;
+
+import org.jooq.impl.DSL;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ${package}.db.setup.AbstractTable;
+
+public class PersonTable extends AbstractTable {
+
+  public static final String TABLE = "person";
+
+  public static final String PERSON_ID = "person_id";
+  public static final String LAST_NAME = "last_name";
+  public static final String FIRST_NAME = "first_name";
+
+  @Override
+  public String createSQLInternal() {
+    return getContext()
+        .createTable(getName())
+        .column(PERSON_ID, TYPE_ID)
+        .column(FIRST_NAME, TYPE_STRING_S_OPTIONAL)
+        .column(LAST_NAME, TYPE_STRING_S)
+        .constraints(
+            DSL.constraint(getPKName()).primaryKey(PERSON_ID))
+        .getSQL();
+  }
+
+  @Override
+  public String getName() {
+    return TABLE;
+  }
+
+  @Override
+  public Logger getLogger() {
+    return LoggerFactory.getLogger(PersonTable.class);
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/IDataInitializer.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/IDataInitializer.java
new file mode 100644
index 0000000..f60b205
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/IDataInitializer.java
@@ -0,0 +1,15 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.table.data;
+
+import org.eclipse.scout.rt.platform.ApplicationScoped;
+import org.jooq.DSLContext;
+
+@ApplicationScoped
+public interface IDataInitializer {
+
+  void initialize(DSLContext context);
+
+  void addSamples(DSLContext context);
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/PersonTableDataInitializer.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/PersonTableDataInitializer.java
new file mode 100644
index 0000000..0699fd4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/java/db/setup/table/data/PersonTableDataInitializer.java
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.db.setup.table.data;
+
+import java.util.UUID;
+
+import org.jooq.DSLContext;
+
+import ${package}.persistence.tables.records.PersonRecord;
+
+public class PersonTableDataInitializer implements IDataInitializer {
+
+  @Override
+  public void initialize(DSLContext context) {
+  }
+
+  @Override
+  public void addSamples(DSLContext context) {
+    context.executeInsert(new PersonRecord(UUID.randomUUID().toString(), "Alice", "Miller"));
+    context.executeInsert(new PersonRecord(UUID.randomUUID().toString(), "Bob", "Smith"));
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/logback.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/logback.xml
new file mode 100644
index 0000000..56985b9
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.db/src/main/resources/logback.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <variable scope="context" name="mdcPattern" value="principal=%X{subject.principal.name}, httpUri=%X{http.request.uri}, uiSession=%X{scout.ui.session.id}, scoutSession=%X{scout.session.id}, jobName=%X{scout.job.name}, cid=%X{scout.correlation.id}" />
+  <variable scope="context" name="mdcPatternWithoutEmptyValues" value="%replace(${mdcPattern}){'(, )?\\w+=((?=\\1)|, |$)', ''}" />
+  <variable scope="context" name="logPattern" value="%date{ISO8601} %-5level [%thread] %logger.%method\\(%file:%line\\) - %msg - MDC[${mdcPatternWithoutEmptyValues}]%n%ex" />
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>TRACE</levelMin>
+      <levelMax>INFO</levelMax>
+    </filter>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>WARN</levelMin>
+      <levelMax>ERROR</levelMax>
+    </filter>
+    <target>System.err</target>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="STDERR" />
+  </root>
+
+  <logger name="org.quartz" level="WARN" />
+</configuration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/pom.xml
new file mode 100644
index 0000000..29fb50e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.persistence.test</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.persistence</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.shared.test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/config.properties b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/config.properties
new file mode 100644
index 0000000..2bb14c4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/config.properties
@@ -0,0 +1,6 @@
+### Application
+scout.application.name=${displayName}
+scout.application.version=0.0.1
+
+### Job manager
+scout.jobmanager.corePoolSize=10
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/logback.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/logback.xml
new file mode 100644
index 0000000..7833a07
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence.test/src/test/resources/logback.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <contextListener class="org.eclipse.scout.rt.platform.logger.AutoRegisteringJulLevelChangePropagator" />
+
+  <variable scope="context" name="mdcPattern" value="principal=%X{subject.principal.name}, jobName=%X{scout.job.name}, cid=%X{scout.correlation.id}" />
+  <variable scope="context" name="mdcPatternWithoutEmptyValues" value="%replace(${mdcPattern}){'(, )?\\w+=((?=\\1)|, |$)', ''}" />
+  <variable scope="context" name="logPattern" value="%date{ISO8601} %-5level [%thread] %logger.%method\\(%file:%line\\) - %msg - MDC[${mdcPatternWithoutEmptyValues}]%n%ex" />
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>TRACE</levelMin>
+      <levelMax>INFO</levelMax>
+    </filter>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="org.eclipse.scout.rt.platform.logger.LevelRangeFilter">
+      <levelMin>WARN</levelMin>
+      <levelMax>ERROR</levelMax>
+    </filter>
+    <target>System.err</target>
+    <encoder>
+      <pattern>${logPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <root level="INFO">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="STDERR" />
+  </root>
+
+  <logger name="org.quartz" level="WARN" />
+
+  <!-- early deadlock detection during bean creation -->
+  <logger name="org.eclipse.scout.rt.platform.internal.DefaultBeanInstanceProducer" level="DEBUG" />
+
+</configuration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/pom.xml
new file mode 100644
index 0000000..c46f2f3
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.persistence</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>${rootArtifactId}.data</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jooq</groupId>
+      <artifactId>jooq</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jooq</groupId>
+      <artifactId>jooq-meta</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jooq</groupId>
+      <artifactId>jooq-codegen</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.server.jdbc</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.derby</groupId>
+      <artifactId>derby</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/DefaultCatalog.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/DefaultCatalog.java
new file mode 100644
index 0000000..9187d97
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/DefaultCatalog.java
@@ -0,0 +1,63 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Generated;
+
+import org.jooq.Schema;
+import org.jooq.impl.CatalogImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class DefaultCatalog extends CatalogImpl {
+
+    private static final long serialVersionUID = 625905281;
+
+    /**
+     * The reference instance of <code></code>
+     */
+    public static final DefaultCatalog DEFAULT_CATALOG = new DefaultCatalog();
+
+    /**
+     * The schema <code>SCOUTAPP</code>.
+     */
+    public final Scoutapp SCOUTAPP = ${package}.persistence.Scoutapp.SCOUTAPP;
+
+    /**
+     * No further instances allowed
+     */
+    private DefaultCatalog() {
+        super("");
+    }
+
+    @Override
+    public final List<Schema> getSchemas() {
+        List result = new ArrayList();
+        result.addAll(getSchemas0());
+        return result;
+    }
+
+    private final List<Schema> getSchemas0() {
+        return Arrays.<Schema>asList(
+            Scoutapp.SCOUTAPP);
+    }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Keys.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Keys.java
new file mode 100644
index 0000000..f602126
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Keys.java
@@ -0,0 +1,55 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence;
+
+
+import javax.annotation.Generated;
+
+import ${package}.persistence.tables.Person;
+import ${package}.persistence.tables.records.PersonRecord;
+import org.jooq.UniqueKey;
+import org.jooq.impl.Internal;
+
+
+/**
+ * A class modelling foreign key relationships and constraints of tables of
+ * the <code>SCOUTAPP</code> schema.
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Keys {
+
+    // -------------------------------------------------------------------------
+    // IDENTITY definitions
+    // -------------------------------------------------------------------------
+
+
+    // -------------------------------------------------------------------------
+    // UNIQUE and PRIMARY KEY definitions
+    // -------------------------------------------------------------------------
+
+    public static final UniqueKey<PersonRecord> PERSON_PK = UniqueKeys0.PERSON_PK;
+
+    // -------------------------------------------------------------------------
+    // FOREIGN KEY definitions
+    // -------------------------------------------------------------------------
+
+
+    // -------------------------------------------------------------------------
+    // [#1459] distribute members to avoid static initialisers > 64kb
+    // -------------------------------------------------------------------------
+
+    private static class UniqueKeys0 {
+        public static final UniqueKey<PersonRecord> PERSON_PK = Internal.createUniqueKey(Person.PERSON, "person_pk", Person.PERSON.PERSON_ID);
+    }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Scoutapp.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Scoutapp.java
new file mode 100644
index 0000000..e5a240e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Scoutapp.java
@@ -0,0 +1,74 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Generated;
+
+import ${package}.persistence.tables.Person;
+import org.jooq.Catalog;
+import org.jooq.Table;
+import org.jooq.impl.SchemaImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Scoutapp extends SchemaImpl {
+
+    private static final long serialVersionUID = -600629668;
+
+    /**
+     * The reference instance of <code>SCOUTAPP</code>
+     */
+    public static final Scoutapp SCOUTAPP = new Scoutapp();
+
+    /**
+     * The table <code>SCOUTAPP.person</code>.
+     */
+    public final Person PERSON = ${package}.persistence.tables.Person.PERSON;
+
+    /**
+     * No further instances allowed
+     */
+    private Scoutapp() {
+        super("SCOUTAPP", null);
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Catalog getCatalog() {
+        return DefaultCatalog.DEFAULT_CATALOG;
+    }
+
+    @Override
+    public final List<Table<?>> getTables() {
+        List result = new ArrayList();
+        result.addAll(getTables0());
+        return result;
+    }
+
+    private final List<Table<?>> getTables0() {
+        return Arrays.<Table<?>>asList(
+            Person.PERSON);
+    }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Tables.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Tables.java
new file mode 100644
index 0000000..ed4a586
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/Tables.java
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence;
+
+
+import javax.annotation.Generated;
+
+import ${package}.persistence.tables.Person;
+
+
+/**
+ * Convenience access to all tables in SCOUTAPP
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Tables {
+
+    /**
+     * The table <code>SCOUTAPP.person</code>.
+     */
+    public static final Person PERSON = ${package}.persistence.tables.Person.PERSON;
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/Person.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/Person.java
new file mode 100644
index 0000000..43d4946
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/Person.java
@@ -0,0 +1,161 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence.tables;
+
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Generated;
+
+import ${package}.persistence.Keys;
+import ${package}.persistence.Scoutapp;
+import ${package}.persistence.tables.records.PersonRecord;
+import org.jooq.Field;
+import org.jooq.ForeignKey;
+import org.jooq.Name;
+import org.jooq.Record;
+import org.jooq.Schema;
+import org.jooq.Table;
+import org.jooq.TableField;
+import org.jooq.UniqueKey;
+import org.jooq.impl.DSL;
+import org.jooq.impl.TableImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Person extends TableImpl<PersonRecord> {
+
+    private static final long serialVersionUID = -1840964516;
+
+    /**
+     * The reference instance of <code>SCOUTAPP.person</code>
+     */
+    public static final Person PERSON = new Person();
+
+    /**
+     * The class holding records for this type
+     */
+    @Override
+    public Class<PersonRecord> getRecordType() {
+        return PersonRecord.class;
+    }
+
+    /**
+     * The column <code>SCOUTAPP.person.person_id</code>.
+     */
+    public final TableField<PersonRecord, String> PERSON_ID = createField("person_id", org.jooq.impl.SQLDataType.VARCHAR(36).nullable(false), this, "");
+
+    /**
+     * The column <code>SCOUTAPP.person.first_name</code>.
+     */
+    public final TableField<PersonRecord, String> FIRST_NAME = createField("first_name", org.jooq.impl.SQLDataType.VARCHAR(64), this, "");
+
+    /**
+     * The column <code>SCOUTAPP.person.last_name</code>.
+     */
+    public final TableField<PersonRecord, String> LAST_NAME = createField("last_name", org.jooq.impl.SQLDataType.VARCHAR(64).nullable(false), this, "");
+
+    /**
+     * Create a <code>SCOUTAPP.person</code> table reference
+     */
+    public Person() {
+        this(DSL.name("person"), null);
+    }
+
+    /**
+     * Create an aliased <code>SCOUTAPP.person</code> table reference
+     */
+    public Person(String alias) {
+        this(DSL.name(alias), PERSON);
+    }
+
+    /**
+     * Create an aliased <code>SCOUTAPP.person</code> table reference
+     */
+    public Person(Name alias) {
+        this(alias, PERSON);
+    }
+
+    private Person(Name alias, Table<PersonRecord> aliased) {
+        this(alias, aliased, null);
+    }
+
+    private Person(Name alias, Table<PersonRecord> aliased, Field<?>[] parameters) {
+        super(alias, null, aliased, parameters, DSL.comment(""));
+    }
+
+    public <O extends Record> Person(Table<O> child, ForeignKey<O, PersonRecord> key) {
+        super(child, key, PERSON);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Schema getSchema() {
+        return Scoutapp.SCOUTAPP;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public UniqueKey<PersonRecord> getPrimaryKey() {
+        return Keys.PERSON_PK;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<UniqueKey<PersonRecord>> getKeys() {
+        return Arrays.<UniqueKey<PersonRecord>>asList(Keys.PERSON_PK);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Person as(String alias) {
+        return new Person(DSL.name(alias), this);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Person as(Name alias) {
+        return new Person(alias, this);
+    }
+
+    /**
+     * Rename this table
+     */
+    @Override
+    public Person rename(String name) {
+        return new Person(DSL.name(name), null);
+    }
+
+    /**
+     * Rename this table
+     */
+    @Override
+    public Person rename(Name name) {
+        return new Person(name, null);
+    }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/records/PersonRecord.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/records/PersonRecord.java
new file mode 100644
index 0000000..d6a2a27
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/generated/java/persistence/tables/records/PersonRecord.java
@@ -0,0 +1,240 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * This file is generated by jOOQ.
+ */
+package ${package}.persistence.tables.records;
+
+
+import javax.annotation.Generated;
+
+import ${package}.persistence.tables.Person;
+import org.jooq.Field;
+import org.jooq.Record1;
+import org.jooq.Record3;
+import org.jooq.Row3;
+import org.jooq.impl.UpdatableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+    value = {
+        "http://www.jooq.org",
+        "jOOQ version:3.11.1"
+    },
+    comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class PersonRecord extends UpdatableRecordImpl<PersonRecord> implements Record3<String, String, String> {
+
+    private static final long serialVersionUID = -1254890783;
+
+    /**
+     * Setter for <code>SCOUTAPP.person.person_id</code>.
+     */
+    public void setPersonId(String value) {
+        set(0, value);
+    }
+
+    /**
+     * Getter for <code>SCOUTAPP.person.person_id</code>.
+     */
+    public String getPersonId() {
+        return (String) get(0);
+    }
+
+    /**
+     * Setter for <code>SCOUTAPP.person.first_name</code>.
+     */
+    public void setFirstName(String value) {
+        set(1, value);
+    }
+
+    /**
+     * Getter for <code>SCOUTAPP.person.first_name</code>.
+     */
+    public String getFirstName() {
+        return (String) get(1);
+    }
+
+    /**
+     * Setter for <code>SCOUTAPP.person.last_name</code>.
+     */
+    public void setLastName(String value) {
+        set(2, value);
+    }
+
+    /**
+     * Getter for <code>SCOUTAPP.person.last_name</code>.
+     */
+    public String getLastName() {
+        return (String) get(2);
+    }
+
+    // -------------------------------------------------------------------------
+    // Primary key information
+    // -------------------------------------------------------------------------
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Record1<String> key() {
+        return (Record1) super.key();
+    }
+
+    // -------------------------------------------------------------------------
+    // Record3 type implementation
+    // -------------------------------------------------------------------------
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Row3<String, String, String> fieldsRow() {
+        return (Row3) super.fieldsRow();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Row3<String, String, String> valuesRow() {
+        return (Row3) super.valuesRow();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Field<String> field1() {
+        return Person.PERSON.PERSON_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Field<String> field2() {
+        return Person.PERSON.FIRST_NAME;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Field<String> field3() {
+        return Person.PERSON.LAST_NAME;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String component1() {
+        return getPersonId();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String component2() {
+        return getFirstName();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String component3() {
+        return getLastName();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String value1() {
+        return getPersonId();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String value2() {
+        return getFirstName();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String value3() {
+        return getLastName();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PersonRecord value1(String value) {
+        setPersonId(value);
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PersonRecord value2(String value) {
+        setFirstName(value);
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PersonRecord value3(String value) {
+        setLastName(value);
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PersonRecord values(String value1, String value2, String value3) {
+        value1(value1);
+        value2(value2);
+        value3(value3);
+        return this;
+    }
+
+    // -------------------------------------------------------------------------
+    // Constructors
+    // -------------------------------------------------------------------------
+
+    /**
+     * Create a detached PersonRecord
+     */
+    public PersonRecord() {
+        super(Person.PERSON);
+    }
+
+    /**
+     * Create a detached, initialised PersonRecord
+     */
+    public PersonRecord(String personId, String firstName, String lastName) {
+        super(Person.PERSON);
+
+        set(0, personId);
+        set(1, firstName);
+        set(2, lastName);
+    }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/IJooqService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/IJooqService.java
new file mode 100644
index 0000000..9607482
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/IJooqService.java
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import org.eclipse.scout.rt.platform.service.IService;
+import org.jooq.DSLContext;
+
+public interface IJooqService extends IService {
+
+  /**
+   * @param task
+   *          The task to execute. Must not be {@code null}.
+   * @return The result of the task specified.
+   */
+  <T> T apply(Function<DSLContext, T> task);
+
+  /**
+   * @param task
+   *          The task to execute. Must not be {@code null}.
+   */
+  void accept(Consumer<DSLContext> task);
+
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/JooqSqlService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/JooqSqlService.java
new file mode 100644
index 0000000..2d28e59
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/JooqSqlService.java
@@ -0,0 +1,102 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence;
+
+import java.sql.Connection;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.regex.Pattern;
+
+import org.eclipse.scout.rt.platform.CreateImmediately;
+import org.eclipse.scout.rt.platform.config.CONFIG;
+import org.eclipse.scout.rt.server.jdbc.derby.AbstractDerbySqlService;
+import org.jooq.Configuration;
+import org.jooq.ConnectionProvider;
+import org.jooq.DSLContext;
+import org.jooq.conf.MappedSchema;
+import org.jooq.conf.RenderMapping;
+import org.jooq.conf.Settings;
+import org.jooq.exception.DataAccessException;
+import org.jooq.impl.DSL;
+import org.jooq.impl.DefaultConfiguration;
+
+import ${package}.persistence.PersistenceProperties.DialectProperty;
+import ${package}.persistence.PersistenceProperties.JdbcMappingNameProperty;
+import ${package}.persistence.PersistenceProperties.PasswordProperty;
+import ${package}.persistence.PersistenceProperties.SchemaProperty;
+import ${package}.persistence.PersistenceProperties.UsernameProperty;
+
+@CreateImmediately
+public class JooqSqlService extends AbstractDerbySqlService implements IJooqService {
+
+  private final Configuration m_configuration;
+  private final ConnectionProvider m_connectionProvider;
+
+  protected JooqSqlService() {
+    m_configuration = initializeConfiguration();
+    m_connectionProvider = new ScoutConnectionProvider();
+  }
+
+  private static Configuration initializeConfiguration() {
+    Configuration configuration = new DefaultConfiguration();
+    configuration.set(CONFIG.getPropertyValue(DialectProperty.class));
+    Settings s = configuration.settings();
+    s.withRenderMapping(new RenderMapping()
+        .withSchemata(
+            new MappedSchema()
+			    .withInputExpression(Pattern.compile(CONFIG.getPropertyValue(SchemaProperty.class)))
+                .withOutput(CONFIG.getPropertyValue(SchemaProperty.class))));
+
+    configuration.set(s);
+    return configuration;
+  }
+
+  @Override
+  protected String getConfiguredJdbcDriverName() {
+    return CONFIG.getPropertyValue(PersistenceProperties.DriverProperty.class);
+  }
+
+  @Override
+  protected String getConfiguredUsername() {
+    return CONFIG.getPropertyValue(UsernameProperty.class);
+  }
+
+  @Override
+  protected String getConfiguredPassword() {
+    return CONFIG.getPropertyValue(PasswordProperty.class);
+  }
+
+  @Override
+  protected String getConfiguredJdbcMappingName() {
+    return CONFIG.getPropertyValue(JdbcMappingNameProperty.class);
+  }
+
+  @Override
+  public <T> T apply(Function<DSLContext, T> task) {
+    try (DSLContext ctx = DSL.using(m_configuration.derive(m_connectionProvider))) {
+      return task.apply(ctx);
+    }
+  }
+
+  @Override
+  public void accept(Consumer<DSLContext> task) {
+    apply(c -> {
+      task.accept(c);
+      return null;
+    });
+  }
+
+  private class ScoutConnectionProvider implements ConnectionProvider {
+
+    @Override
+    public Connection acquire() throws DataAccessException {
+      return getConnection();
+    }
+
+    @Override
+    public void release(Connection connection) throws DataAccessException {
+      // NOP
+    }
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/PersistenceProperties.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/PersistenceProperties.java
new file mode 100644
index 0000000..9a01c12
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/PersistenceProperties.java
@@ -0,0 +1,162 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence;
+
+import java.util.Arrays;
+
+import org.eclipse.scout.rt.platform.config.AbstractBooleanConfigProperty;
+import org.eclipse.scout.rt.platform.config.AbstractConfigProperty;
+import org.eclipse.scout.rt.platform.config.AbstractStringConfigProperty;
+import org.eclipse.scout.rt.platform.exception.PlatformException;
+import org.eclipse.scout.rt.platform.util.ObjectUtility;
+import org.eclipse.scout.rt.platform.util.StringUtility;
+import org.jooq.SQLDialect;
+
+public final class PersistenceProperties {
+
+  private PersistenceProperties() {
+  }
+
+  public static class DialectProperty extends AbstractConfigProperty<SQLDialect, String> {
+
+    @Override
+    public SQLDialect getDefaultValue() {
+      return SQLDialect.DERBY;
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.dialect";
+    }
+
+    @Override
+    protected SQLDialect parse(String value) {
+      String dialect = ObjectUtility.nvl(value, "");
+      try {
+        return SQLDialect.valueOf(dialect);
+      }
+      catch (Exception e) {
+        throw new PlatformException("Invalid SQL dialect '" + dialect + "' for property '" + getKey()
+            + "'. Valid names are " + getValidValues());
+      }
+    }
+
+    private String getValidValues() {
+      return "'" + StringUtility.join("','", Arrays.asList(SQLDialect.values())) + "'";
+    }
+
+    @Override
+    public String description() {
+      return "The type of database that is used.";
+    }
+  }
+
+  public static class JdbcMappingNameProperty extends AbstractStringConfigProperty {
+
+    @Override
+    public String getDefaultValue() {
+      return null;
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.jdbc.mapping.name";
+    }
+
+    @Override
+    public String description() {
+      return "The JDBC mapping name of the database.";
+    }
+  }
+
+  public static class UsernameProperty extends AbstractStringConfigProperty {
+
+    @Override
+    public String getDefaultValue() {
+      return "db_username";
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.username";
+    }
+
+    @Override
+    public String description() {
+      return "Specifies the username used to connect to the database.";
+    }
+  }
+
+  public static class PasswordProperty extends AbstractStringConfigProperty {
+
+    @Override
+    public String getDefaultValue() {
+      return null;
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.password";
+    }
+
+    @Override
+    public String description() {
+      return "Specifies the password of the user used to connect to the database.";
+    }
+  }
+
+  public static class SchemaProperty extends AbstractStringConfigProperty {
+
+    @Override
+    public String getDefaultValue() {
+      return "SCOUTAPP";
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.schema";
+    }
+
+    @Override
+    public String description() {
+      return "Specifies the name of the schema in the database.";
+    }
+  }
+
+  public static class DatabaseAddSamplesProperty extends AbstractBooleanConfigProperty {
+
+    @Override
+    public Boolean getDefaultValue() {
+      return true;
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.autopopulate";
+    }
+
+    @Override
+    public String description() {
+      return "Specifies if some sample data should be added after setup of the database.";
+    }
+  }
+
+  public static class DriverProperty extends AbstractStringConfigProperty {
+
+    @Override
+    public String getDefaultValue() {
+      return "org.apache.derby.jdbc.EmbeddedDriver";
+    }
+
+    @Override
+    public String getKey() {
+      return "persistence.sql.driver";
+    }
+
+    @Override
+    public String description() {
+      return "JDBC driver to use.";
+    }
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/AbstractRepository.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/AbstractRepository.java
new file mode 100644
index 0000000..409ce51
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/AbstractRepository.java
@@ -0,0 +1,83 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.common;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.jooq.DSLContext;
+import org.jooq.Record;
+import org.jooq.Table;
+
+import ${package}.persistence.IJooqService;
+
+public abstract class AbstractRepository<TABLE extends Table<RECORD>, RECORD extends Record, DO extends DoEntity> implements IBaseService<TABLE, RECORD, DO> {
+
+  abstract protected DoEntityBeanMappings<DO, RECORD> mappings();
+
+  /**
+   * Returns true if a record with the provided id exists using the specified context
+   */
+  protected boolean exists(DSLContext context, String id) {
+    return context.fetchExists(
+        context.select()
+            .from(getTable())
+            .where(getIdColumn().eq(id)));
+  }
+
+  @Override
+  public RECORD newRecord() {
+    return BEANS.get(IJooqService.class).apply(c -> c.newRecord(getTable()));
+  }
+
+  @Override
+  public int remove(String id) {
+    return BEANS.get(IJooqService.class).apply(c -> c
+        .deleteFrom(getTable())
+        .where(getIdColumn().eq(id))
+        .execute());
+  }
+
+  @Override
+  public Optional<RECORD> get(String id) {
+    return BEANS.get(IJooqService.class).apply(C -> Optional.ofNullable(C
+        .selectFrom(getTable())
+        .where(getIdColumn().eq(id))
+        .fetchOne()));
+  }
+
+  @Override
+  public Stream<RECORD> getAll() {
+    return BEANS.get(IJooqService.class).apply(c -> c.selectFrom(getTable()).fetchStream());
+  }
+
+  @Override
+  public void store(String id, RECORD record) {
+    BEANS.get(IJooqService.class).accept(c -> {
+      if (exists(c, id)) {
+        c.update(getTable())
+            .set(record)
+            .where(getIdColumn().eq(id))
+            .execute();
+      }
+      else {
+        c.insertInto(getTable())
+            .set(record)
+            .execute();
+      }
+    });
+  }
+
+  protected RECORD fromDoToRecord(DO cDo, RECORD cBean) {
+    mappings().fromDoToRecord(cDo, cBean);
+    return cBean;
+  }
+
+  protected DO fromRecordToDo(RECORD cBean, DO cDo) {
+    mappings().fromEntityBeanToDo(cBean, cDo);
+    return cDo;
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DateConverter.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DateConverter.java
new file mode 100644
index 0000000..10363cd
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DateConverter.java
@@ -0,0 +1,35 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.common;
+
+import java.sql.Timestamp;
+import java.util.Date;
+import java.util.Optional;
+
+import org.jooq.Converter;
+
+public class DateConverter implements Converter<Timestamp, Date> {
+
+  private static final long serialVersionUID = 1L;
+
+  @Override
+  public Date from(Timestamp databaseObject) {
+    return Optional.ofNullable(databaseObject).map(dod -> new Date(dod.getTime())).orElse(null);
+  }
+
+  @Override
+  public Timestamp to(Date userObject) {
+    return Optional.ofNullable(userObject).map(ud -> new Timestamp(ud.getTime())).orElse(null);
+  }
+
+  @Override
+  public Class<Timestamp> fromType() {
+    return Timestamp.class;
+  }
+
+  @Override
+  public Class<Date> toType() {
+    return Date.class;
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMapping.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMapping.java
new file mode 100644
index 0000000..a0b4ed6
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMapping.java
@@ -0,0 +1,57 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.common;
+
+import java.util.function.BiConsumer;
+import java.util.function.Function;
+
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.eclipse.scout.rt.platform.dataobject.DoValue;
+import org.eclipse.scout.rt.platform.util.Assertions;
+
+public class DoEntityBeanMapping<DO_ENTITY extends DoEntity, ENTITY_BEAN, VALUE> {
+
+  private final Function<DO_ENTITY, DoValue<VALUE>> m_doRef;
+  private final Function<ENTITY_BEAN, VALUE> m_entityBeanGetter;
+  private final BiConsumer<ENTITY_BEAN, VALUE> m_entityBeanSetter;
+
+  public DoEntityBeanMapping(Function<DO_ENTITY, DoValue<VALUE>> doRef, Function<ENTITY_BEAN, VALUE> entityBeanGetter, BiConsumer<ENTITY_BEAN, VALUE> entityBeanSetter) {
+    m_doRef = Assertions.assertNotNull(doRef, "doRef must be set");
+    m_entityBeanGetter = entityBeanGetter;
+    m_entityBeanSetter = entityBeanSetter;
+  }
+
+  protected Function<DO_ENTITY, DoValue<VALUE>> getDoRef() {
+    return m_doRef;
+  }
+
+  protected Function<ENTITY_BEAN, VALUE> getEntityBeanGetter() {
+    return m_entityBeanGetter;
+  }
+
+  protected BiConsumer<ENTITY_BEAN, VALUE> getEntityBeanSetter() {
+    return m_entityBeanSetter;
+  }
+
+  public void fromEntityBeanToDo(ENTITY_BEAN entityBean, DO_ENTITY doNode) {
+    if (getEntityBeanGetter() == null) {
+      return;
+    }
+
+    VALUE value = getEntityBeanGetter().apply(entityBean);
+    DoValue<VALUE> doRef = getDoRef().apply(doNode);
+    doRef.set(value);
+  }
+
+  public void fromDoToEntityBean(DO_ENTITY doNode, ENTITY_BEAN entityBean) {
+    if (getEntityBeanSetter() == null) {
+      return;
+    }
+
+    DoValue<VALUE> doRef = getDoRef().apply(doNode);
+    if (doRef.exists()) {
+      getEntityBeanSetter().accept(entityBean, doRef.get());
+    }
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMappings.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMappings.java
new file mode 100644
index 0000000..31bf9f4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/DoEntityBeanMappings.java
@@ -0,0 +1,45 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.common;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.BiConsumer;
+import java.util.function.Function;
+
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.eclipse.scout.rt.platform.dataobject.DoValue;
+
+public class DoEntityBeanMappings<DO_ENTITY extends DoEntity, ENTITY_BEAN> {
+
+  private List<DoEntityBeanMapping<DO_ENTITY, ENTITY_BEAN, ?>> m_mappings = new LinkedList<>();
+
+  public List<DoEntityBeanMapping<DO_ENTITY, ENTITY_BEAN, ?>> getMappings() {
+    return m_mappings;
+  }
+
+  /**
+   * Read-only, no setter for entity bean.
+   */
+  public <VALUE> DoEntityBeanMappings<DO_ENTITY, ENTITY_BEAN> with(Function<DO_ENTITY, DoValue<VALUE>> doRef, Function<ENTITY_BEAN, VALUE> entityBeanGetter) {
+    return with(doRef, entityBeanGetter, null);
+  }
+
+  /**
+   * There is no duplicate detection meaning that adding a DO node multiple times will execute the corresponding action
+   * multiple times.
+   */
+  public <VALUE> DoEntityBeanMappings<DO_ENTITY, ENTITY_BEAN> with(Function<DO_ENTITY, DoValue<VALUE>> doRef, Function<ENTITY_BEAN, VALUE> entityBeanGetter, BiConsumer<ENTITY_BEAN, VALUE> entityBeanSetter) {
+    getMappings().add(new DoEntityBeanMapping<>(doRef, entityBeanGetter, entityBeanSetter));
+    return this;
+  }
+
+  public void fromEntityBeanToDo(ENTITY_BEAN entityBean, DO_ENTITY doNode) {
+    getMappings().stream().forEach(n -> n.fromEntityBeanToDo(entityBean, doNode));
+  }
+
+  public void fromDoToRecord(DO_ENTITY doNode, ENTITY_BEAN entityBean) {
+    getMappings().stream().forEach(n -> n.fromDoToEntityBean(doNode, entityBean));
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/IBaseService.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/IBaseService.java
new file mode 100644
index 0000000..ea1154e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/common/IBaseService.java
@@ -0,0 +1,54 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.common;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.ApplicationScoped;
+import org.eclipse.scout.rt.platform.dataobject.DoEntity;
+import org.jooq.Field;
+import org.jooq.Record;
+import org.jooq.Table;
+
+@ApplicationScoped
+public interface IBaseService<TABLE extends Table<RECORD>, RECORD extends Record, DO extends DoEntity> {
+
+  /**
+   * Returns the table object associated with this service.
+   */
+  TABLE getTable();
+
+  /**
+   * Returns the id column for the table object associated with this service.
+   */
+  Field<String> getIdColumn();
+
+  /**
+   * Deletes the record with the specified id Returns number of records deleted
+   */
+  int remove(String id);
+
+  /**
+   * Returns the record for the specified id. Returns null if no such record exists.
+   */
+  Optional<RECORD> get(String id);
+
+  /**
+   * Returns all available records.
+   */
+  Stream<RECORD> getAll();
+
+  /**
+   * Persists the provided record based on the id specified. If no record with this id exists a new record is created,
+   * otherwise the existing record is updated.
+   */
+  void store(String id, RECORD record);
+
+  /**
+   * @return
+   */
+  RECORD newRecord();
+
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/person/PersonRepository.java b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/person/PersonRepository.java
new file mode 100644
index 0000000..50825c9
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/java/persistence/person/PersonRepository.java
@@ -0,0 +1,73 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.persistence.person;
+
+import java.util.Optional;
+import java.util.UUID;
+import java.util.stream.Stream;
+
+import org.eclipse.scout.rt.platform.BEANS;
+import org.jooq.Field;
+
+import ${package}.data.person.IPersonRepository;
+import ${package}.data.person.PersonDo;
+import ${package}.persistence.common.AbstractRepository;
+import ${package}.persistence.common.DoEntityBeanMappings;
+import ${package}.persistence.tables.Person;
+import ${package}.persistence.tables.records.PersonRecord;
+
+public class PersonRepository extends AbstractRepository<Person, PersonRecord, PersonDo> implements IPersonRepository {
+
+  @Override
+  public Person getTable() {
+    return Person.PERSON;
+  }
+
+  @Override
+  public Field<String> getIdColumn() {
+    return Person.PERSON.PERSON_ID;
+  }
+
+  @Override
+  public void store(String id, PersonDo person) {
+    super.store(id, doToRec(person));
+  }
+
+  @Override
+  public Stream<PersonDo> list() {
+    return getAll().map(this::recToDo);
+  }
+
+  @Override
+  public Optional<PersonDo> getById(String personId) {
+    return get(personId).map(this::recToDo);
+  }
+
+  @Override
+  public PersonDo create(PersonDo person) {
+    PersonRecord newPersonRecord = newRecord();
+    String newPersonId = UUID.randomUUID().toString();
+
+    fromDoToRecord(person, newPersonRecord)
+        .setPersonId(newPersonId);
+    newPersonRecord.store();
+    return fromRecordToDo(newPersonRecord, person);
+  }
+
+  protected PersonDo recToDo(PersonRecord PersonRecord) {
+    return fromRecordToDo(PersonRecord, BEANS.get(PersonDo.class));
+  }
+
+  protected PersonRecord doToRec(PersonDo person) {
+    return fromDoToRecord(person, new PersonRecord());
+  }
+
+  @Override
+  protected DoEntityBeanMappings<PersonDo, PersonRecord> mappings() {
+    return new DoEntityBeanMappings<PersonDo, PersonRecord>()
+        .with(PersonDo::personId, PersonRecord::getPersonId) // read-only (primary key)
+        .with(PersonDo::lastName, PersonRecord::getLastName, PersonRecord::setLastName)
+        .with(PersonDo::firstName, PersonRecord::getFirstName, PersonRecord::setFirstName);
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.persistence/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/.jshintrc b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/.jshintrc
new file mode 100644
index 0000000..de9a7cc
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/.jshintrc
@@ -0,0 +1,37 @@
+{
+  "expr": true,
+  "newcap": true,
+  "evil": true,
+  "undef": true,
+  "browser": true,
+  "curly": true,
+  "globals": {
+    "__include": false,
+    "${simpleArtifactName}": false,
+    "scout": false,
+    "JSON": false,
+    "jQuery": false,
+    "$": false,
+    "jasmine": false,
+    "describe": false,
+    "beforeEach": false,
+    "afterEach": false,
+    "it": false,
+    "setFixtures": false,
+    "sandbox": false,
+    "expect": false,
+    "spyOn": false,
+    "fail": false,
+    "sandboxSession": false,
+    "sandboxDesktop": false,
+    "mostRecentJsonRequest": false,
+    "createUniqueId": false,
+    "sendQueuedAjaxCalls": false,
+    "receiveResponseForAjaxCall": false,
+    "uninstallUnloadHandlers": false,
+    "createPropertyChangeEvent": false,
+    "createAdapterData": false,
+    "createAdapter": false,
+    "createSimpleModel": false
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/Jasmine test server.launch b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/Jasmine test server.launch
new file mode 100644
index 0000000..ef6d222
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/Jasmine test server.launch
@@ -0,0 +1,24 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
+<stringAttribute key="M2_GOALS" value="jasmine:bdd"/>
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
+<booleanAttribute key="M2_OFFLINE" value="false"/>
+<stringAttribute key="M2_PROFILES" value=""/>
+<listAttribute key="M2_PROPERTIES"/>
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>
+<intAttribute key="M2_THREADS" value="1"/>
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
+<stringAttribute key="M2_USER_SETTINGS" value=""/>
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
+<stringAttribute key="bad_container_name" value="jasmine.server"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${symbol_dollar}{workspace_loc:/${rootArtifactId}.ui}"/>
+</launchConfiguration>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/pom.xml
new file mode 100644
index 0000000..68efab1
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/pom.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+    <relativePath>../${rootArtifactId}</relativePath>
+  </parent>
+
+  <artifactId>${rootArtifactId}.ui</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.ui.html</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.svg.ui.html</artifactId>
+    </dependency>
+
+    <!-- Test dependencies -->
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.ui.html.test</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <!-- Loads phantomjs executable, necessary for jasmine plugin -->
+        <groupId>com.github.klieber</groupId>
+        <artifactId>phantomjs-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>install</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- Prepare JS test dependencies with Jasmine -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>unpack ui.html dependencies</id>
+            <goals>
+              <goal>unpack-dependencies</goal>
+            </goals>
+            <phase>generate-test-sources</phase>
+            <configuration>
+              <outputDirectory>${project.build.directory}/ext</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <includes>**/*.js, **/*.css, **/*.png, **/*.json</includes>
+              <stripVersion>true</stripVersion>
+              <includeArtifactIds>org.eclipse.scout.rt.ui.html</includeArtifactIds>
+            </configuration>
+          </execution>
+          <execution>
+            <id>unpack ui.html.test dependencies</id>
+            <goals>
+              <goal>unpack-dependencies</goal>
+            </goals>
+            <phase>generate-test-sources</phase>
+            <configuration>
+              <outputDirectory>${project.build.directory}/ext</outputDirectory>
+              <overWriteReleases>false</overWriteReleases>
+              <overWriteSnapshots>true</overWriteSnapshots>
+              <includes>**/*.js, **/*.css, **/*.png, **/*.json</includes>
+              <stripVersion>true</stripVersion>
+              <includeArtifactIds>org.eclipse.scout.rt.ui.html.test</includeArtifactIds>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!-- JS testing with Jasmine -->
+      <plugin>
+        <groupId>com.github.searls</groupId>
+        <artifactId>jasmine-maven-plugin</artifactId>
+        <configuration>
+          <additionalContexts>
+            <additionalContext>
+              <contextRoot>ext</contextRoot>
+              <directory>${project.build.directory}/ext</directory>
+            </additionalContext>
+          </additionalContexts>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.js
new file mode 100644
index 0000000..e7d264e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.js
@@ -0,0 +1,10 @@
+(function(${simpleArtifactName}, scout, $, undefined) {
+  __include("${simpleArtifactName}/common/ajax.js");
+  __include("${simpleArtifactName}/App.js");
+  __include("${simpleArtifactName}/repository/Repository.js");
+
+  __include("${simpleArtifactName}/person/PersonForm.js");
+  __include("${simpleArtifactName}/person/PersonRepository.js");
+  __include("${simpleArtifactName}/person/Person.js");
+  __include("${simpleArtifactName}/person/PersonTablePage.js");
+}(window.${simpleArtifactName} = window.${simpleArtifactName} || {}, scout, jQuery));
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.json
new file mode 100644
index 0000000..b8f61ef
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.json
@@ -0,0 +1,7 @@
+{
+  "files": [
+    "${simpleArtifactName}/desktop/Desktop.json",
+    "${simpleArtifactName}/person/PersonForm.json",
+    "${simpleArtifactName}/person/PersonTablePage.json"
+  ]
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.less b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.less
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__-module.less
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/App.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/App.js
new file mode 100644
index 0000000..96f2668
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/App.js
@@ -0,0 +1,77 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+  ${simpleArtifactName}.App = function() {
+  ${simpleArtifactName}.App.parent.call(this);
+  this.apiUrl = '../api/';
+  this.appPrefix = '${simpleArtifactName}.';
+  this.desktop = null;
+};
+scout.inherits(${simpleArtifactName}.App, scout.App);
+
+${simpleArtifactName}.App.prototype._createSession = function(options) {
+  var session = ${simpleArtifactName}.App.parent.prototype._createSession.call(this, options);
+  session.on('localeSwitch', this._onLocaleSwitch.bind(this));
+  return session;
+};
+
+${simpleArtifactName}.App.prototype._createDesktop = function(parent) {
+  this.desktop = scout.create('Desktop', scout.models.getModel('${simpleArtifactName}.Desktop', parent));
+
+  var myDataOutline = this._createMyDataOutline();
+  var myDataViewButton = scout.create('scout.OutlineViewButton', {
+    parent: this.desktop,
+    text: '${symbol_dollar}{textKey:MyDataOutlineTitle}',
+    outline: myDataOutline,
+    displayStyle: 'TAB',
+    iconId: scout.icons.PERSON_SOLID
+  });
+  this.desktop._setViewButtons([myDataViewButton]);
+  this.desktop.setOutline(myDataOutline);
+
+  return this.desktop;
+};
+
+${simpleArtifactName}.App.prototype._createMyDataOutline = function() {
+  var myDataOutline = scout.create('scout.Outline', {
+    parent: this.desktop,
+    title: '${symbol_dollar}{textKey:MyDataOutlineTitle}'
+  });
+
+  var personTablePage = scout.create('${simpleArtifactName}.PersonTablePage', {
+    parent: myDataOutline
+  });
+
+  myDataOutline.insertNodes([personTablePage]);
+  myDataOutline.selectNode(personTablePage);
+  return myDataOutline;
+};
+
+${simpleArtifactName}.App.prototype._loadLocale = function() {
+  var localeTag = scout.webstorage.getItem(sessionStorage, "locale");
+  if (scout.strings.hasText(localeTag)) {
+    var locale = scout.locales.get(localeTag);
+    if (locale) {
+      return locale;
+    }
+  }
+
+  // Use the default locale
+  ${symbol_dollar}.log.warn('Unsupported languageTag in settings found: ' + localeTag + '. Using navigator locale.');
+  return scout.locales.getNavigatorLocale();
+};
+
+${simpleArtifactName}.App.prototype._onLocaleSwitch = function(event) {
+  scout.webstorage.setItem(sessionStorage, "locale", event.locale.languageTag);
+  var session = event.source;
+  var busyIndicator = scout.create('BusyIndicator', {
+    parent: session.desktop,
+    cancellable: false,
+    showTimeout: 0,
+    details: session.text('LanguageSwitchLoading')
+  });
+  busyIndicator.render();
+  setTimeout(function() {
+    window.location.reload();
+  }, 100);
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/common/ajax.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/common/ajax.js
new file mode 100644
index 0000000..c887140
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/common/ajax.js
@@ -0,0 +1,95 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+scout.ajax = {
+
+  post: function(url, data, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      data: data,
+      type: 'POST'
+    }, opts);
+    return this.call(options);
+  },
+
+  get: function(url, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      type: 'GET'
+    }, opts);
+    return this.call(options);
+  },
+
+  remove: function(url, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      type: 'DELETE'
+    }, opts);
+    return this.call(options);
+  },
+
+  put: function(url, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      type: 'PUT'
+    }, opts);
+    return this.call(options);
+  },
+
+  putJson: function(url, data, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      type: 'PUT',
+      data: data
+    }, opts);
+    return this.callJson(options);
+  },
+
+  removeJson: function(url, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      type: 'DELETE',
+      url: url
+    }, opts);
+    return this.callJson(options);
+  },
+
+  getJson: function(url, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      url: url,
+      type: 'GET'
+    }, opts);
+    return this.callJson(options);
+  },
+
+  postJson: function(url, data, opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      type: 'POST',
+      url: url,
+      data: data
+    }, opts);
+    return this.callJson(options);
+  },
+
+  callJson: function(opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      dataType: 'json',
+      contentType: 'application/json; charset=UTF-8',
+    }, opts);
+    return this.call(options);
+  },
+
+  call: function(opts) {
+    var options = ${symbol_dollar}.extend({}, {
+      cache: false
+    }, opts);
+
+    var ajaxCall = scout.create('AjaxCall', {
+      ajaxOptions: options,
+      maxRetries: 0
+    }, {
+      ensureUniqueId: false
+    });
+    return ajaxCall.call();
+  }
+
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/desktop/Desktop.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/desktop/Desktop.json
new file mode 100644
index 0000000..bb9d3f4
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/desktop/Desktop.json
@@ -0,0 +1,10 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+{
+    "id": "${simpleArtifactName}.Desktop",
+    "title": "${symbol_dollar}{textKey:ApplicationTitle}",
+    "objectType": "Desktop",
+    "type": "model",
+    "logoUrl": "res/img/eclipse_scout_logo.png"
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/Person.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/Person.js
new file mode 100644
index 0000000..458e1d1
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/Person.js
@@ -0,0 +1,27 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${simpleArtifactName}.Person = function() {
+  this.resourceType = 'Person';
+  this.personId = null;
+  this.firstName = null;
+  this.lastName = null;
+};
+
+${simpleArtifactName}.Person.EVENT_TYPE = 'person';
+
+${simpleArtifactName}.Person.prototype.init = function(model) {
+  ${symbol_dollar}.extend(this, model);
+};
+
+${simpleArtifactName}.Person.prototype.setFirstName = function(firstName) {
+  this.firstName = firstName;
+};
+
+${simpleArtifactName}.Person.prototype.setLastName = function(lastName) {
+  this.lastName = lastName;
+};
+
+${simpleArtifactName}.Person.prototype.setPersonId = function(id) {
+  this.personId = id;
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.js
new file mode 100644
index 0000000..9ccb49d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.js
@@ -0,0 +1,63 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${simpleArtifactName}.PersonForm = function() {
+  ${simpleArtifactName}.PersonForm.parent.call(this);
+
+  this.firstNameField = null;
+  this.lastNameField = null;
+};
+scout.inherits(${simpleArtifactName}.PersonForm, scout.Form);
+
+${simpleArtifactName}.PersonForm.prototype._jsonModel = function() {
+  return scout.models.getModel('${simpleArtifactName}.PersonForm');
+};
+
+${simpleArtifactName}.PersonForm.prototype._init = function(model) {
+  ${simpleArtifactName}.PersonForm.parent.prototype._init.call(this, model);
+  this._initFields();
+};
+
+/**
+ * Override this method if you have different fields.
+ * Then you need to customize importData and exportData too.
+ */
+${simpleArtifactName}.PersonForm.prototype._initFields = function() {
+  this.firstNameField = this.widget('FirstNameField');
+  this.lastNameField = this.widget('LastNameField');
+};
+
+${simpleArtifactName}.PersonForm.prototype.exportData = function() {
+  var person = this.data;
+  person.setFirstName(this.firstNameField.value);
+  person.setLastName(this.lastNameField.value);
+  return person;
+};
+
+${simpleArtifactName}.PersonForm.prototype.importData = function() {
+  var person = this.data;
+  this.firstNameField.setValue(person.firstName);
+  this.lastNameField.setValue(person.lastName);
+};
+
+${simpleArtifactName}.PersonForm.prototype._save = function(data) {
+  return (data.personId ? ${simpleArtifactName}.persons.store(data) : ${simpleArtifactName}.persons.create(data))
+    .then(this._onSaveDone.bind(this));
+};
+
+${simpleArtifactName}.PersonForm.prototype._onSaveDone = function(person) {
+  this.session.desktop.dataChange({
+    dataType: ${simpleArtifactName}.Person.EVENT_TYPE,
+    data: person
+  });
+
+  return ${symbol_dollar}.resolvedPromise();
+};
+
+${simpleArtifactName}.PersonForm.prototype._load = function() {
+  if (this.data.personId) {
+    // refresh data from server
+    return ${simpleArtifactName}.persons.load(this.data.personId);
+  }
+  return ${symbol_dollar}.resolvedPromise(this.data);
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.json
new file mode 100644
index 0000000..ad37d9a
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonForm.json
@@ -0,0 +1,44 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+{
+  "id": "${simpleArtifactName}.PersonForm",
+  "type": "model",
+  "displayHint": "view",
+  "rootGroupBox": {
+    "id": "MainBox",
+    "objectType": "GroupBox",
+    "menus": [
+      {
+        "id": "OkMenu",
+        "objectType": "OkMenu",
+        "tooltipText": "${symbol_dollar}{textKey:OkMenuTooltip}"
+      },
+      {
+        "id": "CancelMenu",
+        "objectType": "CancelMenu",
+        "tooltipText": "${symbol_dollar}{textKey:CancelMenuTooltip}"
+      }
+    ],
+    "fields": [
+      {
+        "id": "DetailBox",
+        "objectType": "GroupBox",
+        "fields": [
+          {
+            "id": "FirstNameField",
+            "objectType": "StringField",
+            "label": "${symbol_dollar}{textKey:FirstName}",
+            "mandatory": true
+          },
+          {
+            "id": "LastNameField",
+            "objectType": "StringField",
+            "label": "${symbol_dollar}{textKey:LastName}",
+            "mandatory": true
+          }
+        ]
+      }
+    ]
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonRepository.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonRepository.js
new file mode 100644
index 0000000..880193d
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonRepository.js
@@ -0,0 +1,56 @@
+${simpleArtifactName}.PersonRepository = function() {
+  ${simpleArtifactName}.PersonRepository.parent.call(this);
+  this.entityType = 'Person';
+  this.targetUrl = scout.app.apiUrl + 'persons/';
+};
+scout.inherits(${simpleArtifactName}.PersonRepository, ${simpleArtifactName}.Repository);
+
+/**
+ * Loads a single person
+ * @param personId The id of the person to fetch. Must not be null.
+ * @returns Person
+ */
+${simpleArtifactName}.PersonRepository.prototype.load = function(personId) {
+  return this.getJson(this.targetUrl + personId)
+    .then(this._first.bind(this));
+};
+
+/**
+ * get all persons
+ * @returns promise with person array
+ */
+${simpleArtifactName}.PersonRepository.prototype.list = function() {
+  return this.getJson(this.targetUrl);
+};
+
+/**
+ * Update existing Person
+ * @param person The person to update
+ * @returns The updated person
+ */
+${simpleArtifactName}.PersonRepository.prototype.store = function(person) {
+  return this.putJson(this.targetUrl + person.personId, JSON.stringify(person))
+    .then(this._first.bind(this));
+};
+
+/**
+ * Delete person
+ * @param personId The id of the person to delete.
+ * @returns nothing
+ */
+${simpleArtifactName}.PersonRepository.prototype.remove = function(personId) {
+  return this.removeJson(this.targetUrl + personId);
+};
+
+/**
+ * Create new person
+ * @param person The person to create
+ * @returns the created person
+ */
+${simpleArtifactName}.PersonRepository.prototype.create = function(person) {
+  return this.postJson(this.targetUrl, JSON.stringify(person));
+};
+
+scout.addAppListener('bootstrap', function() {
+  ${simpleArtifactName}.persons = ${simpleArtifactName}.Repository.register('${simpleArtifactName}.PersonRepository');
+});
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.js
new file mode 100644
index 0000000..cd8ea25
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.js
@@ -0,0 +1,112 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${simpleArtifactName}.PersonTablePage = function() {
+  ${simpleArtifactName}.PersonTablePage.parent.call(this);
+
+  this._dataChangeListener = null;
+};
+scout.inherits(${simpleArtifactName}.PersonTablePage, scout.PageWithTable);
+
+${simpleArtifactName}.PersonTablePage.prototype._jsonModel = function() {
+  return scout.models.getModel('${simpleArtifactName}.PersonTablePage');
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._init = function(model) {
+  var m = ${symbol_dollar}.extend({}, this._jsonModel(), model);
+  ${simpleArtifactName}.PersonTablePage.parent.prototype._init.call(this, m);
+  this._initListeners();
+};
+
+/**
+ * Override this method if you want to customize the menu entries.
+ */
+${simpleArtifactName}.PersonTablePage.prototype._initListeners = function() {
+  this._dataChangeListener = this._onDataChange.bind(this);
+  this.session.desktop.on('dataChange', this._dataChangeListener);
+
+  var editPersonMenu = this.detailTable.widget('EditPersonMenu');
+  editPersonMenu.on('action', this._onEditPersonMenuAction.bind(this));
+
+  var deletePersonMenu = this.detailTable.widget('DeletePersonMenu');
+  deletePersonMenu.on('action', this._onDeletePersonMenuAction.bind(this));
+
+  var createPersonMenu = this.detailTable.widget('CreatePersonMenu');
+  createPersonMenu.on('action', this._onCreatePersonMenuAction.bind(this));
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._destroy = function() {
+  this.session.desktop.off('dataChange', this._dataChangeListener);
+  ${simpleArtifactName}.PersonTablePage.parent.prototype._destroy.call(this);
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._onDataChange = function(event) {
+  if (event.dataType === ${simpleArtifactName}.Person.EVENT_TYPE) {
+    this.reloadPage();
+  }
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._loadTableData = function() {
+  return ${simpleArtifactName}.persons.list();
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._transformTableDataToTableRows = function(tableData) {
+  return tableData
+    .map(function(person) {
+      return {
+        person: person,
+        cells: [
+          person.personId,
+          person.firstName,
+          person.lastName
+        ]
+      };
+    });
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._getSelectedPerson = function() {
+  var selection = this.detailTable.selectedRow();
+  if (selection) {
+    return selection.person;
+  }
+  return null;
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._createPersonForm = function() {
+  var outline = this.getOutline();
+  var personForm = scout.create('${simpleArtifactName}.PersonForm', {
+    parent: outline
+  });
+  return personForm;
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._onEditPersonMenuAction = function(event) {
+  var personForm = this._createPersonForm();
+  personForm.setData(this._getSelectedPerson());
+  personForm.open();
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._onDeletePersonMenuAction = function(event) {
+  scout.MessageBoxes.openYesNo(this.session.desktop, this.session.text('DeleteConfirmationTextNoItemList'))
+    .then(function(button) {
+      if (button === scout.MessageBox.Buttons.YES) {
+        ${simpleArtifactName}.persons.remove(this._getSelectedPerson().personId)
+          .then(this._onPersonDeleted.bind(this));
+      }
+    }.bind(this));
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._onPersonDeleted = function() {
+  this.session.desktop.dataChange({
+    dataType: ${simpleArtifactName}.Person.EVENT_TYPE
+  });
+};
+
+${simpleArtifactName}.PersonTablePage.prototype._onCreatePersonMenuAction = function(event) {
+  var personForm = this._createPersonForm();
+  var emptyPerson = scout.create('${simpleArtifactName}.Person', {}, {
+    ensureUniqueId: false
+  });
+  personForm.setData(emptyPerson);
+  personForm.open();
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.json b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.json
new file mode 100644
index 0000000..d348ded
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/person/PersonTablePage.json
@@ -0,0 +1,63 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+{
+  "id": "${simpleArtifactName}.PersonTablePage",
+  "objectType": "PageWithTable",
+  "type": "model",
+  "leaf": true,
+  "text": "${symbol_dollar}{textKey:Persons}",
+  "detailTable": {
+    "id": "${simpleArtifactName}.PersonTablePage.Table",
+    "objectType": "Table",
+    "autoResizeColumns": true,
+    "columns": [
+     {
+        "id": "PersonIdColumn",
+        "objectType": "Column",
+        "visible": false
+      },
+      {
+        "id": "FirstNameColumn",
+        "objectType": "Column",
+        "text": "${symbol_dollar}{textKey:FirstName}",
+        "width": 200
+      },
+      {
+        "id": "LastNameColumn",
+        "objectType": "Column",
+        "text": "${symbol_dollar}{textKey:LastName}",
+        "width": 250
+      }
+    ],
+    "menus": [
+      {
+        "id": "EditPersonMenu",
+        "objectType": "Menu",
+        "text": "${symbol_dollar}{textKey:EditPerson}",
+        "iconId": "${symbol_dollar}{iconId:PENCIL}",
+        "menuTypes": [
+          "Table.SingleSelection"
+        ]
+      },
+       {
+        "id": "CreatePersonMenu",
+        "objectType": "Menu",
+        "text": "${symbol_dollar}{textKey:CreatePerson}",
+        "iconId": "${symbol_dollar}{iconId:PLUS}",
+        "menuTypes": [
+          "Table.EmptySpace"
+        ]
+      },
+       {
+        "id": "DeletePersonMenu",
+        "objectType": "Menu",
+        "text": "${symbol_dollar}{textKey:DeletePerson}",
+        "iconId": "${symbol_dollar}{iconId:REMOVE}",
+        "menuTypes": [
+          "Table.SingleSelection"
+        ]
+      }
+    ]
+  }
+}
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/repository/Repository.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/repository/Repository.js
new file mode 100644
index 0000000..5384287
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/js/__simpleArtifactName__/repository/Repository.js
@@ -0,0 +1,93 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ * Subclasses of Repository must set the resourceType property.
+ *
+ * @abstract
+ * @class
+ */
+${simpleArtifactName}.Repository = function() {
+  this.entityType = null;
+};
+
+${simpleArtifactName}.Repository.prototype.getJson = function(url, opts) {
+  return ${simpleArtifactName}.Repository.map(scout.ajax.getJson(url, this._ensureConverter(opts)));
+};
+
+${simpleArtifactName}.Repository.prototype.postJson = function(url, data, opts) {
+  return ${simpleArtifactName}.Repository.map(scout.ajax.postJson(url, data, this._ensureConverter(opts)));
+};
+
+${simpleArtifactName}.Repository.prototype.removeJson = function(url, opts) {
+  return ${simpleArtifactName}.Repository.map(scout.ajax.removeJson(url, this._ensureConverter(opts)));
+};
+
+${simpleArtifactName}.Repository.prototype.putJson = function(url, data, opts) {
+  return ${simpleArtifactName}.Repository.map(scout.ajax.putJson(url, data, this._ensureConverter(opts)));
+};
+
+${simpleArtifactName}.Repository.prototype._ensureConverter = function(opts) {
+  return ${symbol_dollar}.extend({}, {
+    converters: {
+      "text json": this._mapJson
+    }
+  }, opts);
+};
+
+${simpleArtifactName}.Repository.prototype._mapJson = function(data) {
+  return JSON.parse(data, function(key, value) {
+    if (key === '_type') {
+      this.objectType = scout.app.appPrefix + value;
+    }
+    return value;
+  });
+};
+
+${simpleArtifactName}.Repository.prototype._first = function(items) {
+  return items[0];
+};
+
+// ---- Static Objects ---- //
+
+${simpleArtifactName}.repositories = {};
+
+/**
+ * @static
+ * @param {string} objectName
+ * @returns {${simpleArtifactName}.Repository}
+ */
+${simpleArtifactName}.Repository.register = function(objectName) {
+  var repository = scout.create(objectName);
+  ${simpleArtifactName}.repositories[repository.entityType] = repository;
+  return repository;
+};
+
+${simpleArtifactName}.Repository.map = function(promise) {
+  return promise
+    .then(function(response) {
+      if (!response || !response.items) {
+        return response;
+      }
+
+      return response.items
+        .map(function(item) {
+          return scout.create(item, {
+            ensureUniqueId: false
+          });
+        });
+    });
+};
+
+/**
+ * @static
+ * @param {string} resourceType
+ * @returns {${simpleArtifactName}.Repository} a repository for the given resourceType
+ */
+${simpleArtifactName}.Repository.get = function(resourceType) {
+  var repository = ${simpleArtifactName}.repositories[resourceType];
+  if (!repository) {
+    throw new Error('no repository found for resourceType ' + resourceType);
+  }
+  return repository;
+};
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/resources/META-INF/scout.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/resources/META-INF/scout.xml
new file mode 100644
index 0000000..760933e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/main/resources/META-INF/scout.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scout>
+</scout>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/SpecRunnerMaven.html b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/SpecRunnerMaven.html
new file mode 100644
index 0000000..3fd3c53
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/SpecRunnerMaven.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<!--
+  This spec runner is used by the maven build.
+  You can use it too while developing by executing
+  mvn jasmine:bdd and connecting to http://localhost:8234/ with your browser.
+  When using mvn verify, the server is started on http://localhost:64600/.
+ -->
+<html>
+<head>
+  <meta charset="UTF-8">
+  $if(autoRefresh)$
+  <meta http-equiv="refresh" content="$autoRefreshInterval$">
+  $endif$
+  <title>Jasmine Spec Runner</title>
+  <script type="text/javascript">
+    window.onerror = function(msg,url,line) {
+      if (document.head) {
+        var jserror = document.head.getAttribute('jmp_jserror') || '';
+        if (jserror) {
+          jserror += ':!:';
+        }
+        jserror += msg;
+        document.head.setAttribute('jmp_jserror',jserror);
+      }
+    };
+  </script>
+  <link rel="shortcut icon" type="image/png" href="ext/WebContent/res/jasmine-2.5.2/jasmine_favicon.png">
+  <link rel="stylesheet" type="text/css" href="ext/WebContent/res/jasmine-2.5.2/jasmine.css">
+  <link rel="stylesheet" type="text/css" href="ext/jasmine/JasmineScout.css">
+
+  <script type="text/javascript" src="ext/WebContent/res/jquery-3.3.1.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/log4javascript-1.4.9/log4javascript.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/jasmine-2.5.2/jasmine.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/jasmine-2.5.2/jasmine-html.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/jasmine-2.5.2/boot.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/jasmine-2.5.2/plugins/jasmine-jquery.js"></script>
+  <script type="text/javascript" src="ext/WebContent/res/jasmine-2.5.2/plugins/mock-ajax.js"></script>
+  <script type="text/javascript" src="ext/jasmine/JasmineScoutModuleUtil.js"></script>
+  <script type="text/javascript" src="ext/jasmine/JasmineScout.js"></script>
+  <script type="text/javascript" src="ext/jasmine/boot.ext.js"></script>
+
+  <script type="text/javascript">loadDynamicScript('ext/scout-module.js');</script>
+  <script type="text/javascript">loadDynamicScript('ext/scout-login-module.js');</script>
+  <script type="text/javascript">loadDynamicScript('ext/scout-test-module.js');</script>
+  <script type="text/javascript">loadDynamicScript('src/main/js/${simpleArtifactName}-module.js');</script>
+
+</head>
+<body>
+  <script type="text/javascript">
+  // app initialization uses promises which are executed asynchronously
+  // -> Use the clock to make sure all promise callbacks are executed before any test starts.
+  jasmine.clock().install();
+  scout.models.bootstrap = function(url) {
+    return loadJsonModule(url).then(this.init.bind(this));
+  };
+  new ${simpleArtifactName}.App().init({
+    bootstrap: {
+      modelsUrl: 'src/main/js/${simpleArtifactName}-module.json'
+    }
+  });
+  jasmine.clock().tick(1000);
+  jasmine.clock().uninstall();
+  </script>
+
+  $specScriptTags$
+
+</body>
+</html>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonFormSpec.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonFormSpec.js
new file mode 100644
index 0000000..7d628a3
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonFormSpec.js
@@ -0,0 +1,39 @@
+describe('PersonForm', function() {
+  var session;
+
+  beforeEach(function() {
+    setFixtures(sandbox());
+    session = sandboxSession({
+      desktop: {
+        // Bench is not visible by default for sandbox sessions.
+        // It is required here because forms with display style view are opened
+        benchVisible: true
+      }
+    });
+  });
+
+  describe('open with person', function() {
+
+    it('shows firstName and LastName', function(done) {
+      var personForm = scout.create('${simpleArtifactName}.PersonForm', {
+        parent: session.desktop
+      });
+
+      var person = scout.create('${simpleArtifactName}.Person', {
+        firstName: 'first',
+        lastName: 'last'
+      });
+      personForm.setData(person);
+      personForm.open()
+        .then(function() {
+          expect(personForm.firstNameField.rendered).toBe(true);
+          expect(personForm.lastNameField.rendered).toBe(true);
+          expect(personForm.firstNameField.value).toBe(person.firstName);
+          expect(personForm.lastNameField.value).toBe(person.lastName);
+          personForm.close();
+        })
+        .catch(fail)
+        .always(done);
+    });
+  });
+});
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonSpec.js b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonSpec.js
new file mode 100644
index 0000000..73fe87e
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__.ui/src/test/js/__rootArtifactId__/person/PersonSpec.js
@@ -0,0 +1,31 @@
+describe('Person', function() {
+
+  it('stores values correctly', function() {
+    var person = scout.create('${simpleArtifactName}.Person');
+    var values = ['first', 'last', 'id'];
+    person.setFirstName(values[0]);
+    person.setLastName(values[1]);
+    person.setPersonId(values[2]);
+
+    expect(person.firstName).toBe(values[0]);
+    expect(person.lastName).toBe(values[1]);
+    expect(person.personId).toBe(values[2]);
+    expect(person.resourceType).toBe('Person');
+  });
+
+  it('initializes correctly from model', function() {
+    var values = ['first', 'last', 'id'];
+    var model = {
+      personId: values[2],
+      firstName: values[0],
+      lastName: values[1]
+    };
+    var person = scout.create('${simpleArtifactName}.Person', model);
+
+    expect(person.firstName).toBe(values[0]);
+    expect(person.lastName).toBe(values[1]);
+    expect(person.personId).toBe(values[2]);
+    expect(person.resourceType).toBe('Person');
+  });
+
+});
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml
new file mode 100644
index 0000000..6b5df22
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.eclipse.scout</groupId>
+    <artifactId>maven_rt_plugin_config-master</artifactId>
+    <version>3.0.0</version>
+    <relativePath />
+  </parent>
+
+  <properties>
+    <jdk.source.version>${javaVersion}</jdk.source.version>
+    <org.eclipse.scout.rt.version>8.0.0-SNAPSHOT</org.eclipse.scout.rt.version>
+    <org.glassfish.jersey.version>2.27</org.glassfish.jersey.version>
+    <org.jooq.version>3.11.1</org.jooq.version>
+    <derby.version>10.14.2.0</derby.version>
+  </properties>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${rootArtifactId}</artifactId>
+  <version>${version}</version>
+  <packaging>pom</packaging>
+  <name>${displayName}</name>
+
+  <modules>
+    <!-- Core modules -->
+    <module>../${rootArtifactId}.ui</module>
+    <module>../${rootArtifactId}.api</module>
+    <module>../${rootArtifactId}.core</module>
+    <module>../${rootArtifactId}.data</module>
+    <module>../${rootArtifactId}.persistence</module>
+
+    <!-- App modules -->
+    <module>../${rootArtifactId}.app</module>
+    <module>../${rootArtifactId}.app.war</module>
+
+    <!-- Test modules -->
+    <module>../${rootArtifactId}.core.test</module>
+    <module>../${rootArtifactId}.persistence.test</module>
+
+    <!-- DB modules -->
+    <module>../${rootArtifactId}.db</module>
+  </modules>
+
+  <dependencyManagement>
+    <dependencies>
+      <!-- Scout Dependencies -->
+      <dependency>
+        <groupId>org.eclipse.scout.rt</groupId>
+        <artifactId>org.eclipse.scout.rt</artifactId>
+        <version>${org.eclipse.scout.rt.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+
+      <!-- External Dependencies -->
+      <dependency>
+        <groupId>org.glassfish.jersey</groupId>
+        <artifactId>jersey-bom</artifactId>
+        <version>${org.glassfish.jersey.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.jooq</groupId>
+        <artifactId>jooq-parent</artifactId>
+        <version>${org.jooq.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.derby</groupId>
+        <artifactId>derby</artifactId>
+        <version>${derby.version}</version>
+      </dependency>
+
+     <!-- Application dependencies -->
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.ui</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.app</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.app.dev</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.app.war</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.core</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.persistence</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.data</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.core.test</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${groupId}</groupId>
+        <artifactId>${rootArtifactId}.db</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.eclipse.scout</groupId>
+          <artifactId>eclipse-settings-maven-plugin</artifactId>
+          <dependencies>
+            <dependency>
+              <groupId>org.eclipse.scout.rt</groupId>
+              <artifactId>org.eclipse.scout.rt-settings</artifactId>
+              <version>${project.version}</version>
+            </dependency>
+          </dependencies>
+        </plugin>
+        <plugin>
+          <artifactId>maven-dependency-plugin</artifactId>
+          <version>2.10</version>
+          <configuration>
+            <overWriteReleases>false</overWriteReleases>
+            <overWriteSnapshots>true</overWriteSnapshots>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>webapp_src_folder</id>
+      <activation>
+        <file>
+          <exists>${basedir}/src/main/webapp</exists>
+        </file>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>build-helper-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>add-webapp-resource</id>
+                <goals>
+                  <goal>add-resource</goal>
+                </goals>
+                <phase>generate-resources</phase>
+                <configuration>
+                  <resources>
+                    <resource>
+                      <directory>src/main/webapp</directory>
+                    </resource>
+                  </resources>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+  <repositories>
+    <repository>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <id>eclipse.release</id>
+      <name>eclipse-release-repo</name>
+      <url>https://repo.eclipse.org/content/groups/releases/</url>
+    </repository>
+    <repository>
+      <snapshots></snapshots>
+      <id>eclipse.snapshot</id>
+      <name>eclipse-snapshot-repo</name>
+      <url>https://repo.eclipse.org/content/groups/snapshots/</url>
+    </repository>
+  </repositories>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+      <id>eclipse.release</id>
+      <name>eclipse-release-repo</name>
+      <url>https://repo.eclipse.org/content/groups/releases/</url>
+    </pluginRepository>
+    <pluginRepository>
+      <snapshots></snapshots>
+      <id>eclipse.snapshot</id>
+      <name>eclipse-snapshot-repo</name>
+      <url>https://repo.eclipse.org/content/groups/snapshots/</url>
+    </pluginRepository>
+  </pluginRepositories>
+</project>
diff --git a/scout-hellojs-app/src/main/resources/archetype-resources/pom.xml b/scout-hellojs-app/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..5504193
--- /dev/null
+++ b/scout-hellojs-app/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${rootArtifactId}-root</artifactId>
+  <version>${version}</version>
+  <packaging>pom</packaging>
+
+  <name>${displayName} ROOT Module</name>
+
+  <prerequisites>
+    <maven>3.2.2</maven>
+  </prerequisites>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
+        <version>2.8.2</version>
+        <inherited>false</inherited>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <version>2.5.2</version>
+        <inherited>false</inherited>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/scout-hellojs-app/src/test/resources/projects/basic/archetype.properties b/scout-hellojs-app/src/test/resources/projects/basic/archetype.properties
new file mode 100644
index 0000000..5d5c37f
--- /dev/null
+++ b/scout-hellojs-app/src/test/resources/projects/basic/archetype.properties
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2015 BSI Business Systems Integration AG.
+# 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:
+#     BSI Business Systems Integration AG - initial API and implementation
+#
+
+#Fri Oct 30 12:41:40 CET 2015
+package=org.eclipse.scout.apps.hellojs
+version=1.0.0-SNAPSHOT
+displayName=My Application
+groupId=org.eclipse.scout.apps
+artifactId=hellojs
+javaVersion=1.8
+scoutAuthPublicKeyDev=changeme_database_password
+simpleArtifactName=hellojs
diff --git a/scout-hellojs-app/src/test/resources/projects/basic/goal.txt b/scout-hellojs-app/src/test/resources/projects/basic/goal.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scout-hellojs-app/src/test/resources/projects/basic/goal.txt
diff --git a/scout-helloworld-app/.project b/scout-helloworld-app/.project
index 9d3ae72..ca88999 100644
--- a/scout-helloworld-app/.project
+++ b/scout-helloworld-app/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/scout-helloworld-app/.settings/org.eclipse.jdt.ui.prefs b/scout-helloworld-app/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/scout-helloworld-app/.settings/org.eclipse.jdt.ui.prefs
+++ b/scout-helloworld-app/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/scout-helloworld-app/.settings/org.eclipse.wst.jsdt.core.prefs b/scout-helloworld-app/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/scout-helloworld-app/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/scout-helloworld-app/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/scout-helloworld-app/.settings/org.sonarlint.eclipse.core.prefs b/scout-helloworld-app/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..aac1181 100644
--- a/scout-helloworld-app/.settings/org.sonarlint.eclipse.core.prefs
+++ b/scout-helloworld-app/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
-autoEnabled=true
+autoEnabled=false
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/scout-helloworld-app/pom.xml b/scout-helloworld-app/pom.xml
index b376cf3..4ea8fca 100644
--- a/scout-helloworld-app/pom.xml
+++ b/scout-helloworld-app/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.eclipse.scout.archetypes</groupId>
   <artifactId>scout-helloworld-app</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>8.0.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <name>Scout Hello World Sample Application</name>
@@ -31,7 +31,7 @@
   <url>https://eclipse.org/scout</url>
 
   <properties>
-    <scout.base.version>7.0.300</scout.base.version>
+    <scout.base.version>8.0.0</scout.base.version>
     <base.version>${scout.base.version}</base.version>
 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -108,7 +108,7 @@
   <scm>
     <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout.sdk.git</connection>
     <developerConnection>scm:git:ssh://${eclipse_gerrit_username}@git.eclipse.org:29418/scout/org.eclipse.scout.sdk</developerConnection>
-    <tag>releases/7.0.x</tag>
+    <tag>releases/8.0.x</tag>
     <url>http://git.eclipse.org/c/scout/org.eclipse.scout.sdk.git/</url>
   </scm>
 
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/pom.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/pom.xml
index c884a31..3803fd7 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/pom.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/pom.xml
@@ -16,8 +16,12 @@
 
   <dependencies>
     <dependency>
-      <artifactId>org.eclipse.scout.rt.client</artifactId>
       <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.client</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.svg.client</artifactId>
     </dependency>
     <dependency>
       <groupId>${groupId}</groupId>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ClientSession.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ClientSession.java
index 5a9d370..7c2c9c5 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ClientSession.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ClientSession.java
@@ -11,8 +11,6 @@
 import ${package}.client.Desktop;
 
 /**
- * <h3>{@link ClientSession}</h3>
- *
  * @author ${userName}
  */
 public class ClientSession extends AbstractClientSession {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/DefaultIconProviderService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/DefaultIconProviderService.java
index 9d1d548..959cdb5 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/DefaultIconProviderService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/DefaultIconProviderService.java
@@ -8,8 +8,6 @@
 import org.eclipse.scout.rt.client.services.common.icon.AbstractIconProviderService;
 
 /**
- * <h3>{@link DefaultIconProviderService}</h3>
- *
  * @author ${userName}
  */
 public class DefaultIconProviderService extends AbstractIconProviderService {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/Desktop.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/Desktop.java
index 566a4e4..d9b91e2 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/Desktop.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/Desktop.java
@@ -3,8 +3,12 @@
 #set( $symbol_escape = '\' )
 package ${package}.client;
 
+import java.security.AccessController;
+import java.security.Principal;
 import java.util.List;
 
+import javax.security.auth.Subject;
+
 import org.eclipse.scout.rt.client.session.ClientSessionProvider;
 import org.eclipse.scout.rt.client.ui.action.keystroke.IKeyStroke;
 import org.eclipse.scout.rt.client.ui.action.menu.AbstractMenu;
@@ -13,8 +17,9 @@
 import org.eclipse.scout.rt.client.ui.desktop.outline.IOutline;
 import org.eclipse.scout.rt.client.ui.form.ScoutInfoForm;
 import org.eclipse.scout.rt.platform.Order;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 import org.eclipse.scout.rt.platform.util.CollectionUtility;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.util.StringUtility;
 
 import ${package}.client.search.SearchOutline;
 import ${package}.client.settings.SettingsOutline;
@@ -22,8 +27,6 @@
 import ${package}.shared.Icons;
 
 /**
- * <h3>{@link Desktop}</h3>
- *
  * @author ${userName}
  */
 public class Desktop extends AbstractDesktop {
@@ -58,34 +61,23 @@
   }
 
   @Order(1000)
-  public class FileMenu extends AbstractMenu {
+  public class UserProfileMenu extends AbstractMenu {
+
+    @Override
+    protected String getConfiguredKeyStroke() {
+      return IKeyStroke.F10;
+    }
+
+    @Override
+    protected String getConfiguredIconId() {
+      return Icons.PersonSolid;
+    }
 
     @Override
     protected String getConfiguredText() {
-      return TEXTS.get("File");
-    }
-
-    @Order(1000)
-    public class ExitMenu extends AbstractMenu {
-
-      @Override
-      protected String getConfiguredText() {
-        return TEXTS.get("Exit");
-      }
-
-      @Override
-      protected void execAction() {
-        ClientSessionProvider.currentSession(ClientSession.class).stop();
-      }
-    }
-  }
-
-  @Order(2000)
-  public class HelpMenu extends AbstractMenu {
-
-    @Override
-    protected String getConfiguredText() {
-      return TEXTS.get("Help");
+      Subject subject = Subject.getSubject(AccessController.getContext());
+      Principal firstPrincipal = CollectionUtility.firstElement(subject.getPrincipals());
+      return StringUtility.uppercaseFirst(firstPrincipal.getName());
     }
 
     @Order(1000)
@@ -102,6 +94,20 @@
         form.startModify();
       }
     }
+
+    @Order(2000)
+    public class LogoutMenu extends AbstractMenu {
+
+      @Override
+      protected String getConfiguredText() {
+        return TEXTS.get("Logout");
+      }
+
+      @Override
+      protected void execAction() {
+        ClientSessionProvider.currentSession().stop();
+      }
+    }
   }
 
   @Order(1000)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ResourceBase.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ResourceBase.java
index d065c73..8d71f9a 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ResourceBase.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/ResourceBase.java
@@ -4,9 +4,9 @@
 package ${package}.client;
 
 /**
- * <h3>{@link ResourceBase}</h3>
- * This class is the base for resources contained in this module.<br>
- * Do not move it to another package, the package is part of the resource name.<br>
+ * This class is the base for resources contained in this module. <b>Do not move it to another package</b>, as the
+ * package is part of the resource name.
+ * <p>
  * Usage: <code>ResourceBase.class.getResource("relativeFolder/file.ext")</code>
  *
  * @author ${userName}
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldForm.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldForm.java
index fd5e036..aaa10d3 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldForm.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldForm.java
@@ -10,8 +10,8 @@
 import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox;
 import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField;
 import org.eclipse.scout.rt.platform.BEANS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 import org.eclipse.scout.rt.shared.AbstractIcons;
-import org.eclipse.scout.rt.shared.TEXTS;
 
 import ${package}.client.helloworld.HelloWorldForm.MainBox.TopBox;
 import ${package}.client.helloworld.HelloWorldForm.MainBox.TopBox.MessageField;
@@ -19,8 +19,6 @@
 import ${package}.shared.helloworld.IHelloWorldService;
 
 /**
- * <h3>{@link HelloWorldForm}</h3>
- *
  * @author ${userName}
  */
 @FormData(value = HelloWorldFormData.class, sdkCommand = FormData.SdkCommand.CREATE)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldPage.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldPage.java
index 42c449c..6a2658c 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldPage.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/helloworld/HelloWorldPage.java
@@ -5,11 +5,9 @@
 
 import org.eclipse.scout.rt.client.ui.desktop.outline.pages.AbstractPageWithNodes;
 import org.eclipse.scout.rt.client.ui.form.IForm;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 
 /**
- * <h3>{@link HelloWorldPage}</h3>
- *
  * @author ${userName}
  */
 public class HelloWorldPage extends AbstractPageWithNodes {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/search/SearchOutline.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/search/SearchOutline.java
index 98b6a4e..7199b66 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/search/SearchOutline.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/search/SearchOutline.java
@@ -11,8 +11,6 @@
 import ${package}.shared.Icons;
 
 /**
- * <h3>{@link SearchOutline}</h3>
- *
  * @author ${userName}
  */
 @Order(2000)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/settings/SettingsOutline.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/settings/SettingsOutline.java
index 8e6925d..e52ea98 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/settings/SettingsOutline.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/settings/SettingsOutline.java
@@ -5,13 +5,11 @@
 
 import org.eclipse.scout.rt.platform.Order;
 import org.eclipse.scout.rt.client.ui.desktop.outline.AbstractOutline;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 
 import ${package}.shared.Icons;
 
 /**
- * <h3>{@link SettingsOutline}</h3>
- *
  * @author ${userName}
  */
 @Order(3000)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/work/WorkOutline.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/work/WorkOutline.java
index 2b7191d..e88693a 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/work/WorkOutline.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/main/java/client/work/WorkOutline.java
@@ -8,14 +8,12 @@
 import org.eclipse.scout.rt.platform.Order;
 import org.eclipse.scout.rt.client.ui.desktop.outline.AbstractOutline;
 import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPage;
-import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.rt.platform.text.TEXTS;
 
 import ${package}.client.helloworld.HelloWorldPage;
 import ${package}.shared.Icons;
 
 /**
- * <h3>{@link WorkOutline}</h3>
- *
  * @author ${userName}
  */
 @Order(1000)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/test/java/client/helloworld/HelloWorldFormTest.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/test/java/client/helloworld/HelloWorldFormTest.java
index 62aba0b..e927bc6 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/test/java/client/helloworld/HelloWorldFormTest.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.client/src/test/java/client/helloworld/HelloWorldFormTest.java
@@ -21,8 +21,7 @@
 import org.junit.runner.RunWith;
 
 /**
- * <h3>{@link HelloWorldFormTest}</h3> Contains Tests for the
- * {@link HelloWorldForm}.
+ * Contains Tests for the {@link HelloWorldForm}.
  *
  * @author ${userName}
  */
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/resources/config.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/resources/config.properties
index 1294e11..c606e2f 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/resources/config.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/resources/config.properties
@@ -6,7 +6,7 @@
 scout.application.version=development
 
 $symbol_pound$symbol_pound$symbol_pound Environment
-scout.dev.mode=true
+scout.devMode=true
 
 $symbol_pound$symbol_pound$symbol_pound Service tunnel
-scout.auth.publickey=${scoutAuthPublicKeyDev}
+scout.auth.publicKey=${scoutAuthPublicKeyDev}
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/webapp/WEB-INF/web.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/webapp/WEB-INF/web.xml
index 3049a30..57c09d3 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/webapp/WEB-INF/web.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.dev/src/main/webapp/WEB-INF/web.xml
@@ -23,7 +23,6 @@
       </param-value>
     </init-param>
   </filter>
-
   <filter-mapping>
     <filter-name>AuthFilter</filter-name>
     <url-pattern>/*</url-pattern>
@@ -33,17 +32,15 @@
     <servlet-name>process</servlet-name>
     <servlet-class>org.eclipse.scout.rt.server.ServiceTunnelServlet</servlet-class>
   </servlet>
-
-  <servlet>
-    <servlet-name>diagnostics</servlet-name>
-    <servlet-class>org.eclipse.scout.rt.server.admin.diagnostic.DiagnosticServlet</servlet-class>
-  </servlet>
-
   <servlet-mapping>
     <servlet-name>process</servlet-name>
     <url-pattern>/process</url-pattern>
   </servlet-mapping>
 
+  <servlet>
+    <servlet-name>diagnostics</servlet-name>
+    <servlet-class>org.eclipse.scout.rt.server.admin.diagnostic.DiagnosticServlet</servlet-class>
+  </servlet>
   <servlet-mapping>
     <servlet-name>diagnostics</servlet-name>
     <url-pattern>/diagnostics</url-pattern>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/resources/config.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/resources/config.properties
index 7cbb8b0..8665b50 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/resources/config.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/resources/config.properties
@@ -6,4 +6,4 @@
 scout.application.version=${symbol_dollar}{project.version}
 
 $symbol_pound$symbol_pound$symbol_pound Service tunnel
-scout.auth.publickey=${scoutAuthPublicKey}
+scout.auth.publicKey=${scoutAuthPublicKey}
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/webapp/WEB-INF/web.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/webapp/WEB-INF/web.xml
index 749d430..63c705e 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/webapp/WEB-INF/web.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server.app.war/src/main/webapp/WEB-INF/web.xml
@@ -23,7 +23,6 @@
       </param-value>
     </init-param>
   </filter>
-
   <filter-mapping>
     <filter-name>AuthFilter</filter-name>
     <url-pattern>/*</url-pattern>
@@ -33,17 +32,15 @@
     <servlet-name>process</servlet-name>
     <servlet-class>org.eclipse.scout.rt.server.ServiceTunnelServlet</servlet-class>
   </servlet>
-
-  <servlet>
-    <servlet-name>diagnostics</servlet-name>
-    <servlet-class>org.eclipse.scout.rt.server.admin.diagnostic.DiagnosticServlet</servlet-class>
-  </servlet>
-
   <servlet-mapping>
     <servlet-name>process</servlet-name>
     <url-pattern>/process</url-pattern>
   </servlet-mapping>
 
+  <servlet>
+    <servlet-name>diagnostics</servlet-name>
+    <servlet-class>org.eclipse.scout.rt.server.admin.diagnostic.DiagnosticServlet</servlet-class>
+  </servlet>
   <servlet-mapping>
     <servlet-name>diagnostics</servlet-name>
     <url-pattern>/diagnostics</url-pattern>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerServletFilter.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerServletFilter.java
index 14bc975..1c99e9a 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerServletFilter.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerServletFilter.java
@@ -21,7 +21,6 @@
 import org.eclipse.scout.rt.server.commons.authentication.TrivialAccessController.TrivialAuthConfig;
 
 /**
- * <h3>{@link ServerServletFilter}</h3>
  * This is the main server side servlet filter.
  *
  * @author ${userName}
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerSession.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerSession.java
index 40fc1f4..72b1e42 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerSession.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/ServerSession.java
@@ -9,8 +9,6 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * <h3>{@link ServerSession}</h3>
- *
  * @author ${userName}
  */
 public class ServerSession extends AbstractServerSession {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/helloworld/HelloWorldService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/helloworld/HelloWorldService.java
index e175c76..913186b 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/helloworld/HelloWorldService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/helloworld/HelloWorldService.java
@@ -8,8 +8,6 @@
 import ${package}.shared.helloworld.IHelloWorldService;
 
 /**
- * <h3>{@link HelloWorldService}</h3>
- *
  * @author ${userName}
  */
 public class HelloWorldService implements IHelloWorldService {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/security/ServerAccessControlService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/security/ServerAccessControlService.java
index ecae679..952e5ff 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/security/ServerAccessControlService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/main/java/server/security/ServerAccessControlService.java
@@ -11,8 +11,6 @@
 import org.eclipse.scout.rt.shared.security.RemoteServiceAccessPermission;
 
 /**
- * <h3>{@link AccessControlService}</h3>
- *
  * @author ${userName}
  */
 @Replace
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/test/java/server/helloworld/HelloWorldServiceTest.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/test/java/server/helloworld/HelloWorldServiceTest.java
index b50cfe4..107a576 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/test/java/server/helloworld/HelloWorldServiceTest.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.server/src/test/java/server/helloworld/HelloWorldServiceTest.java
@@ -16,8 +16,6 @@
 import ${package}.shared.helloworld.IHelloWorldService;
 
 /**
- * <h3>{@link HelloWorldServiceTest}</h3>
- *
  * @author ${userName}
  */
 @RunWith(ServerTestRunner.class)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/Icons.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/Icons.java
index b95e0bc..fa42ab0 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/Icons.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/Icons.java
@@ -6,8 +6,6 @@
 import org.eclipse.scout.rt.shared.AbstractIcons;
 
 /**
- * <h3>{@link Icons}</h3>
- *
  * @author ${userName}
  */
 public class Icons extends AbstractIcons {
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/helloworld/IHelloWorldService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/helloworld/IHelloWorldService.java
index 4fa30bc..220f708 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/helloworld/IHelloWorldService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/helloworld/IHelloWorldService.java
@@ -9,8 +9,6 @@
 import ${package}.shared.helloworld.HelloWorldFormData;
 
 /**
- * <h3>{@link IHelloWorldService}</h3>
- *
  * @author ${userName}
  */
 @TunnelToServer
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/security/AccessControlService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/security/AccessControlService.java
index e54c565..6e122b4 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/security/AccessControlService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/security/AccessControlService.java
@@ -10,8 +10,6 @@
 import org.eclipse.scout.rt.shared.services.common.security.IAccessControlService;
 
 /**
- * <h3>{@link UserIdAccessControlService}</h3>
- *
  * {@link IAccessControlService} service that uses {@link ISession#getUserId()} as internal cache key required by
  * {@link AbstractAccessControlService} implementation.
  * <p>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/text/DefaultTextProviderService.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/text/DefaultTextProviderService.java
index de3630e..0897718 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/text/DefaultTextProviderService.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/java/shared/text/DefaultTextProviderService.java
@@ -4,11 +4,9 @@
 package ${package}.shared.text;
 
 import org.eclipse.scout.rt.platform.Order;
-import org.eclipse.scout.rt.shared.services.common.text.AbstractDynamicNlsTextProviderService;
+import org.eclipse.scout.rt.platform.text.AbstractDynamicNlsTextProviderService;
 
 /**
- * <h3>{@link DefaultTextProviderService}</h3>
- *
  * @author ${userName}
  */
 @Order(-2000)
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts.properties
index 06d0c7a..7bb0f89 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts.properties
@@ -1,10 +1,9 @@
 About=About
 ApplicationTitle=${displayName}
-Exit=Exit
-File=File
+AuthorizationFailed=Permission denied
 HelloWorld=Hello World
+Logout=Logout
 Message=Message
 MessageFromServer=Message from Server
 Settings=Settings
 Work=Work
-AuthorizationFailed=Permission denied
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_de.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_de.properties
index b9a4506..ab45d96 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_de.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_de.properties
@@ -1,9 +1,8 @@
 About=Info
 ApplicationTitle=${displayName}
-Exit=Beenden
-File=Datei
+AuthorizationFailed=Zugriff verweigert
+Logout=Abmelden
 Message=Nachricht
 MessageFromServer=Nachricht vom Server
 Settings=Einstellungen
 Work=Arbeit
-AuthorizationFailed=Zugriff verweigert
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_fr.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_fr.properties
index 6be7298..ad40535 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_fr.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.shared/src/main/resources/shared/texts/Texts_fr.properties
@@ -1,9 +1,8 @@
 About=Info
 ApplicationTitle=${displayName}
-Exit=Terminer
-File=Fichier
+AuthorizationFailed=Acc\u00E8s refus\u00E9
+Logout=Annuler
 Message=Message
 MessageFromServer=Message du serveur
 Settings=Param\u00E8tres
 Work=Travail
-AuthorizationFailed=Acc\u00E8s refus\u00E9
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/resources/config.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/resources/config.properties
index 19910aa..a99f5ab 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/resources/config.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/resources/config.properties
@@ -5,22 +5,17 @@
 scout.application.name=${displayName}
 scout.application.version=development
 
-$symbol_pound$symbol_pound$symbol_pound UI
-scout.ui.theme=application
-scout.ui.prebuild=false
-scout.ui.prebuild.files=/index.html,/login.html,/logout.html,/popup-window.html
-
 $symbol_pound$symbol_pound$symbol_pound Environment
-scout.dev.mode=true
-scout.auth.cookie.session.validate.secure=false
+scout.devMode=true
+scout.auth.cookieSessionValidateSecure=false
 
 $symbol_pound$symbol_pound$symbol_pound Service tunnel
-scout.server.url=http://localhost:8080
-scout.auth.privatekey=${scoutAuthPrivateKeyDev}
+scout.backendUrl=http://localhost:8080
+scout.auth.privateKey=${scoutAuthPrivateKeyDev}
 
 $symbol_pound$symbol_pound$symbol_pound Security
 scout.auth.credentials=admin:admin;scott:tiger
-scout.auth.credentials.plaintext=true
+scout.auth.credentialsPlaintext=true
 
 $symbol_pound$symbol_pound$symbol_pound Storage location for FileSystemUserPreferencesStorageService
-user.area=${symbol_dollar}{user.home}/${groupId}-${rootArtifactId}.ui.html.dev
+scout.client.userArea=${symbol_dollar}{user.home}/${groupId}-${rootArtifactId}.ui.html.dev
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/webapp/WEB-INF/web.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/webapp/WEB-INF/web.xml
index 0d15d27..3f49f9f 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/webapp/WEB-INF/web.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.dev/src/main/webapp/WEB-INF/web.xml
@@ -11,7 +11,6 @@
   <listener>
     <listener-class>org.eclipse.scout.rt.server.commons.WebappEventListener</listener-class>
   </listener>
-
   <listener>
     <listener-class>org.eclipse.scout.rt.server.commons.HttpSessionMutex</listener-class>
   </listener>
@@ -26,17 +25,24 @@
       </param-value>
     </init-param>
   </filter>
-
   <filter-mapping>
     <filter-name>AuthFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
 
+  <filter>
+    <filter-name>GzipServletFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.commons.servlet.filter.gzip.GzipServletFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>GzipServletFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
   <servlet>
     <servlet-name>UiServlet</servlet-name>
     <servlet-class>org.eclipse.scout.rt.ui.html.UiServlet</servlet-class>
   </servlet>
-
   <servlet-mapping>
     <servlet-name>UiServlet</servlet-name>
     <url-pattern>/*</url-pattern>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/resources/config.properties b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/resources/config.properties
index b737e91..a052406 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/resources/config.properties
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/resources/config.properties
@@ -6,16 +6,15 @@
 scout.application.version=${symbol_dollar}{project.version}
 
 $symbol_pound$symbol_pound$symbol_pound UI
-scout.ui.theme=application
 scout.ui.prebuild=true
 scout.ui.prebuild.files=/index.html,/login.html,/logout.html,/popup-window.html
 
 $symbol_pound$symbol_pound$symbol_pound Service tunnel
-scout.server.url=https://localhost:8443/${groupId}.${rootArtifactId}.server
-scout.auth.privatekey=${scoutAuthPrivateKey}
+scout.backendUrl=https://localhost:8443/${groupId}.${rootArtifactId}.server
+scout.auth.privateKey=${scoutAuthPrivateKey}
 
 $symbol_pound$symbol_pound$symbol_pound Security
 scout.auth.credentials=admin:Q5hBRXwi25yU57UdwZESrw==.cvvCvJLQmtdQSu2VI8Di4f0j/bmf6q3YFOfb3esdRLiXnNnWIl3wHjBI8QSu8K1TfO1lvADmb9aOc1GEEfXztA==;scott:xeCQwEtqP6sRfuvAYYUPHw==.6plBwhPiyYurpq8EysozTOrXe/FTw+pA3uyM0jnuPYz0zx16a4yDxVmhHik/YFiWGhTwMnhx4+bSk3rb5IOn+A==
 
 $symbol_pound$symbol_pound$symbol_pound Storage location for FileSystemUserPreferencesStorageService
-user.area=${symbol_escape}${symbol_dollar}{user.home}/${groupId}-${rootArtifactId}.ui.html
+scout.client.userArea=${symbol_escape}${symbol_dollar}{user.home}/${groupId}-${rootArtifactId}.ui.html
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/webapp/WEB-INF/web.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/webapp/WEB-INF/web.xml
index fa482ec..5d63016 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/webapp/WEB-INF/web.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html.app.war/src/main/webapp/WEB-INF/web.xml
@@ -11,7 +11,6 @@
   <listener>
     <listener-class>org.eclipse.scout.rt.server.commons.WebappEventListener</listener-class>
   </listener>
-
   <listener>
     <listener-class>org.eclipse.scout.rt.server.commons.HttpSessionMutex</listener-class>
   </listener>
@@ -26,17 +25,24 @@
       </param-value>
     </init-param>
   </filter>
-
   <filter-mapping>
     <filter-name>AuthFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
 
+  <filter>
+    <filter-name>GzipServletFilter</filter-name>
+    <filter-class>org.eclipse.scout.rt.server.commons.servlet.filter.gzip.GzipServletFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>GzipServletFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
   <servlet>
     <servlet-name>UiServlet</servlet-name>
     <servlet-class>org.eclipse.scout.rt.ui.html.UiServlet</servlet-class>
   </servlet>
-
   <servlet-mapping>
     <servlet-name>UiServlet</servlet-name>
     <url-pattern>/*</url-pattern>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/pom.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/pom.xml
index 4a581fc..805006b 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/pom.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/pom.xml
@@ -20,6 +20,10 @@
       <artifactId>org.eclipse.scout.rt.ui.html</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.eclipse.scout.rt</groupId>
+      <artifactId>org.eclipse.scout.rt.svg.ui.html</artifactId>
+    </dependency>
+    <dependency>
       <groupId>${groupId}</groupId>
       <artifactId>${rootArtifactId}.client</artifactId>
     </dependency>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/java/ui/html/UiServletFilter.java b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/java/ui/html/UiServletFilter.java
index c4373d9..5c9b0da 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/java/ui/html/UiServletFilter.java
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/java/ui/html/UiServletFilter.java
@@ -24,8 +24,7 @@
 import org.eclipse.scout.rt.server.commons.authentication.TrivialAccessController.TrivialAuthConfig;
 
 /**
- * <h3>{@link UiServletFilter}</h3>
- * This is the main servlet filter used for the HTML UI.
+ * This is the main servlet filter for the HTML UI.
  *
  * @author ${userName}
  */
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.js b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.js
new file mode 100644
index 0000000..d4f60aa
--- /dev/null
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.js
@@ -0,0 +1,7 @@
+/**
+ * Include your custom JavaScript files here.
+ */
+(function(${rootArtifactId}, scout, $, undefined) {
+  // Sample:
+  // __include("${rootArtifactId}/myCustomJs/myCustom.js");
+}(window.${rootArtifactId} = window.${rootArtifactId} || {}, scout, jQuery));
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.less b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.less
new file mode 100644
index 0000000..4489920
--- /dev/null
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__-module.less
@@ -0,0 +1,6 @@
+/**
+ * Import your custom less files here
+ * Fore more details see the styling chapters in the Scout documentation (https://eclipsescout.github.io/)
+ */
+
+@import "${rootArtifactId}/style/colors.less";
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__/style/colors.less b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__/style/colors.less
new file mode 100644
index 0000000..3f6b696
--- /dev/null
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/__rootArtifactId__/style/colors.less
@@ -0,0 +1,7 @@
+/**
+ * Change colors here
+ * Fore more details see the styling chapters in the Scout documentation (https://eclipsescout.github.io/)
+ *
+ * Sample:
+ * @navigation-background-color: @palette-red-4;
+ */
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/scout/style/colors-application.less b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/scout/style/colors-application.less
deleted file mode 100644
index c1a8d6d..0000000
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/js/scout/style/colors-application.less
+++ /dev/null
@@ -1,15 +0,0 @@
-@import "scout/style/colors.less";
-
-/* ------------------------------------------------ */
-/* Color palette definition for theme "application" */
-/* ------------------------------------------------ */
-
-@palette-application-blue: #0083A2;
-@palette-application-orange: #FE9A0D;
-
-
-/* ------------------------- */
-/* Component specific colors */
-/* ------------------------- */
-
-@navigation-background-color: @palette-application-blue;
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/includes/head.html b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/includes/head.html
index 863de7d..0fe69c9 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/includes/head.html
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/includes/head.html
@@ -1,6 +1,6 @@
 <meta name="apple-mobile-web-app-capable" content="yes"/>
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
-<!-- >>> favicon >>> -->
+<!-- BEGIN favicon -->
 <link rel="apple-touch-icon" sizes="57x57" href="res/favicon/apple-touch-icon-57x57.png">
 <link rel="apple-touch-icon" sizes="60x60" href="res/favicon/apple-touch-icon-60x60.png">
 <link rel="apple-touch-icon" sizes="72x72" href="res/favicon/apple-touch-icon-72x72.png">
@@ -22,4 +22,4 @@
 <meta name="apple-mobile-web-app-title" content="${displayName}">
 <meta name="application-name" content="${displayName}">
 <meta name="msapplication-config" content="res/favicon/browserconfig.xml">
-<!-- <<< favicon <<< -->
+<!-- END favicon -->
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.js b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.js
index bcbaaac..0e5591b 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.js
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.js
@@ -1 +1,3 @@
 __include("scout-module.js");
+__include("${rootArtifactId}-module.js");
+__include("svg-module.js");
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.less b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.less
index eb95b2a..271912b 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.less
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/__rootArtifactId__-all-macro.less
@@ -1 +1,3 @@
 @import "scout-module.less";
+@import "${rootArtifactId}-module.less";
+@import "svg-module.less";
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/index.js b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/index.js
index 6f2486f..f2b471d 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/index.js
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/res/index.js
@@ -1,8 +1,4 @@
 $(document).ready(function() {
   var app = new scout.RemoteApp();
-  app.init({
-    bootstrap: {
-      fonts: ['scoutIcons']
-    }
-  });
+  app.init();
 });
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/unsupported-browser.html b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/unsupported-browser.html
index f9690e9..e429904 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/unsupported-browser.html
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__.ui.html/src/main/resources/WebContent/unsupported-browser.html
@@ -8,7 +8,9 @@
       <ul>
         <li><scout:message key="ui.BrowserChrome" /></li>
         <li><scout:message key="ui.BrowserFirefox" /></li>
+        <li><scout:message key="ui.BrowserEdge" /></li>
         <li><scout:message key="ui.BrowserInternetExplorer" /></li>
+        <li><scout:message key="ui.BrowserSafari" /></li>
       </ul>
       <div class="button-bar">
         <button class="button"><scout:message key="ui.ContinueAnyway" /></button>
diff --git a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml
index 341a332..ecfd12e 100644
--- a/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml
+++ b/scout-helloworld-app/src/main/resources/archetype-resources/__rootArtifactId__/pom.xml
@@ -20,7 +20,7 @@
   <properties>
     <${groupId}.${rootArtifactId}.version>${project.version}</${groupId}.${rootArtifactId}.version>
     <jdk.source.version>${javaVersion}</jdk.source.version>
-    <org.eclipse.scout.rt.version>7.0.300-SNAPSHOT</org.eclipse.scout.rt.version>
+    <org.eclipse.scout.rt.version>8.0.0-SNAPSHOT</org.eclipse.scout.rt.version>
   </properties>
 
   <modules>
diff --git a/scout-jaxws-module/.project b/scout-jaxws-module/.project
index cf78e45..95556d5 100644
--- a/scout-jaxws-module/.project
+++ b/scout-jaxws-module/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/scout-jaxws-module/.settings/org.eclipse.jdt.ui.prefs b/scout-jaxws-module/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/scout-jaxws-module/.settings/org.eclipse.jdt.ui.prefs
+++ b/scout-jaxws-module/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/scout-jaxws-module/.settings/org.eclipse.wst.jsdt.core.prefs b/scout-jaxws-module/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/scout-jaxws-module/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/scout-jaxws-module/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/scout-jaxws-module/.settings/org.sonarlint.eclipse.core.prefs b/scout-jaxws-module/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/scout-jaxws-module/.settings/org.sonarlint.eclipse.core.prefs
+++ b/scout-jaxws-module/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/scout-jaxws-module/pom.xml b/scout-jaxws-module/pom.xml
index f8d4861..fd27689 100644
--- a/scout-jaxws-module/pom.xml
+++ b/scout-jaxws-module/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.eclipse.scout.archetypes</groupId>
   <artifactId>scout-jaxws-module</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>8.0.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <name>Scout JaxWs Module</name>
@@ -31,7 +31,7 @@
   <url>https://eclipse.org/scout</url>
 
   <properties>
-    <scout.base.version>7.0.300</scout.base.version>
+    <scout.base.version>8.0.0</scout.base.version>
     <base.version>${scout.base.version}</base.version>
 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -108,7 +108,7 @@
   <scm>
     <connection>scm:git:git://git.eclipse.org/gitroot/scout/org.eclipse.scout.sdk.git</connection>
     <developerConnection>scm:git:ssh://${eclipse_gerrit_username}@git.eclipse.org:29418/scout/org.eclipse.scout.sdk</developerConnection>
-    <tag>releases/7.0.x</tag>
+    <tag>releases/8.0.x</tag>
     <url>http://git.eclipse.org/c/scout/org.eclipse.scout.sdk.git/</url>
   </scm>
 
diff --git a/shell_scripts/release.sh b/shell_scripts/release.sh
index 81e51eb..96c9857 100755
--- a/shell_scripts/release.sh
+++ b/shell_scripts/release.sh
@@ -68,6 +68,8 @@
 processError
 mvn -Prelease.setversion -Dmaster_release_milestoneVersion=$RELEASE -Dorg.eclipse.scout.rt_version=$SCOUT_RT -f scout-jaxws-module -N $_MAVEN_OPTS
 processError
+mvn -Prelease.setversion -Dmaster_release_milestoneVersion=$RELEASE -Dorg.eclipse.scout.rt_version=$SCOUT_RT -f scout-hellojs-app -N $_MAVEN_OPTS
+processError
 mvn clean install -U -f org.eclipse.scout.sdk -Dmaster_unitTest_failureIgnore=false $_MAVEN_OPTS
 processError
 
diff --git a/updatesite-maven-plugin/.project b/updatesite-maven-plugin/.project
index 14758fe..918248b 100644
--- a/updatesite-maven-plugin/.project
+++ b/updatesite-maven-plugin/.project
@@ -11,12 +11,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
diff --git a/updatesite-maven-plugin/.settings/org.eclipse.jdt.ui.prefs b/updatesite-maven-plugin/.settings/org.eclipse.jdt.ui.prefs
index 05988a5..c0e09bf 100644
--- a/updatesite-maven-plugin/.settings/org.eclipse.jdt.ui.prefs
+++ b/updatesite-maven-plugin/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@
 org.eclipse.jdt.ui.javadoc=true
 org.eclipse.jdt.ui.keywordthis=false
 org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 7.0.300 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************&\#13;\r\n * Copyright (c) ${year} BSI Business Systems Integration AG.&\#13;\r\n * All rights reserved. This program and the accompanying materials&\#13;\r\n * are made available under the terms of the Eclipse Public License v1.0&\#13;\r\n * which accompanies this distribution, and is available at&\#13;\r\n * http\://www.eclipse.org/legal/epl-v10.html&\#13;\r\n * &\#13;\r\n * Contributors\:&\#13;\r\n *     BSI Business Systems Integration AG - initial API and implementation&\#13;\r\n ******************************************************************************/</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * &lt;h3&gt;{@link ${type_name}}&lt;/h3&gt;\r\n *\r\n * @author ${user}\r\n * @since 8.0.0 ${date}\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=false
diff --git a/updatesite-maven-plugin/.settings/org.eclipse.wst.jsdt.core.prefs b/updatesite-maven-plugin/.settings/org.eclipse.wst.jsdt.core.prefs
index 4bab8fd..1b2735d 100644
--- a/updatesite-maven-plugin/.settings/org.eclipse.wst.jsdt.core.prefs
+++ b/updatesite-maven-plugin/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -171,6 +171,7 @@
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.wst.jsdt.core.formatter.insert_space_after_function_keyword=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
diff --git a/updatesite-maven-plugin/.settings/org.sonarlint.eclipse.core.prefs b/updatesite-maven-plugin/.settings/org.sonarlint.eclipse.core.prefs
index 77f335c..0301c4e 100644
--- a/updatesite-maven-plugin/.settings/org.sonarlint.eclipse.core.prefs
+++ b/updatesite-maven-plugin/.settings/org.sonarlint.eclipse.core.prefs
@@ -1,6 +1,7 @@
 autoEnabled=true
 eclipse.preferences.version=1
 extraProperties=
-moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
-projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_7.0.x
+fileExclusions=
+moduleKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
+projectKey=org.eclipse.scout.sdk\:org.eclipse.scout.sdk\:releases_8.0.x
 serverId=Scout
diff --git a/updatesite-maven-plugin/pom.xml b/updatesite-maven-plugin/pom.xml
index ebe5431..f97718d 100644
--- a/updatesite-maven-plugin/pom.xml
+++ b/updatesite-maven-plugin/pom.xml
@@ -23,12 +23,12 @@
 
   <groupId>org.eclipse.scout.sdk</groupId>
   <artifactId>updatesite-maven-plugin</artifactId>
-  <version>7.0.300-SNAPSHOT</version>
+  <version>8.0.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
   <name>${project.groupId}:${project.artifactId}</name>
 
   <properties>
-    <scout.base.version>7.0.300</scout.base.version>
+    <scout.base.version>8.0.0</scout.base.version>
     <base.version>${scout.base.version}</base.version>
   </properties>
 
diff --git a/updatesite-maven-plugin/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java b/updatesite-maven-plugin/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
index 7a17318..20f750f 100644
--- a/updatesite-maven-plugin/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
+++ b/updatesite-maven-plugin/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
@@ -18,6 +18,7 @@
 import java.io.OutputStream;
 import java.net.URI;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
@@ -42,7 +43,10 @@
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
-public class FileUtility {
+public final class FileUtility {
+
+  private FileUtility() {
+  }
 
   public static void copy(File inputFile, File outputFile) throws IOException {
     if (inputFile.isDirectory()) {
@@ -148,6 +152,7 @@
     return Files.readAllBytes(source.toPath());
   }
 
+  @SuppressWarnings({"squid:S1166", "squid:S1141"})
   public static void writeDOM(Document doc, File file) throws MojoExecutionException {
     try {
       TransformerFactory tf = TransformerFactory.newInstance();
@@ -155,16 +160,19 @@
         tf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
       }
       catch (TransformerConfigurationException e) {
+        // nop
       }
       try {
         tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
       }
       catch (IllegalArgumentException e) {
+        // nop
       }
       try {
         tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
       }
       catch (IllegalArgumentException e) {
+        // nop
       }
       Transformer transformer = tf.newTransformer();
 
@@ -190,7 +198,9 @@
     }
   }
 
-  public static void extractArchive(File archiveFile, File destinationDir) throws IOException {
+  public static void extractArchive(File archiveFile, File targetDir) throws IOException {
+    File destinationDir = targetDir.getCanonicalFile();
+    Path destinationPath = destinationDir.toPath();
     destinationDir.mkdirs();
     destinationDir.setLastModified(archiveFile.lastModified());
     String localFile = destinationDir.getName();
@@ -205,8 +215,12 @@
         while (name.startsWith("/") || name.startsWith("\\")) {
           name = name.substring(1);
         }
+        File f = new File(destinationDir, name).getCanonicalFile();
+        if (!f.toPath().startsWith(destinationPath)) {
+          // security check (see https://github.com/snyk/zip-slip-vulnerability)
+          throw new IllegalArgumentException("Entry is outside of the target dir: " + name);
+        }
 
-        File f = new File(destinationDir, name);
         if (file.isDirectory()) { // if its a directory, create it
           ensureDirExists(f);
         }
@@ -237,6 +251,7 @@
    * @throws ParserConfigurationException
    *           if a {@link DocumentBuilder} cannot be created which satisfies the configuration requested.
    */
+  @SuppressWarnings("squid:S1166")
   public static DocumentBuilder createDocumentBuilder() throws ParserConfigurationException {
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     Map<String, Boolean> features = new HashMap<>(5);