diff --git a/core/modules/book/config/install/core.entity_form_display.node.book.default.yml b/core/modules/book/config/install/core.entity_form_display.node.book.default.yml
new file mode 100644
index 0000000..1175058
--- /dev/null
+++ b/core/modules/book/config/install/core.entity_form_display.node.book.default.yml
@@ -0,0 +1,29 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.book.body
+    - node.type.book
+  module:
+    - text
+id: node.book.default
+targetEntityType: node
+bundle: book
+mode: default
+content:
+  title:
+    type: string
+    weight: -5
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  body:
+    type: text_textarea_with_summary
+    weight: -4
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    third_party_settings: {  }
+hidden: {  }
diff --git a/core/modules/book/config/install/core.entity_view_display.node.book.default.yml b/core/modules/book/config/install/core.entity_view_display.node.book.default.yml
new file mode 100644
index 0000000..467a4f6
--- /dev/null
+++ b/core/modules/book/config/install/core.entity_view_display.node.book.default.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.book.body
+    - node.type.book
+  module:
+    - text
+id: node.book.default
+label: null
+targetEntityType: node
+bundle: book
+mode: default
+content:
+  body:
+    label: hidden
+    type: text_default
+    weight: -4
+    settings: {  }
+    third_party_settings: {  }
+hidden:
+  langcode: true
diff --git a/core/modules/book/config/install/core.entity_view_display.node.book.teaser.yml b/core/modules/book/config/install/core.entity_view_display.node.book.teaser.yml
new file mode 100644
index 0000000..a8379ca
--- /dev/null
+++ b/core/modules/book/config/install/core.entity_view_display.node.book.teaser.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - entity.view_mode.node.teaser
+    - field.instance.node.book.body
+    - node.type.book
+  module:
+    - text
+id: node.book.teaser
+label: null
+targetEntityType: node
+bundle: book
+mode: teaser
+content:
+  body:
+    label: hidden
+    type: text_summary_or_trimmed
+    weight: -4
+    settings:
+      trim_length: 600
+    third_party_settings: {  }
+hidden:
+  langcode: true
diff --git a/core/modules/book/config/install/field.instance.node.book.body.yml b/core/modules/book/config/install/field.instance.node.book.body.yml
new file mode 100644
index 0000000..3c422c4
--- /dev/null
+++ b/core/modules/book/config/install/field.instance.node.book.body.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.body
+    - node.type.book
+id: node.book.body
+label: Body
+field_name: body
+entity_type: node
+bundle: book
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  display_summary: true
+  text_processing: true
+field_type: text_with_summary
diff --git a/core/modules/config/src/Tests/ConfigImportRecreateTest.php b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
index a281894..3a24135 100644
--- a/core/modules/config/src/Tests/ConfigImportRecreateTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRecreateTest.php
@@ -65,6 +65,7 @@ public function testRecreateEntity() {
       'name' => 'Node type one',
     ));
     $content_type->save();
+    node_add_body_field($content_type);
     /** @var \Drupal\Core\Config\StorageInterface $active */
     $active = $this->container->get('config.storage');
     /** @var \Drupal\Core\Config\StorageInterface $staging */
@@ -83,6 +84,7 @@ public function testRecreateEntity() {
       'name' => 'Node type two',
     ));
     $content_type->save();
