diff --git a/drush/webform.drush.inc b/drush/webform.drush.inc
index 3754699e..00691ef9 100644
--- a/drush/webform.drush.inc
+++ b/drush/webform.drush.inc
@@ -30,6 +30,8 @@ function webform_drush_command() {
     'options' => [
       // Delimited export options.
       'delimiter' => 'Delimiter between columns (defaults to site-wide setting). This option may need to be wrapped in quotes. i.e. --delimiter="\t".',
+      'multiple_delimiter' => 'Delimiter between an element with multiple values (defaults to site-wide setting).',
+
       // Document and managed file export options.
       'file-name' => 'File name used to export submission and uploaded filed. You may use tokens.',
       // Tabular export options.
diff --git a/modules/webform_ui/src/Tests/WebformUiElementTest.php b/modules/webform_ui/src/Tests/WebformUiElementTest.php
index 9132b3fc..1cf6a0c1 100644
--- a/modules/webform_ui/src/Tests/WebformUiElementTest.php
+++ b/modules/webform_ui/src/Tests/WebformUiElementTest.php
@@ -162,7 +162,7 @@ class WebformUiElementTest extends WebformTestBase {
    * Tests permissions.
    */
   public function testPermissions() {
-    $webform = $this->createWebform();
+    $webform = Webform::load('contact');
 
     // Check source page access not visible to user with 'administer webform'
     // permission.
diff --git a/src/Annotation/WebformElement.php b/src/Annotation/WebformElement.php
index 3d18e25a..bef90b9d 100644
--- a/src/Annotation/WebformElement.php
+++ b/src/Annotation/WebformElement.php
@@ -81,13 +81,6 @@ class WebformElement extends Plugin {
   public $multiline = FALSE;
 
   /**
-   * Flag that defines multiple (value) element.
-   *
-   * @var bool
-   */
-  public $multiple = FALSE;
-
-  /**
    * Flag that defines composite element.
    *
    * @var bool
diff --git a/src/Plugin/WebformElement/Checkboxes.php b/src/Plugin/WebformElement/Checkboxes.php
index 2da22eb0..3e7c2d6a 100644
--- a/src/Plugin/WebformElement/Checkboxes.php
+++ b/src/Plugin/WebformElement/Checkboxes.php
@@ -13,7 +13,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Checkboxes"),
  *   description = @Translation("Provides a form element for a set of checkboxes, with the ability to enter a custom value."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class Checkboxes extends OptionsBase {
@@ -31,6 +30,20 @@ class Checkboxes extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     $element['#element_validate'][] = [get_class($this), 'validateMultipleOptions'];
diff --git a/src/Plugin/WebformElement/EntityAutocomplete.php b/src/Plugin/WebformElement/EntityAutocomplete.php
index 0e122dd3..39ee2153 100644
--- a/src/Plugin/WebformElement/EntityAutocomplete.php
+++ b/src/Plugin/WebformElement/EntityAutocomplete.php
@@ -15,7 +15,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Entity autocomplete"),
  *   description = @Translation("Provides a form element to select an entity reference using an autocompletion."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class EntityAutocomplete extends WebformElementBase implements WebformEntityReferenceInterface {
@@ -55,9 +54,21 @@ class EntityAutocomplete extends WebformElementBase implements WebformEntityRefe
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function hasMultipleValues(array $element) {
     if ($this->hasProperty('tags')) {
-      return (!empty($element['#tags'])) ? TRUE : FALSE;
+      if (isset($element['#tags'])) {
+        return $element['#tags'];
+      }
+      else {
+        return $this->getDefaultProperty('tags');
+      }
     }
     else {
       return parent::hasMultipleValues($element);
diff --git a/src/Plugin/WebformElement/ManagedFile.php b/src/Plugin/WebformElement/ManagedFile.php
index ba3c3ec6..42264e23 100644
--- a/src/Plugin/WebformElement/ManagedFile.php
+++ b/src/Plugin/WebformElement/ManagedFile.php
@@ -11,7 +11,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("File"),
  *   description = @Translation("Provides a form element for uploading and saving a file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/OptionsBase.php b/src/Plugin/WebformElement/OptionsBase.php
index 55b02f2c..471f5465 100644
--- a/src/Plugin/WebformElement/OptionsBase.php
+++ b/src/Plugin/WebformElement/OptionsBase.php
@@ -131,24 +131,6 @@ abstract class OptionsBase extends WebformElementBase {
   /**
    * {@inheritdoc}
    */
-  public function hasMultipleValues(array $element) {
-    if ($this->hasProperty('multiple')) {
-      if (isset($element['#multiple'])) {
-        return $element['#multiple'];
-      }
-      else {
-        $default_property = $this->getDefaultProperties();
-        return $default_property['multiple'];
-      }
-    }
-    else {
-      return parent::hasMultipleValues($element);
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function isMultiline(array $element) {
     $format = $this->getItemsFormat($element);
     if (in_array($format, ['ol', 'ul'])) {
@@ -217,6 +199,7 @@ abstract class OptionsBase extends WebformElementBase {
    * {@inheritdoc}
    */
   public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
+    parent::buildExportOptionsForm($form, $form_state, $export_options);
     if (isset($form['options'])) {
       return;
     }
@@ -272,9 +255,8 @@ abstract class OptionsBase extends WebformElementBase {
   public function buildExportRecord(array $element, $value, array $export_options) {
     $element_options = $element['#options'];
 
-    $record = [];
-
     if ($export_options['options_format'] == 'separate') {
+      $record = [];
       // Combine the values so that isset can be used instead of in_array().
       // http://stackoverflow.com/questions/13483219/what-is-faster-in-array-or-isset
       $deltas = FALSE;
@@ -291,25 +273,14 @@ abstract class OptionsBase extends WebformElementBase {
           $record[] = '';
         }
       }
+      return $record;
     }
     else {
-      // Handle multiple values with options.
-      if (is_array($value)) {
-        if ($export_options['options_item_format'] == 'label') {
-          $value = WebformOptionsHelper::getOptionsText($value, $element_options);
-        }
-        $record[] = implode(',', $value);
-      }
-      // Handle single values with options.
-      elseif ($export_options['options_item_format'] == 'label') {
-        $record[] = WebformOptionsHelper::getOptionText($value, $element_options);
-      }
-      else {
-        $record[] = $value;
+      if ($export_options['options_item_format'] == 'key') {
+        $element['#format'] = 'raw';
       }
+      return parent::buildExportRecord($element, $value, $export_options);
     }
-
-    return $record;
   }
 
   /**
diff --git a/src/Plugin/WebformElement/Select.php b/src/Plugin/WebformElement/Select.php
index f40ab18e..8ab7fc9b 100644
--- a/src/Plugin/WebformElement/Select.php
+++ b/src/Plugin/WebformElement/Select.php
@@ -14,7 +14,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Select"),
  *   description = @Translation("Provides a form element for a drop-down menu or scrolling selection box."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class Select extends OptionsBase {
@@ -35,6 +34,13 @@ class Select extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     if (empty($element['#multiple'])) {
diff --git a/src/Plugin/WebformElement/TableSelect.php b/src/Plugin/WebformElement/TableSelect.php
index fa6266f9..c38f7d3c 100644
--- a/src/Plugin/WebformElement/TableSelect.php
+++ b/src/Plugin/WebformElement/TableSelect.php
@@ -11,7 +11,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Table select"),
  *   description = @Translation("Provides a form element for a table with radios or checkboxes in left column."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -34,6 +33,13 @@ class TableSelect extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getElementSelectorOptions(array $element) {
     return $this->getTableSelectElementSelectorOptions($element);
   }
diff --git a/src/Plugin/WebformElement/WebformAudioFile.php b/src/Plugin/WebformElement/WebformAudioFile.php
index a4c59a42..098dedc1 100644
--- a/src/Plugin/WebformElement/WebformAudioFile.php
+++ b/src/Plugin/WebformElement/WebformAudioFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Audio file"),
  *   description = @Translation("Provides a form element for uploading and saving an audio file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformCheckboxesOther.php b/src/Plugin/WebformElement/WebformCheckboxesOther.php
index 4ac70e01..e5db0c24 100644
--- a/src/Plugin/WebformElement/WebformCheckboxesOther.php
+++ b/src/Plugin/WebformElement/WebformCheckboxesOther.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Checkboxes other"),
  *   description = @Translation("Provides a form element for a set of checkboxes."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformCheckboxesOther extends Checkboxes {
diff --git a/src/Plugin/WebformElement/WebformCompositeBase.php b/src/Plugin/WebformElement/WebformCompositeBase.php
index 1a0e1125..ead59787 100644
--- a/src/Plugin/WebformElement/WebformCompositeBase.php
+++ b/src/Plugin/WebformElement/WebformCompositeBase.php
@@ -533,9 +533,14 @@ abstract class WebformCompositeBase extends WebformElementBase {
    * {@inheritdoc}
    */
   public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
+    parent::buildExportOptionsForm($form, $form_state, $export_options);
+    if (isset($form['composite'])) {
+      return;
+    }
+
     $form['composite'] = [
       '#type' => 'details',
-      '#title' => $this->t('Composite element'),
+      '#title' => $this->t('Composite element options'),
       '#open' => TRUE,
       '#weight' => -10,
     ];
diff --git a/src/Plugin/WebformElement/WebformDocumentFile.php b/src/Plugin/WebformElement/WebformDocumentFile.php
index 3110ac9b..3fc72f47 100644
--- a/src/Plugin/WebformElement/WebformDocumentFile.php
+++ b/src/Plugin/WebformElement/WebformDocumentFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Document file"),
  *   description = @Translation("Provides a form element for uploading and saving a document."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformEntityCheckboxes.php b/src/Plugin/WebformElement/WebformEntityCheckboxes.php
index b0182066..ef27712e 100644
--- a/src/Plugin/WebformElement/WebformEntityCheckboxes.php
+++ b/src/Plugin/WebformElement/WebformEntityCheckboxes.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Entity checkboxes"),
  *   description = @Translation("Provides a form element to select multiple entity references using checkboxes."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformEntityCheckboxes extends Checkboxes implements WebformEntityReferenceInterface {
diff --git a/src/Plugin/WebformElement/WebformEntityReferenceTrait.php b/src/Plugin/WebformElement/WebformEntityReferenceTrait.php
index c327c503..e3e6be53 100644
--- a/src/Plugin/WebformElement/WebformEntityReferenceTrait.php
+++ b/src/Plugin/WebformElement/WebformEntityReferenceTrait.php
@@ -154,7 +154,8 @@ trait WebformEntityReferenceTrait {
   /**
    * {@inheritdoc}
    */
-  public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $default_values) {
+  public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
+    parent::buildExportOptionsForm($form, $form_state, $export_options);
     if (isset($form['entity_reference'])) {
       return;
     }
@@ -171,7 +172,7 @@ trait WebformEntityReferenceTrait {
         'link' => $this->t('Entity link; with entity id, title and url in their own column.') . '<div class="description">' . $this->t("Entity links are suitable as long as there are not too many submissions (ie 1000's) pointing to just a few unique entities (ie 100's).") . '</div>',
         'id' => $this->t('Entity id; just the entity id column') . '<div class="description">' . $this->t('Entity links are suitable as long as there is mechanism for the referenced entity to be looked up external (ie REST API).') . '</div>',
       ],
-      '#default_value' => $default_values['entity_reference_format'],
+      '#default_value' => $export_options['entity_reference_format'],
     ];
   }
 
@@ -201,12 +202,7 @@ trait WebformEntityReferenceTrait {
    * {@inheritdoc}
    */
   public function buildExportRecord(array $element, $value, array $options) {
-    if ($this->hasMultipleValues($element)) {
-      $element = ['#format' => 'text', '#format_items' => 'comma'] + $element;
-      return $this->formatTextItems($element, $value, $options);
-    }
-
-    if ($options['entity_reference_format'] == 'link') {
+    if (!$this->hasMultipleValues($element) && $options['entity_reference_format'] == 'link') {
       $entity_type = $element['#target_type'];
       $entity_storage = $this->entityTypeManager->getStorage($entity_type);
       $entity_id = $value;
@@ -225,6 +221,9 @@ trait WebformEntityReferenceTrait {
       return $record;
     }
     else {
+      if ($options['entity_reference_format'] == 'id') {
+        $element['#format'] = 'raw';
+      }
       return parent::buildExportRecord($element, $value, $options);
     }
   }
diff --git a/src/Plugin/WebformElement/WebformEntitySelect.php b/src/Plugin/WebformElement/WebformEntitySelect.php
index ced9c655..b7718a4d 100644
--- a/src/Plugin/WebformElement/WebformEntitySelect.php
+++ b/src/Plugin/WebformElement/WebformEntitySelect.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Entity select"),
  *   description = @Translation("Provides a form element to select a single or multiple entity references using a select menu."),
  *   category = @Translation("Entity reference elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformEntitySelect extends Select implements WebformEntityReferenceInterface {
diff --git a/src/Plugin/WebformElement/WebformImageFile.php b/src/Plugin/WebformElement/WebformImageFile.php
index 375f201e..1420b4c4 100644
--- a/src/Plugin/WebformElement/WebformImageFile.php
+++ b/src/Plugin/WebformElement/WebformImageFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Image file"),
  *   description = @Translation("Provides a form element for uploading and saving an image file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Plugin/WebformElement/WebformLikert.php b/src/Plugin/WebformElement/WebformLikert.php
index 414780d6..df5307f7 100644
--- a/src/Plugin/WebformElement/WebformLikert.php
+++ b/src/Plugin/WebformElement/WebformLikert.php
@@ -200,9 +200,14 @@ class WebformLikert extends WebformElementBase {
    * {@inheritdoc}
    */
   public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
+    parent::buildExportOptionsForm($form, $form_state, $export_options);
+    if (isset($form['likert'])) {
+      return;
+    }
+
     $form['likert'] = [
       '#type' => 'details',
-      '#title' => $this->t('Likert questions and answers'),
+      '#title' => $this->t('Likert questions and answers options'),
       '#open' => TRUE,
       '#weight' => -10,
     ];
diff --git a/src/Plugin/WebformElement/WebformManagedFileBase.php b/src/Plugin/WebformElement/WebformManagedFileBase.php
index ffa14e83..fc135649 100644
--- a/src/Plugin/WebformElement/WebformManagedFileBase.php
+++ b/src/Plugin/WebformElement/WebformManagedFileBase.php
@@ -42,8 +42,8 @@ abstract class WebformManagedFileBase extends WebformElementBase {
   /**
    * {@inheritdoc}
    */
-  public function hasMultipleValues(array $element) {
-    return (!empty($element['#multiple'])) ? TRUE : FALSE;
+  public function supportsMultipleValues() {
+    return TRUE;
   }
 
   /**
diff --git a/src/Plugin/WebformElement/WebformSelectOther.php b/src/Plugin/WebformElement/WebformSelectOther.php
index 3915eb5b..8ccd05bb 100644
--- a/src/Plugin/WebformElement/WebformSelectOther.php
+++ b/src/Plugin/WebformElement/WebformSelectOther.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Select other"),
  *   description = @Translation("Provides a form element for a drop-down menu or scrolling selection box, with the ability to enter a custom value."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformSelectOther extends Select {
diff --git a/src/Plugin/WebformElement/WebformSignature.php b/src/Plugin/WebformElement/WebformSignature.php
index a66f171e..673946ac 100644
--- a/src/Plugin/WebformElement/WebformSignature.php
+++ b/src/Plugin/WebformElement/WebformSignature.php
@@ -118,7 +118,8 @@ class WebformSignature extends WebformElementBase {
    * {@inheritdoc}
    */
   public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
-    if (isset($form['options'])) {
+    parent::buildExportOptionsForm($form, $form_state, $export_options);
+    if (isset($form['signature'])) {
       return;
     }
 
diff --git a/src/Plugin/WebformElement/WebformTableSelectSort.php b/src/Plugin/WebformElement/WebformTableSelectSort.php
index f7638dd7..1a1bbdb8 100644
--- a/src/Plugin/WebformElement/WebformTableSelectSort.php
+++ b/src/Plugin/WebformElement/WebformTableSelectSort.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Tableselect sort"),
  *   description = @Translation("Provides a form element for a table with radios or checkboxes in left column that can be sorted."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -36,6 +35,20 @@ class WebformTableSelectSort extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getItemDefaultFormat() {
     return 'ol';
   }
diff --git a/src/Plugin/WebformElement/WebformTableSort.php b/src/Plugin/WebformElement/WebformTableSort.php
index 03fc4d39..3a2db794 100644
--- a/src/Plugin/WebformElement/WebformTableSort.php
+++ b/src/Plugin/WebformElement/WebformTableSort.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformInterface;
  *   label = @Translation("Table sort"),
  *   description = @Translation("Provides a form element for a table of values that can be sorted."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
@@ -37,6 +36,20 @@ class WebformTableSort extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getItemDefaultFormat() {
     return 'ol';
   }
diff --git a/src/Plugin/WebformElement/WebformToggles.php b/src/Plugin/WebformElement/WebformToggles.php
index 6f485403..13ef2657 100644
--- a/src/Plugin/WebformElement/WebformToggles.php
+++ b/src/Plugin/WebformElement/WebformToggles.php
@@ -12,7 +12,6 @@ use Drupal\webform\WebformSubmissionInterface;
  *   label = @Translation("Toggles"),
  *   description = @Translation("Provides a form element for toggling multiple on/off states."),
  *   category = @Translation("Options elements"),
- *   multiple = TRUE,
  * )
  */
 class WebformToggles extends OptionsBase {
@@ -34,6 +33,20 @@ class WebformToggles extends OptionsBase {
   /**
    * {@inheritdoc}
    */
+  public function supportsMultipleValues() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function hasMultipleValues(array $element) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission) {
     parent::prepare($element, $webform_submission);
     $element['#element_validate'][] = [get_class($this), 'validateMultipleOptions'];
diff --git a/src/Plugin/WebformElement/WebformVideoFile.php b/src/Plugin/WebformElement/WebformVideoFile.php
index 69b930ef..3d2906b5 100644
--- a/src/Plugin/WebformElement/WebformVideoFile.php
+++ b/src/Plugin/WebformElement/WebformVideoFile.php
@@ -10,7 +10,6 @@ namespace Drupal\webform\Plugin\WebformElement;
  *   label = @Translation("Video file"),
  *   description = @Translation("Provides a form element for uploading and saving a video file."),
  *   category = @Translation("File upload elements"),
- *   multiple = TRUE,
  *   states_wrapper = TRUE,
  * )
  */
diff --git a/src/Tests/WebformAccessTest.php b/src/Tests/WebformAccessTest.php
index 817e1f97..0a78c180 100644
--- a/src/Tests/WebformAccessTest.php
+++ b/src/Tests/WebformAccessTest.php
@@ -12,6 +12,8 @@ use Drupal\webform\Entity\Webform;
  */
 class WebformAccessTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Tests webform access rules.
    */
diff --git a/src/Tests/WebformPathTest.php b/src/Tests/WebformPathTest.php
index 9b4bfef8..b639b9e9 100644
--- a/src/Tests/WebformPathTest.php
+++ b/src/Tests/WebformPathTest.php
@@ -2,6 +2,9 @@
 
 namespace Drupal\webform\Tests;
 
+use Drupal\Core\Serialization\Yaml;
+use Drupal\webform\Entity\Webform;
+
 /**
  * Tests for webform path and page.
  *
@@ -15,7 +18,16 @@ class WebformPathTest extends WebformTestBase {
    * Tests YAML page and title.
    */
   public function testPaths() {
-    $webform = $this->createWebform();
+    $webform = Webform::create([
+      'langcode' => 'en',
+      'status' => TRUE,
+      'id' => 'test_paths',
+      'title' => 'test_paths',
+      'elements' => Yaml::encode([
+        'test' => ['#markup' => 'test']
+      ]),
+    ]);
+    $webform->save();
 
     // Check default system submit path.
     $this->drupalGet('webform/' . $webform->id());
diff --git a/src/Tests/WebformResultsExportTest.php b/src/Tests/WebformResultsExportTest.php
index bfa455b6..abfeb1dc 100644
--- a/src/Tests/WebformResultsExportTest.php
+++ b/src/Tests/WebformResultsExportTest.php
@@ -14,6 +14,8 @@ use Drupal\webform\Entity\WebformSubmission;
  */
 class WebformResultsExportTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Modules to enable.
    *
@@ -134,23 +136,29 @@ class WebformResultsExportTest extends WebformTestBase {
     // Check options format compact.
     $this->getExport($webform, ['options_format' => 'compact']);
     $this->assertRaw('"Flag colors"');
-    $this->assertRaw('"Red,White,Blue"');
+    $this->assertRaw('Red;White;Blue');
 
     // Check options format separate.
     $this->getExport($webform, ['options_format' => 'separate']);
     $this->assertRaw('"Flag colors: Red","Flag colors: White","Flag colors: Blue"');
     $this->assertNoRaw('"Flag colors"');
     $this->assertRaw('X,X,X');
-    $this->assertNoRaw('"Red,White,Blue"');
+    $this->assertNoRaw('Red;White;Blue');
 
     // Check options item format label.
     $this->getExport($webform, ['options_item_format' => 'label']);
-    $this->assertRaw('"Red,White,Blue"');
+    $this->assertRaw('Red;White;Blue');
 
     // Check options item format key.
     $this->getExport($webform, ['options_item_format' => 'key']);
-    $this->assertNoRaw('"Red,White,Blue"');
-    $this->assertRaw('"red,white,blue"');
+    $this->assertNoRaw('Red;White;Blue');
+    $this->assertRaw('red;white;blue');
+
+    // Check multiple delimiter.
+    $this->getExport($webform, ['multiple_delimiter' => '|']);
+    $this->assertRaw('Red|White|Blue');
+    $this->getExport($webform, ['multiple_delimiter' => ',']);
+    $this->assertRaw('"Red,White,Blue"');
 
     // Check entity reference format link.
     $nodes = $this->getNodes();
diff --git a/src/Tests/WebformSubmissionAccessTest.php b/src/Tests/WebformSubmissionAccessTest.php
index 654e7b64..264a9520 100644
--- a/src/Tests/WebformSubmissionAccessTest.php
+++ b/src/Tests/WebformSubmissionAccessTest.php
@@ -9,6 +9,8 @@ namespace Drupal\webform\Tests;
  */
 class WebformSubmissionAccessTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Tests webform submission access.
    */
diff --git a/src/Tests/WebformSubmissionListBuilderTest.php b/src/Tests/WebformSubmissionListBuilderTest.php
index f8650d17..defc8249 100644
--- a/src/Tests/WebformSubmissionListBuilderTest.php
+++ b/src/Tests/WebformSubmissionListBuilderTest.php
@@ -9,6 +9,8 @@ namespace Drupal\webform\Tests;
  */
 class WebformSubmissionListBuilderTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Tests results.
    */
diff --git a/src/Tests/WebformSubmissionStorageTest.php b/src/Tests/WebformSubmissionStorageTest.php
index 4c67e02e..6576e227 100644
--- a/src/Tests/WebformSubmissionStorageTest.php
+++ b/src/Tests/WebformSubmissionStorageTest.php
@@ -2,7 +2,9 @@
 
 namespace Drupal\webform\Tests;
 
+use Drupal\Core\Serialization\Yaml;
 use Drupal\simpletest\WebTestBase;
+use Drupal\webform\Entity\Webform;
 use Drupal\webform\Entity\WebformSubmission;
 
 /**
@@ -43,7 +45,16 @@ class WebformSubmissionStorageTest extends WebTestBase {
     /** @var \Drupal\webform\WebformSubmissionStorageInterface $storage */
     $storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
 
-    $webform = $this->createWebform();
+    // Create new webform.
+    $id = $this->randomMachineName(8);
+    $webform = Webform::create([
+      'langcode' => 'en',
+      'status' => TRUE,
+      'id' => $id,
+      'title' => $id,
+      'elements' => Yaml::encode(['test' => ['#markup' => 'test']]),
+    ]);
+    $webform->save();
 
     // Create 3 submissions for user1.
     $user1 = $this->drupalCreateUser();
diff --git a/src/Tests/WebformSubmissionTest.php b/src/Tests/WebformSubmissionTest.php
index 28d64b97..f3db238e 100644
--- a/src/Tests/WebformSubmissionTest.php
+++ b/src/Tests/WebformSubmissionTest.php
@@ -11,6 +11,8 @@ use Drupal\webform\Entity\WebformSubmission;
  */
 class WebformSubmissionTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Tests webform submission entity.
    */
diff --git a/src/Tests/WebformTest.php b/src/Tests/WebformTest.php
index 9a5430e6..1c2e9907 100644
--- a/src/Tests/WebformTest.php
+++ b/src/Tests/WebformTest.php
@@ -9,6 +9,8 @@ namespace Drupal\webform\Tests;
  */
 class WebformTest extends WebformTestBase {
 
+  use WebformTestCreationTrait;
+
   /**
    * Tests webform entity.
    */
diff --git a/src/Tests/WebformTestCreationTrait.php b/src/Tests/WebformTestCreationTrait.php
new file mode 100644
index 00000000..8dff56b6
--- /dev/null
+++ b/src/Tests/WebformTestCreationTrait.php
@@ -0,0 +1,136 @@
+<?php
+
+namespace Drupal\simpletest;
+
+namespace Drupal\webform\Tests;
+
+use Drupal\Core\Serialization\Yaml;
+use Drupal\webform\Entity\Webform;
+use Drupal\webform\Entity\WebformSubmission;
+
+/**
+ * Provides methods to create webform and submissions based on default settings.
+ *
+ * This trait is meant to be used only by test classes.
+ */
+trait WebformTestCreationTrait {
+
+  /**
+   * Get nodes keyed by nid.
+   *
+   * @return \Drupal\node\NodeInterface[]
+   *   Associative array of nodes keyed by nid.
+   */
+  protected function getNodes() {
+    if (empty($this->nodes)) {
+      $this->drupalCreateContentType(['type' => 'page']);
+      for ($i = 0; $i < 3; $i++) {
+        $this->nodes[$i] = $this->drupalCreateNode(['type' => 'page', 'title' => 'Node ' . $i, 'status' => NODE_PUBLISHED]);
+        $this->drupalGet('node/' . $this->nodes[$i]->id());
+      }
+    }
+    return $this->nodes;
+  }
+
+  /**
+   * Create a webform with submissions.
+   *
+   * @param array|null $elements
+   *   (optional) Array of elements.
+   * @param array $settings
+   *   (optional) Webform settings.
+   *
+   * @return \Drupal\webform\WebformInterface
+   *   A webform.
+   */
+  protected function createWebform(array $elements = [], array $settings = []) {
+    // Create new webform.
+    $id = $this->randomMachineName(8);
+    $webform = Webform::create([
+      'langcode' => 'en',
+      'status' => TRUE,
+      'id' => $id,
+      'title' => $id,
+      'elements' => Yaml::encode($elements),
+      'settings' => $settings + Webform::getDefaultSettings(),
+    ]);
+    $webform->save();
+    return $webform;
+  }
+
+  /**
+   * Create a webform with submissions.
+   *
+   * @return array
+   *   Array containing the webform and submissions.
+   */
+  protected function createWebformWithSubmissions() {
+    // Load webform.
+    $webform = Webform::load('test_results');
+
+    // Load nodes.
+    $nodes = $this->getNodes();
+    // Create some submissions.
+    $names = [
+      [
+        'George',
+        'Washington',
+        'Male',
+        '1732-02-22',
+        $nodes[0],
+        ['white'],
+        ['q1' => 1, 'q2' => 1, 'q3' => 1],
+        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
+      ],
+      [
+        'Abraham',
+        'Lincoln',
+        'Male',
+        '1809-02-12',
+        $nodes[1],
+        ['red', 'white', 'blue'],
+        ['q1' => 2, 'q2' => 2, 'q3' => 2],
+        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
+      ],
+      [
+        'Hillary',
+        'Clinton',
+        'Female',
+        '1947-10-26',
+        $nodes[2],
+        ['red'],
+        ['q1' => 2, 'q2' => 2, 'q3' => 2],
+        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
+      ],
+    ];
+    $sids = [];
+    foreach ($names as $name) {
+      $edit = [
+        'first_name' => $name[0],
+        'last_name' => $name[1],
+        'sex' => $name[2],
+        'dob' => $name[3],
+        'node' => $name[4]->label() . ' (' . $name[4]->id() . ')',
+      ];
+      foreach ($name[5] as $color) {
+        $edit["colors[$color]"] = $color;
+      }
+      foreach ($name[6] as $question => $answer) {
+        $edit["likert[$question]"] = $answer;
+      }
+      foreach ($name[7] as $composite_key => $composite_value) {
+        $edit["address[$composite_key]"] = $composite_value;
+      }
+      $sids[] = $this->postSubmission($webform, $edit);
+    }
+
+    // Change array keys to index instead of using entity ids.
+    $submissions = array_values(WebformSubmission::loadMultiple($sids));
+
+    $this->assert($webform instanceof Webform, 'Webform was created');
+    $this->assertEqual(count($submissions), 3, 'WebformSubmissions were created.');
+
+    return [$webform, $submissions];
+  }
+
+}
diff --git a/src/Tests/WebformTestTrait.php b/src/Tests/WebformTestTrait.php
index 48841699..ce9fef0a 100644
--- a/src/Tests/WebformTestTrait.php
+++ b/src/Tests/WebformTestTrait.php
@@ -2,13 +2,10 @@
 
 namespace Drupal\webform\Tests;
 
-use Drupal\Core\Serialization\Yaml;
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\filter\Entity\FilterFormat;
-use Drupal\webform\Entity\Webform;
-use Drupal\webform\Entity\WebformSubmission;
 use Drupal\webform\WebformInterface;
 
 /**
@@ -205,178 +202,6 @@ trait WebformTestTrait {
   }
 
   /**
-   * Get nodes keyed by nid.
-   *
-   * @return \Drupal\node\NodeInterface[]
-   *   Associative array of nodes keyed by nid.
-   */
-  protected function getNodes() {
-    if (empty($this->nodes)) {
-      $this->drupalCreateContentType(['type' => 'page']);
-      for ($i = 0; $i < 3; $i++) {
-        $this->nodes[$i] = $this->drupalCreateNode(['type' => 'page', 'title' => 'Node ' . $i, 'status' => NODE_PUBLISHED]);
-        $this->drupalGet('node/' . $this->nodes[$i]->id());
-      }
-    }
-    return $this->nodes;
-  }
-
-  /**
-   * Create a webform with submissions.
-   *
-   * @param array|null $elements
-   *   (optional) Array of elements.
-   * @param array $settings
-   *   (optional) Webform settings.
-   *
-   * @return \Drupal\webform\WebformInterface
-   *   A webform.
-   */
-  protected function createWebform($elements = NULL, array $settings = []) {
-    if ($elements === NULL) {
-      $elements = [
-        'first_name' => [
-          '#type' => 'textfield',
-          '#title' => 'First name',
-        ],
-        'last_name' => [
-          '#type' => 'textfield',
-          '#title' => 'Last name',
-        ],
-        'sex' => [
-          '#type' => 'select',
-          '#title' => 'Sex',
-          '#options' => 'gender',
-        ],
-        'dob' => [
-          '#type' => 'date',
-          '#title' => 'Date of birth',
-          '#format' => 'l, F j, Y',
-        ],
-        'node' => [
-          '#type' => 'entity_autocomplete',
-          '#title' => 'Favorite node',
-          '#target_type' => 'node',
-        ],
-        'colors' => [
-          '#type' => 'checkboxes',
-          '#title' => 'Flag colors',
-          '#options' => [
-            'red' => 'Red',
-            'white' => 'White',
-            'blue' => 'Blue',
-          ],
-        ],
-        'likert' => [
-          '#type' => 'likert',
-          '#title' => 'Likert',
-          '#questions' => [
-            'q1' => 'Question 1',
-            'q2' => 'Question 2',
-            'q3' => 'Question 3',
-          ],
-          '#answers' => [
-            '1' => 'Answer 1',
-            '2' => 'Answer 2',
-            '3' => 'Answer 3',
-          ],
-        ],
-        'address' => [
-          '#type' => 'webform_address',
-          '#title' => 'Address',
-        ],
-      ];
-    }
-
-    // Create new webform.
-    $id = $this->randomMachineName(8);
-    $webform = Webform::create([
-      'langcode' => 'en',
-      'status' => TRUE,
-      'id' => $id,
-      'title' => $id,
-      'elements' => Yaml::encode($elements),
-      'settings' => $settings + Webform::getDefaultSettings(),
-    ]);
-    $webform->save();
-    return $webform;
-  }
-
-  /**
-   * Create a webform with submissions.
-   *
-   * @return array
-   *   Array containing the webform and submissions.
-   */
-  protected function createWebformWithSubmissions() {
-    $webform = $this->createWebform();
-
-    $nodes = $this->getNodes();
-
-    // Create some submissions.
-    $names = [
-      [
-        'George',
-        'Washington',
-        'Male',
-        '1732-02-22',
-        $nodes[0],
-        ['white'],
-        ['q1' => 1, 'q2' => 1, 'q3' => 1],
-        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
-      ],
-      [
-        'Abraham',
-        'Lincoln',
-        'Male',
-        '1809-02-12',
-        $nodes[1],
-        ['red', 'white', 'blue'],
-        ['q1' => 2, 'q2' => 2, 'q3' => 2],
-        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
-      ],
-      [
-        'Hillary',
-        'Clinton',
-        'Female',
-        '1947-10-26',
-        $nodes[2],
-        ['red'],
-        ['q1' => 2, 'q2' => 2, 'q3' => 2],
-        ['address' => '{Address}', 'city' => '{City}', 'state_province' => 'New York', 'country' => 'United States', 'postal_code' => '11111-1111'],
-      ],
-    ];
-    $sids = [];
-    foreach ($names as $name) {
-      $edit = [
-        'first_name' => $name[0],
-        'last_name' => $name[1],
-        'sex' => $name[2],
-        'dob' => $name[3],
-        'node' => $name[4]->label() . ' (' . $name[4]->id() . ')',
-      ];
-      foreach ($name[5] as $color) {
-        $edit["colors[$color]"] = $color;
-      }
-      foreach ($name[6] as $question => $answer) {
-        $edit["likert[$question]"] = $answer;
-      }
-      foreach ($name[7] as $composite_key => $composite_value) {
-        $edit["address[$composite_key]"] = $composite_value;
-      }
-      $sids[] = $this->postSubmission($webform, $edit);
-    }
-
-    // Change array keys to index instead of using entity ids.
-    $submissions = array_values(WebformSubmission::loadMultiple($sids));
-
-    $this->assert($webform instanceof Webform, 'Webform was created');
-    $this->assertEqual(count($submissions), 3, 'WebformSubmissions were created.');
-
-    return [$webform, $submissions];
-  }
-
-  /**
    * Gets that last email sent during the currently running test case.
    *
    * @return array
diff --git a/src/WebformElementBase.php b/src/WebformElementBase.php
index 2b468a7c..b61aecde 100644
--- a/src/WebformElementBase.php
+++ b/src/WebformElementBase.php
@@ -164,8 +164,6 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
       'required' => FALSE,
       'required_error' => '',
       'unique' => FALSE,
-      // Submission display.
-      'format' => $this->getItemDefaultFormat(),
       // Attributes.
       'wrapper_attributes' => [],
       'attributes' => [],
@@ -231,6 +229,14 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
     return isset($default_properties[$property_name]);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getDefaultProperty($property_name) {
+    $default_properties = $this->getDefaultProperties();
+    return (isset($default_properties[$property_name])) ? $default_properties[$property_name] : NULL;
+  }
+
   /****************************************************************************/
   // Definition and meta data methods.
   /****************************************************************************/
@@ -303,14 +309,25 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
    * {@inheritdoc}
    */
   public function supportsMultipleValues() {
-    return $this->pluginDefinition['multiple'];
+    return FALSE;
   }
 
   /**
    * {@inheritdoc}
    */
   public function hasMultipleValues(array $element) {
-    return $this->pluginDefinition['multiple'];
+    if ($this->hasProperty('multiple')) {
+      if (isset($element['#multiple'])) {
+        return $element['#multiple'];
+      }
+      else {
+        $default_property = $this->getDefaultProperties();
+        return $default_property['multiple'];
+      }
+    }
+    else {
+      return FALSE;
+    }
   }
 
   /**
@@ -788,8 +805,10 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
         return implode('; ', $items);
 
       case 'comma':
-      default:
         return implode(', ', $items);
+
+      default:
+        return implode($format, $items);
     }
   }
 
@@ -965,7 +984,7 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
    * {@inheritdoc}
    */
   public function buildExportOptionsForm(array &$form, FormStateInterface $form_state, array $export_options) {
-    return [];
+    return;
   }
 
   /**
@@ -1016,7 +1035,7 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
    * {@inheritdoc}
    */
   public function buildExportRecord(array $element, $value, array $export_options) {
-    $element['#format'] = 'raw';
+    $element['#format_items'] = $export_options['multiple_delimiter'];
     return [$this->formatText($element, $value, $export_options)];
   }
 
@@ -1772,7 +1791,7 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
    *   The element whose properties are being updated.
    */
   protected function getConfigurationFormProperty(array &$properties, $property_name, $property_value, array $element) {
-    if ($property_name == 'default_value' && is_string($property_value) && $this->hasMultipleValues($element)) {
+    if ($property_name == 'default_value' && is_string($property_value) && $property_value && $this->hasMultipleValues($element)) {
       $properties[$property_name] = preg_split('/\s*,\s*/', $property_value);
     }
   }
diff --git a/src/WebformElementInterface.php b/src/WebformElementInterface.php
index 255da329..64de0df7 100644
--- a/src/WebformElementInterface.php
+++ b/src/WebformElementInterface.php
@@ -40,6 +40,18 @@ interface WebformElementInterface extends PluginInspectionInterface, PluginFormI
   public function getTranslatableProperties();
 
   /**
+   * Get an element's default property value.
+   *
+   * @param string $property_name
+   *   An element's property name.
+   *
+   * @return mixed
+   *   An element's default property value or NULL is default property does not
+   *   exist.
+   */
+  public function getDefaultProperty($property_name);
+
+  /**
    * Determine if an element supports a specified property.
    *
    * @param string $property_name
diff --git a/src/WebformSubmissionExporter.php b/src/WebformSubmissionExporter.php
index 127fae74..34fe2240 100644
--- a/src/WebformSubmissionExporter.php
+++ b/src/WebformSubmissionExporter.php
@@ -233,6 +233,8 @@ class WebformSubmissionExporter implements WebformSubmissionExporterInterface {
       'exporter' => 'delimited',
 
       'delimiter' => ',',
+      'multiple_delimiter' => ';',
+
       'file_name' => 'submission-[webform_submission:serial]',
 
       'header_format' => 'label',
@@ -318,6 +320,28 @@ class WebformSubmissionExporter implements WebformSubmissionExporterInterface {
       $form['export']['format'] = $exporter->buildConfigurationForm($form['export']['format'], $form_state);
     }
 
+    // Element.
+    $form['export']['element'] = [
+      '#type' => 'details',
+      '#title' => $this->t('Element options'),
+      '#open' => TRUE,
+      '#states' => $states_options,
+    ];
+    $form['export']['element']['multiple_delimiter'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Delimiter element with multiple values'),
+      '#description' => $this->t('This is the delimiter when an element has multiple values.'),
+      '#required' => TRUE,
+      '#options' => [
+        ';' => $this->t('Semicolon (;)'),
+        ',' => $this->t('Comma (,)'),
+        '|' => $this->t('Pipe (|)'),
+        '.' => $this->t('Period (.)'),
+        ' ' => $this->t('Space ()'),
+      ],
+      '#default_value' => $export_options['multiple_delimiter'],
+    ];
+
     // Header.
     $form['export']['header'] = [
       '#type' => 'details',
diff --git a/tests/modules/webform_test/config/install/webform.webform.test_results.yml b/tests/modules/webform_test/config/install/webform.webform.test_results.yml
new file mode 100644
index 00000000..52b0effe
--- /dev/null
+++ b/tests/modules/webform_test/config/install/webform.webform.test_results.yml
@@ -0,0 +1,144 @@
+langcode: en
+status: true
+dependencies:
+  enforced:
+    module:
+      - webform_test
+uid: null
+template: false
+id: test_results
+title: 'Test: Results'
+description: 'Test webform submission results.'
+elements: |
+  first_name:
+    '#type': textfield
+    '#title': 'First name'
+  last_name:
+    '#type': textfield
+    '#title': 'Last name'
+  sex:
+    '#type': select
+    '#title': Sex
+    '#options': gender
+  dob:
+    '#type': date
+    '#title': 'Date of birth'
+    '#format': 'l, F j, Y'
+  node:
+    '#type': entity_autocomplete
+    '#title': 'Favorite node'
+    '#target_type': node
+    '#selection_handler': 'default:node'
+    '#selection_settings':
+      target_bundles:
+        page: page
+  colors:
+    '#type': checkboxes
+    '#title': 'Flag colors'
+    '#options':
+      red: Red
+      white: White
+      blue: Blue
+  likert:
+    '#type': likert
+    '#title': Likert
+    '#questions':
+      q1: 'Question 1'
+      q2: 'Question 2'
+      q3: 'Question 3'
+    '#answers':
+      1: 'Answer 1'
+      2: 'Answer 2'
+      3: 'Answer 3'
+  address:
+    '#type': webform_address
+    '#title': Address
+css: ''
+javascript: ''
+settings:
+  page: true
+  page_submit_path: ''
+  page_confirm_path: ''
+  form_submit_label: ''
+  form_submit_once: false
+  form_submit_attributes: {  }
+  form_exception_message: ''
+  form_closed_message: ''
+  form_previous_submissions: true
+  form_confidential: false
+  form_confidential_message: ''
+  form_prepopulate: false
+  form_prepopulate_source_entity: false
+  form_novalidate: false
+  form_unsaved: false
+  form_disable_back: false
+  form_autofocus: false
+  form_details_toggle: false
+  wizard_progress_bar: true
+  wizard_progress_pages: false
+  wizard_progress_percentage: false
+  wizard_next_button_label: ''
+  wizard_next_button_attributes: {  }
+  wizard_prev_button_label: ''
+  wizard_prev_button_attributes: {  }
+  wizard_start_label: ''
+  wizard_complete: true
+  wizard_complete_label: ''
+  preview: 0
+  preview_next_button_label: ''
+  preview_next_button_attributes: {  }
+  preview_prev_button_label: ''
+  preview_prev_button_attributes: {  }
+  preview_message: ''
+  draft: false
+  draft_auto_save: false
+  draft_button_label: ''
+  draft_button_attributes: {  }
+  draft_saved_message: ''
+  draft_loaded_message: ''
+  confirmation_type: page
+  confirmation_message: ''
+  confirmation_url: ''
+  confirmation_attributes: {  }
+  confirmation_back: true
+  confirmation_back_label: ''
+  confirmation_back_attributes: {  }
+  limit_total: null
+  limit_total_message: ''
+  limit_user: null
+  limit_user_message: ''
+  purge: none
+  purge_days: null
+  entity_limit_total: null
+  entity_limit_user: null
+  results_disabled: false
+  results_disabled_ignore: false
+  token_update: false
+access:
+  create:
+    roles:
+      - anonymous
+      - authenticated
+    users: {  }
+  view_any:
+    roles: {  }
+    users: {  }
+  update_any:
+    roles: {  }
+    users: {  }
+  delete_any:
+    roles: {  }
+    users: {  }
+  purge_any:
+    roles: {  }
+    users: {  }
+  view_own:
+    roles: {  }
+    users: {  }
+  update_own:
+    roles: {  }
+    users: {  }
+  delete_own:
+    roles: {  }
+    users: {  }
+handlers: {  }
