diff --git a/src/main/java/org/olat/user/ProfileFormController.java b/src/main/java/org/olat/user/ProfileFormController.java
index 210292e70f38a2ae2925d45bee59f9ff347e0d3b..573f629aaa6aafa81f34c060fb069e7f1540acb0 100644
--- a/src/main/java/org/olat/user/ProfileFormController.java
+++ b/src/main/java/org/olat/user/ProfileFormController.java
@@ -421,12 +421,12 @@ public class ProfileFormController extends FormBasicController {
 		if (source == dialogCtr) {
 			dialogCtr.dispose();
 			dialogCtr = null;
-			if (DialogBoxUIFactory.isYesEvent(event)) {
-				if (changedEmail != null) {
-					createChangeEmailWorkflow(ureq);
-				}
+			if (DialogBoxUIFactory.isYesEvent(event) && changedEmail != null) {
+				createChangeEmailWorkflow(ureq);
+				fireEvent(ureq, Event.DONE_EVENT);
+			} else {
+				fireEvent(ureq, Event.FAILED_EVENT);
 			}
-			fireEvent(ureq, Event.FAILED_EVENT);
 		}
 		super.event(ureq, source, event);
 	}
@@ -568,9 +568,6 @@ public class ProfileFormController extends FormBasicController {
 		conf.setTextAboutMe(textAboutMe.getValue());
 		hpcm.saveConfigTo(identityToModify, conf);
 
-		// fire the appropriate event
-		fireEvent(ureq, Event.DONE_EVENT);
-
 		// update the user profile data
 		CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(
 			OresHelper.createOLATResourceableInstance(Identity.class, identityToModify.getKey()), new SyncerExecutor() {
@@ -595,6 +592,7 @@ public class ProfileFormController extends FormBasicController {
 						emailChanged = true;
 						// change email address to old address until it is verified
 						identityToModify.getUser().setProperty(UserConstants.EMAIL, currentEmail);
+						emailEl.setValue(currentEmail);
 					}
 				}
 				if (!userManager.updateUserFromIdentity(identityToModify)) {
@@ -606,10 +604,6 @@ public class ProfileFormController extends FormBasicController {
 				OLATResourceable modRes = OresHelper.createOLATResourceableInstance(Identity.class, identityToModify.getKey());
 				CoordinatorManager.getInstance().getCoordinator().getEventBus()
 					.fireEventToListenersOf(new MultiUserEvent("changed"), modRes);
-				
-				if (!emailChanged) {
-					fireEvent(ureq, Event.FAILED_EVENT);
-				}
 			}
 		});
 		
@@ -625,6 +619,8 @@ public class ProfileFormController extends FormBasicController {
 			dialogCtr = DialogBoxUIFactory.createYesNoDialog(ureq, getWindowControl(), translate("email.change.dialog.title"), dialogText);
 			listenTo(dialogCtr);
 			dialogCtr.activate();
+		} else {
+			fireEvent(ureq, Event.DONE_EVENT);
 		}
 	}
 	
@@ -676,10 +672,12 @@ public class ProfileFormController extends FormBasicController {
 			if (isMailSent) {
 				tk.setMailSent(true);
 				// set key
-				User user = this.identityToModify.getUser();
+				User user = identityToModify.getUser();
 				user.setProperty("emchangeKey", tk.getRegistrationKey());
-				UserManager.getInstance().updateUser(user);
+				userManager.updateUserFromIdentity(identityToModify);
 				getWindowControl().setInfo(translate("email.sent"));
+				updateEmailForm(identityToModify.getUser());
+				flc.setDirty(true);
 			} else {
 				tk.setMailSent(false);
 				registrationManager.deleteTemporaryKeyWithId(tk.getRegistrationKey());
diff --git a/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java
index ab2197438842b190441bcfad49099a4ad866b276..296dba4b826ff39131ea30f6a6510d534d4e1c42 100644
--- a/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java
+++ b/src/main/java/org/olat/user/propertyhandlers/SmsPhonePropertyHandler.java
@@ -59,7 +59,10 @@ public class SmsPhonePropertyHandler extends PhonePropertyHandler {
 	
 	@Override
 	public void updateUserFromFormItem(User user, FormItem formItem) {
-		//update is done during confirmation
+		if(formItem instanceof SmsPhoneElement && ((SmsPhoneElement)formItem).hasChanged()) {
+			SmsPhoneElement el = (SmsPhoneElement)formItem;
+			setInternalValue(user, el.getPhone());
+		}
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java
index 01c513b2fc9dd70bcb02e18690a6ac2c31cae2e0..0b91dd62c938cdc662dbaeb044cae41ad77927d5 100644
--- a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java
+++ b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneElement.java
@@ -57,6 +57,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection,
 	
 	private String phone;
 	private boolean forceFormDirty;
+	private boolean hasChanged = false;
 	private final User editedUser;
 	private final UserPropertyHandler handler;
 	
@@ -81,6 +82,10 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection,
 	public void setPhone(String phone) {
 		this.phone = phone;
 	}
+	
+	public boolean hasChanged() {
+		return hasChanged;
+	}
 
 	public FormLink getEditLink() {
 		return editLink;
@@ -104,6 +109,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection,
 		} else if(smsPhoneCtrl == source) {
 			if(event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) {
 				setPhone(smsPhoneCtrl.getPhone());
+				hasChanged = true;
 				forceFormDirty = true;
 				component.setDirty(true);
 			}
@@ -198,6 +204,7 @@ public class SmsPhoneElement extends FormItemImpl implements FormItemCollection,
 
 	private void doRemove() {
 		setPhone(null);
+		hasChanged = true;
 		component.setDirty(true);
 	}
 }
\ No newline at end of file
diff --git a/src/test/resources/arquillian.xml b/src/test/resources/arquillian.xml
index 6a5c75dd4d9e9d38250a65ffb0655b846759451b..b720d437ad98f0e6037fcb2a4ba79a8d5fcd4617 100644
--- a/src/test/resources/arquillian.xml
+++ b/src/test/resources/arquillian.xml
@@ -31,7 +31,7 @@
 		-->
 		<property name="firefoxDriverVersion">${webdriver.firefox.version:v0.29.0}</property>
 		<property name="firefoxUserPreferences">src/test/profile/firefox/prefs.js</property>
-		<property name="chromeDriverVersion">${webdriver.chrome.version:90.0.4430.24}</property>
+		<property name="chromeDriverVersion">${webdriver.chrome.version:92.0.4515.43}</property>
 		<property name="chromeArguments">${webdriver.chrome.arguments}</property>
 		<property name="chromeExperimentalOption">{
 			"prefs":{"credentials_enable_service": false, "profile.password_manager_enabled": false }