diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiTableDataSourceModel.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiTableDataSourceModel.java
index 54976b4bf62d29f879b4be21e94ecc3e23ec12cb..69475426199040734d148ddbbc7571f309861d9a 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiTableDataSourceModel.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiTableDataSourceModel.java
@@ -202,6 +202,8 @@ public abstract class DefaultFlexiTableDataSourceModel<U> implements FlexiTableD
 		if(firstResult == 0) {
 			if(newRows.getObjects().size() < correctMaxResults) {
 				rowCount = newRows.getObjects().size();
+			} else if(newRows.getCorrectedRowCount() >= 0) {
+				rowCount = newRows.getCorrectedRowCount();
 			} else {
 				rowCount = sourceDelegate.getRowCount();
 			}
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiDataTablesRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiDataTablesRenderer.java
index 194b8e16fd7e44c88a01ae5c5c6a971c583f3124..dc0396ab8f4d59ccb44b8a3b412d0ebc5aa86ef3 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiDataTablesRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiDataTablesRenderer.java
@@ -58,7 +58,7 @@ class FlexiDataTablesRenderer extends AbstractFlexiTableRenderer implements Comp
 		
 		Form rootForm = ftE.getRootForm();
 		String id = ftC.getFormDispatchId();
-		int rows = dataModel.getRowCount();
+		int loadedRows = dataModel.getRowCount();
 
 		int selectPos = -1;
 		Object selectedObject = ftE.getSelectedObj();
@@ -74,16 +74,17 @@ class FlexiDataTablesRenderer extends AbstractFlexiTableRenderer implements Comp
 		target.append("<script type='text/javascript'>")
 		  .append("/* <![CDATA[ */ \n")
 		  .append("jQuery(function() {\n")
+		  .append(" var scrollHeight = (jQuery('#qitems').height() - 130) + 'px';\n")
 		  .append(" var selectedIndex =").append(selectPos).append(";\n")
       .append("	jQuery('#").append(id).append("').dataTable( {\n")
       .append("		'bScrollInfinite': true,\n")
       .append("		'bScrollCollapse': true,\n")
       .append("		'bFilter': false,\n")
-      .append("		'sScrollY': '1px',\n")
+      .append("		'sScrollY': scrollHeight,\n")
       .append("		'bProcessing': true,\n")
       .append("		'bServerSide': true,\n")
       .append("		'iDisplayLength': ").append(ftE.getPageSize()).append(",\n")
-      .append("		'iDeferLoading': ").append(rows).append(",\n")
+      .append("		'iDeferLoading': ").append(loadedRows).append(",\n")
       .append("		'sAjaxSource': '").append(ftE.getMapperUrl()).append("',\n")
       .append("   'asStripeClasses': ['','b_table_odd'],\n")
       .append("		'fnRowCallback': function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n")
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
index 671c18c18b7d7fe6472f2468a58f4c371e82f078..8b45f43b8c7bac4b692b1681199f8cf2e7d3ccdc 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
@@ -477,8 +477,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 		if(dataSource != null) {
 			resetInternComponents();
 			dataSource.clear();
-			ResultInfos<?> infos = dataSource.load(search, conditionalQueries, 0, getPageSize(), orderBy);
-			System.out.println("Found: " + infos.getObjects().size());
+			dataSource.load(search, conditionalQueries, 0, getPageSize(), orderBy);
 		}
 	}
 	
diff --git a/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java b/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java
index ba841009d76ba858e0e3b0de497980a0a0f525fd..23f2ccec4509d1cf6c91c02bccf59766d28566c5 100644
--- a/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java
+++ b/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java
@@ -122,6 +122,8 @@ public class QuestionPoolServiceImpl implements QPoolService {
 		for(QuestionItemShort item:items) {
 			lifeIndexer.deleteDocument(QItemDocument.TYPE, item.getKey());
 		}
+		
+		dbInstance.getCurrentEntityManager().flush();//allow reload of data
 	}
 
 	@Override
@@ -173,6 +175,7 @@ public class QuestionPoolServiceImpl implements QPoolService {
 		return questionItemDao.loadById(key);
 	}
 
+	@Override
 	public QuestionItem updateItem(QuestionItem item) {
 		QuestionItem mergedItem = questionItemDao.merge(item);
 		dbInstance.commit();//
@@ -192,6 +195,9 @@ public class QuestionPoolServiceImpl implements QPoolService {
 			}
 			copies.add(copy);
 		}
