diff --git a/src/BulkUserRegistration.php b/src/BulkUserRegistration.php
index 87961f1..abaea30 100644
--- a/src/BulkUserRegistration.php
+++ b/src/BulkUserRegistration.php
@@ -95,7 +95,61 @@ class BulkUserRegistration implements BulkUserRegistrationInterface {
       ->invokeAll('bulk_user_registration_user_presave', [$user, $userData]);
 
     $user->save();
+    drupal_set_message("user created: " . $userData[self::FIELD_EMAIL]);
+    return $user;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function updateUser(array $userData, $defaultRole) {
+
+    $langcode = \Drupal::languageManager()->getDefaultLanguage()->getId();
 
+    /** @var \Drupal\user\UserInterface $user */
+    $user = user_load_by_mail($userData[self::FIELD_EMAIL]);
+    $user->setUsername($userData[self::FIELD_USER_NAME]);
+    $user->setEmail($userData[self::FIELD_EMAIL]);
+    $user->set('langcode', $langcode);
+    $user->set('preferred_langcode', $langcode);
+    $user->set('preferred_admin_langcode', $langcode);
+    if (!$userData[self::FIELD_STATUS]) {
+      $user->block();
+    }
+    else {
+      $user->activate();
+    }
+
+    // Remove the user's current roles.
+    $currentRoles = $user->getRoles(TRUE);
+    foreach ($currentRoles as $role) {
+      $this->removeRole($user, $role);
+    }
+
+    // Single or multiple roles will be applied to the user object. Multiple
+    // roles should be comma separated.
+    $roles = [];
+    $csvRoles = explode(',', $userData[self::FIELD_ROLE]);
+    $allowedRoles = $this->getAllowedRoles();
+    foreach ($csvRoles as $csvRole) {
+      $csvRole = trim($csvRole);
+      if (isset($allowedRoles[$csvRole])) {
+        $roles[] = $csvRole;
+      }
+    }
+    $roles = array_filter(array_unique($roles));
+    $roles = empty($roles) ? [$defaultRole] : $roles;
+    foreach ($roles as $role) {
+      $this->addRole($user, $role);
+    }
+
+    // Allow modules to modify the user object before saving it. Typically used
+    // to store the extra field data into the user.
+    \Drupal::moduleHandler()
+      ->invokeAll('bulk_user_registration_user_presave', [$user, $userData]);
+
+    $user->save();
+    drupal_set_message("user updated: " . $userData[self::FIELD_EMAIL]);
     return $user;
   }
 
@@ -145,6 +199,24 @@ class BulkUserRegistration implements BulkUserRegistrationInterface {
     }
   }
 
+  /**
+   * Remove user role.
+   *
+   * @param \Drupal\user\UserInterface $user
+   *   The user.
+   * @param string $role
+   *   Role Id.
+   */
+  protected function removeRole(UserInterface $user, $role) {
+
+    if (!in_array($role, [
+      RoleInterface::AUTHENTICATED_ID,
+      RoleInterface::ANONYMOUS_ID,
+    ])) {
+      $user->removeRole($role);
+    }
+  }
+
   /**
    * The roles allowed to import.
    *
diff --git a/src/Form/BulkUserImport.php b/src/Form/BulkUserImport.php
index 99c4c90..7ae07bc 100644
--- a/src/Form/BulkUserImport.php
+++ b/src/Form/BulkUserImport.php
@@ -221,8 +221,10 @@ class BulkUserImport extends FormBase {
       return;
     }
 
-    // This user already exists. Do not import.
+    // This user already exists. Update the account.
     if (user_load_by_mail($userData[BulkUserRegistrationInterface::FIELD_EMAIL])) {
+      $user = \Drupal::service('bulk_user_registration')
+        ->updateUser($userData, $defaultRole);
       return;
     }
 

