diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
index b8424be..7ba21ad 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
@@ -572,7 +572,7 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
    * {@inheritdoc}
    */
   public function extractFormValues(FieldItemListInterface $items, array $form, FormStateInterface $form_state) {
-    if ($this->isDefaultValueWidget($form_state)) {
+    if ($this->isDefaultValueWidget($form_state) && !$this->getSetting('allow_existing')) {
       $items->filterEmptyItems();
       return;
     }
@@ -615,6 +615,30 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
   }
 
   /**
+   * Checks whether we can build entity form at all.
+   *
+   * - Is IEF handler loaded?
+   * - Are we on a "real" entity form and not on default value widget?
+   *
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   *   Form state.
+   *
+   * @return bool
+   *   TRUE if we are able to proceed with form build and FALSE if not.
+   */
+  protected function canBuildForm(FormStateInterface $form_state) {
+    if ($this->isDefaultValueWidget($form_state) && !$this->getSetting('allow_existing')) {
+      return FALSE;
+    }
+
+    if (!$this->inlineFormHandler) {
+      return FALSE;
+    }
+
+    return TRUE;
+  }
+
+  /**
    * Adds actions to the inline entity form.
    *
    * @param array $element
