diff --git a/modules/salesforce_mapping/includes/salesforce_mapping.admin.inc b/modules/salesforce_mapping/includes/salesforce_mapping.admin.inc
index ebeddaf..9ec9791 100644
--- a/modules/salesforce_mapping/includes/salesforce_mapping.admin.inc
+++ b/modules/salesforce_mapping/includes/salesforce_mapping.admin.inc
@@ -171,6 +171,7 @@ function salesforce_mapping_form($form, &$form_state, SalesforceMapping $mapping
         'drupal_field' => t('Drupal field'),
         'salesforce_field' => t('Salesforce field'),
         'key' => t('Key') . '*',
+        'required' => t('Required'),
         'direction' => t('Direction'),
         'delete_field_mapping' => t('Delete'),
       ),
@@ -257,6 +258,15 @@ function salesforce_mapping_form($form, &$form_state, SalesforceMapping $mapping
         '#required' => TRUE,
         '#default_value' => _salesforce_mapping_get_default_value('direction', $form_state, $delta),
       );
+      
+      $row['required'] = array(
+        '#id' => 'edit-required-' . $delta,
+        '#type' => 'radio',
+        '#name' => 'required',
+        '#return_value' => $delta,
+        '#tree' => FALSE,
+        '#default_value' => _salesforce_mapping_get_default_value('required', $form_state, $delta),
+      ); 
 
       $row['delete_field_mapping'] = array(
         '#id' => 'edit-delete-field-mapping-' . $delta,
@@ -608,6 +618,7 @@ function salesforce_mapping_form_submit($form, &$form_state) {
   $mappings = array();
   if (isset($values['key'])) {
     $key_delta = isset($values['key']) ? $values['key'] : FALSE;
+    $required_delta = isset($values['required']) ? $values['required'] : FALSE;
     $sfobject = _salesforce_mapping_get_salesforce_object($values['salesforce_object_type'], $form_state);
     $sf_fields = isset($sfobject['fields']) ? $sfobject['fields'] : array();
     foreach ($values['salesforce_field_mappings'] as $key => $mapping) {
@@ -629,6 +640,8 @@ function salesforce_mapping_form_submit($form, &$form_state) {
           'salesforce_field' => $sf_field,
           'key' => $key_delta !== FALSE && $key_delta != ""
           && ($key === (int) $key_delta),
+          'required' => $required_delta !== FALSE && $required_delta != ""
+          && ($key === (int) $required_delta),
           'direction' => $mapping['direction'],
         );
       }
diff --git a/modules/salesforce_pull/salesforce_pull.module b/modules/salesforce_pull/salesforce_pull.module
index 7aeca4b..4abd086 100644
--- a/modules/salesforce_pull/salesforce_pull.module
+++ b/modules/salesforce_pull/salesforce_pull.module
@@ -61,6 +61,9 @@ function salesforce_pull_get_updated_records() {
           else {
             $mapped_fields[$field_map['salesforce_field']['name']] = $field_map['salesforce_field']['name'];
           }
+          if($field_map['required'] == TRUE){
+            $required = $field_map['salesforce_field']['name'];
+          }
         }
       }
 
@@ -88,6 +91,7 @@ function salesforce_pull_get_updated_records() {
       }
       $soql->fields[] = $field;
     }
+    $soql->addCondition($required, 'null', '!=');
 
     // If no lastupdate, get all records, else get records since last pull.
     $sf_last_sync = variable_get('salesforce_pull_last_sync_' . $type, NULL);
