diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md
index 7b8e2b0a..a31cacc2 100644
--- a/docs/RELEASE-NOTES.md
+++ b/docs/RELEASE-NOTES.md
@@ -94,6 +94,7 @@ References
     # Unit test.
     php ../vendor/phpunit/phpunit/phpunit --printer="\Drupal\Tests\Listeners\HtmlOutputPrinter"  ../modules/sandbox/webform/tests/src/Unit/Utility/WebformYamlTest.php
 
+    php ../vendor/phpunit/phpunit/phpunit --printer="\Drupal\Tests\Listeners\HtmlOutputPrinter"  ../modules/sandbox/webform/tests/src/Unit/Access/WebformAccessCheckTest
 
 5. Generate release notes
 -------------------------
diff --git a/src/Access/WebformSubmissionAccess.php b/src/Access/WebformSubmissionAccess.php
index 72795c67..8b6f35b8 100644
--- a/src/Access/WebformSubmissionAccess.php
+++ b/src/Access/WebformSubmissionAccess.php
@@ -22,8 +22,7 @@ class WebformSubmissionAccess {
    *   The access result.
    */
   public static function checkWizardPagesAccess(WebformSubmissionInterface $webform_submission) {
-    return AccessResult::allowedIf($webform_submission->getWebform()
-      ->hasWizardPages());
+    return AccessResult::allowedIf($webform_submission->getWebform()->hasWizardPages());
   }
 
   /**
@@ -39,13 +38,8 @@ class WebformSubmissionAccess {
    */
   public static function checkResendAccess(WebformSubmissionInterface $webform_submission, AccountInterface $account) {
     $webform = $webform_submission->getWebform();
-    if ($webform->access('submission_update_any', $account)) {
-      $handlers = $webform->getHandlers();
-      foreach ($handlers as $handler) {
-        if ($handler instanceof WebformHandlerMessageInterface) {
-          return AccessResult::allowed();
-        }
-      }
+    if ($webform->access('submission_update_any', $account) && $webform->hasMessageHandler()) {
+      return AccessResult::allowed();
     }
     return AccessResult::forbidden();
   }
diff --git a/src/Entity/Webform.php b/src/Entity/Webform.php
index 0bc4d598..10fcb687 100644
--- a/src/Entity/Webform.php
+++ b/src/Entity/Webform.php
@@ -16,6 +16,7 @@ use Drupal\user\UserInterface;
 use Drupal\webform\Plugin\WebformElement\WebformActions;
 use Drupal\webform\Plugin\WebformElement\WebformManagedFileBase;
 use Drupal\webform\Plugin\WebformElement\WebformWizardPage;
+use Drupal\webform\Plugin\WebformHandlerMessageInterface;
 use Drupal\webform\Utility\WebformElementHelper;
 use Drupal\webform\Utility\WebformReflectionHelper;
 use Drupal\webform\Plugin\WebformHandlerInterface;
@@ -361,6 +362,13 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
    */
   protected $hasTranslations;
 
+  /**
+   * Track if the webform has message handler.
+   *
+   * @var bool
+   */
+  protected $hasMessagehandler;
+  
   /**
    * {@inheritdoc}
    */
@@ -1955,6 +1963,33 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
     return \Drupal::service('plugin.manager.webform.handler');
   }
 
+  /**
+   * Reset cached handler settings.
+   */
+  protected function resetHandlers() {
+    $this->hasMessageHandler = NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMessageHandler() {
+    if (isset($this->hasMessagehandler)) {
+      $this->hasMessagehandler;
+    }
+
+    $this->hasMessagehandler = FALSE;
+    $handlers = $this->getHandlers();
+    foreach ($handlers as $handler) {
+      if ($handler instanceof WebformHandlerMessageInterface) {
+        $this->hasMessagehandler = TRUE;
+        break;
+      }
+    }
+
+    return $this->hasMessagehandler;
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -2046,6 +2081,7 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
     $configuration = $handler->getConfiguration();
     $this->getHandlers()->addInstanceId($handler_id, $configuration);
     $this->save();
+    $this->resetHandlers();
     $handler->createHandler();
     return $this;
   }
@@ -2059,6 +2095,7 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
     $configuration = $handler->getConfiguration();
     $this->getHandlers()->setInstanceConfiguration($handler_id, $configuration);
     $this->save();
+    $this->resetHandlers();
     $handler->updateHandler();
     return $this;
   }
@@ -2071,6 +2108,7 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
     $this->getHandlers()->removeInstanceId($handler->getHandlerId());
     $handler->deleteHandler();
     $this->save();
+    $this->resetHandlers();
     return $this;
   }
 
diff --git a/src/WebformInterface.php b/src/WebformInterface.php
index e26d9368..3e7ab721 100644
--- a/src/WebformInterface.php
+++ b/src/WebformInterface.php
@@ -694,6 +694,14 @@ interface WebformInterface extends ConfigEntityInterface, EntityWithPluginCollec
    */
   public function deletePaths();
 
+  /**
+   * Determine if the webform has any message handlers.
+   *
+   * @return bool
+   *   TRUE if the webform has any message handlers.
+   */
+  public function hasMessageHandler();
+
   /**
    * Returns a specific webform handler.
    *
diff --git a/src/WebformSubmissionListBuilder.php b/src/WebformSubmissionListBuilder.php
index 71f99afc..82f7195b 100644
--- a/src/WebformSubmissionListBuilder.php
+++ b/src/WebformSubmissionListBuilder.php
@@ -604,6 +604,8 @@ class WebformSubmissionListBuilder extends EntityListBuilder {
    * {@inheritdoc}
    */
   public function getDefaultOperations(EntityInterface $entity) {
+    /** @var \Drupal\webform\WebformInterface $webform */
+    $webform = $entity->getWebform();
     $route_options = ['query' => \Drupal::destination()->getAsArray()];
 
     $operations = [];
@@ -630,11 +632,16 @@ class WebformSubmissionListBuilder extends EntityListBuilder {
         'weight' => 21,
         'url' => $this->requestHandler->getUrl($entity, $this->sourceEntity, 'webform_submission.notes_form', $route_options),
       ];
+    }
+
+    if ($webform->access('submission_update_any') && $webform->hasMessageHandler()) {
       $operations['resend'] = [
         'title' => $this->t('Resend'),
         'weight' => 22,
         'url' => $this->requestHandler->getUrl($entity, $this->sourceEntity, 'webform_submission.resend_form', $route_options),
       ];
+    }
+    if ($webform->access('submission_update_any')) {
       $operations['duplicate'] = [
         'title' => $this->t('Duplicate'),
         'weight' => 23,
diff --git a/tests/src/Unit/Access/WebformAccessCheckTest.php b/tests/src/Unit/Access/WebformAccessCheckTest.php
index 5aff512b..bf99006e 100644
--- a/tests/src/Unit/Access/WebformAccessCheckTest.php
+++ b/tests/src/Unit/Access/WebformAccessCheckTest.php
@@ -76,6 +76,9 @@ class WebformAccessCheckTest extends UnitTestCase {
       ->method('access')
       ->with('submission_update_any')
       ->will($this->returnValue(TRUE));
+    $email_webform->expects($this->any())
+      ->method('hasMessageHandler')
+      ->will($this->returnValue(TRUE));
 
     $webform_submission = $this->getMock('Drupal\webform\WebformSubmissionInterface');
     $webform_submission->expects($this->any())
