diff --git a/src/main/java/org/olat/catalog/CatalogManager.java b/src/main/java/org/olat/catalog/CatalogManager.java
index 9d849028a7dc79e5cb54fb37b537a34fa2f17050..894f958ede46b6be62c597d0d98adfef249d41f1 100644
--- a/src/main/java/org/olat/catalog/CatalogManager.java
+++ b/src/main/java/org/olat/catalog/CatalogManager.java
@@ -335,7 +335,7 @@ public class CatalogManager extends BasicManager implements UserDataDeletable, I
 		for (CatalogEntry nextCe:children) {
 			deleteCatalogSubtree(nextCe,secGroupsToBeDeleted);
 		}
-		ce = dbInstance.getCurrentEntityManager().find(CatalogEntry.class, ce.getKey());
+		ce = dbInstance.getCurrentEntityManager().find(CatalogEntryImpl.class, ce.getKey());
 		//mark owner group for deletion.
 		SecurityGroup owner = ce.getOwnerGroup();
 		if (owner != null) {
diff --git a/src/main/java/org/olat/core/util/Formatter.java b/src/main/java/org/olat/core/util/Formatter.java
index 6a52ba98d5a5cee3dbeeed5f1ae89a5aad187846..d9e176067de04d13fe269e90ad48300b0612e026 100644
--- a/src/main/java/org/olat/core/util/Formatter.java
+++ b/src/main/java/org/olat/core/util/Formatter.java
@@ -89,7 +89,8 @@ public class Formatter {
 		if(localToFormatterMap.containsKey(locale)) {
 			formatter = localToFormatterMap.get(locale);
 		} else {
-			formatter = localToFormatterMap.put(locale, new Formatter(locale));
+			formatter = new Formatter(locale);
+			localToFormatterMap.put(locale, formatter);
 		}
 		return formatter;
 	}
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html
deleted file mode 100644
index 0d6a5f34468c0aba26666fa285d1d326a3966e24..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html
+++ /dev/null
@@ -1,50 +0,0 @@
-$r.render("sourceview")
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormCustomlayout</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;whole&nbsp;class&nbsp;is&nbsp;copy-pasted&nbsp;from&nbsp;the&nbsp;GuiDemoFlexiForm.java</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;the&nbsp;super&nbsp;constructor&nbsp;is&nbsp;called&nbsp;with&nbsp;a&nbsp;velocity&nbsp;page&nbsp;which&nbsp;serves&nbsp;then</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;as&nbsp;layouting&nbsp;velocity&nbsp;page.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;inside&nbsp;this&nbsp;page&nbsp;one&nbsp;can&nbsp;render&nbsp;all&nbsp;the&nbsp;form&nbsp;elements&nbsp;with&nbsp;the&nbsp;wellknown</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;$r.render(&#34;compName&#34;)&nbsp;paradigma.&nbsp;But&nbsp;with&nbsp;the&nbsp;form&nbsp;comes&nbsp;some&nbsp;naming&nbsp;convention</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;to&nbsp;render&nbsp;the&nbsp;label,&nbsp;error,&nbsp;example&nbsp;of&nbsp;a&nbsp;form&nbsp;element.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;read&nbsp;the&nbsp;instructions&nbsp;in&nbsp;the&nbsp;customformlayout&nbsp;velocity&nbsp;page.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl,&nbsp;</font><font color="#2a00ff">&#34;customformlayout&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
-
-
-
-
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html
deleted file mode 100644
index 32033410a6b5f47e1ef66f9de02e852b79a054da..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html
+++ /dev/null
@@ -1,96 +0,0 @@
-$r.render("sourceview")
-<h4>relevat source part</h4>
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_hideunhide&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;hide&nbsp;unhide&nbsp;chooser</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">checkbox&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">MultipleSelectionElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;checkbox&#34;</font><font color="#000000">,&nbsp;MultipleSelectionElementImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;checkbox&#34;</font><font color="#000000">))&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.show&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">keys&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;{&nbsp;</font><font color="#2a00ff">&#34;ison&#34;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;{&nbsp;</font><font color="#2a00ff">&#34;&#34;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">select</font><font color="#000000">(</font><font color="#2a00ff">&#34;ison&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;add&nbsp;to&nbsp;velocity&nbsp;container</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">checkbox</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;register&nbsp;for&nbsp;on&nbsp;click&nbsp;event&nbsp;to&nbsp;hide/disable&nbsp;other&nbsp;elements</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">checkbox.addActionListener</font><font color="#000000">(</font><font color="#000000">listener,&nbsp;FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//rule&nbsp;to&nbsp;hide/unhide&nbsp;at&nbsp;the&nbsp;end</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;now&nbsp;the&nbsp;rules&nbsp;to&nbsp;hide&nbsp;unhide&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Set&lt;FormItem&gt;&nbsp;targets&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">HashSet&lt;FormItem&gt;</font><font color="#000000">(){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">RulesFactory.createHideRule</font><font color="#000000">(</font><font color="#000000">checkbox,&nbsp;null,&nbsp;targets,&nbsp;formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">RulesFactory.createShowRule</font><font color="#000000">(</font><font color="#000000">checkbox,&nbsp;</font><font color="#2a00ff">&#34;ison&#34;</font><font color="#000000">,&nbsp;targets,&nbsp;formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html
deleted file mode 100644
index 0b860039374540f62bc76084cecc3e9814a335f0..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html
+++ /dev/null
@@ -1,143 +0,0 @@
-$r.render("sourceview")
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;firstName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;lastName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;institution;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">Submit&nbsp;submit;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData&nbsp;personData;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">VelocityContainer&nbsp;confirm;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm&nbsp;confirmController;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;method&nbsp;is&nbsp;called&nbsp;if&nbsp;the&nbsp;form&nbsp;has&nbsp;validated</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;which&nbsp;means&nbsp;that&nbsp;all&nbsp;form&nbsp;items&nbsp;are&nbsp;filled&nbsp;without&nbsp;error</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;and&nbsp;all&nbsp;complex&nbsp;business&nbsp;rules&nbsp;validated&nbsp;also&nbsp;to&nbsp;true.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;typically&nbsp;the&nbsp;form&nbsp;values&nbsp;are&nbsp;now&nbsp;read&nbsp;out&nbsp;and&nbsp;persisted</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;in&nbsp;our&nbsp;case,&nbsp;save&nbsp;value&nbsp;to&nbsp;data&nbsp;object&nbsp;and&nbsp;prepare&nbsp;a&nbsp;confirm&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setFirstName</font><font color="#000000">(</font><font color="#000000">firstName.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setLastName</font><font color="#000000">(</font><font color="#000000">lastName.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setInstitution</font><font color="#000000">(</font><font color="#000000">institution.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setReadOnly</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//show&nbsp;the&nbsp;same&nbsp;form&nbsp;in&nbsp;readonly&nbsp;mode.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirmController&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;personData</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirm&nbsp;=&nbsp;createVelocityContainer</font><font color="#000000">(</font><font color="#2a00ff">&#34;confirm&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirm.put</font><font color="#000000">(</font><font color="#2a00ff">&#34;data&#34;</font><font color="#000000">,&nbsp;confirmController.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initialPanel.pushContent</font><font color="#000000">(</font><font color="#000000">confirm</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//in&nbsp;the&nbsp;error&nbsp;case,&nbsp;let&nbsp;the&nbsp;error&nbsp;messages&nbsp;be&nbsp;rerendered&nbsp;in&nbsp;AJAX&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;will&nbsp;change</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,&nbsp;org.olat.core.gui.control.Controller,&nbsp;org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;create&nbsp;a&nbsp;form&nbsp;with&nbsp;a&nbsp;title&nbsp;and&nbsp;4&nbsp;input&nbsp;fields&nbsp;to&nbsp;enter&nbsp;some&nbsp;persons&nbsp;data</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_simpleform&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
\ No newline at end of file
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html
deleted file mode 100644
index dfaecaa2bbda338846bdc74bd0e57e4235640487..0000000000000000000000000000000000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html
+++ /dev/null
@@ -1,250 +0,0 @@
-$r.render("sourceview")
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflow&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#7f0055"><b>implements&nbsp;</b></font><font color="#000000">Controller&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData&nbsp;personData;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;firstName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;lastName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormLayoutContainer&nbsp;horizontalLayout;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;institution;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormLink&nbsp;choose;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormSubmit&nbsp;submit;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">values;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser&nbsp;subworkflowTheChooser;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">CloseableModalController&nbsp;cmc;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflow</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>else&nbsp;</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]{</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Medicine&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Vetsuisse&nbsp;Faculty&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Arts&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Science&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;All&nbsp;institutes&nbsp;and&nbsp;clinics&nbsp;of&nbsp;UZH&#34;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;is&nbsp;a&nbsp;work-around&nbsp;for&nbsp;the&nbsp;current&nbsp;flexi&nbsp;form&nbsp;infrastructure&nbsp;to&nbsp;render</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//errormessages&nbsp;in &nbsp;the&nbsp;case&nbsp;of&nbsp;# if&nbsp;constructs&nbsp;in&nbsp;the&nbsp;velocity&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;is&nbsp;a&nbsp;work-around&nbsp;for&nbsp;the&nbsp;current&nbsp;flexi&nbsp;form&nbsp;infrastructure&nbsp;to&nbsp;render</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//errormessages&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;# if&nbsp;constructs&nbsp;in&nbsp;the&nbsp;velocity&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;&nbsp;</b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;FormItem&nbsp;source,&nbsp;FormEvent&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;choose</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//choose&nbsp;link&nbsp;clicked</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//show&nbsp;a&nbsp;subworkflow&nbsp;in&nbsp;a&nbsp;modal&nbsp;dialog&nbsp;without&nbsp;loosing&nbsp;fromdata</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;disable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;values,&nbsp;institution.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;informed&nbsp;if&nbsp;subworkflow&nbsp;has&nbsp;submitted&nbsp;=&gt;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.addControllerListener</font><font color="#000000">(</font><font color="#7f0055"><b>this</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">CloseableModalController</font><font color="#000000">(</font><font color="#000000">getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;close&#34;</font><font color="#000000">,&nbsp;subworkflowTheChooser.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;informed&nbsp;if&nbsp;modal&nbsp;dialog&nbsp;is&nbsp;closed&nbsp;=&gt;&nbsp;this&nbsp;means&nbsp;canceling&nbsp;the&nbsp;workflow&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.addControllerListener</font><font color="#000000">(</font><font color="#7f0055"><b>this</b></font><font color="#000000">)</font><font color="#000000">;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.activate</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return</b></font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">event</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;Controller&nbsp;source,&nbsp;org.olat.core.gui.control.Event&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;cmc</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">event&nbsp;==&nbsp;CloseableModalController.CLOSE_MODAL_EVENT</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;re-enable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;modal&nbsp;dialog&nbsp;is&nbsp;closed</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;modal&nbsp;dialog&nbsp;has&nbsp;already&nbsp;deactivated&nbsp;itself&nbsp;(you&nbsp;would&nbsp;get&nbsp;a&nbsp;redscreen&nbsp;otherwise)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.dispose</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else&nbsp;if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;subworkflowTheChooser</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//some&nbsp;value&nbsp;is&nbsp;choosen</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//set&nbsp;the&nbsp;value&nbsp;and&nbsp;close&nbsp;dialog</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution.setValue</font><font color="#000000">(</font><font color="#000000">subworkflowTheChooser.getSelected</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.deactivate</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.dispose</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;re-enable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.olat.core.gui.control.Controller,&nbsp;org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;create&nbsp;a&nbsp;form&nbsp;with&nbsp;a&nbsp;title&nbsp;and&nbsp;4&nbsp;input&nbsp;fields&nbsp;to&nbsp;enter&nbsp;some&nbsp;persons&nbsp;data</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_withchooser&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;create&nbsp;a&nbsp;composite&nbsp;element</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;text&nbsp;element&nbsp;and&nbsp;to&nbsp;the&nbsp;left&nbsp;a&nbsp;choose&nbsp;link</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;the&nbsp;label&nbsp;of&nbsp;the&nbsp;textelement&nbsp;is&nbsp;set&nbsp;as&nbsp;the&nbsp;label&nbsp;of&nbsp;the&nbsp;layouting&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;container.&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout&nbsp;=&nbsp;</font><font color="#000000">(</font><font color="#000000">FormLayoutContainer</font><font color="#000000">)</font><font color="#000000">FormLayoutContainer.createHorizontalFormLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;chooser&#34;</font><font color="#000000">,&nbsp;getTranslator</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.&nbsp;&nbsp;setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">horizontalLayout</font><font color="#000000">)</font><font color="#000000">;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">choose&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormLinkImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;choose&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.add</font><font color="#000000">(</font><font color="#000000">choose</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;innerclass&nbsp;represents&nbsp;the&nbsp;subworkflow</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//but&nbsp;it&nbsp;could&nbsp;be&nbsp;any&nbsp;top&nbsp;level&nbsp;controller</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">SingleSelection&nbsp;entrySelector;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">String&nbsp;selection;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;String</font><font color="#000000">[]&nbsp;</font><font color="#000000">values,&nbsp;String&nbsp;selection</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.entries&nbsp;=&nbsp;values;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.selection&nbsp;=&nbsp;selection;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;FormItem&nbsp;source,&nbsp;FormEvent&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">fireEvent</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;Event.DONE_EVENT</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">entrySelector&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">SingleSelectionImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;entries&#34;</font><font color="#000000">,&nbsp;SingleSelectionImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;entries&#34;</font><font color="#000000">))&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">keys&nbsp;=&nbsp;entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">selection&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null&nbsp;</b></font><font color="#000000">&amp;&amp;&nbsp;!selection.equals</font><font color="#000000">(</font><font color="#2a00ff">&#34;&#34;</font><font color="#000000">)){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">select</font><font color="#000000">(</font><font color="#000000">selection,true</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">entrySelector.addActionListener</font><font color="#000000">(</font><font color="#000000">this,&nbsp;FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">entrySelector</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;getSelected</font><font color="#000000">(){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">entrySelector.getSelectedKey</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
diff --git a/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql b/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql
index 88862e2b7f00b2efcd473f0038447f9f41fd5c0e..312bfd7c665d8da72e72a4f72362278c304ea5fe 100644
--- a/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql
+++ b/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql
@@ -82,7 +82,97 @@ create or replace view o_gp_visible_owner_v as (
    inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id)
 );
 
+-- coaching
+create or replace view o_as_eff_statement_groups_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_bg.group_id as bg_id,
+      sg_bg.groupname as bg_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id
+);
 
+create or replace view o_as_eff_statement_grouped_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id
+);
 
+create or replace view o_as_eff_statement_members_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule')
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
 
-
+create or replace view o_as_eff_statement_members_strict_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (
+      sm_re.fk_olatresource = sm_reResource.resource_id
+      and sm_reResource.resname = 'CourseModule'
+      and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource)
+   )
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 0eacb165102fdc9681d1ea7879b276e2e53357bd..a99b7dabe84a007e95616de90497ec414892d4f6 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1372,6 +1372,102 @@ create or replace view o_gp_visible_owner_v as (
    inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id)
 );
 