+		if(copies.size()> 0) {// reload of data must be possible in the same transaction
+			dbInstance.getCurrentEntityManager().flush();
+		}
 		return copies;
 	}
 
@@ -262,6 +268,10 @@ public class QuestionPoolServiceImpl implements QPoolService {
 	@Override
 	public VFSLeaf getRootFile(QuestionItem item) {
 		QuestionItemImpl reloadedItem = questionItemDao.loadById(item.getKey());
+		if(reloadedItem == null) {
+			return null;
+		}
+		
 		VFSContainer root = qpoolModule.getRootContainer();
 		VFSItem dir = root.resolve(reloadedItem.getDirectory());
 		if(dir instanceof VFSContainer) {
diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java
index 487939153d52542ab01457d1b024b0f8b6006d18..528721d6a4439d30a8ad1e852410d4fd3001bfc7 100644
--- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java
+++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java
@@ -95,7 +95,7 @@ public class QuestionItemDataModel extends DefaultFlexiTableDataSourceModel<Item
 		taxnonomyLevel("classification.taxonomy.level"),
 		difficulty("question.difficulty"),
 		
-		type("question.assessmentType"),
+		type("question.type"),
 		format("technical.format"),
 		rating("rating"),
 		status("lifecycle.status"),
diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java
index 9c19326eb72a312e4a11a6b7024cae31b60f220f..4c298038c8edb8b24bfb6c9471c78ae3bea84f9c 100644
--- a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java
@@ -66,6 +66,9 @@ import org.olat.repository.controllers.RepositoryAddController;
 import org.olat.repository.controllers.RepositoryDetailsController;
 
 /**
+ * 
+ * This controller wrap the table of qitems and decorate it with
+ * features like copy, delete...<br/>
  * 
  * Initial date: 22.01.2013<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java
index 9518d096b0c98831b736626d8a66cb717885b733..cfd47305a6baef9bdc07be9900ce40c0cda66474 100644
--- a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java
@@ -49,6 +49,9 @@ import org.olat.modules.qpool.ui.events.QItemViewEvent;
 import org.olat.modules.qpool.ui.events.QPoolEvent;
 
 /**
+ * 
+ * This controller build the GUI with the table of items,
+ * the preview and the short summary of metadatas.<br/>
  * 
  * Initial date: 12.02.2013<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java
index a457dbccb056b349afd6426ad58f875de8f49bc0..98a21d007934b63c3c0a78db9b9a3b90cd5735cd 100644
--- a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java
@@ -98,7 +98,7 @@ public class PoolsAdminController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		//add the table
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), true, "name"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, "name"));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit-pool"));
diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java
index 67348986b8473f2fd2ee0121fada0a243e89631f..d3c1491a58b49fd57d98c013cf83ddbf68b2a145 100644
--- a/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/admin/QEducationalContextsAdminController.java
@@ -101,7 +101,7 @@ public class QEducationalContextsAdminController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		//add the table
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.level.i18nKey(), Cols.level.ordinal(), true, "level"));
 		FlexiCellRenderer renderer = new StaticFlexiCellRenderer("translate", new TextFlexiCellRenderer());
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(Cols.levelI18n.i18nKey(), Cols.levelI18n.ordinal(), "translate", renderer));
diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java
index 29ff9d84e7cc3863391c4f1e1d1868ebf1cb5baf..c69cd39a1854f690c8b13627c93d683cd5dc2875 100644
--- a/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/admin/QItemTypesAdminController.java
@@ -101,7 +101,7 @@ public class QItemTypesAdminController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		//add the table
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.type.i18nKey(), Cols.type.ordinal(), true, "name"));
 		FlexiCellRenderer renderer = new StaticFlexiCellRenderer("translate", new TextFlexiCellRenderer());
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(Cols.typeI18n.i18nKey(), Cols.typeI18n.ordinal(), "translate", renderer));
diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java
index 249ad692831356fc04c5b1b01843cf92650cf265..7a9c696bcc9e01b34e9f9d225fb24684f0b3fba6 100644
--- a/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/admin/QLicensesAdminController.java
@@ -93,7 +93,7 @@ public class QLicensesAdminController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		//add the table
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.licenseKey.i18nKey(), Cols.licenseKey.ordinal(), true, "licenseKey"));
 		FlexiCellRenderer delRenderer = new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("delete"), "delete-license"), null);
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", Cols.deletable.ordinal(), "delete-license", delRenderer));
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/EducationalMetadataEditController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/EducationalMetadataEditController.java
index 9baa930e0ebf755c2039308a25232f24ea2ae26a..87481584789b995bfc866d4361c5bc9d0e156707 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/EducationalMetadataEditController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/EducationalMetadataEditController.java
@@ -82,7 +82,8 @@ public class EducationalMetadataEditController extends FormBasicController {
 			contextValues[count++] = translation;
 		}
 		contextEl = uifactory.addDropdownSingleselect("educational.context", "educational.context", formLayout, contextKeys, contextValues, null);
-
+		contextEl.setEnabled(count > 0);
+		
 		String page = velocity_root + "/learning_time.html";
 		learningTimeContainer = FormLayoutContainer.createCustomFormLayout("learningTime", getTranslator(), page);
 		learningTimeContainer.setRootForm(mainForm);
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/MetaUIFactory.java b/src/main/java/org/olat/modules/qpool/ui/metadata/MetaUIFactory.java
index 634060c3631c95bae3c657ba6c318db76cba1cf7..dda89680bd3cc4d43a4d29ff7e1225c676a2e4ac 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/MetaUIFactory.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/MetaUIFactory.java
@@ -143,6 +143,31 @@ public class MetaUIFactory {
 		return allOk;
 	}
 	
+	protected static boolean validateInteger(TextElement el, int min, int max, boolean enabled) {
+		boolean allOk = true;
+		el.clearError();
+		if(enabled) {
+			String val = el.getValue();
+			if(StringHelper.containsNonWhitespace(val)) {
+				
+				try {
+					double value = Integer.parseInt(val);
+					if(min > value) {
+						el.setErrorKey("error.wrongFloat", null);
+						allOk = false;
+					} else if(max < value) {
+						el.setErrorKey("error.wrongFloat", null);
+						allOk = false;
+					}
+				} catch (NumberFormatException e) {
+					el.setErrorKey("error.wrongFloat", null);
+					allOk = false;
+				}
+			}
+		}
+		return allOk;	
+	}
+	
 	protected static boolean validateBigDecimal(TextElement el, double min, double max, boolean enabled) {
 		boolean allOk = true;
 		el.clearError();
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
index d1ec2d76cca33a125752087d1bdef4cbd7211d0b..810d1122e97dd8264fe9ca7c46152b5d01456433 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
@@ -175,6 +175,7 @@ public class MetadatasController extends BasicController {
 	}
 	
 	private void doEditEducationalMetadata(UserRequest ureq) {
+		removeAsListenerAndDispose(educationalEditCtrl);
 		educationalEditCtrl= new EducationalMetadataEditController(ureq, getWindowControl(), item);
 		listenTo(educationalEditCtrl);
 		mainVC.put("details_educational", educationalEditCtrl.getInitialComponent());
@@ -187,6 +188,7 @@ public class MetadatasController extends BasicController {
 	}
 	
 	private void doEditQuestionMetadata(UserRequest ureq) {
+		removeAsListenerAndDispose(questionEditCtrl);
 		questionEditCtrl= new QuestionMetadataEditController(ureq, getWindowControl(), item);
 		listenTo(questionEditCtrl);
 		mainVC.put("details_question", questionEditCtrl.getInitialComponent());
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/QuestionMetadataEditController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/QuestionMetadataEditController.java
index 54603462fcc08fd0204d28963adea1adc933acc5..c0210e2c0f6460760eec84949652f4e9ac682970 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/QuestionMetadataEditController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/QuestionMetadataEditController.java
@@ -25,6 +25,7 @@ import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toBigDecimal;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toInt;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateBigDecimal;
 import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateSelection;
+import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateInteger;
 
 import java.math.BigDecimal;
 
@@ -128,6 +129,7 @@ public class QuestionMetadataEditController extends FormBasicController {
 		allOk &= validateBigDecimal(difficultyEl, 0.0d, 1.0d, true);
 		allOk &= validateBigDecimal(stdevDifficultyEl, 0.0d, 1.0d, true);
 		allOk &= validateBigDecimal(differentiationEl, -1.0d, 1.0d, true);
+		allOk &= validateInteger(numAnswerAltEl, 0, Integer.MAX_VALUE, true);
 		allOk &= validateSelection(assessmentTypeEl, true);
 		return allOk && super.validateFormLogic(ureq);
 	}