diff --git a/Build/Scripts/checkIntegrityCsvFixtures.php b/Build/Scripts/checkIntegrityCsvFixtures.php
index e2dd83330eaf813a942dc52cf128040e7d8c5ae4..fe4ad2ed98e71548d82030833021f7e10b1289da 100755
--- a/Build/Scripts/checkIntegrityCsvFixtures.php
+++ b/Build/Scripts/checkIntegrityCsvFixtures.php
@@ -94,6 +94,10 @@ class checkIntegrityCsvFixtures
                 $columnCount = count($columns);
             } else {
                 if (count($columns) !== $columnCount) {
+                    // Skip CSV lines with starting with comments
+                    if (count($columns) === 1 && strpos($columns[0], '#') === 0) {
+                        continue;
+                    }
                     return 'Line ' . ($index + 1) . '; Expected column count: ' . $columnCount . '; Actual: ' . count($columns);
                 }
             }
diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index 83bd2fe7d4e5f849df1baffc3fd7394832fbcd14..e488d23e2d25ad9bf01b2075285a138afe218a75 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -1244,40 +1244,58 @@ class DataHandler implements LoggerAwareInterface
     }
 
     /**
-     * Fix shadowing of data in case we are editing an offline version of a live "New" placeholder record:
+     * Fix shadowing of data in case we are editing an offline version of a live "New" placeholder record.
      *
      * @param string $table Table name
      * @param int $id Record uid
      */
     public function placeholderShadowing($table, $id)
     {
-        if ($liveRec = BackendUtility::getLiveVersionOfRecord($table, $id, '*')) {
-            if (VersionState::cast($liveRec['t3ver_state'])->indicatesPlaceholder()) {
-                $justStoredRecord = BackendUtility::getRecord($table, $id);
-                $newRecord = [];
-                $shadowCols = $GLOBALS['TCA'][$table]['ctrl']['shadowColumnsForNewPlaceholders'];
-                $shadowCols .= ',' . $GLOBALS['TCA'][$table]['ctrl']['languageField'];
-                $shadowCols .= ',' . $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'];
-                if (isset($GLOBALS['TCA'][$table]['ctrl']['translationSource'])) {
-                    $shadowCols .= ',' . $GLOBALS['TCA'][$table]['ctrl']['translationSource'];
-                }
-                $shadowCols .= ',' . $GLOBALS['TCA'][$table]['ctrl']['type'];
-                $shadowCols .= ',' . $GLOBALS['TCA'][$table]['ctrl']['label'];
-                $shadowCols .= ',' . implode(',', GeneralUtility::makeInstance(SlugEnricher::class)->resolveSlugFieldNames($table));
-                $shadowColumns = array_unique(GeneralUtility::trimExplode(',', $shadowCols, true));
-                foreach ($shadowColumns as $fieldName) {
-                    if ((string)$justStoredRecord[$fieldName] !== (string)$liveRec[$fieldName] && isset($GLOBALS['TCA'][$table]['columns'][$fieldName]) && $fieldName !== 'uid' && $fieldName !== 'pid') {
-                        $newRecord[$fieldName] = $justStoredRecord[$fieldName];
-                    }
-                }
-                if (!empty($newRecord)) {
-                    if ($this->enableLogging) {
-                        $this->log($table, $liveRec['uid'], SystemLogGenericAction::UNDEFINED, 0, SystemLogErrorClassification::MESSAGE, 'Shadowing done on fields <i>' . implode(',', array_keys($newRecord)) . '</i> in placeholder record ' . $table . ':' . $liveRec['uid'] . ' (offline version UID=' . $id . ')', -1, [], $this->eventPid($table, $liveRec['uid'], $liveRec['pid']));
-                    }
-                    $this->updateDB($table, $liveRec['uid'], $newRecord);
-                }
+        $liveRecord = BackendUtility::getLiveVersionOfRecord($table, $id, '*');
+        if (empty($liveRecord)) {
+            return;
+        }
+
+        $liveState = VersionState::cast($liveRecord['t3ver_state']);
+        $versionRecord = BackendUtility::getRecord($table, $id);
+        $versionState = VersionState::cast($versionRecord['t3ver_state']);
+
+        if (!$liveState->indicatesPlaceholder() && !$versionState->indicatesPlaceholder()) {
+            return;
+        }
+        $factory = GeneralUtility::makeInstance(
+            PlaceholderShadowColumnsResolver::class,
+            $table,
+            $GLOBALS['TCA'][$table] ?? []
+        );
+
+        if ($versionState->equals(VersionState::MOVE_POINTER)) {
+            $placeholderRecord = BackendUtility::getMovePlaceholder($table, $liveRecord['uid'], '*', $versionRecord['t3ver_wsid']);
+            $shadowColumns = $factory->forMovePlaceholder();
+        } elseif ($liveState->indicatesPlaceholder()) {
+            $placeholderRecord = $liveRecord;
+            $shadowColumns = $factory->forNewPlaceholder();
+        } else {
+            return;
+        }
+        if (empty($shadowColumns)) {
+            return;
+        }
+
+        $placeholderValues = [];
+        foreach ($shadowColumns as $fieldName) {
+            if ((string)$versionRecord[$fieldName] !== (string)$placeholderRecord[$fieldName]) {
+                $placeholderValues[$fieldName] = $versionRecord[$fieldName];
             }
         }
+        if (empty($placeholderValues)) {
+            return;
+        }
+
+        if ($this->enableLogging) {
+            $this->log($table, $placeholderRecord['uid'], SystemLogGenericAction::UNDEFINED, 0, SystemLogErrorClassification::MESSAGE, 'Shadowing done on fields <i>' . implode(',', array_keys($placeholderValues)) . '</i> in placeholder record ' . $table . ':' . $liveRecord['uid'] . ' (offline version UID=' . $id . ')', -1, [], $this->eventPid($table, $liveRecord['uid'], $liveRecord['pid']));
+        }
+        $this->updateDB($table, $placeholderRecord['uid'], $placeholderValues);
     }
 
     /**
diff --git a/typo3/sysext/core/Classes/DataHandling/PlaceholderShadowColumnsResolver.php b/typo3/sysext/core/Classes/DataHandling/PlaceholderShadowColumnsResolver.php
new file mode 100644
index 0000000000000000000000000000000000000000..87763be45b0643eb1058e5772664f81d41b71796
--- /dev/null
+++ b/typo3/sysext/core/Classes/DataHandling/PlaceholderShadowColumnsResolver.php
@@ -0,0 +1,132 @@
+<?php
+declare(strict_types = 1);
+
+namespace TYPO3\CMS\Core\DataHandling;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Exception;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Resolver for placeholder shadow columns to be used in workspace aware environments.
+ *
+ * Certain fields need to be "shadowed" - NEW and MOVE placeholder need to have values kept in sync
+ * that are modified, like the "hidden" field (enable fields, slug fields etc).
+ *
+ * This class resolves the columns for a TCA table record that should be kept in sync.
+ *
+ * @see \TYPO3\CMS\Core\DataHandling\DataHandler::placeholderShadowing()
+ * @see \TYPO3\CMS\Workspaces\Hook\DataHandlerHook::moveRecord_wsPlaceholders()
+ */
+class PlaceholderShadowColumnsResolver
+{
+    protected const CONTROL_COLUMNS = [
+        'languageField',
+        'transOrigPointerField',
+        'translationSource',
+        'type',
+        'label'
+    ];
+
+    protected const FLAG_NONE = 0;
+    protected const FLAG_APPLY_SYSTEM_COLUMNS = 1;
+    protected const FLAG_APPLY_SLUG_COLUMNS = 2;
+
+    /**
+     * @var string
+     */
+    protected $tableName;
+
+    /**
+     * @var array
+     */
+    protected $tableConfiguration;
+
+    /**
+     * @var int|null
+     */
+    protected $flags;
+
+    /**
+     * @param string $tableName Name of the database table
+     * @param array $tableConfiguration TCA configuration for $tableName
+     * @throws Exception
+     */
+    public function __construct(string $tableName, array $tableConfiguration)
+    {
+        $this->tableName = $tableName;
+        $this->tableConfiguration = $tableConfiguration;
+
+        if (empty($this->tableName) || empty($this->tableConfiguration)) {
+            throw new Exception('No table name and TCA given', 1574174231);
+        }
+    }
+
+    /**
+     * @param int|null $flags Custom flags to adjust resolving behavior
+     * @return string[] Placeholder shadow column names
+     */
+    public function forNewPlaceholder(int $flags = null): array
+    {
+        $flags = $flags ?? self::FLAG_APPLY_SYSTEM_COLUMNS | self::FLAG_APPLY_SLUG_COLUMNS;
+        $shadowColumnsList = $this->tableConfiguration['ctrl']['shadowColumnsForNewPlaceholders'] ?? '';
+        return $this->forTable($shadowColumnsList, $flags);
+    }
+
+    /**
+     * @param int|null $flags Custom flags to adjust resolving behavior
+     * @return string[] Placeholder shadow column names
+     */
+    public function forMovePlaceholder(int $flags = null): array
+    {
+        $shadowColumnsList = $this->tableConfiguration['ctrl']['shadowColumnsForMovePlaceholders']
+            ?? $this->tableConfiguration['ctrl']['shadowColumnsForNewPlaceholders'] ?? '';
+        // @todo Applying same flags as for new-placeholders would streamline database integrity
+        return $this->forTable($shadowColumnsList, $flags);
+    }
+
+    protected function forTable(string $shadowColumnsList, int $flags = null): array
+    {
+        $shadowColumns = explode(',', $shadowColumnsList);
+        $flags = $flags ?? self::FLAG_NONE;
+
+        if ($flags & self::FLAG_APPLY_SYSTEM_COLUMNS) {
+            foreach (self::CONTROL_COLUMNS as $controlColumn) {
+                if (isset($this->tableConfiguration['ctrl'][$controlColumn])) {
+                    $shadowColumns[] = $this->tableConfiguration['ctrl'][$controlColumn];
+                }
+            }
+        }
+        if ($flags & self::FLAG_APPLY_SLUG_COLUMNS) {
+            $shadowColumns = array_merge(
+                $shadowColumns,
+                GeneralUtility::makeInstance(SlugEnricher::class)->resolveSlugFieldNames($this->tableName)
+            );
+        }
+        foreach ($this->tableConfiguration['ctrl']['enablecolumns'] ?? [] as $enableColumn) {
+            $shadowColumns[] = $enableColumn;
+        }
+
+        $shadowColumns = array_filter(
+            array_map('trim', $shadowColumns),
+            function (string $shadowColumn) {
+                return !empty($shadowColumn) && $shadowColumn !== 'uid' && $shadowColumn !== 'pid'
+                    && isset($this->tableConfiguration['columns'][$shadowColumn]);
+            }
+        );
+        $shadowColumns = array_unique($shadowColumns);
+        return $shadowColumns;
+    }
+}
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
index 8898854fd14390701892ed6ed261605df9a221ce..f017dd37a8661aacd68cb910b2f812d93f9bfb2e 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
@@ -86,6 +86,14 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['header' => 'Testing #1']);
     }
 
