diff --git a/src/main/java/org/olat/login/LoginModule.java b/src/main/java/org/olat/login/LoginModule.java
index 5c767b5cec3af38cfd06b9d15b51de43105784a2..38f70991448489c7b7effebc62694b0961393a5d 100644
--- a/src/main/java/org/olat/login/LoginModule.java
+++ b/src/main/java/org/olat/login/LoginModule.java
@@ -69,7 +69,7 @@ public class LoginModule extends AbstractSpringModule {
 	};
 	
 	public static final String DISABLED = "disabled";
-	public static final String FORBIDDEN = "forbiddden";
+	public static final String FORBIDDEN = "forbidden";
 	public static final String AT_LEAST_1 = "atLeast1";
 	public static final String AT_LEAST_2 = "atLeast2";
 	public static final String AT_LEAST_3 = "atLeast3";
diff --git a/src/main/java/org/olat/login/ui/PasswordSyntaxController.java b/src/main/java/org/olat/login/ui/PasswordSyntaxController.java
index 213270614c19ffb093c85ffc10b2f385d9a3cd66..3fa207805045df6a963051126a7c19ef079f2b94 100644
--- a/src/main/java/org/olat/login/ui/PasswordSyntaxController.java
+++ b/src/main/java/org/olat/login/ui/PasswordSyntaxController.java
@@ -51,12 +51,14 @@ import org.olat.core.logging.Tracing;
 import org.olat.core.util.Util;
 import org.olat.login.LoginModule;
 import org.olat.login.validation.PasswordValidationConfig;
+import org.olat.login.validation.PasswordValidationConfig.Builder;
 import org.olat.login.validation.PasswordValidationRulesFactory;
 import org.olat.login.validation.SyntaxValidator;
 import org.olat.login.validation.ValidationRulesProvider;
