diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field.yml
index 591e3d0..86587ee 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field.yml
@@ -40,6 +40,14 @@ process:
           optionwidgets_onoff: boolean
           text_textfield: text
           text_textarea: text_long
+        nodereference:
+          nodereference_select: entity_reference
+          nodereference_buttons: entity_reference
+          nodereference_autocomplete: entity_reference
+        userreference:
+          userreference_select: entity_reference
+          userreference_buttons: entity_reference
+          userreference_autocomplete: entity_reference
         email:
           email_textfield: email
         link:
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_formatter_settings.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_formatter_settings.yml
index 20d2364..9253e8f 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_formatter_settings.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_formatter_settings.yml
@@ -85,6 +85,14 @@ process:
             fr_1: number_decimal
             fr_2: number_decimal
             unformatted: number_unformatted
+          nodereference:
+            default: entity_reference_label
+            plain: entity_reference_label
+            full: entity_reference_label
+            teaser: entity_reference_label
+          userreference:
+            default: entity_reference_label
+            plain: entity_reference_label
           email:
             default: email_mailto
             spamspan: email_mailto
@@ -248,6 +256,20 @@ process:
             format_type: medium
           short:
             format_type: short
+        nodereference:
+          default:
+            link: true
+          plain:
+            link: false
+          full:
+            link: true
+          teaser:
+            link: true
+        userreference:
+          default:
+            link: true
+          plain:
+            link: false
         text:
           trimmed:
             trim_length: 600
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
index 978fb2c..da3883f 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
@@ -48,4 +48,6 @@ destination:
 migration_dependencies:
   required:
     - d6_node_type
+    - d6_user
+    - d6_node
     - d6_field
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
index de74309..9a24a23 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance_widget_settings.yml
@@ -47,6 +47,13 @@ process:
         optionwidgets_onoff: boolean_checkbox
         optionwidgets_buttons: options_buttons
         optionwidgets_select: options_select
+        nodereference_select: options_select
+        nodereference_buttons: options_buttons
+        nodereference_autocomplete: entity_reference_autocomplete
+        userreference_select: options_select
+        userreference_buttons: options_buttons
+        userreference_autocomplete: entity_reference_autocomplete
+
   'options/settings':
     -
       plugin: field_instance_widget_settings
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php b/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
index 570033a..6905034 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
@@ -97,6 +97,10 @@ public function loadMultiple(EntityStorageInterface $storage, array $sub_ids = N
               case 'text':
                 $this->processTextField($field_name, $data, $migration);
                 break;
+              case 'nodereference':
+              case 'userreference':
+                $migration->setProcessOfProperty("$field_name/target_id", $field_name);
+                break;
               default:
                 $migration->setProcessOfProperty($field_name, $field_name);
             }
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
index 67dc9cf..423706d 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Contains Drupal\migrate_drupal\Plugin\migrate\d6\FieldInstanceDefaults
@@ -9,6 +10,8 @@
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
+use Drupal\node\Entity\Node;
+use Drupal\user\Entity\User;
 
 /**
  * @MigrateProcessPlugin(
@@ -60,6 +63,27 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
           $default['options'] = ['attributes' => []];
         }
         break;
+
+      case 'nodereference_select':
+      case 'nodereference_buttons':
+      case 'nodereference_autocomplete':
+        if (!empty($widget_settings['default_value'][0]['nid'])) {
+          if ($node = Node::load($widget_settings['default_value'][0]['nid'])) {
+            $default['target_uuid'] = $node->uuid();
+          }
+        }
+        break;
+
+      case 'userreference_select':
+      case 'userreference_buttons':
+      case 'userreference_autocomplete':
+        if (!empty($widget_settings['default_value'][0]['uid'])) {
+          if ($user = User::load($widget_settings['default_value'][0]['uid'])) {
+            $default['target_uuid'] = $user->uuid();
+          }
+        }
+        break;
+
     }
     if (!empty($default)) {
       $default = array($default);
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
index 0003a04..42d267d 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
@@ -33,6 +33,41 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
         $settings['suffix'] = $field_settings['suffix'];
         break;
 
+      case 'nodereference_select':
+      case 'nodereference_buttons':
+      case 'nodereference_autocomplete':
+        // @todo Handle the case when node reference list is build from a view.
+        $target_bundles = !empty($field_settings['referenceable_types']) && is_array($field_settings['referenceable_types']) ? $field_settings['referenceable_types'] : array();
+        $settings = array(
+          'handler' => 'default:node',
+          'handler_settings' => array(
+            'target_bundles' => array_filter($target_bundles),
+          ),
+        );
+        break;
+
+      case 'userreference_select':
+      case 'userreference_buttons':
+      case 'userreference_autocomplete':
+        // @todo Handle the case when user reference list is build from a view.
+        // This cannot be imported due to the nature of UserSelection filters.
+        // $target_status = isset($field_settings['referenceable_status']) ? $field_settings['referenceable_status'] : '';
+        $handler_settings = array(
+          'filter' => array('type' => '_none'),
+          'include_anonymous' => TRUE,
+        );
+        $roles = !empty($field_settings['referenceable_roles']) && is_array($field_settings['referenceable_roles']) ? $field_settings['referenceable_roles'] : array();
+        if ($roles) {
+          $handler_settings['filter']['type'] = 'role';
+          $handler_settings['filter']['role'] = $roles;
+        }
+
+        $settings = array(
+          'handler' => 'default:user',
+          'handler_settings' => $handler_settings,
+        );
+        break;
+
       case 'link':
         // $settings['url'] = $widget_settings['default_value'][0]['url'];
         // D6 has optional, required, value and none. D8 only has disabled (0)
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
index fa6daa1..645044c 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\process\d6;
 
+use Drupal\Component\Utility\Unicode;
 use Drupal\migrate\MigrateExecutableInterface;
 use Drupal\migrate\ProcessPluginBase;
 use Drupal\migrate\Row;
@@ -41,10 +42,11 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    * @return array
    *   A valid array of settings.
    */