+    /**
+     * See DataSet/hideContent.csv
+     */
+    public function hideContent()
+    {
+        $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, ['hidden' => '1']);
+    }
+
     /**
      * See DataSet/deleteContentRecord.csv
      */
@@ -305,6 +313,14 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdSecond);
     }
 
+    /**
+     * See DataSet/moveContentRecordToDifferentPageAndHide.csv
+     */
+    public function moveContentToDifferentPageAndHide()
+    {
+        $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageIdTarget, ['hidden' => '1']);
+    }
+
     /**
      * Page records
      */
diff --git a/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php b/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
index dea171863dc2f12a33ce7307dcbdfc7e07c4031e..3246bfbd2dcfb5c153e2f830fb92416326347edf 100644
--- a/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
+++ b/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
@@ -28,6 +28,7 @@ use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
 use TYPO3\CMS\Core\Database\ReferenceIndex;
 use TYPO3\CMS\Core\Database\RelationHandler;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
+use TYPO3\CMS\Core\DataHandling\PlaceholderShadowColumnsResolver;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Mail\MailMessage;
 use TYPO3\CMS\Core\Service\MarkerBasedTemplateService;
@@ -1544,18 +1545,15 @@ class DataHandlerHook
             // represents the position to where the record is eventually moved to.
             $newVersion_placeholderFieldArray = [];
 
