diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php b/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
index 83555c7..10059f2 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
@@ -686,6 +686,12 @@ public function load() {
       'name' => 'user_mail_register_no_approval_required_subject',
       'value' => 's:38:"Account details for !username at !site";',
     ))->values(array(
+      'name' => 'user_mail_register_pending_approval_body',
+      'value' => "s:267:\"!username,\n\nThank you for registering at !site. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details.\n\n\n--  !site team\";",
+    ))->values(array(
+      'name' => 'user_mail_register_pending_approval_subject',
+      'value' => 's:63:"Account details for !username at !site (pending admin approval)";',
+    ))->values(array(
       'name' => 'user_mail_status_activated_body',
       'value' => "s:419:\"!username,\n\nYour account at !site has been activated.\n\nYou may now log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\nOnce you have set your own password, you will be able to log in to !login_uri in the future using:\n\nusername: !username\n\";",
     ))->values(array(
@@ -707,15 +713,12 @@ public function load() {
       'name' => 'user_mail_status_deleted_body',
       'value' => "s:51:\"!username,\n\nYour account on !site has been deleted.\";",
     ))->values(array(
+      'name' => 'user_mail_status_deleted_notify',
+      'value' => 'i:0;',
+    ))->values(array(
       'name' => 'user_mail_status_deleted_subject',
       'value' => 's:48:"Account details for !username at !site (deleted)";',
     ))->values(array(
-      'name' => 'user_mail_user_mail_register_pending_approval_body',
-      'value' => "s:267:\"!username,\n\nThank you for registering at !site. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details.\n\n\n--  !site team\";",
-    ))->values(array(
-      'name' => 'user_mail_user_mail_register_pending_approval_subject',
-      'value' => 's:63:"Account details for !username at !site (pending admin approval)";',
-    ))->values(array(
       'name' => 'user_register',
       'value' => 'i:0;',
     ))->values(array(
@@ -725,4 +728,4 @@ public function load() {
   }
 
 }
-#32b72a0543c243804368c7bc10b05be5
+#c32050ce4f377ad902e3ccdc03e1b846
diff --git a/core/modules/user/migration_templates/d6_user_mail.yml b/core/modules/user/migration_templates/d6_user_mail.yml
index bc3badf..aff8346 100644
--- a/core/modules/user/migration_templates/d6_user_mail.yml
+++ b/core/modules/user/migration_templates/d6_user_mail.yml
@@ -15,8 +15,8 @@ source:
     - user_mail_register_admin_created_body
     - user_mail_register_no_approval_required_subject
     - user_mail_register_no_approval_required_body
-    - user_mail_user_mail_register_pending_approval_subject
-    - user_mail_user_mail_register_pending_approval_body
+    - user_mail_register_pending_approval_subject
+    - user_mail_register_pending_approval_body
     - user_mail_status_blocked_subject
     - user_mail_status_blocked_body
 process:
@@ -30,8 +30,8 @@ process:
   'register_admin_created/body': user_mail_register_admin_created_body
   'register_no_approval_required/subject': user_mail_register_no_approval_required_subject
   'register_no_approval_required/body': user_mail_register_no_approval_required_body
-  'register_pending_approval/subject': user_mail_user_mail_register_pending_approval_subject
-  'register_pending_approval/body': user_mail_user_mail_register_pending_approval_body
+  'register_pending_approval/subject': user_mail_register_pending_approval_subject
+  'register_pending_approval/body': user_mail_register_pending_approval_body
   'status_blocked/subject': user_mail_status_blocked_subject
   'status_blocked/body': user_mail_status_blocked_body
 destination:
diff --git a/core/modules/user/migration_templates/d6_user_settings.yml b/core/modules/user/migration_templates/d6_user_settings.yml
index 5984d51..989c310 100644
--- a/core/modules/user/migration_templates/d6_user_settings.yml
+++ b/core/modules/user/migration_templates/d6_user_settings.yml
@@ -7,12 +7,14 @@ source:
   variables:
     - user_mail_status_blocked_notify
     - user_mail_status_activated_notify
+    - user_mail_status_deleted_notify
     - user_email_verification
     - user_register
     - anonymous
 process:
   'notify/status_blocked': user_mail_status_blocked_notify
   'notify/status_activated': user_mail_status_activated_notify
+  'notify/status_canceled': user_mail_status_deleted_notify
   verify_mail: user_email_verification
   register:
     plugin: static_map
diff --git a/core/modules/user/migration_templates/d7_user_mail.yml b/core/modules/user/migration_templates/d7_user_mail.yml
new file mode 100644
index 0000000..fdefb67
--- /dev/null
+++ b/core/modules/user/migration_templates/d7_user_mail.yml
@@ -0,0 +1,43 @@
+id: d7_user_mail
+label: Drupal 7 user mail configuration
+migration_tags:
+  - Drupal 7
+source:
+  plugin: variable
+  variables:
+    - user_mail_cancel_confirm_subject
+    - user_mail_cancel_confirm_body
+    - user_mail_password_reset_subject
+    - user_mail_password_reset_body
+    - user_mail_register_admin_created_subject
+    - user_mail_register_admin_created_body
+    - user_mail_register_no_approval_required_subject
+    - user_mail_register_no_approval_required_body
+    - user_mail_register_pending_approval_subject
+    - user_mail_register_pending_approval_body
+    - user_mail_status_activated_subject
+    - user_mail_status_activated_body
+    - user_mail_status_blocked_subject
+    - user_mail_status_blocked_body
+    - user_mail_status_canceled_subject
+    - user_mail_status_canceled_body
+process:
+  'cancel_confirm/subject': user_mail_cancel_confirm_subject
+  'cancel_confirm/body': user_mail_cancel_confirm_body
+  'password_reset/subject': user_mail_password_reset_subject
+  'password_reset/body': user_mail_password_reset_body
+  'register_admin_created/subject': user_mail_register_admin_created_subject
+  'register_admin_created/body': user_mail_register_admin_created_body
+  'register_no_approval_required/subject': user_mail_register_no_approval_required_subject
+  'register_no_approval_required/body': user_mail_register_no_approval_required_body
+  'register_pending_approval/subject': user_mail_register_pending_approval_subject
+  'register_pending_approval/body': user_mail_register_pending_approval_body
+  'status_activated/subject': user_mail_status_activated_subject
+  'status_activated/body': user_mail_status_activated_body
+  'status_blocked/subject': user_mail_status_blocked_subject
+  'status_blocked/body': user_mail_status_blocked_body
+  'status_canceled/subject': user_mail_status_canceled_subject
+  'status_canceled/body': user_mail_status_canceled_body
+destination:
+  plugin: config
+  config_name: user.mail
diff --git a/core/modules/user/migration_templates/d7_user_settings.yml b/core/modules/user/migration_templates/d7_user_settings.yml
new file mode 100644
index 0000000..f0f4f56
--- /dev/null
+++ b/core/modules/user/migration_templates/d7_user_settings.yml
@@ -0,0 +1,30 @@
+id: d7_user_settings
+label: Drupal 7 user configuration
+migration_tags:
+  - Drupal 7
+source:
+  plugin: variable
+  variables:
+    - user_mail_status_blocked_notify
+    - user_mail_status_activated_notify
+    - user_mail_status_canceled_notify
+    - user_email_verification
+    - user_register
+    - anonymous
+process:
+  'notify/status_blocked': user_mail_status_blocked_notify
+  'notify/status_activated': user_mail_status_activated_notify
+  'notify/status_canceled': user_mail_status_canceled_notify
+  verify_mail: user_email_verification
+  register:
+    plugin: static_map
+    source: user_register
+    default_value: visitors_admin_approval
+    map:
+      2: visitors_admin_approval
+      1: user_register
+      0: admin_only
+  anonymous: anonymous
+destination:
+  plugin: config
+  config_name: user.settings
diff --git a/core/modules/user/src/Tests/Migrate/d6/MigrateUserConfigsTest.php b/core/modules/user/src/Tests/Migrate/d6/MigrateUserConfigsTest.php
index a087bbd..a5295a9 100644
--- a/core/modules/user/src/Tests/Migrate/d6/MigrateUserConfigsTest.php
+++ b/core/modules/user/src/Tests/Migrate/d6/MigrateUserConfigsTest.php
@@ -57,6 +57,7 @@ public function testUserSettings() {
     $config = $this->config('user.settings');
     $this->assertIdentical(TRUE, $config->get('notify.status_blocked'));
     $this->assertIdentical(FALSE, $config->get('notify.status_activated'));
+    $this->assertFalse($config->get('status_canceled'));
     $this->assertIdentical(FALSE, $config->get('verify_mail'));
     $this->assertIdentical('admin_only', $config->get('register'));
     $this->assertIdentical('Guest', $config->get('anonymous'));
diff --git a/core/modules/user/src/Tests/Migrate/d7/MigrateUserConfigsTest.php b/core/modules/user/src/Tests/Migrate/d7/MigrateUserConfigsTest.php
new file mode 100644
index 0000000..bfbc6ad
--- /dev/null
+++ b/core/modules/user/src/Tests/Migrate/d7/MigrateUserConfigsTest.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\user\Tests\Migrate\d7\MigrateUserConfigsTest.
+ */
+
+namespace Drupal\user\Tests\Migrate\d7;
+
+use Drupal\config\Tests\SchemaCheckTestTrait;
+use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
+
+/**
+ * Tests migration of User's variables to configuration.
+ *
+ * @group user
+ */
+class MigrateUserConfigsTest extends MigrateDrupal7TestBase {
+
+  use SchemaCheckTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('d7_user_mail');
+    $this->executeMigration('d7_user_settings');
+  }
+
+
+  /**
+   * Tests migration of user variables to user:mail.yml.
+   */
+  public function testUserMail() {
+    $config = $this->config('user.mail');
+    $this->assertIdentical('Account details for [user:name] at [site:name] (approved)', $config->get('status_activated.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nYour account at [site:name] has been activated.\r\n\r\nYou may now log in by clicking this link or copying and pasting it into your browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nThis link can only be used once to log in and will lead you to a page where you can set your password.\r\n\r\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\r\n\r\nusername: [user:name]\r\npassword: Your password\r\n\r\n--  [site:name] team", $config->get('status_activated.body'));
+    $this->assertIdentical('Replacement login information for [user:name] at [site:name]', $config->get('password_reset.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nA request to reset the password for your account has been made at [site:name].\r\n\r\nYou may now log in by clicking this link or copying and pasting it to your browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nThis link can only be used once to log in and will lead you to a page where you can set your password. It expires after one day and nothing will happen if it's not used.\r\n\r\n--  [site:name] team", $config->get('password_reset.body'));
+    $this->assertIdentical('Account cancellation request for [user:name] at [site:name]', $config->get('cancel_confirm.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nA request to cancel your account has been made at [site:name].\r\n\r\nYou may now cancel your account on [site:url-brief] by clicking this link or copying and pasting it into your browser:\r\n\r\n[user:cancel-url]\r\n\r\nNOTE: The cancellation of your account is not reversible.\r\n\r\nThis link expires in one day and nothing will happen if it is not used.\r\n\r\n--  [site:name] team", $config->get('cancel_confirm.body'));
+    $this->assertIdentical('An administrator created an account for you at [site:name]', $config->get('register_admin_created.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nA site administrator at [site:name] has created an account for you. You may now log in by clicking this link or copying and pasting it to your browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nThis link can only be used once to log in and will lead you to a page where you can set your password.\r\n\r\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\r\n\r\nusername: [user:name]\r\npassword: Your password\r\n\r\n--  [site:name] team", $config->get('register_admin_created.body'));
+    $this->assertIdentical('Account details for [user:name] at [site:name]', $config->get('register_no_approval_required.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nThank you for registering at [site:name]. You may now log in by clicking this link or copying and pasting it to your browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nThis link can only be used once to log in and will lead you to a page where you can set your password.\r\n\r\nAfter setting your password, you will be able to log in at [site:login-url] in the future using:\r\n\r\nusername: [user:name]\r\npassword: Your password\r\n\r\n--  [site:name] team", $config->get('register_no_approval_required.body'));
+    $this->assertIdentical('Account details for [user:name] at [site:name] (pending admin approval)', $config->get('register_pending_approval.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nThank you for registering at [site:name]. Your application for an account is currently pending approval. Once it has been approved, you will receive another e-mail containing information about how to log in, set your password, and other details.\r\n\r\n\r\n--  [site:name] team", $config->get('register_pending_approval.body'));
+    $this->assertIdentical('Account details for [user:name] at [site:name] (blocked)', $config->get('status_blocked.subject'));
+    $this->assertIdentical("[user:name],\r\n\r\nYour account on [site:name] has been blocked.\r\n\r\n--  [site:name] team", $config->get('status_blocked.body'));
+    $this->assertConfigSchema(\Drupal::service('config.typed'), 'user.mail', $config->get());
+  }
+
+
+  /**
+   * Tests migration of User variables to configuration.
+   */
+  public function testUserSettings() {
+    $config = \Drupal::config('user.settings')->get();
+    $this->assertFalse($config['notify']['status_blocked']);
+    $this->assertTrue($config['notify']['status_activated']);
+    $this->assertFalse($config['notify']['status_canceled']);
+    $this->assertTrue($config['verify_mail']);
+    $this->assertIdentical('visitors_admin_approval', $config['register']);
+    $this->assertIdentical('Anonymous', $config['anonymous']);
+  }
+
+}