-  public function getSettings($widget_type, $widget_settings) {
+  protected function getSettings($widget_type, $widget_settings) {
     $progress = isset($widget_settings['progress_indicator']) ? $widget_settings['progress_indicator'] : 'throbber';
     $size = isset($widget_settings['size']) ? $widget_settings['size'] : 60;
     $rows = isset($widget_settings['rows']) ? $widget_settings['rows'] : 5;
+    $match_operator = isset($widget_settings['autocomplete_match']) ? Unicode::strtoupper($widget_settings['autocomplete_match']) : 'CONTAINS';
 
     $settings = array(
       'text_textfield' => array(
@@ -78,6 +80,16 @@ public function getSettings($widget_type, $widget_settings) {
       'phone_textfield' => array(
         'placeholder' => '',
       ),
+      'nodereference_autocomplete' => array(
+        'match_operator' => $match_operator,
+        'size' => $size,
+        'placeholder' => '',
+      ),
+      'userreference_autocomplete' => array(
+        'match_operator' => $match_operator,
+        'size' => $size,
+        'placeholder' => '',
+      ),
     );
 
     return isset($settings[$widget_type]) ? $settings[$widget_type] : array();
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldSettings.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldSettings.php
index 9abd53b..c7efa13 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldSettings.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldSettings.php
@@ -27,7 +27,7 @@ class FieldSettings extends ProcessPluginBase {
    */
   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
     list($field_type, $global_settings, $widget_settings) = $value;
-    return $this->getSettings($field_type, $global_settings, $widget_settings);
+    return $this->getSettings($field_type, $global_settings, $widget_settings, $row->getSourceProperty('type'));
   }
 
   /**
@@ -39,11 +39,13 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    *   The field settings.
    * @param array $widget_settings
    *   The widget settings needed for some settings.
+   * @param string $source_type
+   *   The filed type of source.
    *
    * @return array
    *   A valid array of settings.
    */
-  public function getSettings($field_type, $global_settings, $widget_settings) {
+  protected function getSettings($field_type, $global_settings, $widget_settings, $source_type) {
     $max_length = isset($global_settings['max_length']) ? $global_settings['max_length'] : '';
     $max_length = empty($max_length) ? 255 : $max_length;
     if (isset($global_settings['allowed_values'])) {
@@ -85,6 +87,9 @@ public function getSettings($field_type, $global_settings, $widget_settings) {
       'boolean' => array(
         'allowed_values' => $allowed_values,
       ),
+      'entity_reference' => array(
+        'target_type' => substr($source_type, 0, 4),
+      ),
     );
 
     return isset($settings[$field_type]) ? $settings[$field_type] : array();
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/FieldInstance.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/FieldInstance.php
index 5b42504..2f4ed31 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/FieldInstance.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/FieldInstance.php
@@ -77,6 +77,17 @@ public function prepareRow(Row $row) {
     $widget_settings = unserialize($row->getSourceProperty('widget_settings'));
     $display_settings = unserialize($row->getSourceProperty('display_settings'));
     $global_settings = unserialize($row->getSourceProperty('global_settings'));
+
+    // We convert here RIDs in role names.
+    if (isset($global_settings['referenceable_roles']) && is_array($global_settings['referenceable_roles']) && $global_settings['referenceable_roles']) {
+      $roles = $this->select('role')
+        ->fields('role', ['name'])
+        ->condition('rid', array_filter($global_settings['referenceable_roles']), 'IN')
+        ->execute()
+        ->fetchCol();
+      $global_settings['referenceable_roles'] = array_combine($roles, $roles);
+    }
+
     $row->setSourceProperty('widget_settings', $widget_settings);
     $row->setSourceProperty('display_settings', $display_settings);
     $row->setSourceProperty('global_settings', $global_settings);
diff --git a/core/modules/migrate_drupal/src/Tests/.gitattributes b/core/modules/migrate_drupal/src/Tests/.gitattributes
new file mode 100644
index 0000000..2423bbb
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Tests/.gitattributes
@@ -0,0 +1 @@
+d6.gz -text -diff
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeField.php b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeField.php
index ea76345..e188886 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeField.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeField.php
@@ -274,6 +274,17 @@ public function load() {
       'active' => '1',
       'locked' => '0',
     ))->values(array(
+      'field_name' => 'field_test_nodereference',
+      'type' => 'nodereference',
+      'global_settings' => 'a:1:{s:19:"referenceable_types";a:9:{s:11:"test_planet";s:11:"test_planet";s:5:"story";s:5:"story";s:7:"article";i:0;s:7:"company";i:0;s:8:"employee";i:0;s:10:"test_event";i:0;s:9:"test_page";i:0;s:10:"test_story";i:0;s:7:"sponsor";i:0;}}',
+      'required' => '0',
+      'multiple' => '0',
+      'db_storage' => '1',
+      'module' => 'nodereference',
+      'db_columns' => 'a:1:{s:3:"nid";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:0;s:5:"index";b:1;}}',
+      'active' => '1',
+      'locked' => '0',
+    ))->values(array(
       'field_name' => 'field_test_phone',
       'type' => 'au_phone',
       'global_settings' => 'a:1:{s:18:"phone_country_code";i:0;}',
@@ -317,6 +328,17 @@ public function load() {
       'db_columns' => 'a:1:{s:5:"value";a:3:{s:4:"type";s:3:"int";s:8:"not null";b:0;s:8:"sortable";b:1;}}',
       'active' => '1',
       'locked' => '0',
+    ))->values(array(
+      'field_name' => 'field_test_userreference',
+      'type' => 'userreference',
+      'global_settings' => 'a:2:{s:19:"referenceable_roles";a:4:{i:3;i:3;i:4;i:4;i:2;i:0;i:5;i:0;}s:20:"referenceable_status";s:1:"1";}',
+      'required' => '0',
+      'multiple' => '0',
+      'db_storage' => '1',
+      'module' => 'userreference',
+      'db_columns' => 'a:1:{s:3:"uid";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:0;s:5:"index";b:1;}}',
+      'active' => '1',
+      'locked' => '0',
     ))->execute();
   }
 
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeFieldInstance.php b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeFieldInstance.php
index 1c0e592..c8b1175 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeFieldInstance.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentNodeFieldInstance.php
@@ -115,7 +115,7 @@ public function load() {
       'label' => 'Text Field',
       'widget_type' => 'text_textfield',
       'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:22:"text for default value";s:14:"_error_element";s:42:"default_value_widget][field_test][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"1";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"1";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}}',
       'description' => 'An example text field.',
       'widget_module' => 'text',
       'widget_active' => '1',
@@ -137,40 +137,40 @@ public function load() {
       'label' => 'Date Field',
       'widget_type' => 'date_select',
       'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"10";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"long";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"10";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"long";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example date field.',
       'widget_module' => 'date',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_datestamp',
       'type_name' => 'story',
-      'weight' => '11',
+      'weight' => '12',
       'label' => 'Date Stamp Field',
       'widget_type' => 'date_select',
       'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"11";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:6:"medium";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"12";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:6:"medium";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example date stamp field.',
       'widget_module' => 'date',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_datetime',
       'type_name' => 'story',
-      'weight' => '12',
+      'weight' => '13',
       'label' => 'Datetime Field',
       'widget_type' => 'date_select',
       'widget_settings' => 'a:10:{s:13:"default_value";s:5:"blank";s:18:"default_value_code";s:0:"";s:14:"default_value2";s:4:"same";s:19:"default_value_code2";s:0:"";s:12:"input_format";s:13:"m/d/Y - H:i:s";s:19:"input_format_custom";s:0:"";s:9:"increment";s:1:"1";s:10:"text_parts";a:0:{}s:10:"year_range";s:5:"-3:+3";s:14:"label_position";s:5:"above";}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"12";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:5:"short";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"13";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:5:"short";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example datetime field.',
       'widget_module' => 'date',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_decimal_radio_buttons',
       'type_name' => 'story',
-      'weight' => '14',
+      'weight' => '15',
       'label' => 'Decimal Radio Buttons Field',
       'widget_type' => 'optionwidgets_buttons',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";s:0:"";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"14";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"15";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example decimal field using radio buttons.',
       'widget_module' => 'optionwidgets',
       'widget_active' => '1',
@@ -181,18 +181,18 @@ public function load() {
       'label' => 'Email Field',
       'widget_type' => 'email_textfield',
       'widget_settings' => 'a:3:{s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:1:{s:5:"email";s:17:"benjy@example.com";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"6";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"6";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example email field.',
       'widget_module' => 'email',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_exclude_unset',
       'type_name' => 'story',
-      'weight' => '0',
+      'weight' => '-1',
       'label' => 'Text Field',
       'widget_type' => 'text_textfield',
       'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:22:"text for default value";s:14:"_error_element";s:42:"default_value_widget][field_test][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:8:{s:6:"weight";i:0;s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}i:1;a:1:{s:6:"format";s:7:"default";}}',
+      'display_settings' => 'a:8:{s:6:"weight";s:2:"-1";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:7:"trimmed";s:7:"exclude";i:0;}i:1;a:1:{s:6:"format";s:7:"default";}}',
       'description' => 'An example text field without exclude.',
       'widget_module' => 'text',
       'widget_active' => '1',
@@ -203,18 +203,18 @@ public function load() {
       'label' => 'File Field',
       'widget_type' => 'filefield_widget',
       'widget_settings' => 'a:5:{s:15:"file_extensions";s:11:"txt pdf doc";s:9:"file_path";s:6:"images";s:18:"progress_indicator";s:3:"bar";s:21:"max_filesize_per_file";s:4:"200K";s:21:"max_filesize_per_node";s:3:"20M";}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"8";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:10:"path_plain";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"8";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:10:"path_plain";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example image field.',
       'widget_module' => 'filefield',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_float_single_checkbox',
       'type_name' => 'story',
-      'weight' => '15',
+      'weight' => '16',
       'label' => 'Float Single Checkbox Field',
       'widget_type' => 'optionwidgets_onoff',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";N;}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"15";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"16";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example float field using a single on/off checkbox.',
       'widget_module' => 'optionwidgets',
       'widget_active' => '1',
@@ -225,7 +225,7 @@ public function load() {
       'label' => 'Float Field',
       'widget_type' => 'number',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:3:"101";s:14:"_error_element";s:47:"default_value_widget][field_test_four][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"3";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"3";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example float field.',
       'widget_module' => 'number',
       'widget_active' => '1',
@@ -236,7 +236,7 @@ public function load() {
       'label' => 'Integer Field',
       'widget_type' => 'number',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"4";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"4";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
       'description' => 'An example integer field.',
       'widget_module' => 'number',
       'widget_active' => '1',
@@ -247,7 +247,7 @@ public function load() {
       'label' => 'Integer Field',
       'widget_type' => 'number',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:41:"default_value_widget][field_int][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"5";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"5";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
       'description' => 'An example integer field.',
       'widget_module' => 'number',
       'widget_active' => '1',
@@ -258,18 +258,18 @@ public function load() {
       'label' => 'Image Field',
       'widget_type' => 'imagefield_widget',
       'widget_settings' => 'a:14:{s:15:"file_extensions";s:16:"png gif jpg jpeg";s:9:"file_path";s:0:"";s:18:"progress_indicator";s:3:"bar";s:21:"max_filesize_per_file";s:0:"";s:21:"max_filesize_per_node";s:0:"";s:14:"max_resolution";s:1:"0";s:14:"min_resolution";s:1:"0";s:3:"alt";s:8:"Test alt";s:10:"custom_alt";i:0;s:5:"title";s:10:"Test title";s:12:"custom_title";i:0;s:10:"title_type";s:9:"textfield";s:13:"default_image";N;s:17:"use_default_image";i:0;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"9";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:15:"image_imagelink";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:11:"image_plain";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"9";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:15:"image_imagelink";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:11:"image_plain";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example image field.',
       'widget_module' => 'imagefield',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_integer_selectlist',
       'type_name' => 'story',
-      'weight' => '16',
+      'weight' => '17',
       'label' => 'Integer Select List Field',
       'widget_type' => 'optionwidgets_select',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";s:0:"";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"16";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"17";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example integer field using a select list.',
       'widget_module' => 'optionwidgets',
       'widget_active' => '1',
@@ -280,29 +280,40 @@ public function load() {
       'label' => 'Link Field',
       'widget_type' => 'link',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"title";s:18:"default link title";s:3:"url";s:17:"http://drupal.org";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"7";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:8:"absolute";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"7";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:8:"absolute";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example link field.',
       'widget_module' => 'link',
       'widget_active' => '1',
     ))->values(array(
+      'field_name' => 'field_test_nodereference',
+      'type_name' => 'story',
+      'weight' => '19',
+      'label' => 'Node Reference Field',
+      'widget_type' => 'nodereference_autocomplete',
+      'widget_settings' => 'a:4:{s:18:"autocomplete_match";s:11:"starts_with";s:4:"size";s:2:"80";s:13:"default_value";a:1:{i:0;a:2:{s:3:"nid";s:1:"2";s:14:"_error_element";s:59:"default_value_widget][field_test_nodereference][0][nid][nid";}}s:17:"default_value_php";N;}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"19";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'description' => '',
+      'widget_module' => 'nodereference',
+      'widget_active' => '1',
+    ))->values(array(
       'field_name' => 'field_test_phone',
       'type_name' => 'story',
-      'weight' => '13',
+      'weight' => '14',
       'label' => 'Phone Field',
       'widget_type' => 'phone_textfield',
       'widget_settings' => 'a:3:{s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:48:"default_value_widget][field_test_phone][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"13";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"14";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example phone field.',
       'widget_module' => 'phone',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_text_single_checkbox',
       'type_name' => 'story',
-      'weight' => '17',
+      'weight' => '18',
       'label' => 'Text Single Checkbox Field',
       'widget_type' => 'optionwidgets_onoff',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:1:{s:5:"value";s:1:"a";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:2:"17";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"18";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
       'description' => 'An example text field using a single on/off checkbox.',
       'widget_module' => 'optionwidgets',
       'widget_active' => '1',
@@ -313,21 +324,32 @@ public function load() {
       'label' => 'Decimal Field',
       'widget_type' => 'number',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";d:101;s:14:"_error_element";s:48:"default_value_widget][field_test_three][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"2";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_2";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";s:1:"2";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_2";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
       'description' => 'An example decimal field.',
       'widget_module' => 'number',
       'widget_active' => '1',
     ))->values(array(
       'field_name' => 'field_test_two',
       'type_name' => 'story',
-      'weight' => '1',
+      'weight' => '0',
       'label' => 'Integer Field',
       'widget_type' => 'number',
       'widget_settings' => 'a:2:{s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:46:"default_value_widget][field_test_two][0][value";}}s:17:"default_value_php";N;}',
-      'display_settings' => 'a:7:{s:6:"weight";s:1:"1";s:6:"parent";s:0:"";i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
+      'display_settings' => 'a:7:{s:6:"weight";i:0;s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:4:"us_0";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:1;}i:4;a:2:{s:6:"format";s:11:"unformatted";s:7:"exclude";i:0;}}',
       'description' => 'An example integer field.',
       'widget_module' => 'number',
       'widget_active' => '1',
+    ))->values(array(
+      'field_name' => 'field_test_userreference',
+      'type_name' => 'story',
+      'weight' => '20',
+      'label' => 'User Reference Field',
+      'widget_type' => 'userreference_autocomplete',
+      'widget_settings' => 'a:5:{s:18:"autocomplete_match";s:11:"starts_with";s:4:"size";s:2:"70";s:12:"reverse_link";i:0;s:13:"default_value";a:1:{i:0;a:2:{s:3:"uid";i:15;s:14:"_error_element";s:59:"default_value_widget][field_test_userreference][0][uid][uid";}}s:17:"default_value_php";N;}',
+      'display_settings' => 'a:7:{s:6:"weight";s:2:"20";s:6:"parent";s:0:"";s:5:"label";a:1:{s:6:"format";s:5:"above";}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+      'description' => '',
+      'widget_module' => 'userreference',
+      'widget_active' => '1',
     ))->execute();
   }
 
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentTypeStory.php b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentTypeStory.php
index 74c784c..cb4ee62 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/ContentTypeStory.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/ContentTypeStory.php
@@ -166,6 +166,18 @@ public function load() {
           'not null' => FALSE,
           'length' => 100,
         ),
+        'field_test_nodereference_nid' => array(
+          'type' => 'int',
+          'not null' => FALSE,
+          'length' => '10',
+          'unsigned' => TRUE,
+        ),
+        'field_test_userreference_uid' => array(
+          'type' => 'int',
+          'not null' => FALSE,
+          'length' => '10',
+          'unsigned' => TRUE,
+        ),
       ),
       'primary key' => array(
         'vid',
@@ -199,6 +211,8 @@ public function load() {
       'field_test_imagefield_fid',
       'field_test_imagefield_list',
       'field_test_imagefield_data',
+      'field_test_nodereference_nid',
+      'field_test_userreference_uid',
     ))
     ->values(array(
       'nid' => '1',
@@ -228,6 +242,8 @@ public function load() {
       'field_test_imagefield_fid' => NULL,
       'field_test_imagefield_list' => NULL,
       'field_test_imagefield_data' => NULL,
+      'field_test_nodereference_nid' => '2',
+      'field_test_userreference_uid' => '15',
     ))->values(array(
       'nid' => '1',
       'vid' => '2',
@@ -256,6 +272,8 @@ public function load() {
       'field_test_imagefield_fid' => NULL,
       'field_test_imagefield_list' => NULL,
       'field_test_imagefield_data' => NULL,
+      'field_test_nodereference_nid' => NULL,
+      'field_test_userreference_uid' => NULL,
     ))->values(array(
       'nid' => '2',
       'vid' => '3',
@@ -265,7 +283,7 @@ public function load() {
       'field_test_identical2_value' => '1',
       'field_test_link_url' => 'http://groups.drupal.org/',
       'field_test_link_title' => 'Drupal Groups',
-      'field_test_link_attributes' => 's:6:"a:0:{}";',
+      'field_test_link_attributes' => 's:32:"a:1:{s:6:"target";s:6:"_blank";}";',
       'field_test_date_value' => NULL,
       'field_test_datestamp_value' => NULL,
       'field_test_datetime_value' => NULL,
@@ -274,9 +292,9 @@ public function load() {
       'field_test_filefield_list' => NULL,
       'field_test_filefield_data' => NULL,
       'field_test_four_value' => NULL,
-      'field_test_text_single_checkbox_value' => NULL,
+      'field_test_text_single_checkbox_value' => '0',
       'field_test_integer_selectlist_value' => NULL,
-      'field_test_float_single_checkbox_value' => NULL,
+      'field_test_float_single_checkbox_value' => '3.142',
       'field_test_decimal_radio_buttons_value' => NULL,
       'field_test_phone_value' => NULL,
       'field_test_exclude_unset_value' => NULL,
@@ -284,6 +302,8 @@ public function load() {
       'field_test_imagefield_fid' => NULL,
       'field_test_imagefield_list' => NULL,
       'field_test_imagefield_data' => NULL,
+      'field_test_nodereference_nid' => '1',
+      'field_test_userreference_uid' => '8',
     ))->values(array(
       'nid' => '2',
       'vid' => '5',
@@ -312,6 +332,8 @@ public function load() {
       'field_test_imagefield_fid' => NULL,
       'field_test_imagefield_list' => NULL,
       'field_test_imagefield_data' => NULL,
+      'field_test_nodereference_nid' => NULL,
+      'field_test_userreference_uid' => NULL,
     ))->execute();
   }
 
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/MenuLinks.php b/core/modules/migrate_drupal/src/Tests/Table/d6/MenuLinks.php
index 8764063..a64a65f 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/MenuLinks.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/MenuLinks.php
@@ -5153,6 +5153,110 @@ public function load() {
       'p8' => '0',
       'p9' => '0',
       'updated' => '0',
+    ))->values(array(
+      'menu_name' => 'navigation',
+      'mlid' => '393',
+      'plid' => '0',
+      'link_path' => 'nodereference/autocomplete',
+      'router_path' => 'nodereference/autocomplete',
+      'link_title' => 'Nodereference autocomplete',
+      'options' => 'a:0:{}',
+      'module' => 'system',
+      'hidden' => '-1',
+      'external' => '0',
+      'has_children' => '0',
+      'expanded' => '0',
+      'weight' => '0',
+      'depth' => '1',
+      'customized' => '0',
+      'p1' => '393',
+      'p2' => '0',
+      'p3' => '0',
+      'p4' => '0',
+      'p5' => '0',
+      'p6' => '0',
+      'p7' => '0',
+      'p8' => '0',
+      'p9' => '0',
+      'updated' => '0',
+    ))->values(array(
+      'menu_name' => 'navigation',
+      'mlid' => '394',
+      'plid' => '0',
+      'link_path' => 'userreference/autocomplete',
+      'router_path' => 'userreference/autocomplete',
+      'link_title' => 'Userreference autocomplete',
+      'options' => 'a:0:{}',
+      'module' => 'system',
+      'hidden' => '-1',
+      'external' => '0',
+      'has_children' => '0',
+      'expanded' => '0',
+      'weight' => '0',
+      'depth' => '1',
+      'customized' => '0',
+      'p1' => '394',
+      'p2' => '0',
+      'p3' => '0',
+      'p4' => '0',
+      'p5' => '0',
+      'p6' => '0',
+      'p7' => '0',
+      'p8' => '0',
+      'p9' => '0',
+      'updated' => '0',
+    ))->values(array(
+      'menu_name' => 'navigation',
+      'mlid' => '397',
+      'plid' => '0',
+      'link_path' => 'admin/content/node-type/story/fields/field_test_nodereference/remove',
+      'router_path' => 'admin/content/node-type/story/fields/field_test_nodereference/remove',
+      'link_title' => 'Remove field',
+      'options' => 'a:0:{}',
+      'module' => 'system',
+      'hidden' => '-1',
+      'external' => '0',
+      'has_children' => '0',
+      'expanded' => '0',
+      'weight' => '0',
+      'depth' => '1',
+      'customized' => '0',
+      'p1' => '397',
+      'p2' => '0',
+      'p3' => '0',
+      'p4' => '0',
+      'p5' => '0',
+      'p6' => '0',
+      'p7' => '0',
+      'p8' => '0',
+      'p9' => '0',
+      'updated' => '0',
+    ))->values(array(
+      'menu_name' => 'navigation',
+      'mlid' => '398',
+      'plid' => '0',
+      'link_path' => 'admin/content/node-type/story/fields/field_test_userreference/remove',
+      'router_path' => 'admin/content/node-type/story/fields/field_test_userreference/remove',
+      'link_title' => 'Remove field',
+      'options' => 'a:0:{}',
+      'module' => 'system',
+      'hidden' => '-1',
+      'external' => '0',
+      'has_children' => '0',
+      'expanded' => '0',
+      'weight' => '0',
+      'depth' => '1',
+      'customized' => '0',
+      'p1' => '398',
+      'p2' => '0',
+      'p3' => '0',
+      'p4' => '0',
+      'p5' => '0',
+      'p6' => '0',
+      'p7' => '0',
+      'p8' => '0',
+      'p9' => '0',
+      'updated' => '0',
     ))->execute();
   }
 
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/Node.php b/core/modules/migrate_drupal/src/Tests/Table/d6/Node.php
index 068edbd..a6e4852 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/Node.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/Node.php
@@ -145,7 +145,7 @@ public function load() {
       'uid' => '1',
       'status' => '1',
       'created' => '1388271197',
-      'changed' => '1420861423',
+      'changed' => '1427751021',
       'comment' => '0',
       'promote' => '0',
       'moderate' => '0',
@@ -161,7 +161,7 @@ public function load() {
       'uid' => '1',
       'status' => '1',
       'created' => '1388271197',
-      'changed' => '1420718386',
+      'changed' => '1427827856',
       'comment' => '0',
       'promote' => '0',
       'moderate' => '0',
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/NodeRevisions.php b/core/modules/migrate_drupal/src/Tests/Table/d6/NodeRevisions.php
index 472a182..e90f3c7 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/NodeRevisions.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/NodeRevisions.php
@@ -98,7 +98,7 @@ public function load() {
       'body' => 'test',
       'teaser' => 'test',
       'log' => '',
-      'timestamp' => '1420861423',
+      'timestamp' => '1427751021',
       'format' => '1',
     ))->values(array(
       'nid' => '1',
@@ -118,7 +118,7 @@ public function load() {
       'body' => 'test rev 3',
       'teaser' => 'test rev 3',
       'log' => '',
-      'timestamp' => '1420718386',
+      'timestamp' => '1427827856',
       'format' => '1',
     ))->values(array(
       'nid' => '3',
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/System.php b/core/modules/migrate_drupal/src/Tests/Table/d6/System.php
index ae42df9..46792a0 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/System.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/System.php
@@ -510,10 +510,10 @@ public function load() {
       'name' => 'nodereference',
       'type' => 'module',
       'owner' => '',
-      'status' => '0',
+      'status' => '1',
       'throttle' => '0',
       'bootstrap' => '0',
-      'schema_version' => '-1',
+      'schema_version' => '6001',
       'weight' => '0',
       'info' => 'a:10:{s:4:"name";s:14:"Node Reference";s:11:"description";s:59:"Defines a field type for referencing one node from another.";s:12:"dependencies";a:3:{i:0;s:7:"content";i:1;s:4:"text";i:2;s:13:"optionwidgets";}s:7:"package";s:3:"CCK";s:4:"core";s:3:"6.x";s:7:"version";s:7:"6.x-2.9";s:7:"project";s:3:"cck";s:9:"datestamp";s:10:"1294407979";s:10:"dependents";a:0:{}s:3:"php";s:5:"4.3.5";}',
     ))->values(array(
@@ -554,10 +554,10 @@ public function load() {
       'name' => 'userreference',
       'type' => 'module',
       'owner' => '',
-      'status' => '0',
+      'status' => '1',
       'throttle' => '0',
       'bootstrap' => '0',
-      'schema_version' => '-1',
+      'schema_version' => '6002',
       'weight' => '0',
       'info' => 'a:10:{s:4:"name";s:14:"User Reference";s:11:"description";s:56:"Defines a field type for referencing a user from a node.";s:12:"dependencies";a:3:{i:0;s:7:"content";i:1;s:4:"text";i:2;s:13:"optionwidgets";}s:7:"package";s:3:"CCK";s:4:"core";s:3:"6.x";s:7:"version";s:7:"6.x-2.9";s:7:"project";s:3:"cck";s:9:"datestamp";s:10:"1294407979";s:10:"dependents";a:0:{}s:3:"php";s:5:"4.3.5";}',
     ))->values(array(
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php b/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
index 9f05cae..71fd8f3 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d6/Variable.php
@@ -182,7 +182,7 @@ public function load() {
       'value' => 'i:3;',
     ))->values(array(
       'name' => 'content_extra_weights_story',
-      'value' => 'a:9:{s:5:"title";s:2:"-5";s:10:"body_field";s:2:"-2";s:20:"revision_information";s:2:"19";s:6:"author";s:2:"18";s:7:"options";s:2:"20";s:16:"comment_settings";s:2:"22";s:4:"menu";s:2:"-3";s:8:"taxonomy";s:2:"-4";s:11:"attachments";s:2:"21";}',
+      'value' => 'a:10:{s:5:"title";s:2:"-5";s:10:"body_field";s:2:"-2";s:20:"revision_information";s:2:"22";s:6:"author";s:2:"21";s:7:"options";s:2:"23";s:16:"comment_settings";s:2:"25";s:4:"menu";s:2:"-3";s:8:"taxonomy";s:2:"-4";s:4:"book";s:2:"11";s:11:"attachments";s:2:"24";}',
     ))->values(array(
       'name' => 'content_extra_weights_test_page',
       'value' => 'a:8:{s:5:"title";s:2:"37";s:10:"body_field";s:2:"38";s:20:"revision_information";s:2:"40";s:6:"author";s:2:"39";s:7:"options";s:2:"41";s:16:"comment_settings";s:2:"42";s:4:"menu";s:2:"36";s:11:"attachments";s:2:"43";}',
@@ -197,7 +197,7 @@ public function load() {
       'value' => 'i:172800;',
     ))->values(array(
       'name' => 'css_js_query_string',
-      'value' => 's:20:"AkMTxRZndiw700000000";',
+      'value' => 's:20:"fNAkMTxRZndiw7000000";',
     ))->values(array(
       'name' => 'date:story:4:field_test_datestamp_fromto',
       'value' => 's:4:"both";',
diff --git a/core/modules/migrate_drupal/src/Tests/d6.gz b/core/modules/migrate_drupal/src/Tests/d6.gz
index a9c9c9e..fe072ff 100644
Binary files a/core/modules/migrate_drupal/src/Tests/d6.gz and b/core/modules/migrate_drupal/src/Tests/d6.gz differ
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
index 2df2499..e58d4d2 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
@@ -22,7 +22,7 @@ class MigrateCckFieldValuesTest extends MigrateNodeTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'text', 'link', 'file');
+  public static $modules = ['node', 'text', 'link', 'file', 'entity_reference'];
 
   /**
    * {@inheritdoc}
@@ -80,6 +80,26 @@ protected function setUp() {
       'field_name' => 'field_test_exclude_unset',
       'bundle' => 'story',
     ))->save();
+    entity_create('field_storage_config', array(
+      'entity_type' => 'node',
+      'field_name' => 'field_test_nodereference',
+      'type' => 'entity_reference',
+    ))->setSettings(array('target_type' => 'node'))->save();
+    entity_create('field_config', array(
+      'entity_type' => 'node',
+      'field_name' => 'field_test_nodereference',
+      'bundle' => 'story',
+    ))->save();
+    entity_create('field_storage_config', array(
+      'entity_type' => 'node',
+      'field_name' => 'field_test_userreference',
+      'type' => 'entity_reference',
+    ))->setSettings(array('target_type' => 'user'))->save();
+    entity_create('field_config', array(
+      'entity_type' => 'node',
+      'field_name' => 'field_test_userreference',
+      'bundle' => 'story',
+    ))->save();
 
     entity_create('field_storage_config', array(
       'entity_type' => 'node',
@@ -141,17 +161,20 @@ protected function setUp() {
 
     // Add some id mappings for the dependant migrations.
     $id_mappings = array(
-      'd6_field_formatter_settings' => array(
-        array(array('page', 'default', 'node', 'field_test'), array('node', 'page', 'default', 'field_test')),
-      ),
-      'd6_field_instance_widget_settings' => array(
-        array(array('page', 'field_test'), array('node', 'page', 'default', 'test')),
+      'd6_user' => array(
+        array(array(15), array(15)),
       ),
       'd6_node' => array(
         array(array(1), array(1)),
         array(array(2), array(2)),
         array(array(3), array(3)),
       ),
+      'd6_field_formatter_settings' => array(
+        array(array('page', 'default', 'node', 'field_test'), array('node', 'page', 'default', 'field_test')),
+      ),
+      'd6_field_instance_widget_settings' => array(
+        array(array('page', 'field_test'), array('node', 'page', 'default', 'test')),
+      ),
     );
     $this->prepareMigrations($id_mappings);
 
@@ -189,6 +212,12 @@ public function testCckFields() {
     $this->assertIdentical('desc', $node->field_test_filefield->description);
     $this->assertIdentical('5', $node->field_test_filefield->target_id);
 
+    // Test node reference field.
+    $this->assertIdentical('2', $node->field_test_nodereference->target_id);
+
+    // Test user reference field.
+    $this->assertIdentical('15', $node->field_test_userreference->target_id);
+
     $planet_node = Node::load(3);
     $this->assertIdentical('33.00', $planet_node->field_multivalue->value);
     $this->assertIdentical('44.00', $planet_node->field_multivalue[1]->value);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
index 2175cb0..29edd75 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\Core\Entity\Entity\EntityViewMode;
 use Drupal\migrate\MigrateExecutable;
-use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 
 /**
  * Upgrade field formatter settings to entity.display.*.*.yml.
@@ -23,7 +22,7 @@ class MigrateFieldFormatterSettingsTest extends MigrateDrupal6TestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'field', 'datetime', 'image', 'text', 'link', 'file', 'telephone');
+  public static $modules = ['node', 'field', 'datetime', 'image', 'text', 'link', 'file', 'telephone', 'entity_reference'];
 
   /**
    * {@inheritdoc}
@@ -60,6 +59,14 @@ protected function setUp() {
         array(array('field_test_datestamp'), array('node', 'field_test_datestamp')),
         array(array('field_test_datetime'), array('node', 'field_test_datetime')),
         array(array('field_test_exclude_unset'), array('node', 'field_test_exclude_unset')),
+        array(array('field_test_nodereference'), array('node', 'field_test_nodereference')),
+        array(array('field_test_userreference'), array('node', 'field_test_userreference')),
+      ),
+      'd6_node' => array(
+        array(array(2), array(2)),
+      ),
+      'd6_user' => array(
+        array(array(15), array(15)),
       ),
     );
     $this->prepareMigrations($id_mappings);
@@ -71,6 +78,7 @@ protected function setUp() {
       $this->getDumpDirectory() . '/ContentFieldTest.php',
       $this->getDumpDirectory() . '/ContentFieldTestTwo.php',
       $this->getDumpDirectory() . '/ContentFieldMultivalue.php',
+      $this->getDumpDirectory() . '/Role.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
@@ -120,7 +128,7 @@ public function testEntityDisplaySettings() {
     $this->assertTrue(isset($content['field_test_exclude_unset']), "Settings for field_test_exclude_unset exist.");
 
     // Test the number field formatter settings are correct.
-    $expected['weight'] = 1;
+    $expected['weight'] = 0;
     $expected['type'] = 'number_integer';
     $expected['settings'] = array(
       'thousand_separator' => ',',
@@ -187,7 +195,7 @@ public function testEntityDisplaySettings() {
     $this->assertIdentical($expected, $component);
 
     // Test phone field.
-    $expected['weight'] = 13;
+    $expected['weight'] = 14;
     $expected['type'] = 'basic_string';
     $expected['settings'] = array();
     $component = $display->getComponent('field_test_phone');
@@ -205,7 +213,7 @@ public function testEntityDisplaySettings() {
     $this->assertIdentical($expected, $component);
 
     // Test date stamp field.
-    $expected['weight'] = 11;
+    $expected['weight'] = 12;
     $expected['settings']['format_type'] = 'fallback';
     $component = $display->getComponent('field_test_datestamp');
     $this->assertIdentical($expected, $component);
@@ -215,7 +223,7 @@ public function testEntityDisplaySettings() {
     $this->assertIdentical($expected, $component);
 
     // Test datetime field.
-    $expected['weight'] = 12;
+    $expected['weight'] = 13;
     $expected['settings'] = array('format_type' => 'short');
     $component = $display->getComponent('field_test_datetime');
     $this->assertIdentical($expected, $component);
@@ -232,6 +240,22 @@ public function testEntityDisplaySettings() {
     $this->assertIdentical($expected, $component);
     // Test that our Id map has the correct data.
     $this->assertIdentical(array('node', 'story', 'teaser', 'field_test'), entity_load('migration', 'd6_field_formatter_settings')->getIdMap()->lookupDestinationID(array('story', 'teaser', 'node', 'field_test')));
+
+    // Test node reference field.
+    $expected['weight'] = 19;
+    $expected['type'] = 'entity_reference_label';
+    $expected['settings'] = array('link' => TRUE);
+    $display = entity_load('entity_view_display', 'node.story.default');
+    $component = $display->getComponent('field_test_nodereference');
+    $this->assertIdentical($expected, $component);
+
+    // Test user reference field.
+    $expected['weight'] = 20;
+    $expected['type'] = 'entity_reference_label';
+    $expected['settings'] = array('link' => TRUE);
+    $display = entity_load('entity_view_display', 'node.story.default');
+    $component = $display->getComponent('field_test_userreference');
+    $this->assertIdentical($expected, $component);
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
index a57307e..304c3e1 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
@@ -8,9 +8,11 @@
 namespace Drupal\migrate_drupal\Tests\d6;
 
 use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\migrate\MigrateExecutable;
-use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 use Drupal\link\LinkItemInterface;
+use Drupal\node\Entity\Node;
+use Drupal\user\Entity\User;
 
 /**
  * Migrate field instances.
@@ -31,7 +33,9 @@ class MigrateFieldInstanceTest extends MigrateDrupal6TestBase {
     'image',
     'datetime',
     'node',
+    'user',
     'field',
+    'entity_reference',
   );
 
   /**
@@ -54,18 +58,32 @@ protected function setUp() {
         array(array('field_test_date'), array('node', 'field_test_date')),
         array(array('field_test_datestamp'), array('node', 'field_test_datestamp')),
         array(array('field_test_datetime'), array('node', 'field_test_datetime')),
+        array(array('field_test_nodereference'), array('node', 'field_test_nodereference')),
+        array(array('field_test_userreference'), array('node', 'field_test_userreference')),
       ),
       'd6_node_type' => array(
         array(array('page'), array('page')),
         array(array('story'), array('story')),
         array(array('test_page'), array('test_page')),
       ),
+      'd6_node' => array(
+        array(array(2), array(2)),
+      ),
+      'd6_user' => array(
+        array(array(15), array(15)),
+      ),
     );
+
     $this->prepareMigrations($id_mappings);
     entity_create('node_type', array('type' => 'page'))->save();
     entity_create('node_type', array('type' => 'story'))->save();
     entity_create('node_type', array('type' => 'test_page'))->save();
 
+    // Create target node and user to be used as default value for node and user
+    // reference to entity reference migration.
+    Node::create(['nid' => 2, 'type' => 'story'])->save();
+    User::create(['uid' => 15, 'name' => 'joe.bloggs', 'mail' => 'joe.bloggs@example.com'])->save();
+
     $migration = entity_load('migration', 'd6_field_instance');
     $dumps = array(
       $this->getDumpDirectory() . '/ContentNodeFieldInstance.php',
@@ -73,6 +91,7 @@ protected function setUp() {
       $this->getDumpDirectory() . '/ContentFieldTest.php',
       $this->getDumpDirectory() . '/ContentFieldTestTwo.php',
       $this->getDumpDirectory() . '/ContentFieldMultivalue.php',
+      $this->getDumpDirectory() . '/Role.php',
     );
     $this->createFields();
 
@@ -154,13 +173,51 @@ public function testFieldInstanceSettings() {
     $this->assertIdentical('default link title', $entity->field_test_link->title, 'Field field_test_link default title is correct.');
     $this->assertIdentical('http://drupal.org', $entity->field_test_link->url, 'Field field_test_link default title is correct.');
     $this->assertIdentical([], $entity->field_test_link->options['attributes']);
+
+    // Test a node reference field.
+    $node = Node::load(2);
+    $field = FieldConfig::load('node.story.field_test_nodereference');
+    $this->assertIdentical($field->default_value[0]['target_uuid'], $node->uuid());
+    $this->assertIdentical('Node Reference Field', $field->label());
+    $expected = array(
+      'handler' => 'default:node',
+      'handler_settings' => array(
+        'target_bundles' => array(
+          'test_planet' => 'test_planet',
+          'story' => 'story',
+        ),
+      ),
+      'target_type' => 'node',
+    );
+    $this->assertIdentical($expected, $field->getSettings());
+
+    // Test a user reference field.
+    $user = User::load(15);
+    $field = FieldConfig::load('node.story.field_test_userreference');
+    $this->assertIdentical($field->default_value[0]['target_uuid'], $user->uuid());
+    $this->assertIdentical('User Reference Field', $field->label());
+    $expected = array(
+      'handler' => 'default:user',
+      'handler_settings' => array(
+        'filter' => array(
+          'type' => 'role',
+          'role' => array(
+            'migrate test role 1' => 'migrate test role 1',
+            'migrate test role 2' => 'migrate test role 2',
+          ),
+        ),
+        'include_anonymous' => TRUE,
+      ),
+      'target_type' => 'user',
+    );
+    $this->assertIdentical($expected, $field->getSettings());
   }
 
   /**
    * Helper to create fields.
    */
   protected function createFields() {
-    $fields = array(
+    $fields = [
       'field_test' => 'text',
       'field_test_two' => 'integer',
       'field_test_three' => 'decimal',
@@ -173,15 +230,18 @@ protected function createFields() {
       'field_test_date' => 'datetime',
       'field_test_datestamp' => 'datetime',
       'field_test_datetime' => 'datetime',
-    );
+      'field_test_nodereference' => ['entity_reference', ['target_type' => 'node']],
+      'field_test_userreference' => ['entity_reference', ['target_type' => 'user']],
+    ];
     foreach ($fields as $name => $type) {
-      entity_create('field_storage_config', array(
+      $settings = is_array($type) ? $type[1] : [];
+      $type = is_array($type) ? $type[0] : $type;
+      FieldStorageConfig::create([
         'field_name' => $name,
         'entity_type' => 'node',
         'type' => $type,
-      ))->save();
+      ])->setSettings($settings)->save();
     }
-
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
index 36051b0..5a611ea 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
@@ -9,7 +9,6 @@
 
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\migrate\MigrateExecutable;
-use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 
 /**
  * Migrate fields.
@@ -23,7 +22,7 @@ class MigrateFieldTest extends MigrateDrupal6TestBase {
    *
    * @var array
    */
-  public static $modules = array('field', 'telephone', 'link', 'file', 'image', 'datetime', 'node', 'options');
+  public static $modules = ['field', 'telephone', 'link', 'file', 'image', 'datetime', 'node', 'options', 'entity_reference'];
 
   /**
    * {@inheritdoc}
@@ -114,6 +113,15 @@ public function testFields() {
     $field_storage = FieldStorageConfig::load('node.field_test_text_single_checkbox');
     $this->assertIdentical("boolean", $field_storage->getType(),  t('Field type is @fieldtype. It should be boolean.', array('@fieldtype' => $field_storage->getType())));
 
+    // Node reference field.
+    $field_storage = FieldStorageConfig::load('node.field_test_nodereference');
+    $this->assertIdentical('entity_reference', $field_storage->getType());
+    $this->assertIdentical('node', $field_storage->getSetting('target_type'));
+
+    // User reference field.
+    $field_storage = FieldStorageConfig::load('node.field_test_userreference');
+    $this->assertIdentical('entity_reference', $field_storage->getType());
+    $this->assertIdentical('user', $field_storage->getSetting('target_type'));
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
index f52b3bf..a609a87 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\migrate_drupal\Tests\d6;
 
 use Drupal\migrate\MigrateExecutable;
-use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 
 /**
  * Migrate field widget settings.
@@ -30,6 +29,7 @@ class MigrateFieldWidgetSettingsTest extends MigrateDrupal6TestBase {
     'image',
     'datetime',
     'node',
+    'entity_reference',
   );
 
   /**
@@ -58,6 +58,14 @@ protected function setUp() {
         array(array('field_test_date'), array('node', 'field_test_date')),
         array(array('field_test_datestamp'), array('node', 'field_test_datestamp')),
         array(array('field_test_datetime'), array('node', 'field_test_datetime')),
+        array(array('field_test_nodereference'), array('node', 'field_test_nodereference')),
+        array(array('field_test_userreference'), array('node', 'field_test_userreference')),
+      ),
+      'd6_node' => array(
+        array(array(2), array(2)),
+      ),
+      'd6_user' => array(
+        array(array(15), array(15)),
       ),
     );
     $this->prepareMigrations($id_mappings);
@@ -68,6 +76,7 @@ protected function setUp() {
       $this->getDumpDirectory() . '/ContentFieldTest.php',
       $this->getDumpDirectory() . '/ContentFieldTestTwo.php',
       $this->getDumpDirectory() . '/ContentFieldMultivalue.php',
+      $this->getDumpDirectory() . '/Role.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, $this);
@@ -93,7 +102,7 @@ public function testWidgetSettings() {
     // Integer field.
     $component = $form_display->getComponent('field_test_two');
     $expected['type'] = 'number';
-    $expected['weight'] = 1;
+    $expected['weight'] = 0;
     $expected['settings'] = array('placeholder' => '');
     $this->assertIdentical($expected, $component);
 
@@ -131,7 +140,7 @@ public function testWidgetSettings() {
     // Phone field.
     $component = $form_display->getComponent('field_test_phone');
     $expected['type'] = 'telephone_default';
-    $expected['weight'] = 13;
+    $expected['weight'] = 14;
     $expected['settings'] = array('placeholder' => '');
     $this->assertIdentical($expected, $component);
 
@@ -143,13 +152,26 @@ public function testWidgetSettings() {
     $this->assertIdentical($expected, $component);
 
     $component = $form_display->getComponent('field_test_datestamp');
-    $expected['weight'] = 11;
+    $expected['weight'] = 12;
     $this->assertIdentical($expected, $component);
 
     $component = $form_display->getComponent('field_test_datetime');
-    $expected['weight'] = 12;
+    $expected['weight'] = 13;
+    $this->assertIdentical($expected, $component);
+
+    // Node reference fields.
+    $component = $form_display->getComponent('field_test_nodereference');
+    $expected['type'] = 'entity_reference_autocomplete';
+    $expected['weight'] = 19;
+    $expected['settings'] = array('match_operator' => 'STARTS_WITH', 'size' => 80, 'placeholder' => '');
     $this->assertIdentical($expected, $component);
 
+    // User reference fields.
+    $component = $form_display->getComponent('field_test_userreference');
+    $expected['type'] = 'entity_reference_autocomplete';
+    $expected['weight'] = 20;
+    $expected['settings'] = array('match_operator' => 'STARTS_WITH', 'size' => 70, 'placeholder' => '');
+    $this->assertIdentical($expected, $component);
   }
 
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTest.php
index 8cb932f..5a718c7 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTest.php
@@ -48,7 +48,7 @@ public function testNode() {
     $this->assertIdentical('1388271197', $node->getCreatedTime(), 'Node has the correct created time.');
     $this->assertIdentical(FALSE, $node->isSticky());
     $this->assertIdentical('1', $node->getOwnerId());
-    $this->assertIdentical('1420861423', $node->getRevisionCreationTime());
+    $this->assertIdentical('1427827856', $node->getRevisionCreationTime());
 
     /** @var \Drupal\node\NodeInterface $node_revision */
     $node_revision = \Drupal::entityManager()->getStorage('node')->loadRevision(1);
