diff --git a/plugins/FeedsUserProcessor.inc b/plugins/FeedsUserProcessor.inc
index d01db43..dc939e1 100644
--- a/plugins/FeedsUserProcessor.inc
+++ b/plugins/FeedsUserProcessor.inc
@@ -54,6 +54,19 @@ class FeedsUserProcessor extends FeedsProcessor {
     if (empty($account->name) || empty($account->mail) || !valid_email_address($account->mail)) {
       throw new FeedsValidationException(t('User name missing or email not valid.'));
     }
+
+    if (!empty($uid)) {
+      $account->uid = $uid;
+    }
+
+    // If uid is set and a user with that id doesn't exist, flag as new.
+    if (!empty($account->uid) && !user_load($account->uid)) {
+      $account->is_new = TRUE;
+    }
+    else{
+      $account->is_new = FALSE;
+      throw new FeedsValidationException(t($account->uid . ' UID already exists'));
+    }
   }
 
   /**
@@ -158,20 +171,25 @@ class FeedsUserProcessor extends FeedsProcessor {
   public function getMappingTargets() {
     $targets = parent::getMappingTargets();
     $targets += array(
+      'uid' => array(
+        'name' => t('User ID'),
+        'description' => t('The user ID. NOTE: use this feature with care, user IDs are usually assigned by Drupal.'),
+        'optional_unique' => TRUE,
+      ),
       'name' => array(
         'name' => t('User name'),
         'description' => t('Name of the user.'),
         'optional_unique' => TRUE,
-       ),
+      ),
       'mail' => array(
         'name' => t('Email address'),
         'description' => t('Email address of the user.'),
         'optional_unique' => TRUE,
-       ),
+      ),
       'created' => array(
         'name' => t('Created date'),
         'description' => t('The created (e. g. joined) data of the user.'),
-       ),
+      ),
       'pass' => array(
         'name' => t('Unencrypted Password'),
         'description' => t('The unencrypted user password.'),
@@ -190,7 +208,7 @@ class FeedsUserProcessor extends FeedsProcessor {
         'name' => t('OpenID identifier'),
         'description' => t('The OpenID identifier of the user. <strong>CAUTION:</strong> Use only for migration purposes, misconfiguration of the OpenID identifier can lead to severe security breaches like users gaining access to accounts other than their own.'),
         'optional_unique' => TRUE,
-       );
+      );
     }
 
     // Let other modules expose mapping targets.
