diff --git a/config/install/user_registrationpassword.mail.yml b/config/install/user_registrationpassword.mail.yml
index 00ea1db..f60f750 100644
--- a/config/install/user_registrationpassword.mail.yml
+++ b/config/install/user_registrationpassword.mail.yml
@@ -1,4 +1,7 @@
 register_confirmation_with_pass:
   body: "[user:display-name],\r\n\r\nThank you for registering at [site:name]. You may now log in and verify your account by clicking this link or copying and pasting it to your browser:\r\n\r\n[user:registrationpassword-url]\r\n\r\nThis link can only be used once. 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"
   subject: 'Account details for [user:display-name] at [site:name]'
+register_confirmation_admin_created:
+  body: "[user:display-name],\n\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 into your browser:\n\n[user:registrationpassword-url]\n\nBy visiting the site your account will be activated and you will be able to log in at [site:login-url] in the future using:\n\nusername: [user:name]\npassword: your password\n\n--  [site:name] team"
+  subject: 'An administrator created an account for you at [site:name]'
 langcode: en
diff --git a/config/install/user_registrationpassword.settings.yml b/config/install/user_registrationpassword.settings.yml
index 7214fd8..2733767 100644
--- a/config/install/user_registrationpassword.settings.yml
+++ b/config/install/user_registrationpassword.settings.yml
@@ -3,4 +3,5 @@ registration_ftll_expire: false
 registration_ftll_timeout: 86400
 notify:
   register_confirmation_with_pass: true
+  register_confirmation_admin_created: true
 registration_redirect: ''
diff --git a/config/schema/user_registrationpassword.schema.yml b/config/schema/user_registrationpassword.schema.yml
index b0411b9..72281e6 100644
--- a/config/schema/user_registrationpassword.schema.yml
+++ b/config/schema/user_registrationpassword.schema.yml
@@ -20,6 +20,9 @@ user_registrationpassword.settings:
         register_confirmation_with_pass:
           type: boolean
           label: 'User registration email with password set'
+        register_confirmation_admin_created:
+          type: boolean
+          label: 'User registration email by admin with confirmation'
     registration_redirect:
       type: path
       label: 'Redirect path on registration'
@@ -31,6 +34,9 @@ user_registrationpassword.mail:
     register_confirmation_with_pass:
       type: mail
       label: 'User registration email with password set'
+    register_confirmation_admin_created:
+      type: mail
+      label: 'User registration email by admin with confirmation'
 
 user_registrationpassword.mail_original:
   type: config_object