+-- coaching
+create or replace view o_as_eff_statement_groups_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_bg.group_id as bg_id,
+      sg_bg.groupname as bg_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id
+);
+
+create or replace view o_as_eff_statement_grouped_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id
+);
+
+create or replace view o_as_eff_statement_members_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule')
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
+
+create or replace view o_as_eff_statement_members_strict_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (
+      sm_re.fk_olatresource = sm_reResource.resource_id
+      and sm_reResource.resname = 'CourseModule'
+      and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource)
+   )
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
+
+
 create index  ocl_asset_idx on oc_lock (asset);
 alter table oc_lock add index FK9E30F4B66115906D (identity_fk), add constraint FK9E30F4B66115906D foreign key (identity_fk) references o_bs_identity (id);
 
diff --git a/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql b/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql
index c7600640ea6c338b06e5487d9f590c00e6bf6d29..2883264279af12f6f47697335c04bc38405e2935 100644
--- a/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql
+++ b/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql
@@ -82,7 +82,101 @@ create view o_gp_visible_owner_v as (
    inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id)
 );
 
+-- coaching
+create or replace view o_as_eff_statement_groups_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_bg.group_id as bg_id,
+      sg_bg.groupname as bg_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id
+);
+
+create or replace view o_as_eff_statement_grouped_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id
+);
 
