diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/CckFieldValues.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/CckFieldValues.php
index ba93e1878a8bc486ab6d8eb7d6f99b8dfcde4ed5..be8788a33ff7b43bae781cc357eb8b96906a16ed 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/CckFieldValues.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/CckFieldValues.php
@@ -117,18 +117,49 @@ public function prepareRow(Row $row) {
 
     // Handle fields that have their own table.
     foreach ($this->getSourceFieldInfo($bundle) as $field_name => $field_info) {
-      if ($field_info['multiple'] && !$field_info['db_storage']) {
+      if ($field_info['multiple'] || !$field_info['db_storage']) {
         // Select the data.
         $table = "content_$field_name";
-        $data = $this
+        $field_query = $this
           ->select($table, 't')
-          ->fields('t', array('delta') + $field_info['columns'])
-          ->condition('vid', $row->getSourceProperty('vid'))
-          ->execute()
-          ->fetchAllKeyed();
+          ->condition('vid', $row->getSourceProperty('vid'));
+        if ($field_info['multiple']) {
+          $field_query->addField('t', 'delta');
+        }
+        $data = FALSE;
+        foreach ($field_info['columns'] as $display_name => $column_name) {
+          // The database API won't allow colons in column aliases, so we
+          // will accept the default alias, and fix up the field names later.
+          // Remember how to translate the field names.
+          if ($field_info['type'] == 'filefield' &&
+            (strpos($display_name, ':list') || strpos($display_name, ':description'))) {
+            if (!$data) {
+              //$this->fileDataFields[] = $field_name . '_data';
+              $field_query->addField('t', $field_name . '_data');
+              $data = TRUE;
+            }
+          }
+          else {
+            $field_query->addField('t', $column_name);
+          }
+        }
 
-        // Set it on the row.
-        $row->setSourceProperty($field_name, $data);
+        if ($field_info['multiple']) {
+          foreach ($field_query->execute() as $field_row) {
+            foreach ($field_info['columns'] as $display_name => $column_name) {
+              list ( , $column) = explode(':', $display_name);
+              $propery_path = $field_name . '.' . $field_row['delta'] . '.' . $column;
+              $row->setSourceProperty($propery_path, $field_row[$column_name]);
+            }
+          }
+        }
+        else {
+          if ($field_row = $field_query->execute()->fetchAssoc()) {
+            foreach ($field_info['columns'] as $display_name => $column_name) {
+              $row->setSourceProperty(str_replace(':', '.', $display_name), $field_row[$column_name]);
+            }
+          }
+        }
       }
     }
     parent::prepareRow($row);
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6FieldInstance.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6FieldInstance.php
index 1a59f819cdfa54a4942a03e4341892522f73706f..25e5910a513d824761af7b6ebc466fd51737d71a 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6FieldInstance.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6FieldInstance.php
@@ -139,7 +139,7 @@ public function load() {
     ))
     ->values(array(
       'field_name' => 'field_test',
-      'type_name' => 'article',
+      'type_name' => 'test_page',
       'weight' => 1,
       'label' => 'Text Field',
       'widget_type' => 'text_textfield',
@@ -630,7 +630,7 @@ public function load() {
 
     // Create the field table.
     $this->createTable('content_node_field', array(
-      'description' => 'Table that contains field instance settings.',
+      'description' => 'Table that contains field settings.',
       'fields' => array(
         'field_name' => array(
           'type' => 'varchar',
@@ -712,7 +712,7 @@ public function load() {
       'type' => 'text',
       'global_settings' => 'a:4:{s:15:"text_processing";s:1:"1";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
       'multiple' => 0,
-      'db_storage' => 1,
+      'db_storage' => 0,
       'db_columns' => serialize(array(
         'value' => array(
           'type' => 'text',
@@ -721,6 +721,12 @@ public function load() {
           'sortable' => TRUE,
           'views' => TRUE,
         ),
+        'format' => array(
+          'type' => 'int',
+          'unsigned' => TRUE,
+          'not null' => TRUE,
+          'default' => 0,
+        ),
       )),
       'active' => 1,
     ))
@@ -741,7 +747,16 @@ public function load() {
       'global_settings' => '',
       'multiple' => 0,
       'db_storage' => 1,
-      'db_columns' => 'a:0:{}',
+      'db_columns' => serialize(array(
+        'value' => array(
+          'type' => 'numeric',
+          'precision' => 10,
+          'scale' => 2,
+          'not null' => FALSE,
+          'sortable' => TRUE,
+          'views' => TRUE,
+        ),
+      )),
       'active' => 1,
     ))
     ->values(array(
@@ -843,6 +858,53 @@ public function load() {
     ))
     ->execute();
 
+    $this->createTable('content_field_test', array(
+        'description' => 'Table for field_test',
+        'fields' => array(
+          'vid' => array(
+            'description' => 'The primary identifier for this version.',
+            'type' => 'serial',
+            'unsigned' => TRUE,
+            'not null' => TRUE,
+          ),
+          'nid' => array(
+            'description' => 'The {node} this version belongs to.',
+            'type' => 'int',
+            'unsigned' => TRUE,
+            'not null' => TRUE,
+            'default' => 0,
+          ),
+          'field_test_value' => array(
+            'description' => 'Test field value.',
+            'type' => 'varchar',
+            'length' => 255,
+            'not null' => TRUE,
+            'default' => '',
+          ),
+          'field_test_format' => array(
+            'type' => 'int',
+            'unsigned' => TRUE,
+            'not null' => TRUE,
+            'default' => 0,
+          ),
+        ),
+        'primary key' => array('vid'),
+      ));
+    $this->database->insert('content_field_test')->fields(array(
+        'vid',
+        'nid',
+        'field_test_value',
+        'field_test_format',
+      ))
+      ->values(array(
+          'vid' => 1,
+          'nid' => 1,
+          'field_test_value' => 'This is a shared text field',
+          'field_test_format' => 1,
+        ))
+      ->execute();
+
+
     $this->createTable('content_field_test_two', array(
       'description' => 'Table for field_test_two',
       'fields' => array(
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6Node.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6Node.php
index cd31852970311af58215bb29a7391202eea50af2..be2c183c6d7d62ec3ea1b891955cdf7454464f9d 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6Node.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6Node.php
@@ -303,12 +303,12 @@ public function load() {
           'unsigned' => TRUE,
           'not null' => TRUE,
         ),
-        'field_test_value' => array(
+        'field_test_three_value' => array(
           'description' => 'Test field column.',
-          'type' => 'varchar',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => '',
+          'type' => 'numeric',
+          'precision' => 10,
+          'scale' => 2,
+          'not null' => FALSE
         ),
       ),
       'primary key' => array('vid'),
@@ -318,12 +318,12 @@ public function load() {
       array(
         'nid',
         'vid',
-        'field_test_value',
+        'field_test_three_value',
       ))
       ->values(array(
         'nid' => 1,
         'vid' => 1,
-        'field_test_value' => 'This is a text field',
+        'field_test_three_value' => '42.42',
       ))
       ->execute();
     $this->setModuleVersion('content', 6001);
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateCckFieldValuesTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateCckFieldValuesTest.php
index e9498bae0cbf9f3e1833b22a206279342033b153..1d5c3ce803bcd598b3acdac7b9c62a019cfcaef1 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateCckFieldValuesTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateCckFieldValuesTest.php
@@ -58,6 +58,16 @@ protected function setUp() {
       'field_name' => 'field_test_two',
       'bundle' => 'story',
     ))->save();
+    entity_create('field_config', array(
+      'entity_type' => 'node',
+      'name' => 'field_test_three',
+      'type' => 'decimal',
+    ))->save();
+    entity_create('field_instance_config', array(
+      'entity_type' => 'node',
+      'field_name' => 'field_test_three',
+      'bundle' => 'story',
+    ))->save();
 
     // Add some id mappings for the dependant migrations.
     $id_mappings = array(
@@ -87,9 +97,11 @@ protected function setUp() {
    */
   public function testCckFields() {
     $node = node_load(1);
-    $this->assertEqual($node->field_test->value, 'This is a text field', "Single field storage field is correct.");
+    $this->assertEqual($node->field_test->value, 'This is a shared text field', "Shared field storage field is correct.");
+    $this->assertEqual($node->field_test->format, 1, "Shared field storage field with multiple columns is correct.");
     $this->assertEqual($node->field_test_two->value, 10, 'Multi field storage field is correct');
     $this->assertEqual($node->field_test_two[1]->value, 20, 'Multi field second value is correct.');
+    $this->assertEqual($node->field_test_three->value, '42.42', 'Single field second value is correct.');
   }
 
 }
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldFormatterSettingsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldFormatterSettingsTest.php
index 683a0f1df5dc541efc4dfd7517e286106d5cf04d..dd85245fe97cde216747531d625f03743c7ab701 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldFormatterSettingsTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldFormatterSettingsTest.php
@@ -40,7 +40,7 @@ public static function getInfo() {
   public function setUp() {
     parent::setUp();
 
-    entity_create('node_type', array('type' => 'article'))->save();
+    entity_create('node_type', array('type' => 'test_page'))->save();
     entity_create('node_type', array('type' => 'story'))->save();
     // Create the node preview view mode.
     entity_create('view_mode', array('id' => 'node.preview', 'targetEntityType' => 'node'))->save();
@@ -102,7 +102,7 @@ public function testEntityDisplaySettings() {
     $this->assertEqual($display->getComponent($field_name), $expected);
 
     // Test migrate worked with multiple bundles.
-    $display = entity_load('entity_view_display', 'node.article.teaser');
+    $display = entity_load('entity_view_display', 'node.test_page.teaser');
     $this->assertEqual($display->getComponent($field_name), $expected);
 
     // Test RSS because that has been converted from 4 to rss.
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldInstanceTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldInstanceTest.php
index d0c38bef8325a05dbbcab5c9f8ad18a01ea0f88c..98c53e9d14eba7dcb5ccef01b9847cc2d2ff24e9 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldInstanceTest.php
@@ -66,13 +66,13 @@ public function setUp() {
       'd6_node_type' => array(
         array(array('page'), array('page')),
         array(array('story'), array('story')),
-        array(array('article'), array('article')),
+        array(array('test_page'), array('test_page')),
       ),
     );
     $this->prepareIdMappings($id_mappings);
     entity_create('node_type', array('type' => 'page'))->save();
     entity_create('node_type', array('type' => 'story'))->save();
-    entity_create('node_type', array('type' => 'article'))->save();
+    entity_create('node_type', array('type' => 'test_page'))->save();
 
     $migration = entity_load('migration', 'd6_field_instance');
     $dumps = array(
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldWidgetSettingsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldWidgetSettingsTest.php
index c18691f1f3b1cc0a933c51001410756ca62c3be7..f81fe844b14c8df3fcf8fe3309956917351c1861 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldWidgetSettingsTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateFieldWidgetSettingsTest.php
@@ -47,7 +47,7 @@ public static function getInfo() {
   public function setUp() {
     parent::setUp();
 
-    entity_create('node_type', array('type' => 'article'))->save();
+    entity_create('node_type', array('type' => 'test_page'))->save();
     entity_create('node_type', array('type' => 'story'))->save();
 
     // Add some id mappings for the dependant migrations.