diff --git a/modules/order/commerce_order.post_update.php b/modules/order/commerce_order.post_update.php
index 335c6cf39..03ebb94a4 100644
--- a/modules/order/commerce_order.post_update.php
+++ b/modules/order/commerce_order.post_update.php
@@ -149,3 +149,34 @@ function commerce_order_post_update_5() {
 
   return $message;
 }
+
+/**
+ * Revert the 'commerce_order_item_table' view - empty text added.
+ */
+function commerce_order_post_update_7() {
+  /** @var \Drupal\commerce\Config\ConfigUpdaterInterface $config_updater */
+  $config_updater = \Drupal::service('commerce.config_updater');
+
+  $views = [
+    'views.view.commerce_order_item_table',
+  ];
+  $result = $config_updater->revert($views, FALSE);
+
+  $success_results = $result->getSucceeded();
+  $failure_results = $result->getFailed();
+  if ($success_results) {
+    $message = t('Succeeded:') . '<br>';
+    foreach ($success_results as $success_message) {
+      $message .= $success_message . '<br>';
+    }
+    $message .= '<br>';
+  }
+  if ($failure_results) {
+    $message .= t('Failed:') . '<br>';
+    foreach ($failure_results as $failure_message) {
+      $message .= $failure_message . '<br>';
+    }
+  }
+
+  return $message;
+}
diff --git a/modules/order/config/install/views.view.commerce_order_item_table.yml b/modules/order/config/install/views.view.commerce_order_item_table.yml
index 93955666f..ed8436d49 100644
--- a/modules/order/config/install/views.view.commerce_order_item_table.yml
+++ b/modules/order/config/install/views.view.commerce_order_item_table.yml
@@ -347,7 +347,16 @@ display:
       sorts: {  }
       header: {  }
       footer: {  }
-      empty: {  }
+      empty:
+        area:
+          id: area
+          table: views
+          field: area
+          empty: true
+          content:
+            value: 'No items added to this order.'
+            format: plain_text
+          plugin_id: text
       relationships: {  }
       arguments:
         order_id:
diff --git a/modules/order/src/Plugin/Field/FieldFormatter/OrderTotalSummary.php b/modules/order/src/Plugin/Field/FieldFormatter/OrderTotalSummary.php
index bb88c6d97..7c04bd563 100644
--- a/modules/order/src/Plugin/Field/FieldFormatter/OrderTotalSummary.php
+++ b/modules/order/src/Plugin/Field/FieldFormatter/OrderTotalSummary.php
@@ -74,7 +74,19 @@ public static function create(ContainerInterface $container, array $configuratio
   /**
    * {@inheritdoc}
    */
+  public function view(FieldItemListInterface $items, $langcode = NULL) {
+    // Check first if the total price is not empty.
+    if ($items->isEmpty()) {
+      return [];
+    }
+    return parent::view($items, $langcode);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function viewElements(FieldItemListInterface $items, $langcode) {
+    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
     $order = $items->getEntity();
     return [
       '#theme' => 'commerce_order_total_summary',
diff --git a/modules/order/tests/src/Functional/OrderAdminTest.php b/modules/order/tests/src/Functional/OrderAdminTest.php
index 2d837e67d..627c31704 100644
--- a/modules/order/tests/src/Functional/OrderAdminTest.php
+++ b/modules/order/tests/src/Functional/OrderAdminTest.php
@@ -162,18 +162,12 @@ public function testDeleteOrder() {
    * Tests that an admin can view an order's details.
    */
   public function testAdminOrderView() {
-    $order_item = $this->createEntity('commerce_order_item', [
-      'type' => 'default',
-      'unit_price' => [
-        'number' => '999',
-        'currency_code' => 'USD',
-      ],
-    ]);
+    // First test for order without items.
+    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
     $order = $this->createEntity('commerce_order', [
       'type' => 'default',
       'store_id' => $this->store->id(),
       'mail' => $this->loggedInUser->getEmail(),
-      'order_items' => [$order_item],
       'state' => 'draft',
       'uid' => $this->loggedInUser,
     ]);
@@ -183,6 +177,10 @@ public function testAdminOrderView() {
     $this->assertSession()->statusCodeEquals(200);
     $this->assertSession()->pageTextContains($this->loggedInUser->getEmail());
 
+    // Test there are no items.
+    $this->assertSession()->pageTextContains('No items added to this order.');
+    $this->assertSession()->pageTextNotContains('Total');
+
     // Confirm that the transition buttons are visible and functional.
     $workflow = $order->getState()->getWorkflow();
     $transitions = $workflow->getAllowedTransitions($order->getState()->value, $order);
@@ -193,6 +191,22 @@ public function testAdminOrderView() {
     $this->assertSession()->buttonNotExists('Place order');
     $this->assertSession()->buttonNotExists('Cancel order');
 
+    // Test with order items.
+    $order_item = $this->createEntity('commerce_order_item', [
+      'type' => 'default',
+      'unit_price' => [
+        'number' => '999',
+        'currency_code' => 'USD',
+      ],
+    ]);
+    $order->setItems([$order_item]);
+    $order->save();
+    $this->drupalGet($order->toUrl()->toString());
+    $this->assertSession()->statusCodeEquals(200);
+    $this->assertSession()->pageTextNotContains('No items added to this order.');
+    $this->assertSession()->pageTextContains('$999.00');
+    $this->assertSession()->pageTextContains('Total price');
+
     // Logout and check that anonymous users cannot see the order admin screen
     // and receive a 403 error code.
     $this->drupalLogout();

