diff -u b/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
--- b/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -1589,8 +1589,13 @@
   foreach ($instances as $id => $instance) {
     if ($instance['entity_type'] == $entity_type && $instance['bundle'] == $bundle_old) {
       // @fieldcmi
-      config('field.instance.' . $instance['entity_type'] . '.' . $bundle_old . '.' . $instance['field_name'])->rename('field.instance.' . $instance['entity_type'] . '.' . $bundle_new . '.' . $instance['field_name']);
-      config('field.instance.' . $instance['entity_type'] . '.' . $bundle_new . '.' . $instance['field_name'])->set('bundle', $bundle_new)->save();
+      $new_instance_id = $instance['entity_type'] . '.' . $bundle_new . '.' . $instance['field_name'];
+      config('field.instance.' . $instance['entity_type'] . '.' . $bundle_old . '.' . $instance['field_name'])->rename('field.instance.' . $new_instance_id);
+      config('field.instance.' . $instance['entity_type'] . '.' . $bundle_new . '.' . $instance['field_name'])
+        ->set('data.bundle', $bundle_new)
+        ->set('id', $new_instance_id)
+        ->set('label', $new_instance_id)
+        ->save();
     }
   }
 
@@ -1601,7 +1606,12 @@
   // Rename bundle settings.
   // @fieldcmi entity_load('bundle', '$entity_type . '.' . $bundle_old');?
   if (config('field.bundle.' . $entity_type . '.' . $bundle_old)->get()) {
-    config('field.bundle.' . $entity_type . '.' . $bundle_old)->rename('field.settings.' . $entity_type . '.' . $bundle_new);
+    $new_bundle_id = $entity_type . '.' . $bundle_new;
+    config('field.bundle.' . $entity_type . '.' . $bundle_old)->rename('field.settings.' . $new_bundle_id);
+    config('field.settings.' . $new_bundle_id)
+      ->set('id', $new_bundle_id)
+      ->set('label', $new_bundle_id)
+      ->save();
   }
 
   // Let other modules act on renaming the bundle.
@@ -1641,7 +1651,10 @@
 
   // Clear bundle display settings.
   // @fieldcmi
-  entity_load('bundle', $entity_type . '.' . $bundle)->delete();
+  $bundle = entity_load('bundle', $entity_type . '.' . $bundle);
+  if ($bundle) {
+    $bundle->delete();
+  }
   //config('field.settings.' . $entity_type . '.' . $bundle)->delete();
 
   // Let other modules act on deleting the bundle.
diff -u b/core/modules/field/field.module b/core/modules/field/field.module
--- b/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -408,7 +408,9 @@
  * required if there are any active fields of that type.
  */
 function field_system_info_alter(&$info, $file, $type) {
-  if ($type == 'module' && module_hook($file->name, 'field_info')) {
+  // During a Drupal 7 to Drupal 8 upgrade it is only safe to call
+  // field_read_fields() once the field_update_8001 has finished.
+  if ($type == 'module' && module_hook($file->name, 'field_info') && drupal_get_installed_schema_version('field') >= 8001) {
     $fields = field_read_fields(array('module' => $file->name), array('include_deleted' => TRUE));
     if ($fields) {
       $info['required'] = TRUE;
@@ -833,17 +835,9 @@
   else {
     $e_bundle = entity_load('bundle', $identifier);
     if ($e_bundle) {
-      $e_bundle->data = $settings;
+       $settings = $e_bundle->data;
     }
     else {
-      $e_bundle = entity_create('bundle', array(
-        'id' => $identifier,
-        'label' => $identifier,
-        'data' => $settings,
-      ));
-    }
-    $e_bundle->save();
-    if (empty($settings)) {
       $settings = array();
     }
     $settings += array(
diff -u b/core/modules/field/modules/field_sql_storage/field_sql_storage.install b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
--- b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
+++ b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
@@ -11,14 +11,18 @@
 function field_sql_storage_schema() {
   $schema = array();
 
-  // Dynamic (data) tables.
-  //module_load_include('module', 'field');
-  //drupal_classloader_register('field', dirname(drupal_get_filename('module', 'field')));
-  $fields = field_read_fields(array(), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
-  drupal_load('module', 'field_sql_storage');
-  foreach ($fields as $field) {
-    if ($field['storage']['type'] == 'field_sql_storage') {
-      $schema += _field_sql_storage_schema($field);
+  // During a Drupal 7 to Drupal 8 upgrade it is only safe to call
+  // field_read_fields() once the field_update_8001 has finished.
+  if (drupal_get_installed_schema_version('field') >= 8001) {
+    // Dynamic (data) tables.
+    //module_load_include('module', 'field');
+    //drupal_classloader_register('field', dirname(drupal_get_filename('module', 'field')));
+    $fields = field_read_fields(array(), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
+    drupal_load('module', 'field_sql_storage');
+    foreach ($fields as $field) {
+      if ($field['storage']['type'] == 'field_sql_storage') {
+        $schema += _field_sql_storage_schema($field);
+      }
     }
   }
 
only in patch2:
unchanged:
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -194,6 +194,11 @@ function node_cron() {
  * Implements hook_entity_info_alter().
  */
 function node_entity_info_alter(&$info) {
+  if (!db_table_exists('node_type')) {
+    // entity_get_info() is called in drupal_get_schema now this means this can
+    // be called before the schema is installed.
+    return;
+  }
   // Add a translation handler for fields if the language module is enabled.
   if (module_exists('language')) {
     $info['node']['translation']['node'] = TRUE;
only in patch2:
unchanged:
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -390,6 +390,11 @@ function rdf_modules_uninstalled($modules) {
  *
  */
 function rdf_entity_info_alter(&$entity_info) {
+  if (!db_table_exists('rdf_mapping')) {
+    // entity_get_info() is called in drupal_get_schema now this means this can
+    // be called before the schema is installed.
+    return;
+  }
   // Loop through each entity type and its bundles.
   foreach ($entity_info as $entity_type => $entity_type_info) {
     if (!empty($entity_type_info['bundles'])) {
only in patch2:
unchanged:
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -109,6 +109,11 @@ function taxonomy_permission() {
  * Implements hook_entity_info_alter().
  */
 function taxonomy_entity_info_alter(&$info) {
+  if (!db_table_exists('taxonomy_vocabulary')) {
+    // entity_get_info() is called in drupal_get_schema now this means this can
+    // be called both the schema is installed.
+    return;
+  }
   foreach (taxonomy_vocabulary_get_names() as $machine_name => $vocabulary) {
     $info['taxonomy_term']['bundles'][$machine_name] = array(
       'label' => $vocabulary->name,