-            // Use property for move placeholders if set (since TYPO3 CMS 6.2)
-            if (isset($GLOBALS['TCA'][$table]['ctrl']['shadowColumnsForMovePlaceholders'])) {
-                $shadowColumnsForMovePlaceholder = $GLOBALS['TCA'][$table]['ctrl']['shadowColumnsForMovePlaceholders'];
-            } elseif (isset($GLOBALS['TCA'][$table]['ctrl']['shadowColumnsForNewPlaceholders'])) {
-                // Fallback to property for new placeholder (existed long time before TYPO3 CMS 6.2)
-                $shadowColumnsForMovePlaceholder = $GLOBALS['TCA'][$table]['ctrl']['shadowColumnsForNewPlaceholders'];
-            }
-
+            $factory = GeneralUtility::makeInstance(
+                PlaceholderShadowColumnsResolver::class,
+                $table,
+                $GLOBALS['TCA'][$table] ?? []
+            );
+            $shadowColumns = $factory->forMovePlaceholder();
             // Set values from the versioned record to the move placeholder
-            if (!empty($shadowColumnsForMovePlaceholder)) {
+            if (!empty($shadowColumns)) {
                 $versionedRecord = BackendUtility::getRecord($table, $offlineUid);
-                $shadowColumns = GeneralUtility::trimExplode(',', $shadowColumnsForMovePlaceholder, true);
                 foreach ($shadowColumns as $shadowColumn) {
                     if (isset($versionedRecord[$shadowColumn])) {
                         $newVersion_placeholderFieldArray[$shadowColumn] = $versionedRecord[$shadowColumn];
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
index 2a9b0c6e9e182ebe9ac5e522a91b28c580db2bd6..9e0a1699489e43f3e1bf131eae55f69fd433437b 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
@@ -89,6 +89,40 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
     }
 
+    /**
+     * @test
+     * See DataSet/hideContent.csv
+     */
+    public function hideContent()
+    {
+        parent::hideContent();
+        $this->assertAssertionDataSet('hideContent');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
+        self::assertThat($responseSections, $this->getRequestSectionDoesNotHaveRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
+    }
+
+    /**
+     * @test
+     * See DataSet/hideContentAndMoveToDifferentPage.csv
+     */
+    public function hideContentAndMoveToDifferentPage()
+    {
+        parent::hideContent();
+        parent::moveContentToDifferentPage();
+        $this->assertAssertionDataSet('hideContentAndMoveToDifferentPage');
+
+        $responseSectionsSource = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
+        self::assertThat($responseSectionsSource, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1'));
+        self::assertThat($responseSectionsSource, $this->getRequestSectionDoesNotHaveRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
+        $responseSectionsTarget = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
+        self::assertThat($responseSectionsTarget, $this->getRequestSectionDoesNotHaveRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
+    }
+
     /**
      * @test
      * See DataSet/deleteContentRecord.csv
@@ -202,9 +236,8 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
         $this->assertAssertionDataSet('localizeContentWHideAtCopy');
 
         $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
-        // @todo Localized element should be retrieved
         self::assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
-            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #1' /* , '[Translate to Dansk:] Regular Element #2'*/));
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
     }
 
     /**
@@ -300,6 +333,20 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1', 'Regular Element #2'));
     }
 
+    /**
+     * @test
+     * See DataSet/moveContentToDifferentPageAndHide.csv
+     */
+    public function moveContentToDifferentPageAndHide()
+    {
+        parent::moveContentToDifferentPageAndHide();
+        $this->assertAssertionDataSet('moveContentToDifferentPageAndHide');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
+        self::assertThat($responseSections, $this->getRequestSectionDoesNotHaveRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
+    }
+
     /**
      * Page records
      */
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContent.csv
new file mode 100644
index 0000000000000000000000000000000000000000..306876bd92c0e5d5a2b675922a973f79acdaec67
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContent.csv
@@ -0,0 +1,14 @@
+"tt_content",,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","hidden","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header"
+,296,88,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #0"
+,297,89,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #1"
+,298,89,512,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #2"
+,299,89,768,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #3"
+,300,89,1024,0,0,1,299,299,299,0,0,0,0,0,"[Translate to Dansk:] Regular Element #3"
+,301,89,384,0,0,1,297,297,297,0,0,0,0,0,"[Translate to Dansk:] Regular Element #1"
+,302,89,448,0,0,2,297,301,301,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1"
+,310,90,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #10"
+,311,90,512,0,0,1,0,310,310,0,0,0,0,0,"[Translate to Dansk:] Regular Element #10"
+,312,90,768,0,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10"
+,320,-1,512,0,0,0,0,0,298,2,2,0,298,0,"Regular Element #2"
+,321,-1,512,0,1,0,0,0,298,1,0,0,298,0,"Regular Element #2"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContentAndMoveToDifferentPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContentAndMoveToDifferentPage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8bd5efceeb1a9167281467c4965251b018dfbbd6
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/hideContentAndMoveToDifferentPage.csv
@@ -0,0 +1,15 @@
+"tt_content",,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","hidden","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header"
+,296,88,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #0"
+,297,89,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #1"
+,298,89,512,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #2"
+,299,89,768,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #3"
+,300,89,1024,0,0,1,299,299,299,0,0,0,0,0,"[Translate to Dansk:] Regular Element #3"
+,301,89,384,0,0,1,297,297,297,0,0,0,0,0,"[Translate to Dansk:] Regular Element #1"
+,302,89,448,0,0,2,297,301,301,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1"
+,310,90,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #10"
+,311,90,512,0,0,1,0,310,310,0,0,0,0,0,"[Translate to Dansk:] Regular Element #10"
+,312,90,768,0,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10"
+,320,-1,512,0,0,0,0,0,298,2,2,0,298,0,"Regular Element #2"
+,321,-1,512,0,1,0,0,0,298,1,4,0,298,0,"Regular Element #2"
+,322,90,128,0,1,0,0,0,0,1,3,0,0,298,"[MOVE-TO PLACEHOLDER for #298, WS#1]"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentWHideAtCopy.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentWHideAtCopy.csv
index 2b39d4b520d30fb5f1d2f718017474d3f36c3ae1..7409213795c6c5b364e77515fffcb3af75d2f340 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentWHideAtCopy.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentWHideAtCopy.csv
@@ -11,5 +11,5 @@
 ,311,90,512,0,0,1,0,310,310,0,0,0,0,0,"[Translate to Dansk:] Regular Element #10"
 ,312,90,768,0,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10"
 ,320,-1,512,0,0,0,0,0,298,2,2,0,298,0,"Regular Element #2"
-,321,89,416,1,0,1,298,298,298,1,1,0,0,0,"[Translate to Dansk:] Regular Element #2"
+,321,89,416,0,0,1,298,298,298,1,1,0,0,0,"[Translate to Dansk:] Regular Element #2"
 ,322,-1,416,0,0,1,298,298,298,1,-1,0,321,0,"[Translate to Dansk:] Regular Element #2"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageAndHide.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageAndHide.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8bd5efceeb1a9167281467c4965251b018dfbbd6
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/moveContentToDifferentPageAndHide.csv
@@ -0,0 +1,15 @@
+"tt_content",,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","hidden","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","header"
+,296,88,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #0"
+,297,89,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #1"
+,298,89,512,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #2"
+,299,89,768,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #3"
+,300,89,1024,0,0,1,299,299,299,0,0,0,0,0,"[Translate to Dansk:] Regular Element #3"
+,301,89,384,0,0,1,297,297,297,0,0,0,0,0,"[Translate to Dansk:] Regular Element #1"
+,302,89,448,0,0,2,297,301,301,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1"
+,310,90,256,0,0,0,0,0,0,0,0,0,0,0,"Regular Element #10"
+,311,90,512,0,0,1,0,310,310,0,0,0,0,0,"[Translate to Dansk:] Regular Element #10"
+,312,90,768,0,0,2,0,311,311,0,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10"
+,320,-1,512,0,0,0,0,0,298,2,2,0,298,0,"Regular Element #2"
+,321,-1,512,0,1,0,0,0,298,1,4,0,298,0,"Regular Element #2"
+,322,90,128,0,1,0,0,0,0,1,3,0,0,298,"[MOVE-TO PLACEHOLDER for #298, WS#1]"