diff --git a/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php b/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
index 3ccc88d..2f75cdb 100644
--- a/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
+++ b/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
@@ -104,6 +104,11 @@ public function create(array $values) {
       $uuid = new Uuid();
       $entity->{$this->uuidKey}->value = $uuid->generate();
     }
+
+    // Modules might need to add or change the data initially held by the new
+    // entity object, for instance to fill-in default values.
+    $this->invokeHook('create', $entity);
+
     return $entity;
   }
 
diff --git a/core/modules/comment/lib/Drupal/comment/CommentStorageController.php b/core/modules/comment/lib/Drupal/comment/CommentStorageController.php
index 4c91741..952cfd5 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentStorageController.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentStorageController.php
@@ -72,6 +72,11 @@ public function create(array $values) {
       $uuid = new Uuid();
       $comment->{$this->uuidKey}->value = $uuid->generate();
     }
+
+    // Modules might need to add or change the data initially held by the new
+    // entity object, for instance to fill-in default values.
+    $this->invokeHook('create', $comment);
+
     return $comment;
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCrudHookTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCrudHookTest.php
index 6b7d73d..7668112 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCrudHookTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCrudHookTest.php
@@ -36,7 +36,7 @@ class EntityCrudHookTest extends WebTestBase {
   public static function getInfo() {
     return array(
       'name' => 'Entity CRUD hooks',
-      'description' => 'Tests the invocation of hooks when inserting, loading, updating or deleting an entity.',
+      'description' => 'Tests the invocation of hooks when creating, inserting, loading, updating or deleting an entity.',
       'group' => 'Entity API',
     );
   }
@@ -74,6 +74,12 @@ public function testBlockHooks() {
       'id' => 'stark.test_html_id',
       'plugin' => 'test_html_id',
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_block_create called',
+      'entity_crud_hook_test_entity_create called for type block',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     $entity->save();
 
@@ -132,6 +138,7 @@ public function testCommentHooks() {
     ));
     $node->save();
     $nid = $node->nid;
+    $_SESSION['entity_crud_hook_test'] = array();
 
     $comment = entity_create('comment', array(
       'node_type' => 'node_type_' . $node->bundle(),
@@ -146,6 +153,11 @@ public function testCommentHooks() {
       'langcode' => LANGUAGE_NOT_SPECIFIED,
     ));
 
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_comment_create called',
+      'entity_crud_hook_test_entity_create called for type comment',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     comment_save($comment);
 
@@ -202,6 +214,12 @@ public function testFileHooks() {
       'status' => 1,
       'timestamp' => REQUEST_TIME,
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_file_create called',
+      'entity_crud_hook_test_entity_create called for type file',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     $file->save();
 
@@ -258,6 +276,12 @@ public function testNodeHooks() {
       'created' => REQUEST_TIME,
       'changed' => REQUEST_TIME,
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_node_create called',
+      'entity_crud_hook_test_entity_create called for type node',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     $node->save();
 
@@ -310,6 +334,7 @@ public function testTaxonomyTermHooks() {
       'module' => 'entity_crud_hook_test',
     ));
     taxonomy_vocabulary_save($vocabulary);
+    $_SESSION['entity_crud_hook_test'] = array();
 
     $term = entity_create('taxonomy_term', array(
       'vid' => $vocabulary->id(),
@@ -318,6 +343,12 @@ public function testTaxonomyTermHooks() {
       'description' => NULL,
       'format' => 1,
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_taxonomy_term_create called',
+      'entity_crud_hook_test_entity_create called for type taxonomy_term',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     taxonomy_term_save($term);
 
@@ -369,6 +400,12 @@ public function testTaxonomyVocabularyHooks() {
       'description' => NULL,
       'module' => 'entity_crud_hook_test',
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_taxonomy_vocabulary_create called',
+      'entity_crud_hook_test_entity_create called for type taxonomy_vocabulary',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     taxonomy_vocabulary_save($vocabulary);
 
@@ -420,6 +457,12 @@ public function testUserHooks() {
       'status' => 1,
       'language' => 'en',
     ));
+
+    $this->assertHookMessageOrder(array(
+      'entity_crud_hook_test_user_create called',
+      'entity_crud_hook_test_entity_create called for type user',
+    ));
+
     $_SESSION['entity_crud_hook_test'] = array();
     $account->save();
 
diff --git a/core/modules/system/tests/modules/entity_crud_hook_test/entity_crud_hook_test.module b/core/modules/system/tests/modules/entity_crud_hook_test/entity_crud_hook_test.module
index f2bb297..9ee487a 100644
--- a/core/modules/system/tests/modules/entity_crud_hook_test/entity_crud_hook_test.module
+++ b/core/modules/system/tests/modules/entity_crud_hook_test/entity_crud_hook_test.module
@@ -8,6 +8,62 @@
 use Drupal\Core\Entity\EntityInterface;
 
 /**
+ * Implements hook_entity_create().
+ */
+function entity_crud_hook_test_entity_create(EntityInterface $entity) {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called for type ' . $entity->entityType());
+}
+
+/**
+ * Implements hook_block_create().
+ */
+function entity_crud_hook_test_block_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_comment_create().
+ */
+function entity_crud_hook_test_comment_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_file_create().
+ */
+function entity_crud_hook_test_file_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_node_create().
+ */
+function entity_crud_hook_test_node_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_taxonomy_term_create().
+ */
+function entity_crud_hook_test_taxonomy_term_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_taxonomy_vocabulary_create().
+ */
+function entity_crud_hook_test_taxonomy_vocabulary_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
+ * Implements hook_user_create().
+ */
+function entity_crud_hook_test_user_create() {
+  $_SESSION['entity_crud_hook_test'][] = (__FUNCTION__ . ' called');
+}
+
+/**
  * Implements hook_entity_presave().
  */
 function entity_crud_hook_test_entity_presave(EntityInterface $entity) {