-import org.olat.login.validation.PasswordValidationConfig.Builder;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import edu.emory.mathcs.backport.java.util.Arrays;
+
 /**
  * 
  * Initial date: 14 May 2019<br>
@@ -116,7 +118,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		lettersKV.add(entry(VALIDATE_SEPARATELY, translate("admin.syntax.letters.lower.upper")));
 		lettersEl = uifactory.addDropdownSingleselect("admin.syntax.letters", formLayout, lettersKV.keys(),
 				lettersKV.values());
-		lettersEl.select(loginModule.getPasswordLetters(), true);
+		if (Arrays.asList(lettersKV.keys()).contains(loginModule.getPasswordLetters())) {
+			lettersEl.select(loginModule.getPasswordLetters(), true);
+		}
 		lettersEl.addActionListener(FormEvent.ONCHANGE);
 		
 		KeyValues lettersUppercaseKV = new KeyValues();
@@ -127,7 +131,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		lettersUppercaseKV.add(entry(FORBIDDEN, translate("admin.syntax.forbidden")));
 		lettersUppercaseEl = uifactory.addDropdownSingleselect("admin.syntax.letters.uppercase", formLayout,
 				lettersUppercaseKV.keys(), lettersUppercaseKV.values());
-		lettersUppercaseEl.select(loginModule.getPasswordLettersUppercase(), true);
+		if (Arrays.asList(lettersUppercaseKV.keys()).contains(loginModule.getPasswordLettersUppercase())) {
+			lettersUppercaseEl.select(loginModule.getPasswordLettersUppercase(), true);
+		}
 		
 		KeyValues lettersLowercaseKV = new KeyValues();
 		lettersLowercaseKV.add(entry(DISABLED, translate("admin.syntax.permitted")));
@@ -137,7 +143,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		lettersLowercaseKV.add(entry(FORBIDDEN, translate("admin.syntax.forbidden")));
 		lettersLowercaseEl = uifactory.addDropdownSingleselect("admin.syntax.letters.lowercase", formLayout,
 				lettersLowercaseKV.keys(), lettersLowercaseKV.values());
-		lettersLowercaseEl.select(loginModule.getPasswordLettersLowercase(), true);
+		if (Arrays.asList(lettersLowercaseKV.keys()).contains(loginModule.getPasswordLettersLowercase())) {
+			lettersLowercaseEl.select(loginModule.getPasswordLettersLowercase(), true);
+		}
 		
 		KeyValues digitsOrSpecialsKV = new KeyValues();
 		digitsOrSpecialsKV.add(entry(DISABLED, translate("admin.syntax.permitted")));
@@ -148,7 +156,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		digitsOrSpecialsKV.add(entry(VALIDATE_SEPARATELY, translate("admin.syntax.digits.or.specials")));
 		digitsAndSpecialsEl = uifactory.addDropdownSingleselect("admin.syntax.digits.specials", formLayout, digitsOrSpecialsKV.keys(),
 				digitsOrSpecialsKV.values());
-		digitsAndSpecialsEl.select(loginModule.getPasswordDigitsAndSpecialSigns(), true);
+		if (Arrays.asList(digitsOrSpecialsKV.keys()).contains(loginModule.getPasswordDigitsAndSpecialSigns())) {
+			digitsAndSpecialsEl.select(loginModule.getPasswordDigitsAndSpecialSigns(), true);
+		}
 		digitsAndSpecialsEl.addActionListener(FormEvent.ONCHANGE);
 		
 		KeyValues digitsKV = new KeyValues();
@@ -159,7 +169,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		digitsKV.add(entry(FORBIDDEN, translate("admin.syntax.forbidden")));
 		digitsEl = uifactory.addDropdownSingleselect("admin.syntax.digits", formLayout, digitsKV.keys(),
 				digitsKV.values());
-		digitsEl.select(loginModule.getPasswordDigits(), true);
+		if (Arrays.asList(digitsKV.keys()).contains(loginModule.getPasswordDigits())) {
+			digitsEl.select(loginModule.getPasswordDigits(), true);
+		}
 		
 		KeyValues specialsKV = new KeyValues();
 		specialsKV.add(entry(DISABLED, translate("admin.syntax.permitted")));
@@ -169,7 +181,9 @@ public class PasswordSyntaxController extends FormBasicController {
 		specialsKV.add(entry(FORBIDDEN, translate("admin.syntax.forbidden")));
 		specialsEl = uifactory.addDropdownSingleselect("admin.syntax.specials", formLayout, specialsKV.keys(),
 				specialsKV.values());
-		specialsEl.select(loginModule.getPasswordSpecialSigns(), true);
+		if (Arrays.asList(specialsKV.keys()).contains(loginModule.getPasswordSpecialSigns())) {
+			specialsEl.select(loginModule.getPasswordSpecialSigns(), true);
+		}
 		
 		KeyValues forbiddenValuesKV = new KeyValues();
 		forbiddenValuesKV.add(entry(FORBIDDEN_USERNAME, translate("admin.syntax.forbidden.username")));
diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
index d03b96d5026111ba21bcdbc3d798afdf95478f8b..3f47a1602d5d703a5b6082fef1d269c32efa1278 100644
--- a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
@@ -486,7 +486,7 @@ remove=Remove
 rentry.access.author.explain=Access is automatically allowed with status "$\:cif.status.review", "$\:cif.status.coachpublished", "$\:cif.status.published" or "$\:cif.status.closed"
 rentry.access.author.title=Shared to others authors
 rentry.access.guest=Access without login
-rentry.access.guest.on=allowed for invitee
+rentry.access.guest.on=allowed for guests
 rentry.access.title=Access and booking configuration
 rentry.access.type=Access for members of the organisation
 rentry.access.type.booking=Bookable
diff --git a/src/main/java/org/olat/upgrade/OLATUpgrade_14_0_3.java b/src/main/java/org/olat/upgrade/OLATUpgrade_14_0_3.java
new file mode 100644
index 0000000000000000000000000000000000000000..080ef40540d5fb1296017c6d3f53c654baa283a4
--- /dev/null
+++ b/src/main/java/org/olat/upgrade/OLATUpgrade_14_0_3.java
@@ -0,0 +1,109 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.upgrade;
+
+import org.apache.logging.log4j.Logger;
+import org.olat.core.logging.Tracing;
+import org.olat.login.LoginModule;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * Initial date: 4 janv. 2019<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class OLATUpgrade_14_0_3 extends OLATUpgrade {
+
+	private static final Logger log = Tracing.createLoggerFor(OLATUpgrade_14_0_3.class);
+	
+	private static final String VERSION = "OLAT_14.0.3";
+	private static final String PASSWORD_SYNTAX_CHECK_TYPO = "PASSWORD SYNTAX CHECK TYPO";
+	
+	@Autowired
+	private LoginModule loginModule;
+
+	
+	public OLATUpgrade_14_0_3() {
+		super();
+	}
+	
+	@Override
+	public String getVersion() {
+		return VERSION;
+	}
+
+	@Override
+	public boolean doPostSystemInitUpgrade(UpgradeManager upgradeManager) {
+		UpgradeHistoryData uhd = upgradeManager.getUpgradesHistory(VERSION);
+		if (uhd == null) {
+			// has never been called, initialize
+			uhd = new UpgradeHistoryData();
+		} else if (uhd.isInstallationComplete()) {
+			return false;
+		}
+		
+		boolean allOk = true;
+		allOk &= migratePasswordSyntaxCheckTypo(upgradeManager, uhd);
+
+		uhd.setInstallationComplete(allOk);
+		upgradeManager.setUpgradesHistory(uhd, VERSION);
+		if(allOk) {
+			log.info(Tracing.M_AUDIT, "Finished OLATUpgrade_14_0_3 successfully!");
+		} else {
+			log.info(Tracing.M_AUDIT, "OLATUpgrade_14_0_3 not finished, try to restart OpenOLAT!");
+		}
+		return allOk;
+	}
+	
+	private boolean migratePasswordSyntaxCheckTypo(UpgradeManager upgradeManager, UpgradeHistoryData uhd) {
+		boolean allOk = true;
+		if (!uhd.getBooleanDataValue(PASSWORD_SYNTAX_CHECK_TYPO)) {
+			try {
+				if ("forbiddden".equals(loginModule.getPasswordDigits())) {
+					loginModule.setPasswordDigits(LoginModule.FORBIDDEN);
+				}
+				if ("forbiddden".equals(loginModule.getPasswordDigitsAndSpecialSigns())) {
+					loginModule.setPasswordDigitsAndSpecialSigns(LoginModule.FORBIDDEN);
+				}
+				if ("forbiddden".equals(loginModule.getPasswordLetters())) {
+					loginModule.setPasswordLetters(LoginModule.FORBIDDEN);
+				}
+				if ("forbiddden".equals(loginModule.getPasswordLettersLowercase())) {
+					loginModule.setPasswordLettersLowercase(LoginModule.FORBIDDEN);
+				}
+				if ("forbiddden".equals(loginModule.getPasswordLettersUppercase())) {
+					loginModule.setPasswordLettersUppercase(LoginModule.FORBIDDEN);
+				}
+				if ("forbiddden".equals(loginModule.getPasswordSpecialSigns())) {
+					loginModule.setPasswordSpecialSigns(LoginModule.FORBIDDEN);
+				}
+			} catch (Exception e) {
+				log.error("", e);
+				allOk = false;
+			}
+			
+			uhd.setBooleanDataValue(PASSWORD_SYNTAX_CHECK_TYPO, allOk);
+			upgradeManager.setUpgradesHistory(uhd, VERSION);
+		}
+		return allOk;
+	}
+
+}
diff --git a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml
index 4a6c31514dc671665a05b8b123998b17756be7b7..cde6bae954de9e3615d062a807fd9a0ff11d5742 100644
--- a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml
+++ b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml
@@ -50,6 +50,7 @@
 				<bean id="upgrade_13_2_4" class="org.olat.upgrade.OLATUpgrade_13_2_4"/>
 				<bean id="upgrade_13_2_8" class="org.olat.upgrade.OLATUpgrade_13_2_8"/>
 				<bean id="upgrade_14_0_0" class="org.olat.upgrade.OLATUpgrade_14_0_0"/>
+				<bean id="upgrade_14_0_3" class="org.olat.upgrade.OLATUpgrade_14_0_3"/>
 			</list>
 		</property>
 	</bean>