diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
index cf55a456f8e40fcd6ede1888a0053aea7f246cc3..d6c3410951afa46db373549dd4d4f3cca1539272 100644
--- a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties
@@ -29,6 +29,7 @@ form.dirty.intro=Achtung! Sie haben noch ungespeicherte Formulardaten
 form.dirty.ignore=Wenn Sie die Schaltfläche <strong>$:form.dirty.button.ignore</strong> dr\u00FCcken verlassen Sie das Formular ohne zu speichern. <strong>Die enthaltenen \u00C4nderungen gehen damit verloren</strong>.
 form.dirty.back=Wenn Sie die Schaltfläche <strong>$:form.dirty.button.back</strong> dr\u00FCcken gelangen Sie zurück zum Formular und können dieses abspeichern. 
 form.error.nointeger=Ung\u00FCltige Zahl. Es muss eine Zahl eingegeben werden.
+form.error.toolong=Ihre Eingabe ist zu lang. Es sind maximal {0} Zeichen erlaubt.
 form.general.error=Es sind Eingabefehler aufgetreten. Bitte beachten Sie den Hinweis bei den Eingabefeldern.
 form.legende.mandatory=<i>Bitte f&uuml;llen Sie dieses Feld aus</i>.
 form.legende.wikiMarkup=<i>Dieses Feld erlaubt mit Wiki-Syntax formatierte Eingaben</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* Listen Elemente
diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
index d3b14185c31d276101bdaaad6600be67d3b947fb..c676e293bfcc7fd57d2749f7cb6ea9c3ac3e4b3a 100644
--- a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties
@@ -30,6 +30,7 @@ form.dirty.intro=Attention! You have not saved this form yet.
 form.dirty.ignore=By clicking <strong>$:form.dirty.button.ignore</strong> you will exit the form without saving. <strong>Changes you made on this page will be lost</strong>
 form.dirty.back=By clicking <strong>$:form.dirty.button.back</strong> you will get back to the form where you can save it. 
 form.error.nointeger=Illegal number. Please enter an integer.
+form.error.toolong=Your input is too long. A maximum of {0} characters are allowed.
 form.general.error=There are typing errors. Please consider the information next to the input fields.
 form.legende.mandatory=<i>Please fill in this field.</i>
 form.legende.wikiMarkup=<i>This field allows formatted entries using the Wiki Markup language.</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* List items
diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties
index 03e732f3d4c9dd180b99a3b5fb562c422b33b622..c57a60c8dcba72156d181e11b671379768fb8d8a 100644
--- a/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties
@@ -30,6 +30,7 @@ form.dirty.ignore=Si vous appuyez sur le bouton <strong>$\:form.dirty.button.ign
 form.dirty.intro=Attention\! Le formulaire contient encore des donn\u00E9es que vous n'avez pas enregistr\u00E9es.
 form.dirty.title=Donn\u00E9es non-enregistr\u00E9es
 form.error.nointeger=Nombre invalide. Il faut indiquer un nombre.
+form.error.toolong=Votre saisie est trop longue. Vous avez au maximum {0} caract\u00E8res \u00E0 disposition.
 form.general.error=Des erreurs de saisie sont survenues. Suivez les indications relatives aux champs, svp.
 form.legende.mandatory=<i>Veuillez remplir ce champ.</i>
 form.legende.wikiMarkup=<i>Ce champ peut \u00EAtre format\u00E9 \u00E0 l'aide des balises Wiki.</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* Liste d'\u00E9l\u00E9ments
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
index 43e541b2360858bc1d9af5373bdd4321b21fbe2e..c21486576929d7c0531e275388c0ca5d249934b9 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java
@@ -80,7 +80,11 @@ public class FinalTreeNode extends GenericTreeNode implements ControllerTreeNode
 					ureq.getIdentity(),
 					ureq.getUserSession().getRoles(),
 					taxonomyLevel);
-			OLATResourceable ores = OresHelper.createOLATResourceableInstance(FINAL + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey());
+			String resName = FINAL + "_" + taxonomyLevel.getIdentifier();
+			if(resName.length() > 50) {
+				resName = resName.substring(0, 50);
+			}
+			OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, taxonomyLevel.getKey());
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					FINAL + taxonomyLevel.getKey(), false);
diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
index 143b3ef56b253c9da5f070d9d505520c335ae4bc..2e2e04920a5b17f1d37133a3504f738f50d41c17 100644
--- a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
+++ b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java
@@ -78,7 +78,11 @@ public class ReviewTreeNode extends GenericTreeNode implements ControllerTreeNod
 	@Override
 	public Controller getController(UserRequest ureq, WindowControl wControl) {
 		if (questionsCtrl == null) {
-			OLATResourceable ores = OresHelper.createOLATResourceableInstance(REVIEW + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey());
+			String resName = REVIEW + "_" + taxonomyLevel.getIdentifier();
+			if(resName.length() > 50) {
+				resName = resName.substring(0, 50);
+			}
+			OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, taxonomyLevel.getKey());
 			WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true);
 			questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback,
 					REVIEW + taxonomyLevel.getKey(), false);
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java b/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java
index 9724fc0e91ece7c572b8dda71299652afeffde6b..b26668a01baa1096b725f8509c30448b827cc32c 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java
@@ -211,20 +211,11 @@ public class EditTaxonomyLevelController extends FormBasicController {
 
 	@Override
 	protected boolean validateFormLogic(UserRequest ureq) {
-		boolean allOk = true;
-		
-		displayNameEl.clearError();
-		if(!StringHelper.containsNonWhitespace(displayNameEl.getValue())) {
-			displayNameEl.setErrorKey("form.legende.mandatory", null);
-			allOk &= false;
-		}
-		
-		identifierEl.clearError();
-		if(!StringHelper.containsNonWhitespace(identifierEl.getValue())) {
-			identifierEl.setErrorKey("form.legende.mandatory", null);
-			allOk &= false;
-		}
+		boolean allOk = super.validateFormLogic(ureq);
 		
+		allOk &= validateTextfield(displayNameEl, 255);
+		allOk &= validateTextfield(identifierEl, 64);
+
 		sortOrderEl.clearError();
 		if(StringHelper.containsNonWhitespace(sortOrderEl.getValue())) {
 			try {
@@ -235,7 +226,22 @@ public class EditTaxonomyLevelController extends FormBasicController {
 			}
 		}
 		
-		return allOk & super.validateFormLogic(ureq);
+		return allOk;
+	}
+	
+	private boolean validateTextfield(TextElement textEl, int maxSize) {
+		boolean allOk = true;
+		
+		textEl.clearError();
+		if(!StringHelper.containsNonWhitespace(identifierEl.getValue())) {
+			identifierEl.setErrorKey("form.legende.mandatory", null);
+			allOk &= false;
+		} else if(identifierEl.getValue().length() >= maxSize) {
+			identifierEl.setErrorKey("form.error.toolong", new String[] { Integer.toString(maxSize) });
+			allOk &= false;
+		}
+		
+		return allOk;
 	}
 
 	@Override