diff --git a/typo3/sysext/form/Classes/Domain/Finishers/SaveToDatabaseFinisher.php b/typo3/sysext/form/Classes/Domain/Finishers/SaveToDatabaseFinisher.php
index ef6ddb38ce886fdeaaec7a6f0dcaaf6ed3e55419..7f53c91ca007d225dc955709343db4b51692059b 100644
--- a/typo3/sysext/form/Classes/Domain/Finishers/SaveToDatabaseFinisher.php
+++ b/typo3/sysext/form/Classes/Domain/Finishers/SaveToDatabaseFinisher.php
@@ -209,33 +209,14 @@ class SaveToDatabaseFinisher extends AbstractFinisher
     }
 
     /**
-     * Perform the current database operation
+     * Prepare data for saving to database
      *
-     * @param int $iterationCount
+     * @param array $elementsConfiguration
+     * @param array $databaseData
+     * @return mixed
      */
-    protected function process(int $iterationCount)
+    protected function prepareData(array $elementsConfiguration, array $databaseData)
     {
-        $this->throwExceptionOnInconsistentConfiguration();
-
-        $table = $this->parseOption('table');
-        $elementsConfiguration = $this->parseOption('elements');
-        $databaseColumnMappingsConfiguration = $this->parseOption('databaseColumnMappings');
-
-        $this->databaseConnection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
-
-        $databaseData = [];
-        foreach ($databaseColumnMappingsConfiguration as $databaseColumnName => $databaseColumnConfiguration) {
-            $value = $this->parseOption('databaseColumnMappings.' . $databaseColumnName . '.value');
-            if (
-                empty($value)
-                && $databaseColumnConfiguration['skipIfValueIsEmpty'] === true
-            ) {
-                continue;
-            }
-
-            $databaseData[$databaseColumnName] = $value;
-        }
-
         foreach ($this->getFormValues() as $elementIdentifier => $elementValue) {
             if (
                 $elementValue === null
@@ -267,9 +248,43 @@ class SaveToDatabaseFinisher extends AbstractFinisher
                 } else {
                     $elementValue = $elementValue->getOriginalResource()->getProperty('uid_local');
                 }
+            } elseif (is_array($elementValue)) {
+                $elementValue = implode(',', $elementValue);
             }
             $databaseData[$elementsConfiguration[$elementIdentifier]['mapOnDatabaseColumn']] = $elementValue;
         }
+        return $databaseData;
+    }
+
+    /**
+     * Perform the current database operation
+     *
+     * @param int $iterationCount
+     */
+    protected function process(int $iterationCount)
+    {
+        $this->throwExceptionOnInconsistentConfiguration();
+
+        $table = $this->parseOption('table');
+        $elementsConfiguration = $this->parseOption('elements');
+        $databaseColumnMappingsConfiguration = $this->parseOption('databaseColumnMappings');
+
+        $this->databaseConnection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
+
+        $databaseData = [];
+        foreach ($databaseColumnMappingsConfiguration as $databaseColumnName => $databaseColumnConfiguration) {
+            $value = $this->parseOption('databaseColumnMappings.' . $databaseColumnName . '.value');
+            if (
+                empty($value)
+                && $databaseColumnConfiguration['skipIfValueIsEmpty'] === true
+            ) {
+                continue;
+            }
+
+            $databaseData[$databaseColumnName] = $value;
+        }
+
+        $databaseData = $this->prepareData($elementsConfiguration, $databaseData);
 
         $this->saveToDatabase($databaseData, $table, $iterationCount);
     }
diff --git a/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php b/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php
index ba4dfd9b393cbb7a6c72442f041fe448a3f34ed7..7e12d3a95f06d7671bd4d62f5f833638c7937377 100644
--- a/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php
+++ b/typo3/sysext/form/Tests/Unit/Domain/Finishers/SaveToDatabaseFinisherTest.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Form\Tests\Unit\Domain\Finishers;
 
 use TYPO3\CMS\Form\Domain\Finishers\Exception\FinisherException;
 use TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher;
+use TYPO3\CMS\Form\Domain\Model\FormElements\FormElementInterface;
 
 /**
  * Test case
@@ -42,4 +43,28 @@ class SaveToDatabaseFinisherTest extends \TYPO3\TestingFramework\Core\Unit\UnitT
 
         $mockSaveToDatabaseFinisher->_call('throwExceptionOnInconsistentConfiguration');
     }
+
+    /**
+     * @test
+     */
+    public function prepareDataConvertsArrayValuesToCsv()
+    {
+        $elementsConfiguration = [
+            'foo' => [
+                'mapOnDatabaseColumn' => 'bar'
+            ]
+        ];
+
+        $saveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, ['getFormValues', 'getElementByIdentifier']);
+        $saveToDatabaseFinisher->method('getFormValues')->willReturn([
+            'foo' => [
+                'one',
+                'two'
+            ]
+        ]);
+        $saveToDatabaseFinisher->method('getElementByIdentifier')->willReturn($this->prophesize(FormElementInterface::class)->reveal());
+        $databaseData = $saveToDatabaseFinisher->_call('prepareData', $elementsConfiguration, []);
+
+        self::assertSame('one,two', $databaseData['bar']);
+    }
 }