+drop view o_as_eff_statement_members_v;
+create view o_as_eff_statement_members_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule')
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
+
+create or replace view o_as_eff_statement_members_strict_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (
+      sm_re.fk_olatresource = sm_reResource.resource_id
+      and sm_reResource.resname = 'CourseModule'
+      and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource)
+   )
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
 
 
 
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index ed72b844be93c37ca6d104a650488bdd770aaf43..7af14757b22b71d52dcaa2422e5e4c7f7e830488 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1369,6 +1369,102 @@ create view o_gp_visible_owner_v as (
    inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id)
 );
 
+-- coaching
+create or replace view o_as_eff_statement_groups_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_bg.group_id as bg_id,
+      sg_bg.groupname as bg_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id
+);
+
+create or replace view o_as_eff_statement_grouped_v as (
+   select
+      sg_re.repositoryentry_id as re_id,
+      sg_re.displayname as re_name,
+      sg_tutorMembership.identity_id as tutor_id,
+      sg_studentMembership.identity_id as student_id,
+      sg_statement.id as st_id,
+      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sg_statement.score as st_score,
+      pg_initial_launch.id as pg_id
+   from o_repositoryentry as sg_re
+   inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule')
+   inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id)
+   inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group)
+   inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id)
+   left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, 
+      sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id
+);
+
+drop view o_as_eff_statement_members_v;
+create view o_as_eff_statement_members_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule')
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
+
+create or replace view o_as_eff_statement_members_strict_v as (
+   select
+      sm_re.repositoryentry_id as re_id,
+      sm_re.displayname as re_name,
+      sm_tutorMembership.identity_id as tutor_id,
+      sm_studentMembership.identity_id as student_id,
+      sm_statement.id as st_id,
+      (case when sm_statement.passed = true then 1 else 0 end) as st_passed,
+      (case when sm_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted,
+      sm_statement.score as st_score,
+      pm_initial_launch.id as pg_id
+   from o_repositoryentry as sm_re
+   inner join o_olatresource as sm_reResource on (
+      sm_re.fk_olatresource = sm_reResource.resource_id
+      and sm_reResource.resname = 'CourseModule'
+      and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource)
+   )
+   inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id)
+   inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id)
+   left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id)
+   left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id)
+);
+
 create index userrating_id_idx on o_userrating (resid);
 create index userrating_name_idx on o_userrating (resname);
 create index userrating_subpath_idx on o_userrating (ressubpath);
diff --git a/src/test/java/org/olat/restapi/UserMgmtTest.java b/src/test/java/org/olat/restapi/UserMgmtTest.java
index 67eff1703ae4543a1923f56d50517a130bf7f8b6..80b8890335dc74da14a215dfe07aeef84e02309b 100644
--- a/src/test/java/org/olat/restapi/UserMgmtTest.java
+++ b/src/test/java/org/olat/restapi/UserMgmtTest.java
@@ -293,13 +293,14 @@ public class UserMgmtTest extends OlatJerseyTestCase {
 		assertEquals(200, response.getStatusLine().getStatusCode());
 		InputStream body = response.getEntity().getContent();
 		List<UserVO> vos = parseUserArray(body);
-		
-		List<Identity> identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT);
-
 		assertNotNull(vos);
 		assertFalse(vos.isEmpty());
-		assertEquals(vos.size(), identities.size());
+		int voSize = vos.size();
+		vos = null;
 		
+		List<Identity> identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT);
+		assertEquals(voSize, identities.size());
+
 		conn.shutdown();
 	}