diff --git a/tests/src/Kernel/UserRegistrationPasswordMailNotifyTest.php b/tests/src/Kernel/UserRegistrationPasswordMailNotifyTest.php
index 4c2939a..aefde08 100644
--- a/tests/src/Kernel/UserRegistrationPasswordMailNotifyTest.php
+++ b/tests/src/Kernel/UserRegistrationPasswordMailNotifyTest.php
@@ -32,6 +32,7 @@ class UserRegistrationPasswordMailNotifyTest extends EntityKernelTestBase {
   public static function userRegistrationMailsProvider(): array {
     return [
       ['register_confirmation_with_pass', ['register_confirmation_with_pass']],
+      ['register_confirmation_admin_created', ['register_confirmation_admin_created']],
     ];
   }
 
diff --git a/user_registrationpassword.module b/user_registrationpassword.module
index af83384..6df8e42 100644
--- a/user_registrationpassword.module
+++ b/user_registrationpassword.module
@@ -95,7 +95,7 @@ function user_registrationpassword_form_user_admin_settings_alter(&$form, FormSt
   // Render email template settings.
   $form['email_user_registrationpassword'] = [
     '#type' => 'details',
-    '#title' => t('Welcome (no approval required, password is set)'),
+    '#title' => t('Welcome (confirmation)'),
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
     '#description' => t('Edit the welcome email messages sent to new members upon registering, when no administrator approval is required and password has already been set.') . ' ' . $email_token_help,
@@ -113,6 +113,28 @@ function user_registrationpassword_form_user_admin_settings_alter(&$form, FormSt
     '#default_value' => $mail_config->get('register_confirmation_with_pass.body'),
     '#rows' => 15,
   ];
+  
+  // Admin create user without confirmation (user enabled).
+  $form['email_user_registrationpassword_admin'] = [
+    '#type' => 'details',
+    '#title' => t('Welcome (confirmation) (created by administrator)'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#description' => t('Edit the welcome email messages sent to new members upon registering, when no administrator approval is required and password has already been set.') . ' ' . $email_token_help,
+    '#group' => 'email',
+  ];
+  $form['email_user_registrationpassword_admin']['user_registrationpassword_register_confirmation_admin_created_subject'] = [
+    '#type' => 'textfield',
+    '#title' => t('Subject'),
+    '#default_value' => $mail_config->get('register_confirmation_admin_created.subject'),
+    '#maxlength' => 180,
+  ];
+  $form['email_user_registrationpassword_admin']['user_registrationpassword_register_confirmation_admin_created_body'] = [
+    '#type' => 'textarea',
+    '#title' => t('Body'),
+    '#default_value' => $mail_config->get('register_confirmation_admin_created.body'),
+    '#rows' => 15,
+  ];
 
   // Reorder the form items back to their original order.
   $form['anonymous_settings']['#weight'] = -2;
@@ -217,6 +239,10 @@ function user_registrationpassword_admin_settings_submit(&$form, FormStateInterf
   $mail_config
     ->set('register_confirmation_with_pass.subject', $form_state->getValue('user_registrationpassword_register_confirmation_with_pass_subject'))
     ->set('register_confirmation_with_pass.body', $form_state->getValue('user_registrationpassword_register_confirmation_with_pass_body'));
+    
+  $mail_config
+    ->set('register_confirmation_admin_created.subject', $form_state->getValue('user_registrationpassword_register_confirmation_admin_created_subject'))
+    ->set('register_confirmation_admin_created.body', $form_state->getValue('user_registrationpassword_register_confirmation_admin_created_body'));
 
   // Save or revert expiration limits variables.
   $config
@@ -257,6 +283,9 @@ function user_registrationpassword_module_implements_alter(&$implementations, $h
 function user_registrationpassword_form_user_register_form_alter(&$form, FormStateInterface $form_state, $form_id) {
   /** @var \Drupal\user\UserInterface $account */
   $account = $form_state->getFormObject()->getEntity();
+  // Do not use the core access check result that's stored in the form.
+  $admin = $account->access('create');
+  // Load configs.
   $user_config = \Drupal::config('user.settings');
   $config = \Drupal::configFactory()->get('user_registrationpassword.settings');
 
@@ -275,28 +304,68 @@ function user_registrationpassword_form_user_register_form_alter(&$form, FormSta
     $form['actions']['submit']['#submit'][] = 'user_registrationpassword_form_user_register_set_password';
   }
 
-  // Prevent this from being run if approval with password on registration
-  // form is set and the user is an anonymous user registering to the site.
-  // When admin users create a user, this does not need to be executed.
-  // And when this also does not need to be executed 'user_register' is not set
-  // as 'Visitors can create accounts and no administrator approval is
-  // required.' User registers, receives user_registrationpass email, would
-  // not make sense. Cause that will unblock the user Without
-  // the admin 'approving'.
+  // If this is a new user and the module is set up to function correctly.
   if ($user_config->get('register') == UserInterface::REGISTER_VISITORS
       && $config->get('registration') == UserRegistrationPassword::VERIFICATION_PASS
       && $account->isNew()) {
-    // Set the user account to blocked.
-    $form['account']['status']['#default_value'] = 0;
+
+    // Add the 'administer_users' element from core user if it does not exist.
+    if (!isset($form['administer_users'])) {
+      // Pass access information to the submit handler. Running an access check
+      // inside the submit function interferes with form processing and breaks
+      // hook_form_alter().
+      $form['administer_users'] = [
+        '#type' => 'value',
+        '#value' => $admin,
+      ];
+    }
+
+    if ($admin) {
+      // Drop access to the core notify widget.
+      $form['account']['notify']['#access'] = FALSE;
+      // Add our status comment.
+      $form['account']['status']['#description'] = t('When Status is set to Blocked and Notify the user is checked a confirmation email is sent to the user to confirm and enable their account.');
+      // This replaces the notify widget, so we can block anything core sends.
+      $form['account']['notifyregister'] = [
+        '#type' => 'checkbox',
+        '#title' => t('Notify user of new account'),
+        '#access' => $admin,
+      ];
+      // Register our validation handler.
+      $form['#validate'][] = 'user_registrationpassword_form_user_register_validate';
+    }
+    else {
+      // Set the user account to blocked.
+      $form['account']['status']['#default_value'] = 0;
+    }
+
     // Suppress any notification.
     $form['account']['notify']['#default_value'] = 0;
-    // Register our validate and submit handlers.
+    // Register our submit handler.
     $form['actions']['submit']['#submit'][] = 'user_registrationpassword_form_user_register_submit';
   }
 }
 
 /**
- * Implements submission handler for the user registration form.
+ * Implements validation handler for the user registration form.
+ *
+ * @see user_registrationpassword_form_user_register_form_alter()
+ */
+function user_registrationpassword_form_user_register_validate(&$form, FormStateInterface $form_state) {
+  $admin = $form_state->getValue('administer_users');
+  $status = $form_state->getValue('status');
+  $notifyregister = !$form_state->isValueEmpty('notifyregister');
+  /** @var \Drupal\user\UserInterface $account */
+  $account = $form_state->getFormObject()->getEntity();
+  // If an admin creates an account - and it's set to enabled - and the admin
+  // checks the notifyregister checkbox we need to re-enable core notify.
+  if ($admin && $notifyregister && $status) {
+    $form_state->setValue('notify', TRUE);
+  }
+}
+
+/**
+ * Implements submit handler for the user registration form.
  *
  * @see user_register_form()
  * @see user_registrationpassword_form_user_register_form_alter()
@@ -317,28 +386,63 @@ function user_registrationpassword_form_user_register_set_password(&$form, FormS
  * @see user_registrationpassword_form_user_register_form_alter()
  */
 function user_registrationpassword_form_user_register_submit(&$form, FormStateInterface $form_state) {
+  $user_config = \Drupal::config('user.settings');
+  $config = \Drupal::configFactory()->get('user_registrationpassword.settings');
+  $admin = $form_state->getValue('administer_users');
+
+  /** @var \Drupal\user\UserInterface $account */
+  $account = $form_state->getFormObject()->getEntity();
+
+  // Test if this is run by an admin.
+  $admin_create = $account->access('create');
+
+  $notify = !$form_state->isValueEmpty('notify');
+
+  if ($admin_create && $notify) {
+    // No need to do anything when core notify is set while admin creates.
+    // Notify: true is set by the validation handler when an admin creates an
+    // account in state: enabled.
+    return;
+  }
+
+  $params['account'] = $account;
+
   // Define the message we need to remove.
-  // Yes, this throws a code style error, but this is in core.
-  // See user.module, that string contains a <br />.
-  $message = t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your email address.');
-
-  // Unset all messages that contain the $message.
-  $messenger = \Drupal::messenger();
-  // Cannot delete a single message, getting all and re-setting but the
-  // one from the core user register form.
-  foreach ($messenger->deleteByType(MessengerInterface::TYPE_STATUS) as $statusmessage) {
-    if (!((string) $message == (string) $statusmessage)) {
-      $messenger->addStatus($statusmessage);
+  if (!$admin_create) {
+    $message = t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your email address.');
+  }
+  elseif ($admin_create) {
+    $notifyregister = !$form_state->isValueEmpty('notifyregister');
+    // If notifyregister is checked and the account is disabled.
+    if ($notifyregister && !$account->isActive()) {
+      $message = t('Created a new user account for <a href=":url">%name</a>. No email has been sent.', [':url' => $account->toUrl()->toString(), '%name' => $account->getAccountName()]);
     }
   }
+ 
+  if (isset($message)) {
+    // Unset all messages that contain the $message.
+    $messenger = \Drupal::messenger();
+    // Cannot delete a single message, getting all and re-setting but the
+    // one from the core user register form.
+    foreach ($messenger->deleteByType(MessengerInterface::TYPE_STATUS) as $statusmessage) {
+      if (!((string) $message == (string) $statusmessage)) {
+        $messenger->addStatus($statusmessage);
+      }
+     }
+   }
 
   // Notify the user.
-  /** @var \Drupal\user\UserInterface $account */
-  $account = $form_state->getFormObject()->getEntity();
-  // Send the confirmation email.
-  _user_registrationpassword_mail_notify('register_confirmation_with_pass', $account);
-  // Set success message and redirect to the front page.
-  \Drupal::messenger()->addMessage(t('A welcome message with further instructions has been sent to your email address.'));
+  if ($admin_create) {
+    if ($notifyregister && !$account->isActive()) {
+      _user_registrationpassword_mail_notify('register_confirmation_admin_created', $account);
+      \Drupal::service('messenger')->addStatus(t('A welcome message with further instructions has been emailed to the new user <a href=":url">%name</a>.', [':url' => $account->toUrl()->toString(), '%name' => $account->getAccountName()]));
+    }
+  }
+  else {
+    // Send the confirmation mail to the user.
+    _user_registrationpassword_mail_notify('register_confirmation_with_pass', $account);
+    \Drupal::service('messenger')->addMessage(t('A welcome message with further instructions has been sent to your email address.'));
+  }
 }
 
 /**
@@ -567,7 +671,7 @@ function _user_registrationpassword_user_pass_submit(&$form, FormStateInterface
     }
   }
   else {
-    // If we found no errors execute core submission handler.
+    // If we found no errors execute core submit handler.
     // Obviously cache is disabled on this pages, so this should work.
     if (empty($_SESSION['messages']['error'])) {
       $core_submit = new UserPasswordForm(\Drupal::entityTypeManager()->getStorage('user'), \Drupal::languageManager(), \Drupal::configFactory(), \Drupal::flood(), \Drupal::typedDataManager(), \Drupal::service('email.validator'));
