diff --git a/src/LingotekConfigTranslationService.php b/src/LingotekConfigTranslationService.php
index 066a690..1133bbe 100644
--- a/src/LingotekConfigTranslationService.php
+++ b/src/LingotekConfigTranslationService.php
@@ -258,6 +258,11 @@ class LingotekConfigTranslationService implements LingotekConfigTranslationServi
 
     foreach ($target_languages as $langcode => $language) {
       if ($langcode != $entity_langcode && $current_status = $this->getTargetStatus($entity, $langcode)) {
+        if ($current_status === Lingotek::STATUS_PENDING && $status === Lingotek::STATUS_REQUEST) {
+          // Don't allow to pass from pending to request. We have been already
+          // requested this one.
+          continue;
+        }
         if ($current_status != Lingotek::STATUS_EDITED && $current_status !== Lingotek::STATUS_CURRENT) {
           $this->setTargetStatus($entity, $langcode, $status);
         }
@@ -680,6 +685,11 @@ class LingotekConfigTranslationService implements LingotekConfigTranslationServi
 
     foreach ($target_languages as $langcode => $language) {
       if ($langcode != $entity_langcode && $current_status = $this->getConfigTargetStatus($mapper, $langcode)) {
+        if ($current_status === Lingotek::STATUS_PENDING && $status === Lingotek::STATUS_REQUEST) {
+          // Don't allow to pass from pending to request. We have been already
+          // requested this one.
+          continue;
+        }
         if ($current_status != Lingotek::STATUS_EDITED && $current_status !== Lingotek::STATUS_CURRENT) {
           $this->setConfigTargetStatus($mapper, $langcode, $status);
         }
diff --git a/src/LingotekContentTranslationService.php b/src/LingotekContentTranslationService.php
index d3bbfc1..8f4f453 100644
--- a/src/LingotekContentTranslationService.php
+++ b/src/LingotekContentTranslationService.php
@@ -138,15 +138,17 @@ class LingotekContentTranslationService implements LingotekContentTranslationSer
       $current_status = $value->value;
       $locale = $this->languageLocaleMapper->getLocaleForLangcode($langcode);
       $document_id = $this->getDocumentId($entity);
-      if ($current_status == Lingotek::STATUS_PENDING || $current_status == Lingotek::STATUS_EDITED) {
-        if ($this->lingotek->getDocumentTranslationStatus($document_id, $locale) ||
+      if ($langcode !== $entity->getUntranslated()->language()->getId()) {
+        if ($current_status == Lingotek::STATUS_PENDING || $current_status == Lingotek::STATUS_EDITED) {
+          if ($this->lingotek->getDocumentTranslationStatus($document_id, $locale) ||
             // We may not be ready, but some phases must be complete. Let's try to
             // download data, and if there is anything, we can assume a phase is
             // completed.
             // ToDo: Instead of downloading would be nice if we could check phases.
             $this->lingotek->downloadDocument($document_id, $locale)) {
-          $current_status = Lingotek::STATUS_READY;
-          $this->setTargetStatus($entity, $langcode, $current_status);
+            $current_status = Lingotek::STATUS_READY;
+            $this->setTargetStatus($entity, $langcode, $current_status);
+          }
         }
       }
     }
@@ -216,8 +218,13 @@ class LingotekContentTranslationService implements LingotekContentTranslationSer
     $target_languages = $this->languageManager->getLanguages();
     $entity_langcode = $entity->getUntranslated()->language()->getId();
 
-    foreach($target_languages as $langcode => $language) {
+    foreach ($target_languages as $langcode => $language) {
       if ($langcode != $entity_langcode && $current_status = $this->getTargetStatus($entity, $langcode)) {
+        if ($current_status === Lingotek::STATUS_PENDING && $status === Lingotek::STATUS_REQUEST) {
+          // Don't allow to pass from pending to request. We have been already
+          // requested this one.
+          continue;
+        }
         if ($current_status != Lingotek::STATUS_EDITED && $current_status !== Lingotek::STATUS_CURRENT) {
           $this->setTargetStatus($entity, $langcode, $status);
         }
diff --git a/src/Tests/LingotekContentTypeBulkTranslationTest.php b/src/Tests/LingotekContentTypeBulkTranslationTest.php
index 2001929..ca3223b 100644
--- a/src/Tests/LingotekContentTypeBulkTranslationTest.php
+++ b/src/Tests/LingotekContentTypeBulkTranslationTest.php
@@ -257,6 +257,10 @@ class LingotekContentTypeBulkTranslationTest extends LingotekTestBase {
     // no translations.
     ConfigurableLanguage::createFromLangcode('eu')->setThirdPartySetting('lingotek', 'locale', 'eu_ES')->save();
 
+    // Add a language so we can check that it's not marked as for requesting if
+    // it was already requested.
+    ConfigurableLanguage::createFromLangcode('ko')->setThirdPartySetting('lingotek', 'locale', 'ko_KR')->save();
+
     // Edit the object
     $this->drupalPostForm('/admin/structure/types/manage/article', ['name' => 'Article EDITED'], t('Save content type'));
 
@@ -274,6 +278,10 @@ class LingotekContentTypeBulkTranslationTest extends LingotekTestBase {
     $eu_request = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-request')  and contains(text(), 'EU')]");
     $this->assertEqual(count($eu_request), 1, 'Vasque is ready for request.');
 
+    // Request korean, with outdated content available.
+    $this->clickLink('KO');
+    $this->assertText("Translation to ko_KR requested successfully");
+
     // Reupload the content.
     $this->clickLink('English');
     $this->assertText('Article EDITED has been updated.');
@@ -282,6 +290,10 @@ class LingotekContentTypeBulkTranslationTest extends LingotekTestBase {
     $this->clickLink('English');
     $this->assertText('Article EDITED status checked successfully');
 
+    // Korean should still be marked as requested, so we can check target.
+    $status = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-pending')  and contains(text(), 'KO')]");
+    $this->assertEqual(count($status), 1, 'Korean is still requested, so we can still check the progress status of the translation');
+
     // Check the translation after having been edited.
     $this->clickLink('ES');
     $this->assertText("Translation to es_MX status checked successfully");
diff --git a/src/Tests/LingotekFieldBodyBulkTranslationTest.php b/src/Tests/LingotekFieldBodyBulkTranslationTest.php
index 4d3c5c0..1016f0c 100644
--- a/src/Tests/LingotekFieldBodyBulkTranslationTest.php
+++ b/src/Tests/LingotekFieldBodyBulkTranslationTest.php
@@ -238,6 +238,10 @@ class LingotekFieldBodyBulkTranslationTest extends LingotekTestBase {
     // no translations.
     ConfigurableLanguage::createFromLangcode('eu')->setThirdPartySetting('lingotek', 'locale', 'eu_ES')->save();
 
+    // Add a language so we can check that it's not marked as for requesting if
+    // it was already requested.
+    ConfigurableLanguage::createFromLangcode('ko')->setThirdPartySetting('lingotek', 'locale', 'ko_KR')->save();
+
     // Edit the object
     $this->drupalPostForm('/admin/structure/types/manage/article/fields/node.article.body', ['label' => 'Body EDITED'], t('Save settings'));
 
@@ -255,6 +259,10 @@ class LingotekFieldBodyBulkTranslationTest extends LingotekTestBase {
     $eu_request = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-request')  and contains(text(), 'EU')]");
     $this->assertEqual(count($eu_request), 1, 'Vasque is ready for request.');
 
+    // Request korean, with outdated content available.
+    $this->clickLink('KO');
+    $this->assertText("Translation to ko_KR requested successfully");
+
     // Reupload the content.
     $this->clickLink('English');
     $this->assertText('Body EDITED has been updated.');
@@ -263,6 +271,10 @@ class LingotekFieldBodyBulkTranslationTest extends LingotekTestBase {
     $this->clickLink('English');
     $this->assertText('Body EDITED status checked successfully');
 
+    // Korean should still be marked as requested, so we can check target.
+    $status = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-pending')  and contains(text(), 'KO')]");
+    $this->assertEqual(count($status), 1, 'Korean is still requested, so we can still check the progress status of the translation');
+
     // Check the translation after having been edited.
     $this->clickLink('ES');
     $this->assertText("Translation to es_MX status checked successfully");
diff --git a/src/Tests/LingotekNodeBulkTranslationTest.php b/src/Tests/LingotekNodeBulkTranslationTest.php
index aebee97..c7883da 100644
--- a/src/Tests/LingotekNodeBulkTranslationTest.php
+++ b/src/Tests/LingotekNodeBulkTranslationTest.php
@@ -453,6 +453,10 @@ class LingotekNodeBulkTranslationTest extends LingotekTestBase {
     // no translations.
     ConfigurableLanguage::createFromLangcode('eu')->setThirdPartySetting('lingotek', 'locale', 'eu_ES')->save();
 
+    // Add a language so we can check that it's not marked as for requesting if
+    // it was already requested.
+    ConfigurableLanguage::createFromLangcode('ko')->setThirdPartySetting('lingotek', 'locale', 'ko_KR')->save();
+
     // Edit the node.
     $edit = array();
     $edit['title[0][value]'] = 'Llamas are cool EDITED';
@@ -474,14 +478,26 @@ class LingotekNodeBulkTranslationTest extends LingotekTestBase {
     $eu_request = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-request')  and contains(text(), 'EU')]");
     $this->assertEqual(count($eu_request), 1, 'Vasque is ready for request.');
 
+    // Request korean, with outdated content available.
+    $this->clickLink('KO');
+    $this->assertText("Locale 'ko_KR' was added as a translation target for node Llamas are cool EDITED.");
+
     // Reupload the content.
     $this->clickLink('English');
     $this->assertText('Node Llamas are cool EDITED has been updated.');
 
+    // Korean should be marked as requested, so we can check target.
+    $status = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-pending')  and contains(text(), 'KO')]");
+    $this->assertEqual(count($status), 1, 'Korean is requested, so we can still check the progress status of the translation');
+
     // Recheck status.
     $this->clickLink('English');
     $this->assertText('The import for node Llamas are cool EDITED is complete.');
 
+    // Korean should still be marked as requested, so we can check target.
+    $status = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-pending')  and contains(text(), 'KO')]");
+    $this->assertEqual(count($status), 1, 'Korean is still requested, so we can still check the progress status of the translation');
+
     // Check the translation after having been edited.
     $this->clickLink('ES');
     $this->assertText("The es_MX translation for node Llamas are cool EDITED is ready for download.");
diff --git a/src/Tests/LingotekSystemSiteBulkTranslationTest.php b/src/Tests/LingotekSystemSiteBulkTranslationTest.php
index 347ef8b..33782d5 100644
--- a/src/Tests/LingotekSystemSiteBulkTranslationTest.php
+++ b/src/Tests/LingotekSystemSiteBulkTranslationTest.php
@@ -164,6 +164,10 @@ class LingotekSystemSiteBulkTranslationTest extends LingotekTestBase {
     // no translations.
     ConfigurableLanguage::createFromLangcode('eu')->setThirdPartySetting('lingotek', 'locale', 'eu_ES')->save();
 
+    // Add a language so we can check that it's not marked as for requesting if
+    // it was already requested.
+    ConfigurableLanguage::createFromLangcode('ko')->setThirdPartySetting('lingotek', 'locale', 'ko_KR')->save();
+
     // Edit the object
     $this->drupalPostForm('/admin/config/system/site-information', ['site_name' => 'My site'], t('Save configuration'));
 
@@ -181,10 +185,18 @@ class LingotekSystemSiteBulkTranslationTest extends LingotekTestBase {
     $eu_request = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-request')  and contains(text(), 'EU')]");
     $this->assertEqual(count($eu_request), 1, 'Vasque is ready for request.');
 
+    // Request korean, with outdated content available.
+    $this->clickLink('KO');
+    $this->assertText("Translation to ko_KR requested successfully");
+
     // Reupload the content.
     $this->clickLink('English', 1);
     $this->assertText('System information has been updated.');
 
+    // Korean should be marked as requested, so we can check target.
+    $status = $this->xpath("//a[contains(@class,'language-icon') and contains(@class, 'target-pending')  and contains(text(), 'KO')]");
+    $this->assertEqual(count($status), 1, 'Korean is requested, so we can still check the progress status of the translation');
+
     // Recheck status.
     $this->clickLink('English', 1);
     $this->assertText('System information status checked successfully');
