diff --git a/src/Controller/TrashDeleteController.php b/src/Controller/TrashDeleteController.php
index f0966249a3d5df6d276300263b3ef6564d4c7af3..5b7d7b7a2ea655990f00c21e8ef5108d81ca2ae4 100644
--- a/src/Controller/TrashDeleteController.php
+++ b/src/Controller/TrashDeleteController.php
@@ -9,6 +9,7 @@ use Drupal\Core\Entity\EntityFormBuilderInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Url;
+use Drupal\trash\TrashManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -44,6 +45,13 @@ class TrashDeleteController extends ControllerBase {
    */
   protected $entityFormBuilder;
 
+  /**
+   * The Trash Manager service.
+   *
+   * @var \Drupal\trash\TrashManagerInterface
+   */
+  protected $trashManager;
+
   /**
    * Constructs a new TrashDeleteController object.
    *
@@ -55,12 +63,15 @@ class TrashDeleteController extends ControllerBase {
    *   The Content Moderation moderation information service.
    * @param \Drupal\Core\Entity\EntityFormBuilderInterface $entity_form_builder
    *   The Entity Form Builder service.
+   * @param \Drupal\trash\TrashManagerInterface $trash_manager
+   *   The Trash Manager service.
    */
-  public function __construct(RouteMatchInterface $route_match, EntityTypeManagerInterface $entity_type_manager, ModerationInformationInterface $moderation_information, EntityFormBuilderInterface $entity_form_builder) {
+  public function __construct(RouteMatchInterface $route_match, EntityTypeManagerInterface $entity_type_manager, ModerationInformationInterface $moderation_information, EntityFormBuilderInterface $entity_form_builder, TrashManagerInterface $trash_manager) {
     $this->routeMatch = $route_match;
     $this->entityTypeManager = $entity_type_manager;
     $this->moderationInformation = $moderation_information;
     $this->entityFormBuilder = $entity_form_builder;
+    $this->trashManager = $trash_manager;
   }
 
   /**
@@ -71,7 +82,8 @@ class TrashDeleteController extends ControllerBase {
       $container->get('current_route_match'),
       $container->get('entity_type.manager'),
       $container->get('content_moderation.moderation_information'),
-      $container->get('entity.form_builder')
+      $container->get('entity.form_builder'),
+      $container->get('trash.manager')
     );
   }
 
@@ -84,18 +96,17 @@ class TrashDeleteController extends ControllerBase {
    */
   public function trashEntity() {
     $parameters = $this->routeMatch->getParameters()->all();
-
     $entities = array_filter($parameters, function ($parameter) {
       return $parameter instanceof ContentEntityInterface;
     });
     $entity = reset($entities);
 
+    // Return the entity delete form for non-moderated entities.
     if (!$this->moderationInformation->isModeratedEntity($entity)) {
       return $this->entityFormBuilder->getForm($entity, 'delete');
     }
 
-    $entity->get('moderation_state')->target_id = 'archived';
-    if ($entity->save()) {
+    if ($this->trashManager->trash($entity)) {
       drupal_set_message($this->t('The @entity %label has been moved to the trash. <a href=":undo-page">Undo</a>', [
         '@entity' => $entity->getEntityType()
           ->getLabel(),
@@ -105,7 +116,6 @@ class TrashDeleteController extends ControllerBase {
           'entity_id' => $entity->id(),
         ])->toString(),
       ]));
-
     }
 
     return $this->redirect($this->getRedirectUrl($entity)
diff --git a/src/TrashManager.php b/src/TrashManager.php
index b2a18a31847ff04f7183f0a98ac56490aa16e948..729d25be9dfe6e310dbc9476dc1b9634e2cec0a5 100644
--- a/src/TrashManager.php
+++ b/src/TrashManager.php
@@ -4,4 +4,12 @@ namespace Drupal\trash;
 
 class TrashManager implements TrashManagerInterface {
 
+  /**
+   * {@inheritdoc}
+   */
+  public function trash($entity) {
+    $entity->set('moderation_state', 'archived');
+    return (bool) $entity->save();
+  }
+
 }
diff --git a/src/TrashManagerInterface.php b/src/TrashManagerInterface.php
index e16ec7b30eb10e4982021dfe709c1c5b23a832aa..374651cfd1628a06e424cccae098f33e1f04338a 100644
--- a/src/TrashManagerInterface.php
+++ b/src/TrashManagerInterface.php
@@ -4,4 +4,11 @@ namespace Drupal\trash;
 
 interface TrashManagerInterface {
 
-}
\ No newline at end of file
+  /**
+   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   *
+   * @return bool
+   */
+  public function trash($entity);
+
+}