diff --git a/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java
index 7fe769b3e14d3bbdc7569b7367b3bee3fa7d11f8..f0c11571637fa7159adc9e9a050f4876f184aaa1 100644
--- a/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java
+++ b/src/main/java/org/olat/user/propertyhandlers/PhonePropertyHandler.java
@@ -62,14 +62,21 @@ public class PhonePropertyHandler extends Generic127CharTextPropertyHandler {
 		if (StringHelper.containsNonWhitespace(phonenr)) {
 			phonenr = StringHelper.escapeHtml(phonenr);
 			StringBuffer sb = new StringBuffer();
-			sb.append("<a href=\"callto:")
-			  .append(phonenr).append("\"><i class='o_icon o_icon_phone'> </i> ")
+			sb.append("<a href=\"tel:")
+			  .append(normalizePhonenumber(phonenr)).append("\"><i class='o_icon o_icon_phone'> </i> ")
 			  .append(phonenr).append("</a>");
 			return sb.toString();
 		}
 		return null;
 	}
 	
+	public static String normalizePhonenumber(String phonenr){
+		phonenr=phonenr.split("[A-Za-z]")[0]; //just take the first sequence before a alphabetic character appears
+		phonenr=phonenr.replaceAll("\\(.*\\)", ""); // remove brackets and their contents
+		phonenr=phonenr.replaceAll("[\\s/'\\-\\.,]", ""); //remove bad chars
+		return phonenr;
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.olat.user.propertyhandlers.Generic127CharTextPropertyHandler#isValid(org.olat.core.gui.components.form.flexible.FormItem, java.util.Map)
 	 */
diff --git a/src/test/java/org/olat/user/UserPropertiesTest.java b/src/test/java/org/olat/user/UserPropertiesTest.java
index 464be7d17b49744e877929a3e7e413c4f9c5559e..d4ae8a607d91577fd5b40dd6ab2c2741a5cebd4d 100644
--- a/src/test/java/org/olat/user/UserPropertiesTest.java
+++ b/src/test/java/org/olat/user/UserPropertiesTest.java
@@ -78,4 +78,22 @@ public class UserPropertiesTest {
 		assertFalse(phoneHandler.isValidValue(null, "+41 43 frentix GmbH", error, null));
 	}
 
+	@Test
+	public void testPhonePropertyHandlerHTMLnormalizer() {
+		// test for valid phone number formats
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("043 544 90 00").equals("0435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("043/544'90'00").equals("0435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("043-544-90-00").equals("0435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("043.544.90.00").equals("0435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 (0)43 544 90 00").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 x0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext. 0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext 0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 extension 0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 Extension 0").equals("+41435449000"));
+		assertTrue(PhonePropertyHandler.normalizePhonenumber("+41 43 544 90 00 ext. 0").equals("+41435449000"));
+	}
+
 }
\ No newline at end of file