diff --git a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
index 8d48f26ae4787933204a0a085f47abebb034e22e..8b7afc9ebf17c7401960216d7878862a7d5a9b4f 100644
--- a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
+++ b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
@@ -141,11 +141,13 @@ public function onChange($delta) {
   public function setValue($values, $notify = TRUE) {
     parent::setValue($values, $notify);
 
+    if (isset($this->list[0])) {
+      $this->valueComputed = TRUE;
+    }
     // If the parent created a field item and if the parent should be notified
     // about the change (e.g. this is not initialized with the current value),
     // update the moderated entity.
     if (isset($this->list[0]) && $notify) {
-      $this->valueComputed = TRUE;
       $this->updateModeratedEntity($this->list[0]->value);
     }
   }
diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
index d1ff5d2da841d8755adec668108f97aabc2ef8cc..ce78aa9063316fd7fac9130c685d77c72b1c0ff2 100644
--- a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
+++ b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php
@@ -211,13 +211,39 @@ public function testEntityWithNoWorkflow() {
 
   /**
    * Test the moderation_state field after an entity has been serialized.
+   *
+   * @dataProvider entityUnserializeTestCases
    */
-  public function testEntityUnserialize() {
-    $this->testNode->moderation_state->value = 'draft';
+  public function testEntityUnserialize($state, $default, $published) {
+    $this->testNode->moderation_state->value = $state;
+
+    $this->assertEquals($state, $this->testNode->moderation_state->value);
+    $this->assertEquals($default, $this->testNode->isDefaultRevision());
+    $this->assertEquals($published, $this->testNode->isPublished());
+
     $unserialized = unserialize(serialize($this->testNode));
 
-    $this->assertEquals('Test title', $unserialized->title->value);
-    $this->assertEquals('draft', $unserialized->moderation_state->value);
+    $this->assertEquals($state, $unserialized->moderation_state->value);
+    $this->assertEquals($default, $unserialized->isDefaultRevision());
+    $this->assertEquals($published, $unserialized->isPublished());
+  }
+
+  /**
+   * Test cases for ::testEntityUnserialize.
+   */
+  public function entityUnserializeTestCases() {
+    return [
+      'Default draft state' => [
+        'draft',
+        TRUE,
+        FALSE,
+      ],
+      'Non-default published state' => [
+        'published',
+        TRUE,
+        TRUE,
+      ],
+    ];
   }
 
 }