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..1bda1f7 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
@@ -707,6 +707,9 @@ 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(
@@ -725,4 +728,4 @@ public function load() {
   }
 
 }
-#32b72a0543c243804368c7bc10b05be5
+#6cdc963377c27d8a4dd3bb2278244b8a
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']);
+  }
+
+}
