diff --git a/salesforce_api/salesforce_api.module b/salesforce_api/salesforce_api.module
index 9d44c1f..a9a60e5 100644
--- a/salesforce_api/salesforce_api.module
+++ b/salesforce_api/salesforce_api.module
@@ -1313,7 +1313,7 @@ function salesforce_api_get_updated($type, $start, $end) {
   }
   $sf = salesforce_api_connect();
   if ($sf) {
-    $response = $sf->client->getUpdated($type, $start, $end);
+    $response = $sf->client->getUpdated($type, (int)$start, (int)$end);
     if ($response->ids) {
       return $response;
     } else {
diff --git a/sf_import/sf_import.module b/sf_import/sf_import.module
index 3d9819d..7e00076 100644
--- a/sf_import/sf_import.module
+++ b/sf_import/sf_import.module
@@ -221,3 +221,67 @@ function sf_import_batchjob($fieldmap_key, $extra, &$context) {
   $context['sandbox']['position']++;
   $context['finished'] = $context['sandbox']['progress'] / $size;
 }
+
+/**
+ * Implements hook_cron().
+ */
+function sf_import_cron() {
+
+  $fieldmaps = salesforce_api_salesforce_field_map_load_all();
+  
+  // Get updated and/or deleted items for each fieldmap and store in sf_import_queue
+  // Start date is newest date of SFID stored in sf_import_queue, end date is time()
+  foreach ($fieldmaps as $map) {
+    if ($map->automatic == 0) {
+      break;
+    }
+    $sql = "SELECT time FROM {sf_import_queue} ORDER BY time DESC LIMIT 1";
+    $start = db_result(db_query($sql));
+    if (!$start) {
+      // If $start isn't set, then check when the import was last run
+      $start = variable_get('sf_import_queue_last_import', time() - 3600);
+    }
+    
+    if ($start - $end < 60) {
+      $start = $start - 60;
+    }
+    $end = time();
+    
+    // Set the time that the last import took place
+    variable_set('sf_import_queue_last_import', time());
+    
+    if ($updates = salesforce_api_get_updated($map->salesforce, $start, $end)) {
+      $update_sfids = $updates->ids;
+      foreach ($update_sfids as $sfid) {
+        $sql = "SELECT sfid FROM {sf_import_queue} WHERE sfid = '%s'";
+        $exists = db_result(db_query($sql, $sfid));
+        if (!$exists) {
+          $object->time = time();
+          $object->sfid = $sfid;
+          $object->fieldmap = $map->name;
+          $ret = drupal_write_record('sf_import_queue', $object);
+        }
+      } 
+    }
+  }
+
+  // Process sf_import_queue items
+  $sql = "SELECT sfid, fieldmap FROM {sf_import_queue}";
+  while ($sfids = db_fetch_object(db_query($sql))) {
+    $fieldmap = $sfids->fieldmap;
+    $type = $fieldmaps[$fieldmap]->drupal;
+    
+    // "node" mappings are like "node_contenttype".
+    // others are like "user", "uc_order", etc.
+    if (strpos($type, 'node_') === 0) {
+      $type = 'node';
+    }
+
+    $function = 'sf_' . $type . '_import';
+    $drupal_id = salesforce_api_get_id_with_sfid($sfids->sfid, $type);
+    if (function_exists($function)) {
+      $oid = $function($sfids->sfid, $sfids->fieldmap, $drupal_id);
+    }
+    db_query("DELETE FROM {sf_import_queue} WHERE sfid = '%s'", $sfids->sfid);
+  }
+}
diff --git a/sf_node/sf_node.module b/sf_node/sf_node.module
index 5a0dcd3..f8fa2a0 100644
--- a/sf_node/sf_node.module
+++ b/sf_node/sf_node.module
@@ -129,11 +129,8 @@ function sf_node_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
       $salesforce->name = $map->name;
 
       // Check if there is more than one fieldmap in the result.
-      if (user_access('administer salesforce') AND next($maps)) {
-        if (!empty($map->description)) {
-          $description = '(' . $map->description . ')';
-        }
-        drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used fieldmap !map_name @map_description.', array('!map_name' => l($map->name, SALESFORCE_PATH_FIELDMAPS . '/' . $map->name . '/edit'), '@map_description' => $description)), 'warning');
+      if (user_access('administer salesforce') and next($maps)) {
+        drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used fieldmap @map.', array('@map' => $map->name)), 'warning');
       }
 
       // Finally, export the node to Salesforce.
@@ -417,10 +414,6 @@ function sf_node_salesforce_form(&$form_state, $node) {
   if ($node->salesforce->sfid) {
     // Retrieve the object from Salesforce.
     $sf_data = salesforce_api_retrieve(array($node->salesforce->sfid), $node->salesforce->name);
-    // Check to see if sf_data is an array of objects
-    if (is_array($sf_data) && count($sf_data) > 0) {
-      $sf_data = $sf_data[0];
-    }
     // If $sf_data is empty, we assume the record is deleted. retrieve() does
     // not return the ENTITY_IS_DELETED error that upsert() does.
     if (!$sf_data && SALESFORCE_DELETED_POLICY_UPSERT == variable_get('salesforce_api_entity_deleted_policy', SALESFORCE_DELETED_POLICY_UPSERT)) {
@@ -683,18 +676,8 @@ function sf_node_export($node, $name, $sfid = NULL) {
     $name = $map->name;
   }
 
-  try {
-    $response = $sf->client->upsert('Id', array($object), $map->salesforce);
-  }
-  catch (Exception $e) {
-    salesforce_api_log(SALESFORCE_LOG_SOME, 'Exception while attempting to upsert node: %msg <pre>%e</pre>', array('%msg' => $e->getMessage(), '%e' => print_r($e, TRUE)), WATCHDOG_ERROR, l('node ' . $node->nid, 'node/' . $node->nid));
-  }
+  $response = $sf->client->upsert('Id', array($object), $map->salesforce);
 
-  // Check to see if response is an array of objects
-  if (is_array($response) && count($response) > 0) {
-    $response = $response[0];
-  }
-  
   // If we got errors, handle them before proceeding
   if (is_object($response->errors)) {
     // If we got "Entity is deleted" and we're configured to unlink and upsert,
@@ -720,12 +703,7 @@ function sf_node_export($node, $name, $sfid = NULL) {
       }
 
       salesforce_api_log(SALESFORCE_LOG_SOME, 'Salesforce entity deleted. Attempting to unlink and upsert. <pre>%response</pre>', array('%response' => print_r($response, 1)), WATCHDOG_ERROR, l('node ' . $node->nid, 'node/' . $node->nid));
-      try {
-        $response = $sf->client->upsert('Id', array($object), $map->salesforce);
-      }
-      catch (Exception $e) {
-        salesforce_api_log(SALESFORCE_LOG_SOME, 'Exception while attempting to upsert node: %msg <pre>%e</pre>', array('%msg' => $e->getMessage(), '%e' => print_r($e, TRUE)), WATCHDOG_ERROR, l('node ' . $node->nid, 'node/' . $node->nid));
-      }
+      $response = $sf->client->upsert('Id', array($object), $map->salesforce);
     }
   }
 
@@ -774,10 +752,6 @@ function sf_node_import($sf_data, $name, $nid = NULL) {
 
   if (is_sfid($sf_data)) {
     $sf_data = salesforce_api_retrieve(array($sf_data), $name);
-    // Check to see if sf_data is an array of objects
-    if (is_array($sf_data) && count($sf_data) > 0) {
-      $sf_data = $sf_data[0];
-    }
   }
   elseif (is_array($sf_data)) {
     $sf_data = (object) $sf_data;
diff --git a/sf_queue/sf_queue.module b/sf_queue/sf_queue.module
index 047923c..6a237ba 100644
--- a/sf_queue/sf_queue.module
+++ b/sf_queue/sf_queue.module
@@ -181,7 +181,7 @@ function sf_queue_process_queue_force($redir=TRUE) {
   variable_set('sf_queue_state', $state);
   sf_queue_process_queue($settings, $state);
   if (user_access('administer salesforce')) {
-    drupal_set_message(t('Salesforce export queue processed.'));
+    drupal_set_message(t('Salesforce export queue processed.');
   }
   if ($redir == TRUE) {
     drupal_goto("admin/reports/sf_queue/");
diff --git a/sf_user/sf_user.module b/sf_user/sf_user.module
index 2a616f5..2c90ca5 100644
--- a/sf_user/sf_user.module
+++ b/sf_user/sf_user.module
@@ -140,11 +140,8 @@ function sf_user_user($op, &$edit, &$account, $category = NULL) {
       $salesforce->name = $map->name;
 
       // Check if there is more than one fieldmap in the result.
-      if (user_access('administer salesforce') AND next($maps)) {
-        if (!empty($map->description)) {
-          $description = '(' . $map->description . ')';
-        }
-        drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used fieldmap !map_name @map_description.', array('!map_name' => l($map->name, SALESFORCE_PATH_FIELDMAPS . '/' . $map->name . '/edit'), '@map_description' => $description)), 'warning');
+      if (user_access('administer salesforce') and next($maps)) {
+        drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used fieldmap @map.', array('@map' => $map->name)), 'warning');
       }
 
       // Finally export the user to salesforce
@@ -232,11 +229,7 @@ function sf_user_salesforce_form(&$form_state, $account) {
   if ($account->salesforce->sfid) {
     // Retrieve the object from Salesforce.
     $sf_data = salesforce_api_retrieve(array($account->salesforce->sfid), $account->salesforce->name);
-    
-    // Check to see if salesforce_api_retrieve returned an array of objects
-    if (is_array($sf_data) && count($sf_data) > 0) {
-      $sf_data = $sf_data[0];
-    }
+
     if (!$sf_data && SALESFORCE_DELETED_POLICY_UPSERT == variable_get('salesforce_api_entity_deleted_policy', SALESFORCE_DELETED_POLICY_UPSERT)) {
       // Unlink the object
       salesforce_api_id_unlink(array('oid' => $account->uid, 'name' => $account->salesforce->name));
@@ -498,18 +491,8 @@ function sf_user_export($uid, $name, $sfid = NULL) {
     $name = $map->name;
   }
 
-  try {
-    $response = $sf->client->upsert('Id', array($object), $map->salesforce);
-  }
-  catch (Exception $e) {
-    salesforce_api_log(SALESFORCE_LOG_SOME, 'Exception while attempting to export user: %msg <pre>%e</pre>', array('%msg' => $e->getMessage(), '%e' => print_r($e, TRUE)), WATCHDOG_ERROR, l('user ' . $account->uid, 'user/' . $account->uid));
-  }
+  $response = $sf->client->upsert('Id', array($object), $map->salesforce);
 
-  // Check to see if response is an array of objects
-  if (is_array($response) && count($response) > 0) {
-    $response = $response[0];
-  }
-  
   // If we got errors, handle them before proceeding
   if (is_object($response->errors)) {
     // If we got "Entity is deleted" and we're configured to unlink and upsert,
@@ -527,12 +510,7 @@ function sf_user_export($uid, $name, $sfid = NULL) {
       }
 
       salesforce_api_log(SALESFORCE_LOG_SOME, 'Salesforce entity deleted. Attempting to unlink and upsert. <pre>%response</pre>', array('%response' => print_r($response, 1)), WATCHDOG_ERROR, l('user ' . $uid, 'user/' . $uid));
-      try {
-        $response = $sf->client->upsert('Id', array($object), $map->salesforce);
-      }
-      catch (Exception $e) {
-        salesforce_api_log(SALESFORCE_LOG_SOME, 'Exception while attempting to export user: %msg <pre>%e</pre>', array('%msg' => $e->getMessage(), '%e' => print_r($e, TRUE)), WATCHDOG_ERROR, l('user ' . $account->uid, 'user/' . $account->uid));
-      }
+      $response = $sf->client->upsert('Id', array($object), $map->salesforce);
     }
   }
 
@@ -583,10 +561,6 @@ function sf_user_import($sf_data, $name, $uid = NULL) {
 
   if (is_sfid($sf_data)) {
     $sf_data = salesforce_api_retrieve(array($sf_data), $name);
-    // Check to see if sf_data is an array of objects
-    if (is_array($sf_data) && count($sf_data) > 0) {
-      $sf_data = $sf_data[0];
-    }
   }
   elseif (is_array($sf_data)) {
     $sf_data = (object) $sf_data;
