diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index 7c9b638b048dca6ddc827705c4ed482ef465f2ff..f6f733e0f41bcf18d2439803902453de2a5a1d23 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -729,8 +729,15 @@ class DataHandler implements LoggerAwareInterface
             }
             $hookObjectsArr[] = $hookObject;
         }
-        // Pre-process data-map and synchronize localization states
-        $this->datamap = GeneralUtility::makeInstance(SlugEnricher::class)->enrichDataMap($this->datamap);
+
+        foreach ($this->datamap as $tableName => $tableDataMap) {
+            foreach ($tableDataMap as $identifier => $fieldValues) {
+                if (!MathUtility::canBeInterpretedAsInteger($identifier)) {
+                    $this->datamap[$tableName][$identifier] = $this->initializeSlugFieldsToEmptyString($tableName, $fieldValues);
+                }
+            }
+        }
+
         $this->datamap = DataMapProcessor::instance($this->datamap, $this->BE_USER, $this->referenceIndexUpdater)->process();
         // Organize tables so that the pages-table is always processed first. This is required if you want to make sure that content pointing to a new page will be created.
         $orderOfTables = [];
@@ -1085,6 +1092,22 @@ class DataHandler implements LoggerAwareInterface
         }
     }
 
+    /**
+     *  New records capable of handling slugs (TCA type 'slug'), always
+     *  require the field value to be set, in order to run through the validation
+     *  process to create a new slug. Fields having `null` as value are ignored
+     *  and can be used to by-pass implicit slug initialization.
+     */
+    protected function initializeSlugFieldsToEmptyString(string $tableName, array $fieldValues): array
+    {
+        foreach (($GLOBALS['TCA'][$tableName]['columns'] ?? []) as $columnName => $columnConfig) {
+            if (($columnConfig['config']['type'] ?? '') === 'slug' && !isset($fieldValues[$columnName])) {
+                $fieldValues[$columnName] = '';
+            }
+        }
+        return $fieldValues;
+    }
+
     /**
      * Sets the "sorting" DB field and the "pid" field of an incoming record that should be added (NEW1234)
      * depending on the record that should be added or where it should be added.
@@ -1853,7 +1876,6 @@ class DataHandler implements LoggerAwareInterface
      * @param string $field Field name
      * @param array $incomingFieldArray the fields being explicitly set by the outside (unlike $fieldArray) for the record
      * @return array $res The result array. The processed value (if any!) is set in the "value" key.
-     * @see SlugEnricher
      * @see SlugHelper
      */
     protected function checkValueForSlug(string $value, array $tcaFieldConf, string $table, $id, int $realPid, string $field, array $incomingFieldArray = []): array
diff --git a/typo3/sysext/core/Classes/DataHandling/SlugEnricher.php b/typo3/sysext/core/Classes/DataHandling/SlugEnricher.php
index 61163073ca1558d85f33ac35cce95b3dde1053a9..52fce3260d7964a3cd8fa13624668ee9d4b61c26 100644
--- a/typo3/sysext/core/Classes/DataHandling/SlugEnricher.php
+++ b/typo3/sysext/core/Classes/DataHandling/SlugEnricher.php
@@ -27,6 +27,7 @@ use TYPO3\CMS\Core\Utility\MathUtility;
  *
  * @see DataHandler::fillInFieldArray()
  * @see DataHandler::checkValueForSlug()
+ * @deprecated since TYPO3 v13, will be removed in TYPO3 v14.0.
  */
 class SlugEnricher
 {
@@ -35,6 +36,11 @@ class SlugEnricher
      */
     protected $slugFieldNamesPerTable = [];
 
+    public function __construct()
+    {
+        trigger_error('Class ' . __CLASS__ . ' will be removed with TYPO3 v14.0.', E_USER_DEPRECATED);
+    }
+
     public function enrichDataMap(array $dataMap): array
     {
         foreach ($dataMap as $tableName => &$tableDataMap) {
diff --git a/typo3/sysext/core/Documentation/Changelog/13.1/Deprecation-103244-ClassSlugEnricher.rst b/typo3/sysext/core/Documentation/Changelog/13.1/Deprecation-103244-ClassSlugEnricher.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f381dbe14ba9b0eee76349a23441bd05094dab48
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/13.1/Deprecation-103244-ClassSlugEnricher.rst
@@ -0,0 +1,41 @@
+.. include:: /Includes.rst.txt
+
+.. _deprecation-103244-1709376790:
+
+=========================================
+Deprecation: #103244 - Class SlugEnricher
+=========================================
+
+See :issue:`103244`
+
+Description
+===========
+
+Class :php:`\TYPO3\CMS\Core\DataHandling\SlugEnricher` has been marked as
+deprecated in TYPO3 v13 and will be removed with v14.
+
+The class was used as a helper for :php:`\TYPO3\CMS\Core\DataHandling\DataHandler`,
+which now inlines the code in a simplified variant.
+
+
+Impact
+======
+
+Using the class will raise a deprecation level log entry and a fatal error in TYPO3 v14.
+
+
+Affected installations
+======================
+
+There is little to no reason to use this class in custom extensions, very few
+instances should be affected by this. The extension scanner will find usages
+with a strong match.
+
+
+Migration
+=========
+
+No migration available.
+
+
+.. index:: PHP-API, FullyScanned, ext:core
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
index f1ed6e2bd93efbae00fdd4f9eebdb2039e79588e..ec186f6d3d6a1577464a64535f3accf5c2cfe7c6 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
@@ -2517,4 +2517,9 @@ return [
             'Deprecation-102763-ExtbaseHashService.rst',
         ],
     ],
+    'TYPO3\CMS\Core\DataHandling\SlugEnricher' => [
+        'restFiles' => [
+            'Deprecation-103244-ClassSlugEnricher.rst',
+        ],
+    ],
 ];