+    node_add_body_field($content_type);
 
     $this->configImporter->reset();
     // A node type, a field, a field instance an entity view display and an
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php b/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
index 7f88fdc..da6914a 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
+++ b/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
@@ -232,11 +232,10 @@ public function doContactFormsListTest() {
   public function doContentTypeListTest() {
     // Create a test content type to decouple looking for translate operations
     // link so this does not test more than necessary.
-    $content_type = entity_create('node_type', array(
+    $content_type = $this->drupalCreateContentType(array(
       'type' => Unicode::strtolower($this->randomMachineName(16)),
       'name' => $this->randomMachineName(),
     ));
-    $content_type->save();
 
     // Get the content type listing.
     $this->drupalGet('admin/structure/types');
@@ -384,11 +383,10 @@ public function doResponsiveImageListTest() {
    */
   public function doFieldListTest() {
     // Create a base content type.
-    $content_type = entity_create('node_type', array(
+    $content_type = $this->drupalCreateContentType(array(
       'type' => Unicode::strtolower($this->randomMachineName(16)),
       'name' => $this->randomMachineName(),
     ));
-    $content_type->save();
 
     // Look at a few fields on a few entity types.
     $pages = array(
diff --git a/core/modules/editor/src/Tests/EditorFileUsageTest.php b/core/modules/editor/src/Tests/EditorFileUsageTest.php
index fb62a09..df950bf 100644
--- a/core/modules/editor/src/Tests/EditorFileUsageTest.php
+++ b/core/modules/editor/src/Tests/EditorFileUsageTest.php
@@ -49,6 +49,7 @@ protected function setUp() {
     // Create a node type for testing.
     $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
     $type->save();
+    node_add_body_field($type);
   }
 
   /**
diff --git a/core/modules/entity/src/Tests/EntityDisplayTest.php b/core/modules/entity/src/Tests/EntityDisplayTest.php
index 2e3657d..cf2a281 100644
--- a/core/modules/entity/src/Tests/EntityDisplayTest.php
+++ b/core/modules/entity/src/Tests/EntityDisplayTest.php
@@ -266,12 +266,13 @@ public function testRenameDeleteBundle() {
     $this->installEntitySchema('node');
 
     // Create a node bundle, display and form display object.
-    entity_create('node_type', array('type' => 'article'))->save();
+    $type = entity_create('node_type', array('type' => 'article'));
+    $type->save();
+    node_add_body_field($type);
     entity_get_display('node', 'article', 'default')->save();
     entity_get_form_display('node', 'article', 'default')->save();
 
     // Rename the article bundle and assert the entity display is renamed.
-    $type = node_type_load('article');
     $type->old_type = 'article';
     $type->type = 'article_rename';
     $type->save();
diff --git a/core/modules/forum/config/install/comment.type.comment_forum.yml b/core/modules/forum/config/install/comment.type.comment_forum.yml
new file mode 100644
index 0000000..fed6de3
--- /dev/null
+++ b/core/modules/forum/config/install/comment.type.comment_forum.yml
@@ -0,0 +1,7 @@
+langcode: en
+status: true
+dependencies: {  }
+id: comment_forum
+label: Comment_forum
+target_entity_type_id: node
+description: 'Default comment field'
diff --git a/core/modules/forum/config/install/core.entity_form_display.comment.comment_forum.default.yml b/core/modules/forum/config/install/core.entity_form_display.comment.comment_forum.default.yml
new file mode 100644
index 0000000..b83f272
--- /dev/null
+++ b/core/modules/forum/config/install/core.entity_form_display.comment.comment_forum.default.yml
@@ -0,0 +1,30 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - comment.type.comment_forum
+    - field.instance.comment.comment_forum.comment_body
+  module:
+    - text
+id: comment.comment_forum.default
+targetEntityType: comment
+bundle: comment_forum
+mode: default
+content:
+  author:
+    weight: -2
+  subject:
+    type: string
+    weight: 10
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  comment_body:
+    type: text_textarea
+    weight: 11
+    settings:
+      rows: 5
+      placeholder: ''
+    third_party_settings: {  }
+hidden: {  }
diff --git a/core/modules/forum/config/install/core.entity_form_display.node.forum.default.yml b/core/modules/forum/config/install/core.entity_form_display.node.forum.default.yml
new file mode 100644
index 0000000..1445715
--- /dev/null
+++ b/core/modules/forum/config/install/core.entity_form_display.node.forum.default.yml
@@ -0,0 +1,43 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.forum.body
+    - field.instance.node.forum.comment_forum
+    - field.instance.node.forum.taxonomy_forums
+    - node.type.forum
+  module:
+    - comment
+    - options
+    - text
+id: node.forum.default
+targetEntityType: node
+bundle: forum
+mode: default
+content:
+  title:
+    type: string
+    weight: -5
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  body:
+    type: text_textarea_with_summary
+    weight: -4
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    third_party_settings: {  }
+  taxonomy_forums:
+    type: options_select
+    weight: -3
+    settings: {  }
+    third_party_settings: {  }
+  comment_forum:
+    type: comment_default
+    weight: 20
+    settings: {  }
+    third_party_settings: {  }
+hidden: {  }
diff --git a/core/modules/forum/config/install/core.entity_form_display.taxonomy_term.forums.default.yml b/core/modules/forum/config/install/core.entity_form_display.taxonomy_term.forums.default.yml
index d295232..657cfea 100644
--- a/core/modules/forum/config/install/core.entity_form_display.taxonomy_term.forums.default.yml
+++ b/core/modules/forum/config/install/core.entity_form_display.taxonomy_term.forums.default.yml
@@ -1,8 +1,14 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - taxonomy.vocabulary.forums
+  module:
+    - text
 id: taxonomy_term.forums.default
 targetEntityType: taxonomy_term
 bundle: forums
 mode: default
-status: true
 content:
   name:
     type: string
@@ -14,8 +20,6 @@ content:
   description:
     type: text_textfield
     weight: 0
-    settings: { }
+    settings: {  }
     third_party_settings: {  }
-dependencies:
-  entity:
-    - taxonomy.vocabulary.forums
+hidden: {  }
diff --git a/core/modules/forum/config/install/core.entity_view_display.comment.comment_forum.default.yml b/core/modules/forum/config/install/core.entity_view_display.comment.comment_forum.default.yml
new file mode 100644
index 0000000..a36bf0e
--- /dev/null
+++ b/core/modules/forum/config/install/core.entity_view_display.comment.comment_forum.default.yml
@@ -0,0 +1,21 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - comment.type.comment_forum
+    - field.instance.comment.comment_forum.comment_body
+  module:
+    - text
+id: comment.comment_forum.default
+label: null
+targetEntityType: comment
+bundle: comment_forum
+mode: default
+content:
+  comment_body:
+    label: hidden
+    type: text_default
+    weight: 0
+    settings: {  }
+    third_party_settings: {  }
+hidden: {  }
diff --git a/core/modules/forum/config/install/core.entity_view_display.node.forum.default.yml b/core/modules/forum/config/install/core.entity_view_display.node.forum.default.yml
new file mode 100644
index 0000000..997f0a4
--- /dev/null
+++ b/core/modules/forum/config/install/core.entity_view_display.node.forum.default.yml
@@ -0,0 +1,39 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.forum.body
+    - field.instance.node.forum.comment_forum
+    - field.instance.node.forum.taxonomy_forums
+    - node.type.forum
+  module:
+    - comment
+    - taxonomy
+    - text
+id: node.forum.default
+label: null
+targetEntityType: node
+bundle: forum
+mode: default
+content:
+  body:
+    label: hidden
+    type: text_default
+    weight: -4
+    settings: {  }
+    third_party_settings: {  }
+  taxonomy_forums:
+    type: taxonomy_term_reference_link
+    weight: 10
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+  comment_forum:
+    label: hidden
+    type: comment_default
+    weight: 20
+    settings:
+      pager_id: '0'
+    third_party_settings: {  }
+hidden:
+  langcode: true
diff --git a/core/modules/forum/config/install/core.entity_view_display.node.forum.teaser.yml b/core/modules/forum/config/install/core.entity_view_display.node.forum.teaser.yml
new file mode 100644
index 0000000..eb7c31f
--- /dev/null
+++ b/core/modules/forum/config/install/core.entity_view_display.node.forum.teaser.yml
@@ -0,0 +1,34 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - entity.view_mode.node.teaser
+    - field.instance.node.forum.body
+    - field.instance.node.forum.comment_forum
+    - field.instance.node.forum.taxonomy_forums
+    - node.type.forum
+  module:
+    - taxonomy
+    - text
+id: node.forum.teaser
+label: null
+targetEntityType: node
+bundle: forum
+mode: teaser
+content:
+  body:
+    label: hidden
+    type: text_summary_or_trimmed
+    weight: -4
+    settings:
+      trim_length: 600
+    third_party_settings: {  }
+  taxonomy_forums:
+    type: taxonomy_term_reference_link
+    weight: 10
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+hidden:
+  langcode: true
+  comment_forum: true
diff --git a/core/modules/forum/config/install/core.entity_view_display.taxonomy_term.forums.default.yml b/core/modules/forum/config/install/core.entity_view_display.taxonomy_term.forums.default.yml
index f2f5b61..e2176e2 100644
--- a/core/modules/forum/config/install/core.entity_view_display.taxonomy_term.forums.default.yml
+++ b/core/modules/forum/config/install/core.entity_view_display.taxonomy_term.forums.default.yml
@@ -1,8 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - taxonomy.vocabulary.forums
+  module:
+    - text
 id: taxonomy_term.forums.default
+label: null
 targetEntityType: taxonomy_term
 bundle: forums
 mode: default
-status: true
 content:
   description:
     type: text_default
@@ -11,7 +18,3 @@ content:
     third_party_settings: {  }
     label: above
 hidden: {  }
-status: true
-dependencies:
-  entity:
-    - taxonomy.vocabulary.forums
diff --git a/core/modules/forum/config/install/field.instance.comment.comment_forum.comment_body.yml b/core/modules/forum/config/install/field.instance.comment.comment_forum.comment_body.yml
new file mode 100644
index 0000000..d3809b5
--- /dev/null
+++ b/core/modules/forum/config/install/field.instance.comment.comment_forum.comment_body.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - comment.type.comment_forum
+    - field.storage.comment.comment_body
+id: comment.comment_forum.comment_body
+label: Comment
+field_name: comment_body
+entity_type: comment
+bundle: comment_forum
+description: ''
+required: true
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  text_processing: '1'
+field_type: text_long
diff --git a/core/modules/forum/config/install/field.instance.node.forum.body.yml b/core/modules/forum/config/install/field.instance.node.forum.body.yml
new file mode 100644
index 0000000..3a9301b
--- /dev/null
+++ b/core/modules/forum/config/install/field.instance.node.forum.body.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.body
+    - node.type.forum
+id: node.forum.body
+label: Body
+field_name: body
+entity_type: node
+bundle: forum
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  display_summary: true
+  text_processing: true
+field_type: text_with_summary
diff --git a/core/modules/forum/config/install/field.instance.node.forum.comment_forum.yml b/core/modules/forum/config/install/field.instance.node.forum.comment_forum.yml
new file mode 100644
index 0000000..69c1d86
--- /dev/null
+++ b/core/modules/forum/config/install/field.instance.node.forum.comment_forum.yml
@@ -0,0 +1,30 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.comment_forum
+    - node.type.forum
+id: node.forum.comment_forum
+label: Comments
+field_name: comment_forum
+entity_type: node
+bundle: forum
+description: ''
+required: true
+translatable: true
+default_value:
+  -
+    status: 2
+    cid: 0
+    last_comment_name: null
+    last_comment_timestamp: 0
+    last_comment_uid: 0
+    comment_count: 0
+default_value_function: ''
+settings:
+  default_mode: false
+  per_page: 50
+  form_location: true
+  anonymous: 0
+  preview: 1
+field_type: comment
diff --git a/core/modules/forum/config/install/field.instance.node.forum.taxonomy_forums.yml b/core/modules/forum/config/install/field.instance.node.forum.taxonomy_forums.yml
new file mode 100644
index 0000000..3f95d2a
--- /dev/null
+++ b/core/modules/forum/config/install/field.instance.node.forum.taxonomy_forums.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.taxonomy_forums
+    - node.type.forum
+id: node.forum.taxonomy_forums
+label: Forums
+field_name: taxonomy_forums
+entity_type: node
+bundle: forum
+description: ''
+required: true
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  handler: default
+field_type: taxonomy_term_reference
diff --git a/core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml b/core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml
index b1c47ea..a8d74bf 100644
--- a/core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml
+++ b/core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml
@@ -1,19 +1,20 @@
-id: taxonomy_term.forums.forum_container
-status: true
 langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.taxonomy_term.forum_container
+    - taxonomy.vocabulary.forums
+id: taxonomy_term.forums.forum_container
+label: Container
+field_name: forum_container
 entity_type: taxonomy_term
 bundle: forums
-field_name: forum_container
-label: Container
 description: ''
 required: true
+translatable: true
 default_value:
   -
     value: 0
 default_value_function: ''
 settings: {  }
 field_type: boolean
-dependencies:
-  entity:
-    - field.storage.taxonomy_term.forum_container
-    - taxonomy.vocabulary.forums
diff --git a/core/modules/forum/config/install/field.storage.node.comment_forum.yml b/core/modules/forum/config/install/field.storage.node.comment_forum.yml
new file mode 100644
index 0000000..57c6750
--- /dev/null
+++ b/core/modules/forum/config/install/field.storage.node.comment_forum.yml
@@ -0,0 +1,17 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - comment
+    - node
+id: node.comment_forum
+name: comment_forum
+entity_type: node
+type: comment
+settings:
+  comment_type: comment_forum
+module: comment
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
diff --git a/core/modules/forum/config/install/field.storage.node.taxonomy_forums.yml b/core/modules/forum/config/install/field.storage.node.taxonomy_forums.yml
new file mode 100644
index 0000000..f338e07
--- /dev/null
+++ b/core/modules/forum/config/install/field.storage.node.taxonomy_forums.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - taxonomy
+id: node.taxonomy_forums
+name: taxonomy_forums
+entity_type: node
+type: taxonomy_term_reference
+settings:
+  allowed_values:
+    -
+      vocabulary: forums
+      parent: 0
+  target_type: taxonomy_term
+  options_list_callback: null
+  target_bundle: null
+module: taxonomy
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
diff --git a/core/modules/forum/config/install/field.storage.taxonomy_term.forum_container.yml b/core/modules/forum/config/install/field.storage.taxonomy_term.forum_container.yml
index a5d8164..7263da4 100644
--- a/core/modules/forum/config/install/field.storage.taxonomy_term.forum_container.yml
+++ b/core/modules/forum/config/install/field.storage.taxonomy_term.forum_container.yml
@@ -1,18 +1,17 @@
-id: taxonomy_term.forum_container
-status: true
 langcode: en
+status: true
+dependencies:
+  module:
+    - taxonomy
+id: taxonomy_term.forum_container
 name: forum_container
+entity_type: taxonomy_term
 type: boolean
 settings:
   on_label: Yes
   off_label: No
-module: options
-entity_type: taxonomy_term
+module: core
 locked: true
 cardinality: 1
 translatable: false
 indexes: {  }
-dependencies:
-  module:
-    - options
-    - taxonomy
diff --git a/core/modules/forum/config/install/taxonomy.vocabulary.forums.yml b/core/modules/forum/config/install/taxonomy.vocabulary.forums.yml
index 74d64ca..571b895 100644
--- a/core/modules/forum/config/install/taxonomy.vocabulary.forums.yml
+++ b/core/modules/forum/config/install/taxonomy.vocabulary.forums.yml
@@ -1,7 +1,8 @@
-vid: forums
+langcode: en
+status: true
+dependencies: {  }
 name: Forums
+vid: forums
 description: 'Forum navigation vocabulary'
 hierarchy: 1
 weight: -10
-status: true
-langcode: en
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index 2ebc79f..9fc9500 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -22,88 +22,15 @@ function forum_install() {
   \Drupal::state()->set('node.type.locked', $locked);
 
   if (!\Drupal::service('config.installer')->isSyncing()) {
-    // Create the 'taxonomy_forums' field if it doesn't already exist. If forum
-    // is being enabled at the same time as taxonomy after both modules have been
-    // enabled, the field might exist but still be marked inactive.
-    if (!FieldStorageConfig::loadByName('node', 'taxonomy_forums')) {
-      entity_create('field_storage_config', array(
-        'name' => 'taxonomy_forums',
-        'entity_type' => 'node',
-        'type' => 'taxonomy_term_reference',
-        'settings' => array(
-          'allowed_values' => array(
-            array(
-              'vocabulary' => 'forums',
-              'parent' => 0,
-            ),
-          ),
-        ),
-      ))->save();
-
-      // Create a default forum so forum posts can be created.
-      $term = entity_create('taxonomy_term', array(
-        'name' => t('General discussion'),
-        'description' => '',
-        'parent' => array(0),
-        'vid' => 'forums',
-        'forum_container' => 0,
-      ));
-      $term->save();
-
-      // Create the instance on the bundle.
-      entity_create('field_instance_config', array(
-        'field_name' => 'taxonomy_forums',
-        'entity_type' => 'node',
-        'label' => 'Forums',
-        'bundle' => 'forum',
-        'required' => TRUE,
-      ))->save();
-
-      // Assign form display settings for the 'default' form mode.
-      entity_get_form_display('node', 'forum', 'default')
-        ->setComponent('taxonomy_forums', array(
-          'type' => 'options_select',
-        ))
-        ->save();
-
-      // Assign display settings for the 'default' and 'teaser' view modes.
-      entity_get_display('node', 'forum', 'default')
-        ->setComponent('taxonomy_forums', array(
-          'type' => 'taxonomy_term_reference_link',
-          'weight' => 10,
-        ))
-        ->save();
-
-      entity_get_display('node', 'forum', 'teaser')
-        ->setComponent('taxonomy_forums', array(
-          'type' => 'taxonomy_term_reference_link',
-          'weight' => 10,
-        ))
-        ->save();
-    }
-    // Add the comment field to the forum node type.
-    $field_storages = entity_load_multiple_by_properties('field_storage_config', array(
-      'type' => 'comment',
-      'name' => 'comment_forum',
-      'include_deleted' => FALSE,
+    // Create a default forum so forum posts can be created.
+    $term = entity_create('taxonomy_term', array(
+      'name' => t('General discussion'),
+      'description' => '',
+      'parent' => array(0),
+      'vid' => 'forums',
+      'forum_container' => 0,
     ));
-    if (empty($field_storages)) {
-      Drupal::service('comment.manager')->addDefaultField('node', 'forum', 'comment_forum', CommentItemInterface::OPEN, 'comment_forum');
-
-      // Add here because we don't have param in addDefaultField function.
-      $instance = FieldInstanceConfig::loadByName('node', 'forum', 'comment_forum');
-      $instance->settings['default_mode'] = CommentManagerInterface::COMMENT_MODE_FLAT;
-      $instance->save();
-
-      // Hide label for comment field.
-      entity_get_display('node', 'forum', 'default')
-        ->setComponent('comment_forum', array(
-          'label' => 'hidden',
-          'type' => 'comment_default',
-          'weight' => 20,
-        ))
-        ->save();
-    }
+    $term->save();
   }
 }
 
diff --git a/core/modules/migrate/src/Plugin/migrate/destination/EntityNodeType.php b/core/modules/migrate/src/Plugin/migrate/destination/EntityNodeType.php
new file mode 100644
index 0000000..05fd72d
--- /dev/null
+++ b/core/modules/migrate/src/Plugin/migrate/destination/EntityNodeType.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate\Plugin\migrate\destination\EntityNodeType.
+ */
+
+namespace Drupal\migrate\Plugin\migrate\destination;
+
+use Drupal\migrate\Row;
+
+/**
+ * @MigrateDestination(
+ *   id = "entity:node_type"
+ * )
+ */
+class EntityNodeType extends EntityConfigBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function import(Row $row, array $old_destination_id_values = array()) {
+    $entity_ids = parent::import($row, $old_destination_id_values);
+    if ($row->getDestinationProperty('create_body')) {
+      $node_types = $this->storage->loadMultiple($entity_ids);
+      node_add_body_field(array_pop($node_types), $row->getDestinationProperty('create_body_label'));
+    }
+    return $entity_ids;
+  }
+
+}
diff --git a/core/modules/node/config/install/field.storage.node.body.yml b/core/modules/node/config/install/field.storage.node.body.yml
new file mode 100644
index 0000000..fdf2b1f
--- /dev/null
+++ b/core/modules/node/config/install/field.storage.node.body.yml
@@ -0,0 +1,16 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - node
+    - text
+id: node.body
+name: body
+entity_type: node
+type: text_with_summary
+settings: {  }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
diff --git a/core/modules/node/src/NodeTypeForm.php b/core/modules/node/src/NodeTypeForm.php
index 97eb1eb..32c23e5 100644
--- a/core/modules/node/src/NodeTypeForm.php
+++ b/core/modules/node/src/NodeTypeForm.php
@@ -232,6 +232,7 @@ public function save(array $form, FormStateInterface $form_state) {
       drupal_set_message(t('The content type %name has been added.', $t_args));
       $context = array_merge($t_args, array('link' => l(t('View'), 'admin/structure/types')));
       $this->logger('node')->notice('Added content type %name.', $context);
+      node_add_body_field($type, 'Body');
     }
 
     $fields = $this->entityManager->getFieldDefinitions('node', $type->id());
diff --git a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
index 8e7f51d..452fcb8 100644
--- a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
+++ b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
@@ -39,11 +39,10 @@ protected function setUp() {
    * Tests configuration renaming.
    */
   public function testConfigurationRename() {
-    $content_type = entity_create('node_type', array(
+    $content_type = $this->drupalCreateContentType(array(
       'type' => Unicode::strtolower($this->randomMachineName(16)),
       'name' => $this->randomMachineName(),
     ));
-    $content_type->save();
     $staged_type = $content_type->type;
 
     // Check the default status value for a node of this type.
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index dc37713..d5bb875 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -274,6 +274,8 @@ protected function drupalCreateContentType(array $values = array()) {
     );
     $type = entity_create('node_type', $values);
     $status = $type->save();
+    // Add the body field as the form does.
+    node_add_body_field($type, 'Body');
     \Drupal::service('router.builder')->rebuild();
 
     $this->assertEqual($status, SAVED_NEW, String::format('Created content type %type.', array('%type' => $type->id())));
diff --git a/core/profiles/standard/config/install/core.entity_form_display.node.page.default.yml b/core/profiles/standard/config/install/core.entity_form_display.node.page.default.yml
new file mode 100644
index 0000000..0b19637
--- /dev/null
+++ b/core/profiles/standard/config/install/core.entity_form_display.node.page.default.yml
@@ -0,0 +1,35 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.page.body
+    - node.type.page
+  module:
+    - path
+    - text
+id: node.page.default
+targetEntityType: node
+bundle: page
+mode: default
+content:
+  title:
+    type: string
+    weight: -5
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  path:
+    type: path
+    weight: 30
+    settings: {  }
+    third_party_settings: {  }
+  body:
+    type: text_textarea_with_summary
+    weight: 31
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    third_party_settings: {  }
+hidden: {  }
diff --git a/core/profiles/standard/config/install/core.entity_view_display.node.page.default.yml b/core/profiles/standard/config/install/core.entity_view_display.node.page.default.yml
new file mode 100644
index 0000000..467a458
--- /dev/null
+++ b/core/profiles/standard/config/install/core.entity_view_display.node.page.default.yml
@@ -0,0 +1,22 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.instance.node.page.body
+    - node.type.page
+  module:
+    - text
+id: node.page.default
+label: null
+targetEntityType: node
+bundle: page
+mode: default
+content:
+  body:
+    label: hidden
+    type: text_default
+    weight: -4
+    settings: {  }
+    third_party_settings: {  }
+hidden:
+  langcode: true
diff --git a/core/profiles/standard/config/install/core.entity_view_display.node.page.teaser.yml b/core/profiles/standard/config/install/core.entity_view_display.node.page.teaser.yml
new file mode 100644
index 0000000..3955067
--- /dev/null
+++ b/core/profiles/standard/config/install/core.entity_view_display.node.page.teaser.yml
@@ -0,0 +1,24 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - entity.view_mode.node.teaser
+    - field.instance.node.page.body
+    - node.type.page
+  module:
+    - text
+id: node.page.teaser
+label: null
+targetEntityType: node
+bundle: page
+mode: teaser
+content:
+  body:
+    label: hidden
+    type: text_summary_or_trimmed
+    weight: -4
+    settings:
+      trim_length: 600
+    third_party_settings: {  }
+hidden:
+  langcode: true
diff --git a/core/profiles/standard/config/install/field.instance.node.article.body.yml b/core/profiles/standard/config/install/field.instance.node.article.body.yml
new file mode 100644
index 0000000..2a2c69c
--- /dev/null
+++ b/core/profiles/standard/config/install/field.instance.node.article.body.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.body
+    - node.type.article
+id: node.article.body
+label: Body
+field_name: body
+entity_type: node
+bundle: article
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  display_summary: true
+  text_processing: true
+field_type: text_with_summary
diff --git a/core/profiles/standard/config/install/field.instance.node.page.body.yml b/core/profiles/standard/config/install/field.instance.node.page.body.yml
new file mode 100644
index 0000000..4b806c0
--- /dev/null
+++ b/core/profiles/standard/config/install/field.instance.node.page.body.yml
@@ -0,0 +1,20 @@
+langcode: en
+status: true
+dependencies:
+  entity:
+    - field.storage.node.body
+    - node.type.page
+id: node.page.body
+label: Body
+field_name: body
+entity_type: node
+bundle: page
+description: ''
+required: false
+translatable: true
+default_value: {  }
+default_value_function: ''
+settings:
+  display_summary: true
+  text_processing: true
+field_type: text_with_summary
