diff --git a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
index 816a842..1fcdcaf 100644
--- a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
+++ b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
@@ -181,7 +181,6 @@ class ContentEntitySource extends SourcePluginBase {
 
     $data = $job_item->getData();
     $this->doSaveTranslations($entity, $data, $job->getTargetLangcode());
-    $job_item->accepted();
     return TRUE;
   }
 
diff --git a/sources/locale/src/Plugin/tmgmt/Source/LocaleSource.php b/sources/locale/src/Plugin/tmgmt/Source/LocaleSource.php
index 3efd175..9a65b00 100644
--- a/sources/locale/src/Plugin/tmgmt/Source/LocaleSource.php
+++ b/sources/locale/src/Plugin/tmgmt/Source/LocaleSource.php
@@ -223,7 +223,6 @@ class LocaleSource extends SourcePluginBase {
       // Update the locale string in the system.
       // @todo: Send error message to user if update fails.
       if ($this->updateTranslation($job_item->getItemId(), $job->getTargetLangcode(), $translation)) {
-        $job_item->accepted();
         return TRUE;
       }
     }
diff --git a/src/Entity/JobItem.php b/src/Entity/JobItem.php
index ff9555d..dbbab3d 100644
--- a/src/Entity/JobItem.php
+++ b/src/Entity/JobItem.php
@@ -750,13 +750,16 @@ class JobItem extends ContentEntityBase implements JobItemInterface {
    * {@inheritdoc}
    */
   public function acceptTranslation() {
-    if (!$this->isNeedsReview() || !$plugin = $this->getSourcePlugin()) {
-      return FALSE;
+    if ($this->isNeedsReview() && $plugin = $this->getSourcePlugin()) {
+      // We don't know if the source plugin was able to save the translation
+      // after this point. That means that the plugin has to set the 'accepted'
+      // states on its own.
+      if ($plugin->saveTranslation($this)) {
+        $this->accepted();
+        return TRUE;
+      }
     }
-    // We don't know if the source plugin was able to save the translation after
-    // this point. That means that the plugin has to set the 'accepted' states
-    // on its own.
-    $plugin->saveTranslation($this);
+    return FALSE;
   }
 
   /**
diff --git a/tmgmt_test/src/Plugin/tmgmt/Source/TestSource.php b/tmgmt_test/src/Plugin/tmgmt/Source/TestSource.php
index 047c031..9b66696 100644
--- a/tmgmt_test/src/Plugin/tmgmt/Source/TestSource.php
+++ b/tmgmt_test/src/Plugin/tmgmt/Source/TestSource.php
@@ -105,7 +105,6 @@ class TestSource extends SourcePluginBase {
   public function saveTranslation(JobItemInterface $job_item) {
     // Set a variable that can be checked later for a given job item.
     \Drupal::state()->set('tmgmt_test_saved_translation_' . $job_item->getItemType() . '_' . $job_item->getItemId(), $job_item->getData());
-    $job_item->accepted();
     return TRUE;
   }
 
