diff --git a/plugins/FeedsEntityProcessor.inc b/plugins/FeedsEntityProcessor.inc
index 5125c94..3772d00 100644
--- a/plugins/FeedsEntityProcessor.inc
+++ b/plugins/FeedsEntityProcessor.inc
@@ -134,6 +134,7 @@ class FeedsEntityProcessor extends FeedsProcessor {
       'update_non_existent' => FEEDS_SKIP_NON_EXISTENT,
       'input_format' => NULL,
       'skip_hash_check' => FALSE,
+      'guid_unique_per_feed' => TRUE,
       'bundle' => NULL,
       'values' => array(),
     );
diff --git a/plugins/FeedsProcessor.inc b/plugins/FeedsProcessor.inc
index e67a244..b73ea9d 100644
--- a/plugins/FeedsProcessor.inc
+++ b/plugins/FeedsProcessor.inc
@@ -702,6 +702,7 @@ abstract class FeedsProcessor extends FeedsPlugin {
       'update_non_existent' => FEEDS_SKIP_NON_EXISTENT,
       'input_format' => NULL,
       'skip_hash_check' => FALSE,
+      'guid_unique_per_feed' => TRUE,
       'bundle' => $bundle,
     );
   }
@@ -754,6 +755,14 @@ abstract class FeedsProcessor extends FeedsPlugin {
       '#description' => t('Force update of items even if item source data did not change.'),
       '#default_value' => $this->config['skip_hash_check'],
     );
+
+    $form['guid_unique_per_feed'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('GUID is unique per Feed source'),
+      '#description' => t('GUID in Feeds module is unique per feed source by default, however in some situations it may be useful to consider the GUID globally unique so as to be able to update the same entity using more than one feed importer.'),
+      '#default_value' => $this->config['guid_unique_per_feed'],
+    );
+
     $form['input_format'] = array(
       '#type' => 'select',
       '#title' => t('Text format'),
@@ -861,14 +870,18 @@ abstract class FeedsProcessor extends FeedsPlugin {
     // the database.
     foreach ($this->uniqueTargets($source, $result) as $target => $value) {
       if ($target === 'guid' || $target === 'url') {
-        $entity_id = db_select('feeds_item')
+        $select = db_select('feeds_item')
           ->fields('feeds_item', array('entity_id'))
-          ->condition('feed_nid', $source->feed_nid)
           ->condition('entity_type', $this->entityType())
-          ->condition('id', $source->id)
-          ->condition($target, $value)
-          ->execute()
-          ->fetchField();
+          ->condition($target, $value);
+
+        // GUID is unique per Feed Source.
+        if ($this->config['guid_unique_per_feed']) {
+          $select->condition('feed_nid', $source->feed_nid)
+            ->condition('id', $source->id);
+        }
+
+        $entity_id = $select->execute()->fetchField();
       }
 
       if (!$entity_id && !empty($targets[$this->id][$target]['unique_callbacks'])) {
diff --git a/tests/feeds_mapper_unique.test b/tests/feeds_mapper_unique.test
index 46b48dd..3191f73 100644
--- a/tests/feeds_mapper_unique.test
+++ b/tests/feeds_mapper_unique.test
@@ -74,4 +74,91 @@ class FeedsMapperUniqueTestCase extends FeedsMapperTestCase {
     $this->assertEqual('Lorem ipsum', $node2->title, 'Node 2 has the expected title.');
   }
 
+  /**
+   * Test processor setting "guid_unique_per_feed".
+   */
+  public function testGUIDGlobalUnique() {
+    // Create content type.
+    $typename = $this->createContentType(array(), array('alpha' => 'text'));
+
+    // Create and configure first importer.
+    $this->createImporterConfiguration('Syndication', 'syndication');
+    $this->setSettings('syndication', 'FeedsNodeProcessor', array('bundle' => $typename, 'update_existing' => 2));
+    $this->addMappings('syndication', array(
+      0 => array(
+        'source' => 'guid',
+        'target' => 'guid',
+        'unique' => TRUE,
+      ),
+      1 => array(
+        'source' => 'title',
+        'target' => 'title',
+      ),
+    ));
+
+    // Create and configure second importer.
+    $this->createImporterConfiguration('Syndication2', 'syndication2');
+    $this->setSettings('syndication2', 'FeedsNodeProcessor', array('bundle' => $typename, 'update_existing' => 2));
+    $this->addMappings('syndication2', array(
+      0 => array(
+        'source' => 'guid',
+        'target' => 'guid',
+        'unique' => TRUE,
+      ),
+      1 => array(
+        'source' => 'title',
+        'target' => 'title',
+      ),
+    ));
+
+    // Run import.
+    $this->importURL('syndication', $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed.rss2');
+
+    // Assert 10 items created.
+    $this->assertText('Created 10 nodes.');
+    $this->assertEqual(10, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+
+    $this->importURL('syndication2', $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed_changes.rss2');
+
+    // Assert 10 items created and 20 items now exist.
+    $this->assertText('Created 10 nodes.');
+    $this->assertEqual(20, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+
+    // Now delete all syndication items.
+    $this->drupalPost('import/syndication/delete-items', array(), 'Delete');
+    $this->assertText('Deleted 10 nodes');
+    $this->assertEqual(10, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+
+    // Change unique per feed to be unique globally.
+    $this->setSettings('syndication', 'FeedsNodeProcessor', array('guid_unique_per_feed' => FALSE));
+
+    // Now we should only change 2 nodes.
+    $this->importURL('syndication', $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed.rss2');
+    $this->assertText('Updated 2 nodes.');
+
+    // Now when we delete them we should only delete the nodes we updated.
+    $this->drupalPost('import/syndication/delete-items', array(), 'Delete');
+    $this->assertText('Deleted 2 nodes');
+    $this->assertEqual(8, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+
+    // So there are only 8 nodes now in syndication2.
+    // So when we import we should only create 2.
+    $this->setSettings('syndication2', 'FeedsNodeProcessor', array('guid_unique_per_feed' => FALSE));
+    $this->importURL('syndication', $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed.rss2');
+    $this->assertText('Created 2 nodes.');
+    $this->assertEqual(10, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+
+    // Import syndication2 to regain control of all imported nodes
+    $this->importURL('syndication2', $GLOBALS['base_url'] . '/' . drupal_get_path('module', 'feeds') . '/tests/feeds/developmentseed_changes.rss2');
+
+    // Now syndication will have no imported nodes.
+    $this->drupalPost('import/syndication/delete-items', array(), 'Delete');
+    $this->assertText('There are no Nodes to be deleted.');
+
+    // Now syndication2 will delete all 10 nodes.
+    $this->drupalPost('import/syndication2/delete-items', array(), 'Delete');
+    $this->assertText('Deleted 10 nodes');
+    $this->assertEqual(0, db_query("SELECT COUNT(*) FROM {node}")->fetchField());
+  }
+
 }
