diff --git a/src/Entity/WebformSubmission.php b/src/Entity/WebformSubmission.php
index 6dd06604..f34cacad 100644
--- a/src/Entity/WebformSubmission.php
+++ b/src/Entity/WebformSubmission.php
@@ -587,11 +587,10 @@ class WebformSubmission extends ContentEntityBase implements WebformSubmissionIn
       $source_entity = \Drupal::entityTypeManager()
         ->getStorage($values['entity_type'])
         ->load($values['entity_id']);
-      if ($source_entity && method_exists($source_entity, 'hasField') && $source_entity->hasField('webform')) {
-        foreach ($source_entity->webform as $item) {
-          if ($item->target_id == $webform->id() && $item->default_data) {
-            $values['data'] += Yaml::decode($item->default_data);
-          }
+      if ($source_entity) {
+        $webform_field_name = $request_handler->getSourceEntityWebformFieldName($source_entity);
+        if ($source_entity->hasField($webform_field_name) && $source_entity->$webform_field_name->target_id == $webform->id() && $source_entity->$webform_field_name->default_data) {
+          $values['data'] += Yaml::decode($source_entity->$webform_field_name->default_data);
         }
       }
     }
diff --git a/src/Plugin/Field/FieldFormatter/WebformEntityReferenceEntityFormatter.php b/src/Plugin/Field/FieldFormatter/WebformEntityReferenceEntityFormatter.php
index 64db8c42..909fd7d4 100644
--- a/src/Plugin/Field/FieldFormatter/WebformEntityReferenceEntityFormatter.php
+++ b/src/Plugin/Field/FieldFormatter/WebformEntityReferenceEntityFormatter.php
@@ -6,6 +6,7 @@ use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\Core\Serialization\Yaml;
 use Drupal\webform\WebformMessageManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -89,7 +90,11 @@ class WebformEntityReferenceEntityFormatter extends EntityReferenceFormatterBase
       }
 
       if ($entity->id() && $items[$delta]->status) {
-        $elements[$delta] = $entity->getSubmissionForm();
+        $values = [];
+        if (!empty($items[$delta]->default_data)) {
+          $values['data'] = Yaml::decode($items[$delta]->default_data);
+        }
+        $elements[$delta] = $entity->getSubmissionForm($values);
       }
       else {
         $this->messageManager->setWebform($entity);
diff --git a/src/WebformRequest.php b/src/WebformRequest.php
index 3d3c67d1..9b82e8a9 100644
--- a/src/WebformRequest.php
+++ b/src/WebformRequest.php
@@ -91,8 +91,9 @@ class WebformRequest implements WebformRequestInterface {
    */
   public function getCurrentWebform() {
     $source_entity = self::getCurrentSourceEntity('webform');
-    if ($source_entity && method_exists($source_entity, 'hasField') && $source_entity->hasField('webform')) {
-      return $source_entity->webform->entity;
+    $webform_field_name = self::getSourceEntityWebformFieldName($source_entity);
+    if ($source_entity && $webform_field_name && $source_entity->hasField($webform_field_name)) {
+      return $source_entity->$webform_field_name->entity;
     }
     else {
       return $this->routeMatch->getParameter('webform');
@@ -190,10 +191,11 @@ class WebformRequest implements WebformRequestInterface {
       throw new \InvalidArgumentException('Webform entity');
     }
 
+    $webform_field_name = self::getSourceEntityWebformFieldName($source_entity);
     if ($source_entity
-      && method_exists($source_entity, 'hasField')
-      && $source_entity->hasField('webform')
-      && $source_entity->webform->target_id == $webform->id()
+      && $webform_field_name
+      && $source_entity->hasField($webform_field_name)
+      && $source_entity->$webform_field_name->target_id == $webform->id()
     ) {
       return TRUE;
     }
@@ -203,6 +205,24 @@ class WebformRequest implements WebformRequestInterface {
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function getSourceEntityWebformFieldName(EntityInterface $source_entity) {
+    if ($source_entity instanceof ContentEntityInterface) {
+      if (!method_exists($source_entity, 'hasField')) {
+        return '';
+      }
+      $fields = $source_entity->getFieldDefinitions();
+      foreach ($fields as $field_name => $field_definition) {
+        if ($field_definition->getType() == 'webform') {
+          return $field_name;
+        }
+      }
+    }
+    return '';
+  }
+
+  /**
    * Get webform submission source entity from query string.
    *
    * @return \Drupal\Core\Entity\EntityInterface|null
@@ -256,25 +276,4 @@ class WebformRequest implements WebformRequestInterface {
     return $source_entity;
   }
 
-  /**
-   * Get the source entity's webform field name.
-   *
-   * @param EntityInterface $source_entity
-   *   A webform submission's source entity.
-   *
-   * @return string
-   *   The name of the webform field, or an empty string.
-   */
-  protected function getSourceEntityWebformFieldName(EntityInterface $source_entity) {
-    if ($source_entity instanceof ContentEntityInterface) {
-      $fields = $source_entity->getFieldDefinitions();
-      foreach ($fields as $field_name => $field_definition) {
-        if ($field_definition->getType() == 'webform') {
-          return $field_name;
-        }
-      }
-    }
-    return '';
-  }
-
 }
diff --git a/src/WebformRequestInterface.php b/src/WebformRequestInterface.php
index 8b965a81..87d5310c 100644
--- a/src/WebformRequestInterface.php
+++ b/src/WebformRequestInterface.php
@@ -105,4 +105,15 @@ interface WebformRequestInterface {
    */
   public function isValidSourceEntity(EntityInterface $webform_entity, EntityInterface $source_entity = NULL);
 
+  /**
+   * Get the source entity's webform field name.
+   *
+   * @param EntityInterface $source_entity
+   *   A webform submission's source entity.
+   *
+   * @return string
+   *   The name of the webform field, or an empty string.
+   */
+  public function getSourceEntityWebformFieldName(EntityInterface $source_entity);
+
 }
