From 4dc79486a7b6b42f9796b9aa0f3f852530eeafd1 Mon Sep 17 00:00:00 2001
From: Benni Mack <benni@typo3.org>
Date: Tue, 26 May 2020 12:57:11 +0200
Subject: [PATCH] [!!!][TASK] Remove deprecated Signals from SignalSlot
 Dispatcher

This change removes all triggers ("SlotReplacement classes") to Signals
that were used until TYPO3 v10 LTS.

The SignalSlot Dispatcher still stay for the time being, but it is unused in
TYPO3 Core now.

Resolves: #91474
Related: #91473
Releases: master
Change-Id: I08867cb5837f605e52a067457a91f40288556fab
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64578
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
---
 .../Classes/Compatibility/SlotReplacement.php | 102 ---
 .../backend/Configuration/Services.yaml       |  24 -
 .../Classes/Compatibility/SlotReplacement.php |  51 --
 .../sysext/beuser/Configuration/Services.yaml |   8 -
 .../Classes/Compatibility/SlotReplacement.php | 700 ------------------
 .../core/Classes/Resource/ResourceFactory.php |   2 +-
 .../Resource/ResourceFactoryInterface.php     |  27 -
 .../Resource/ResourceStorageInterface.php     | 140 ----
 .../Service/FileProcessingService.php         |  10 -
 typo3/sysext/core/Configuration/Services.yaml | 196 -----
 ...g-91473-DeprecatedFunctionalityRemoved.rst | 192 +++++
 .../Classes/Compatibility/SlotReplacement.php | 164 ----
 .../Middleware/SignalSlotDeprecator.php       |  51 --
 .../Mvc/Controller/ActionController.php       |  14 -
 .../extbase/Classes/SignalSlot/Dispatcher.php | 266 -------
 .../Configuration/RequestMiddlewares.php      |  12 -
 .../extbase/Configuration/Services.yaml       |  44 --
 .../Classes/Compatibility/SlotReplacement.php | 136 ----
 .../Configuration/Services.yaml               |  31 -
 .../Classes/Compatibility/SlotReplacement.php |  51 --
 .../sysext/impexp/Configuration/Services.yaml |   8 -
 .../Classes/Compatibility/SlotReplacement.php |  56 --
 .../Php/ClassConstantMatcher.php              |  37 +
 .../ExtensionScanner/Php/ClassNameMatcher.php |   1 +
 .../Php/MethodCallMatcher.php                 |   1 +
 .../install/Configuration/Services.yaml       |   9 -
 .../Classes/Compatibility/SlotReplacement.php |  59 --
 .../linkvalidator/Configuration/Services.yaml |   7 -
 .../Classes/Compatibility/SlotReplacement.php |  53 --
 typo3/sysext/seo/Configuration/Services.yaml  |   7 -
 .../Classes/Compatibility/SlotReplacement.php |  89 ---
 .../Classes/Service/GridDataService.php       |  17 -
 .../workspaces/Configuration/Services.yaml    |  19 -
 33 files changed, 232 insertions(+), 2352 deletions(-)
 delete mode 100644 typo3/sysext/backend/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/beuser/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/core/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/core/Classes/Resource/ResourceFactoryInterface.php
 create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Breaking-91473-DeprecatedFunctionalityRemoved.rst
 delete mode 100644 typo3/sysext/extbase/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/extbase/Classes/Middleware/SignalSlotDeprecator.php
 delete mode 100644 typo3/sysext/extbase/Configuration/RequestMiddlewares.php
 delete mode 100644 typo3/sysext/extensionmanager/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/impexp/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/install/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/linkvalidator/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/seo/Classes/Compatibility/SlotReplacement.php
 delete mode 100644 typo3/sysext/workspaces/Classes/Compatibility/SlotReplacement.php

diff --git a/typo3/sysext/backend/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/backend/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 7deeb99956e5..000000000000
--- a/typo3/sysext/backend/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Backend\Compatibility;
-
-use TYPO3\CMS\Backend\Backend\Event\SystemInformationToolbarCollectorEvent;
-use TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem;
-use TYPO3\CMS\Backend\Controller\EditDocumentController;
-use TYPO3\CMS\Backend\Controller\Event\AfterFormEnginePageInitializedEvent;
-use TYPO3\CMS\Backend\Controller\Event\BeforeFormEnginePageInitializedEvent;
-use TYPO3\CMS\Backend\LoginProvider\Event\ModifyPageLayoutOnLoginProviderSelectionEvent;
-use TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Configuration\Event\ModifyLoadedPageTsConfigEvent;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-
-/**
- * This class provides a replacement for all existing signals in EXT:backend of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function onSystemInformationToolbarEvent(SystemInformationToolbarCollectorEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            SystemInformationToolbarItem::class,
-            'getSystemInformation',
-            [$event->getToolbarItem()]
-        );
-        $this->signalSlotDispatcher->dispatch(
-            SystemInformationToolbarItem::class,
-            'loadMessages',
-            [$event->getToolbarItem()]
-        );
-    }
-
-    public function onLoginProviderGetPageRenderer(ModifyPageLayoutOnLoginProviderSelectionEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            UsernamePasswordLoginProvider::class,
-            'getPageRenderer',
-            [$event->getPageRenderer()]
-        );
-    }
-
-    public function onPreInitEditDocumentController(BeforeFormEnginePageInitializedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            EditDocumentController::class,
-            'preInitAfter',
-            [$event->getController(), 'request' => $event->getRequest()]
-        );
-    }
-
-    public function onInitEditDocumentController(AfterFormEnginePageInitializedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            EditDocumentController::class,
-            'initAfter',
-            [$event->getController(), 'request' => $event->getRequest()]
-        );
-    }
-
-    public function emitGetPagesTSconfigPreIncludeSignalBackendUtility(ModifyLoadedPageTsConfigEvent $event): void
-    {
-        $rootLine = $event->getRootLine();
-        $page = end($rootLine);
-        $signalArguments = $this->signalSlotDispatcher->dispatch(
-            BackendUtility::class,
-            'getPagesTSconfigPreInclude',
-            [$event->getTsConfig(), (int)$page['uid'], $rootLine, false]
-        );
-        $event->setTsConfig($signalArguments[0]);
-    }
-}
diff --git a/typo3/sysext/backend/Configuration/Services.yaml b/typo3/sysext/backend/Configuration/Services.yaml
index 48dfef702aac..31473bb36ee0 100644
--- a/typo3/sysext/backend/Configuration/Services.yaml
+++ b/typo3/sysext/backend/Configuration/Services.yaml
@@ -51,30 +51,6 @@ services:
   TYPO3\CMS\Backend\Form\FormDataProvider\SiteDatabaseEditRow:
     public: true
 
-  # Listener for old Signal Slots
-  TYPO3\CMS\Backend\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onSystemInformationToolbarEvent'
-        event: TYPO3\CMS\Backend\Backend\Event\SystemInformationToolbarCollectorEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onLoginProviderGetPageRenderer'
-        event: TYPO3\CMS\Backend\LoginProvider\Event\ModifyPageLayoutOnLoginProviderSelectionEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitGetPagesTSconfigPreIncludeSignalBackendUtility'
-        event: TYPO3\CMS\Core\Configuration\Event\ModifyLoadedPageTsConfigEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onPreInitEditDocumentController'
-        event: TYPO3\CMS\Backend\Controller\Event\BeforeFormEnginePageInitializedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onInitEditDocumentController'
-        event: TYPO3\CMS\Backend\Controller\Event\AfterFormEnginePageInitializedEvent
-
   # Category security checks for backend users
   TYPO3\CMS\Backend\Security\CategoryPermissionsAspect:
     tags:
diff --git a/typo3/sysext/beuser/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/beuser/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index aa8468e75ed2..000000000000
--- a/typo3/sysext/beuser/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Beuser\Compatibility;
-
-use TYPO3\CMS\Backend\Authentication\Event\SwitchUserEvent;
-use TYPO3\CMS\Beuser\Controller\BackendUserController;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-
-/**
- * This class provides a replacement for all existing signals in EXT:beuser of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function onSwitchUser(SwitchUserEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            BackendUserController::class,
-            'switchUser',
-            [$event->getTargetUser()]
-        );
-    }
-}
diff --git a/typo3/sysext/beuser/Configuration/Services.yaml b/typo3/sysext/beuser/Configuration/Services.yaml
index 7e181563c246..2415fd433f1b 100644
--- a/typo3/sysext/beuser/Configuration/Services.yaml
+++ b/typo3/sysext/beuser/Configuration/Services.yaml
@@ -6,11 +6,3 @@ services:
 
   TYPO3\CMS\Beuser\:
     resource: '../Classes/*'
-
-  # Listener for old Signal Slots
-  TYPO3\CMS\Beuser\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onSwitchUser'
-        event: TYPO3\CMS\Backend\Authentication\Event\SwitchUserEvent
diff --git a/typo3/sysext/core/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/core/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 6f6590f3f891..000000000000
--- a/typo3/sysext/core/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,700 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Core\Compatibility;
-
-use Psr\EventDispatcher\EventDispatcherInterface;
-use TYPO3\CMS\Core\Configuration\Event\AfterTcaCompilationEvent;
-use TYPO3\CMS\Core\Database\Event\AlterTableDefinitionStatementsEvent;
-use TYPO3\CMS\Core\Database\ReferenceIndex;
-use TYPO3\CMS\Core\Database\Schema\Exception\UnexpectedSignalReturnValueTypeException;
-use TYPO3\CMS\Core\Database\Schema\SqlReader;
-use TYPO3\CMS\Core\Database\SoftReferenceIndex;
-use TYPO3\CMS\Core\DataHandling\Event\AppendLinkHandlerElementsEvent;
-use TYPO3\CMS\Core\DataHandling\Event\IsTableExcludedFromReferenceIndexEvent;
-use TYPO3\CMS\Core\Imaging\Event\ModifyIconForResourcePropertiesEvent;
-use TYPO3\CMS\Core\Imaging\IconFactory;
-use TYPO3\CMS\Core\Mail\Event\AfterMailerInitializationEvent;
-use TYPO3\CMS\Core\Mail\Mailer;
-use TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileAddedToIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileContentsSetEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMarkedAsMissingEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataUpdatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileRemovedFromIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileUpdatedInIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileContentsSetEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileReplacedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeResourceStorageInitializationEvent;
-use TYPO3\CMS\Core\Resource\Event\EnrichFileMetaDataEvent;
-use TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent;
-use TYPO3\CMS\Core\Resource\Event\SanitizeFileNameEvent;
-use TYPO3\CMS\Core\Resource\Index\FileIndexRepository;
-use TYPO3\CMS\Core\Resource\Index\MetaDataRepository;
-use TYPO3\CMS\Core\Resource\ResourceFactory;
-use TYPO3\CMS\Core\Resource\ResourceStorage;
-use TYPO3\CMS\Core\Resource\Service\FileProcessingService;
-use TYPO3\CMS\Core\Tree\Event\ModifyTreeDataEvent;
-use TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider;
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-
-/**
- * This class provides a replacement for all existing signals in TYPO3 Core, which now act as a simple wrapper
- * for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    /**
-     * @var EventDispatcherInterface
-     */
-    protected $eventDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher, EventDispatcherInterface $eventDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-        $this->eventDispatcher = $eventDispatcher;
-    }
-
-    public function onMetaDataRepositoryRecordPostRetrieval(EnrichFileMetaDataEvent $event): void
-    {
-        $data = $event->getRecord();
-        $data = new \ArrayObject($data);
-        $this->signalSlotDispatcher->dispatch(MetaDataRepository::class, 'recordPostRetrieval', [$data]);
-        $event->setRecord($data->getArrayCopy());
-    }
-
-    public function onMetaDataRepositoryRecordUpdated(AfterFileMetaDataUpdatedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(MetaDataRepository::class, 'recordUpdated', [$event->getRecord()]);
-    }
-
-    public function onMetaDataRepositoryRecordCreated(AfterFileMetaDataCreatedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(MetaDataRepository::class, 'recordCreated', [$event->getRecord()]);
-    }
-
-    public function onMetaDataRepositoryRecordDeleted(AfterFileMetaDataDeletedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(MetaDataRepository::class, 'recordDeleted', [$event->getFileUid()]);
-    }
-
-    public function onFileIndexRepositoryRecordUpdated(AfterFileUpdatedInIndexEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            FileIndexRepository::class,
-            'recordUpdated',
-            [$event->getRelevantProperties()]
-        );
-    }
-
-    public function onFileIndexRepositoryRecordCreated(AfterFileAddedToIndexEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(FileIndexRepository::class, 'recordCreated', [$event->getRecord()]);
-    }
-
-    public function onFileIndexRepositoryRecordMarkedAsMissing(AfterFileMarkedAsMissingEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            FileIndexRepository::class,
-            'recordMarkedAsMissing',
-            [$event->getFileUid()]
-        );
-    }
-
-    public function onFileIndexRepositoryRecordDeleted(AfterFileRemovedFromIndexEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(FileIndexRepository::class, 'recordDeleted', [$event->getFileUid()]);
-    }
-
-    public function onResourceFactoryPreProcessStorage(BeforeResourceStorageInitializationEvent $event): void
-    {
-        [, $uid, $recordData, $fileIdentifier] = $this->signalSlotDispatcher->dispatch(
-            ResourceFactory::class,
-            'preProcessStorage',
-            [GeneralUtility::makeInstance(ResourceFactory::class), $event->getStorageUid(), $event->getRecord(), $event->getFileIdentifier()]
-        );
-        $event->setStorageUid($uid);
-        $event->setRecord($recordData);
-        $event->setFileIdentifier($fileIdentifier);
-    }
-
-    public function onResourceFactoryPostProcessStorage(AfterResourceStorageInitializationEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceFactory::class,
-            'postProcessStorage',
-            [GeneralUtility::makeInstance(ResourceFactory::class), $event->getStorage()]
-        );
-    }
-
-    public function onFileProcessingServiceEmitPreFileProcessSignal(BeforeFileProcessingEvent $event): void
-    {
-        $service = GeneralUtility::makeInstance(
-            FileProcessingService::class,
-            $event->getFile()->getStorage(),
-            $event->getDriver(),
-            $this->eventDispatcher
-        );
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            FileProcessingService::SIGNAL_PreFileProcess,
-            [
-                $service,
-                $event->getDriver(),
-                $event->getProcessedFile(),
-                $event->getFile(),
-                $event->getTaskType(),
-                $event->getConfiguration()
-            ]
-        );
-    }
-
-    public function onFileProcessingServiceEmitPostFileProcessSignal(AfterFileProcessingEvent $event): void
-    {
-        $service = GeneralUtility::makeInstance(
-            FileProcessingService::class,
-            $event->getFile()->getStorage(),
-            $event->getDriver(),
-            $this->eventDispatcher
-        );
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            FileProcessingService::SIGNAL_PostFileProcess,
-            [
-                $service,
-                $event->getDriver(),
-                $event->getProcessedFile(),
-                $event->getFile(),
-                $event->getTaskType(),
-                $event->getConfiguration()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitSanitizeFileNameSignal(SanitizeFileNameEvent $event): void
-    {
-        [$fileName] = $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_SanitizeFileName,
-            [
-                $event->getFileName(),
-                $event->getTargetFolder(),
-                $event->getStorage(),
-                $event->getDriver()
-            ]
-        );
-        $event->setFileName($fileName);
-    }
-
-    public function onResourceStorageEmitPreFileAddSignal(BeforeFileAddedEvent $event): void
-    {
-        $targetFileName = $event->getFileName();
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileAdd,
-            [
-                &$targetFileName,
-                $event->getTargetFolder(),
-                $event->getSourceFilePath(),
-                $event->getStorage(),
-                $event->getDriver()
-            ]
-        );
-        $event->setFileName($targetFileName);
-    }
-
-    public function onResourceStorageEmitPostFileAddSignal(AfterFileAddedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileAdd,
-            [
-                $event->getFile(),
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileCopySignal(BeforeFileCopiedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileCopy,
-            [
-                $event->getFile(),
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileCopySignal(AfterFileCopiedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileCopy,
-            [
-                $event->getFile(),
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileMoveSignal(BeforeFileMovedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileMove,
-            [
-                $event->getFile(),
-                $event->getFolder(),
-                $event->getTargetFileName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileMoveSignal(AfterFileMovedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileMove,
-            [
-                $event->getFile(),
-                $event->getFolder(),
-                $event->getOriginalFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileRenameSignal(BeforeFileRenamedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileRename,
-            [
-                $event->getFile(),
-                $event->getTargetFileName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileRenameSignal(AfterFileRenamedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileRename,
-            [
-                $event->getFile(),
-                $event->getTargetFileName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileReplaceSignal(BeforeFileReplacedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileReplace,
-            [
-                $event->getFile(),
-                $event->getLocalFilePath()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileReplaceSignal(AfterFileReplacedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileReplace,
-            [
-                $event->getFile(),
-                $event->getLocalFilePath()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileCreateSignal(BeforeFileCreatedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileCreate,
-            [
-                $event->getFileName(),
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileCreateSignal(AfterFileCreatedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileCreate,
-            [
-                $event->getFileName(),
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileDeleteSignal(BeforeFileDeletedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileDelete,
-            [
-                $event->getFile()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileDeleteSignal(AfterFileDeletedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileDelete,
-            [
-                $event->getFile()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFileSetContentsSignal(BeforeFileContentsSetEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFileSetContents,
-            [
-                $event->getFile(),
-                $event->getContent()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFileSetContentsSignal(AfterFileContentsSetEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFileSetContents,
-            [
-                $event->getFile(),
-                $event->getContent()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFolderAddSignal(BeforeFolderAddedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFolderAdd,
-            [
-                $event->getParentFolder(),
-                $event->getFolderName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFolderAddSignal(AfterFolderAddedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFolderAdd,
-            [
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFolderCopySignal(BeforeFolderCopiedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFolderCopy,
-            [
-                $event->getFolder(),
-                $event->getTargetParentFolder(),
-                $event->getTargetFolderName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFolderCopySignal(AfterFolderCopiedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFolderCopy,
-            [
-                $event->getFolder(),
-                $event->getTargetParentFolder(),
-                $event->getTargetFolder()->getName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFolderMoveSignal(BeforeFolderMovedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFolderMove,
-            [
-                $event->getFolder(),
-                $event->getTargetParentFolder(),
-                $event->getTargetFolderName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFolderMoveSignal(AfterFolderMovedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFolderMove,
-            [
-                $event->getFolder(),
-                $event->getTargetParentFolder(),
-                $event->getTargetFolder()->getName(),
-                $event->getFolder()->getParentFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFolderRenameSignal(BeforeFolderRenamedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFolderRename,
-            [
-                $event->getFolder(),
-                $event->getTargetName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFolderRenameSignal(AfterFolderRenamedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFolderRename,
-            [
-                $event->getFolder(),
-                $event->getFolder()->getName()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreFolderDeleteSignal(BeforeFolderDeletedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreFolderDelete,
-            [
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPostFolderDeleteSignal(AfterFolderDeletedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PostFolderDelete,
-            [
-                $event->getFolder()
-            ]
-        );
-    }
-
-    public function onResourceStorageEmitPreGeneratePublicUrlSignal(GeneratePublicUrlForResourceEvent $event): void
-    {
-        $publicUrl = $event->getPublicUrl();
-        $urlData = ['publicUrl' => &$publicUrl];
-        $this->signalSlotDispatcher->dispatch(
-            ResourceStorage::class,
-            ResourceStorage::SIGNAL_PreGeneratePublicUrl,
-            [
-                $event->getStorage(),
-                $event->getDriver(),
-                $event->getResource(),
-                $event->isRelativeToCurrentScript(),
-                $urlData
-            ]
-        );
-        $event->setPublicUrl($urlData['publicUrl']);
-    }
-
-    /**
-     * ReferenceIndex and SoftReferenceIndex
-     */
-    public function onReferenceIndexShouldExcludeTableFromReferenceIndexSignal(
-        IsTableExcludedFromReferenceIndexEvent $event
-    ): void {
-        $excludeTable = $event->isTableExcluded();
-        $this->signalSlotDispatcher->dispatch(
-            ReferenceIndex::class,
-            'shouldExcludeTableFromReferenceIndex',
-            [
-                $event->getTable(),
-                &$excludeTable
-            ]
-        );
-        if ($excludeTable) {
-            $event->markAsExcluded();
-        }
-    }
-
-    public function onSoftReferenceIndexSetTypoLinkPartsElementSignal(AppendLinkHandlerElementsEvent $event): void
-    {
-        $linkHandlerFound = false;
-        $result = $this->signalSlotDispatcher->dispatch(
-            SoftReferenceIndex::class,
-            'setTypoLinkPartsElement',
-            [
-                $linkHandlerFound,
-                $event->getLinkParts(),
-                $event->getContent(),
-                $event->getElements(),
-                $event->getIdx(),
-                $event->getTokenId()
-            ]
-        );
-        if ($result[0]) {
-            $event->setLinkParts($result[1]);
-            $event->setContent($result[2]);
-            $event->addElements($result[3]);
-        }
-    }
-
-    /**
-     * Imaging-related
-     */
-    public function onIconFactoryEmitBuildIconForResourceSignal(ModifyIconForResourcePropertiesEvent $event): void
-    {
-        $result = $this->signalSlotDispatcher->dispatch(
-            IconFactory::class,
-            'buildIconForResourceSignal',
-            [
-                $event->getResource(),
-                $event->getSize(),
-                $event->getOptions(),
-                $event->getIconIdentifier(),
-                $event->getOverlayIdentifier()
-            ]
-        );
-        $event->setIconIdentifier($result[3]);
-        $event->setOverlayIdentifier($result[4]);
-    }
-
-    public function onExtensionManagementUtilityTcaIsBeingBuilt(AfterTcaCompilationEvent $event): void
-    {
-        [$tca] = $this->signalSlotDispatcher->dispatch(
-            ExtensionManagementUtility::class,
-            'tcaIsBeingBuilt',
-            [
-                $event->getTca()
-            ]
-        );
-        $event->setTca($tca);
-    }
-
-    public function onSqlReaderEmitTablesDefinitionIsBeingBuiltSignal(AlterTableDefinitionStatementsEvent $event): void
-    {
-        // Using the old class name from the install tool here to keep backwards compatibility.
-        $signalReturn = $this->signalSlotDispatcher->dispatch(
-            'TYPO3\\CMS\\Install\\Service\\SqlExpectedSchemaService',
-            'tablesDefinitionIsBeingBuilt',
-            [$event->getSqlData()]
-        );
-
-        // This is important to support old associated returns
-        $signalReturn = array_values($signalReturn);
-        $sqlString = $signalReturn[0];
-        if (!is_array($sqlString)) {
-            throw new UnexpectedSignalReturnValueTypeException(
-                sprintf(
-                    'The signal %s of class %s returned a value of type %s, but array was expected.',
-                    'tablesDefinitionIsBeingBuilt',
-                    SqlReader::class,
-                    gettype($sqlString)
-                ),
-                1382351456
-            );
-        }
-        $event->setSqlData($sqlString);
-    }
-
-    public function onDatabaseTreeDataProviderEmitPostProcessTreeDataSignal(ModifyTreeDataEvent $event): void
-    {
-        if ($event->getProvider() instanceof DatabaseTreeDataProvider) {
-            $this->signalSlotDispatcher->dispatch(
-                DatabaseTreeDataProvider::class,
-                'PostProcessTreeData',
-                [$event->getProvider(), $event->getTreeData()]
-            );
-        }
-    }
-
-    public function packagesMayHaveChanged(PackagesMayHaveChangedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch('PackageManagement', 'packagesMayHaveChanged');
-    }
-
-    public function postInitializeMailer(AfterMailerInitializationEvent $event): void
-    {
-        if ($event->getMailer() instanceof Mailer) {
-            $this->signalSlotDispatcher->dispatch(Mailer::class, 'postInitializeMailer', [$event->getMailer()]);
-        }
-    }
-}
diff --git a/typo3/sysext/core/Classes/Resource/ResourceFactory.php b/typo3/sysext/core/Classes/Resource/ResourceFactory.php
index 48d50878ba15..659e9bb89149 100644
--- a/typo3/sysext/core/Classes/Resource/ResourceFactory.php
+++ b/typo3/sysext/core/Classes/Resource/ResourceFactory.php
@@ -37,7 +37,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
 /**
  * Factory class for FAL objects
  */
-class ResourceFactory implements ResourceFactoryInterface, SingletonInterface
+class ResourceFactory implements SingletonInterface
 {
     /**
      * Gets a singleton instance of this class.
diff --git a/typo3/sysext/core/Classes/Resource/ResourceFactoryInterface.php b/typo3/sysext/core/Classes/Resource/ResourceFactoryInterface.php
deleted file mode 100644
index 2b947ab34d7d..000000000000
--- a/typo3/sysext/core/Classes/Resource/ResourceFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Core\Resource;
-
-/**
- * An interface containing constants for the resource factory
- *
- * @deprecated This interface will be removed in TYPO3 v11 as it bears no use anymore due to PSR-14 events.
- */
-interface ResourceFactoryInterface
-{
-    const SIGNAL_PreProcessStorage = 'preProcessStorage';
-    const SIGNAL_PostProcessStorage = 'postProcessStorage';
-}
diff --git a/typo3/sysext/core/Classes/Resource/ResourceStorageInterface.php b/typo3/sysext/core/Classes/Resource/ResourceStorageInterface.php
index 5da30a32d098..ec714e8c0b07 100644
--- a/typo3/sysext/core/Classes/Resource/ResourceStorageInterface.php
+++ b/typo3/sysext/core/Classes/Resource/ResourceStorageInterface.php
@@ -20,146 +20,6 @@ namespace TYPO3\CMS\Core\Resource;
  */
 interface ResourceStorageInterface
 {
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_SanitizeFileName = 'sanitizeFileName';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileAdd = 'preFileAdd';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileAdd = 'postFileAdd';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileCreate = 'preFileCreate';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileCreate = 'postFileCreate';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileCopy = 'preFileCopy';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileCopy = 'postFileCopy';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileMove = 'preFileMove';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileMove = 'postFileMove';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileDelete = 'preFileDelete';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileDelete = 'postFileDelete';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileRename = 'preFileRename';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileRename = 'postFileRename';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileReplace = 'preFileReplace';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileReplace = 'postFileReplace';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileSetContents = 'preFileSetContents';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileSetContents = 'postFileSetContents';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFolderAdd = 'preFolderAdd';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFolderAdd = 'postFolderAdd';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFolderCopy = 'preFolderCopy';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFolderCopy = 'postFolderCopy';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFolderMove = 'preFolderMove';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFolderMove = 'postFolderMove';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFolderDelete = 'preFolderDelete';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFolderDelete = 'postFolderDelete';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFolderRename = 'preFolderRename';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFolderRename = 'postFolderRename';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreGeneratePublicUrl = 'preGeneratePublicUrl';
-
     /**
      * Capability for being browsable by (backend) users
      */
diff --git a/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php b/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
index 36efbef16fae..e67ea940a306 100644
--- a/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
+++ b/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
@@ -51,16 +51,6 @@ class FileProcessingService
      */
     protected $eventDispatcher;
 
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PreFileProcess = 'preFileProcess';
-
-    /**
-     * @deprecated since TYPO3 v10.2, will be removed in TYPO3 v11. Use the PSR-14 event instead.
-     */
-    const SIGNAL_PostFileProcess = 'postFileProcess';
-
     /**
      * Creates this object.
      *
diff --git a/typo3/sysext/core/Configuration/Services.yaml b/typo3/sysext/core/Configuration/Services.yaml
index 4e3000f43087..c6d3a3d083d2 100644
--- a/typo3/sysext/core/Configuration/Services.yaml
+++ b/typo3/sysext/core/Configuration/Services.yaml
@@ -93,202 +93,6 @@ services:
     shared: false
     public: true
 
-  # EventListeners
-  TYPO3\CMS\Core\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileIndexRepositoryRecordCreated'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedToIndexEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileIndexRepositoryRecordDeleted'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileRemovedFromIndexEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileIndexRepositoryRecordMarkedAsMissing'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileMarkedAsMissingEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileIndexRepositoryRecordUpdated'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileUpdatedInIndexEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileProcessingServiceEmitPostFileProcessSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onFileProcessingServiceEmitPreFileProcessSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onMetaDataRepositoryRecordCreated'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataCreatedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onMetaDataRepositoryRecordDeleted'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataDeletedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onMetaDataRepositoryRecordPostRetrieval'
-        event: TYPO3\CMS\Core\Resource\Event\EnrichFileMetaDataEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onMetaDataRepositoryRecordUpdated'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataUpdatedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceFactoryPostProcessStorage'
-        event: TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceFactoryPreProcessStorage'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeResourceStorageInitializationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileAddSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileCopySignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileCreateSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileDeleteSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileMoveSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileRenameSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileReplaceSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFileSetContentsSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFileContentsSetEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFolderAddSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFolderCopySignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFolderCopiedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFolderDeleteSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFolderMoveSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPostFolderRenameSignal'
-        event: TYPO3\CMS\Core\Resource\Event\AfterFolderRenamedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileAddSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileAddedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileCopySignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileCopiedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileCreateSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileCreatedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileDeleteSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileMoveSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileMovedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileRenameSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileRenamedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileReplaceSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileReplacedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFileSetContentsSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFileContentsSetEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFolderAddSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderAddedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFolderCopySignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderCopiedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFolderDeleteSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFolderMoveSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreFolderRenameSignal'
-        event: TYPO3\CMS\Core\Resource\Event\BeforeFolderRenamedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitPreGeneratePublicUrlSignal'
-        event: TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onResourceStorageEmitSanitizeFileNameSignal'
-        event: TYPO3\CMS\Core\Resource\Event\SanitizeFileNameEvent
-      - name: event.listener,
-        identifier: 'legacy-slot'
-        method: 'onReferenceIndexShouldExcludeTableFromReferenceIndexSignal'
-        event: TYPO3\CMS\Core\DataHandling\Event\IsTableExcludedFromReferenceIndexEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onSoftReferenceIndexSetTypoLinkPartsElementSignal'
-        event: TYPO3\CMS\Core\DataHandling\Event\AppendLinkHandlerElementsEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onIconFactoryEmitBuildIconForResourceSignal'
-        event: TYPO3\CMS\Core\Imaging\Event\ModifyIconForResourcePropertiesEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onExtensionManagementUtilityTcaIsBeingBuilt'
-        event: TYPO3\CMS\Core\Configuration\Event\AfterTcaCompilationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onSqlReaderEmitTablesDefinitionIsBeingBuiltSignal'
-        event: TYPO3\CMS\Core\Database\Event\AlterTableDefinitionStatementsEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onDatabaseTreeDataProviderEmitPostProcessTreeDataSignal'
-        event: TYPO3\CMS\Core\Tree\Event\ModifyTreeDataEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'packagesMayHaveChanged'
-        event: TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'postInitializeMailer'
-        event: TYPO3\CMS\Core\Mail\Event\AfterMailerInitializationEvent
-
   # FAL security checks for backend users
   TYPO3\CMS\Core\Resource\Security\StoragePermissionsAspect:
     tags:
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-91473-DeprecatedFunctionalityRemoved.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-91473-DeprecatedFunctionalityRemoved.rst
new file mode 100644
index 000000000000..8e8cced33dff
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Breaking-91473-DeprecatedFunctionalityRemoved.rst
@@ -0,0 +1,192 @@
+.. include:: ../../Includes.txt
+
+===================================================
+Breaking: #91473 - Deprecated functionality removed
+===================================================
+
+See :issue:`91473`
+
+Description
+===========
+
+The following PHP classes that have been previously deprecated for v10 have been removed:
+
+The following PHP interfaces that have been previously deprecated for v10 have been removed:
+
+- :php:`\TYPO3\CMS\Core\Resource\ResourceFactoryInterface`
+
+The following PHP class aliases that have been previously deprecated for v10 have been removed:
+
+The following PHP class methods that have been previously deprecated for v10 have been removed:
+
+- :php:`\TYPO3\CMS\Extbase\Mvc\Controller\ActionController->emitBeforeCallActionMethodSignal`
+
+The following PHP static class methods that have been previously deprecated for v10 have been removed:
+
+The following PHP methods have been additionally deprecated and are a no-op now:
+
+The following methods changed signature according to previous deprecations in v10 at the end of the argument list:
+
+The following public class properties have been dropped:
+
+The following class methods have changed visibility:
+
+The following class properties have changed visibility:
+
+The following VieHelpers have changed:
+
+The following scheduler tasks have been removed:
+
+The following user TSconfig options have been dropped:
+
+The following TypoScript options have been dropped:
+
+The following constants have been dropped:
+
+The following class constants have been dropped:
+
+- :php:`\TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider::SIGNAL_PostProcessTreeData`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreProcessStorage`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostProcessStorage`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileCreate`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileReplace`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileSetContents`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileCreate`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileReplace`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileSetContents`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreGeneratePublicUrl`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_SanitizeFileName`
+- :php:`\TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PreFileProcess`
+- :php:`\TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PostFileProcess`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_BeforeCaching`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_PostProcesss`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GetDataArray_PostProcesss`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_SortDataArray_PostProcesss`
+
+The following class constants have been set to protected:
+
+The following global options are ignored:
+
+The following language files and aliases have been removed:
+
+The following global variables have been removed:
+
+The following hooks have been removed:
+
+The following hooks don't pass the class reference anymore:
+
+The following signals have been removed:
+
+- :php:`PackageManagement::packagesMayHaveChanged`
+- :php:`\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::getSystemInformation`
+- :php:`\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::loadMessages`
+- :php:`\TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider::getPageRenderer`
+- :php:`\TYPO3\CMS\Backend\Controller\EditDocumentController::preInitAfter`
+- :php:`\TYPO3\CMS\Backend\Controller\EditDocumentController::initAfter`
+- :php:`\TYPO3\CMS\Backend\Utility\BackendUtility::getPagesTSconfigPreInclude`
+- :php:`\TYPO3\CMS\Beuser\Controller\BackendUserController::switchUser`
+- :php:`\TYPO3\CMS\Core\Database\SoftReferenceIndex::setTypoLinkPartsElement`
+- :php:`\TYPO3\CMS\Core\Database\ReferenceIndex::shouldExcludeTableFromReferenceIndex`
+- :php:`\TYPO3\CMS\Core\Imaging\IconFactory::buildIconForResourceSignal`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreProcessStorage`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostProcessStorage`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileCreate`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileReplace`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileSetContents`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFolderRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileCreate`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileReplace`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFileSetContents`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderAdd`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderCopy`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderDelete`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderMove`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreFolderRename`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PreGeneratePublicUrl`
+- :php:`\TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_SanitizeFileName`
+- :php:`\TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PreFileProcess`
+- :php:`\TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PostFileProcess`
+- :php:`\TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider::PostProcessTreeData`
+- :php:`\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::tcaIsBeingBuilt`
+- :php:`\TYPO3\CMS\Extbase\Mvc\Dispatcher::afterRequestDispatch`
+- :php:`\TYPO3\CMS\Extbase\Mvc\Controller\ActionController::beforeCallActionMethod`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::afterMappingSingleRow`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::beforeGettingObjectData`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::afterGettingObjectData`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::endInsertObject`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::afterUpdateObject`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::afterPersistObject`
+- :php:`\TYPO3\CMS\Extbase\Persistence\Generic\Backend::afterRemoveObject`
+- :php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::afterExtensionInstall`
+- :php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::afterExtensionUninstall`
+- :php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::afterExtensionT3DImport`
+- :php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::afterExtensionStaticSqlImport`
+- :php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::afterExtensionFileImport`
+- :php:`\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::willInstallExtensions`
+- :php:`\TYPO3\CMS\Extensionmanager\ViewHelper\ProcessAvailableActionsViewHelper::processActions`
+- :php:`\TYPO3\CMS\Install\Service\SqlExpectedSchemaService::tablesDefinitionIsBeingBuilt`
+- :php:`\TYPO3\CMS\Impexp\Utility\ImportExportUtility::afterImportExportInitialisation`
+- :php:`\TYPO3\CMS\Lang\Service\TranslationService::postProcessMirrorUrl`
+- :php:`\TYPO3\CMS\Linkvalidator\LinkAnalyzer::beforeAnalyzeRecord`
+- :php:`\TYPO3\CMS\Seo\Canonical\CanonicalGenerator::beforeGeneratingCanonical`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_BeforeCaching`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_PostProcesss`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GetDataArray_PostProcesss`
+- :php:`\TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_SortDataArray_PostProcesss`
+
+The following features are now always enabled:
+
+The following features have been removed:
+
+The following database tables have been removed:
+
+The following database fields have been removed:
+
+The following php doc annotations have been removed:
+
+The following global JavaScript functions have been removed:
+
+The following JavaScript modules have been removed:
+
+The following global instances have been removed:
+
+Impact
+======
+
+Instantiating or requiring the PHP classes or calling the PHP methods directly will trigger PHP :php:`E_ERROR` errors.
+
+.. index:: Backend, CLI, FlexForm, Fluid, Frontend, JavaScript, LocalConfiguration, PHP-API, TCA, TSConfig, TypoScript, PartiallyScanned
diff --git a/typo3/sysext/extbase/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/extbase/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index f3da2ddefc88..000000000000
--- a/typo3/sysext/extbase/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Extbase\Compatibility;
-
-use TYPO3\CMS\Extbase\Event\Mvc\AfterRequestDispatchedEvent;
-use TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\AfterObjectThawedEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityAddedToPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityFinalizedAfterPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityPersistedEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityRemovedFromPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityUpdatedInPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\ModifyQueryBeforeFetchingObjectDataEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\ModifyResultAfterFetchingObjectDataEvent;
-use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
-use TYPO3\CMS\Extbase\Mvc\Dispatcher;
-use TYPO3\CMS\Extbase\Persistence\Generic\Backend;
-use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-
-/**
- * This class provides a replacement for all existing signals in EXT:extbase of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function afterRequestDispatched(AfterRequestDispatchedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Dispatcher::class,
-            'afterRequestDispatch',
-            [$event->getRequest(), $event->getResponse()]
-        );
-    }
-
-    public function beforeCallActionMethod(BeforeActionCallEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ActionController::class,
-            'beforeCallActionMethod',
-            [
-                $event->getControllerClassName(),
-                $event->getActionMethodName(),
-                $event->getPreparedArguments()
-            ]
-        );
-    }
-
-    public function afterDataMappedForObject(AfterObjectThawedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            DataMapper::class,
-            'afterMappingSingleRow',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-
-    public function emitBeforeGettingObjectDataSignal(ModifyQueryBeforeFetchingObjectDataEvent $event): void
-    {
-        $signalArguments = $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'beforeGettingObjectData',
-            [
-                $event->getQuery()
-            ]
-        );
-        $event->setQuery($signalArguments[0]);
-    }
-
-    public function emitAfterGettingObjectDataSignal(ModifyResultAfterFetchingObjectDataEvent $event): void
-    {
-        $signalArguments = $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'afterGettingObjectData',
-            [$event->getQuery(), $event->getResult()]
-        );
-        $event->setResult($signalArguments[1]);
-    }
-
-    public function emitEndInsertObjectSignal(EntityFinalizedAfterPersistenceEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'endInsertObject',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-
-    public function emitAfterInsertObjectSignal(EntityAddedToPersistenceEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'afterInsertObject',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-
-    public function emitAfterUpdateObjectSignal(EntityUpdatedInPersistenceEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'afterUpdateObject',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-
-    public function emitAfterPersistObjectSignal(EntityPersistedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'afterPersistObject',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-
-    public function emitAfterRemoveObjectSignal(EntityRemovedFromPersistenceEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            Backend::class,
-            'afterRemoveObject',
-            [
-                $event->getObject()
-            ]
-        );
-    }
-}
diff --git a/typo3/sysext/extbase/Classes/Middleware/SignalSlotDeprecator.php b/typo3/sysext/extbase/Classes/Middleware/SignalSlotDeprecator.php
deleted file mode 100644
index 3937322fe641..000000000000
--- a/typo3/sysext/extbase/Classes/Middleware/SignalSlotDeprecator.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Extbase\Middleware;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Server\MiddlewareInterface;
-use Psr\Http\Server\RequestHandlerInterface;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
-
-/**
- * @internal
- */
-class SignalSlotDeprecator implements MiddlewareInterface
-{
-    /**
-     * @var Dispatcher
-     */
-    protected $dispatcher;
-
-    public function __construct(Dispatcher $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * @param ServerRequestInterface $request
-     * @param RequestHandlerInterface $handler
-     * @return ResponseInterface
-     */
-    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
-    {
-        $this->dispatcher->reportDeprecatedSignalSlots();
-        return $handler->handle($request);
-    }
-}
diff --git a/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php b/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php
index edac0499f212..42718766e648 100644
--- a/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php
+++ b/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php
@@ -381,20 +381,6 @@ class ActionController implements ControllerInterface
         }
     }
 
-    /**
-     * Emits a signal before the current action is called
-     *
-     * @param array $preparedArguments
-     */
-    protected function emitBeforeCallActionMethodSignal(array $preparedArguments)
-    {
-        trigger_error(
-            __METHOD__ . ' is deprecated and will be removed in version 11.0 - use PSR-14 events instead.',
-            E_USER_DEPRECATED
-        );
-        $this->signalSlotDispatcher->dispatch(__CLASS__, 'beforeCallActionMethod', [static::class, $this->actionMethodName, $preparedArguments]);
-    }
-
     /**
      * Prepares a view for the current action.
      * By default, this method tries to locate a view with a name matching the current action.
diff --git a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
index 4cb8c8fd8fa5..2c74fb000d07 100644
--- a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
+++ b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
@@ -18,102 +18,10 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Extbase\SignalSlot;
 
 use Psr\Log\LoggerInterface;
-use TYPO3\CMS\Backend\Authentication\Event\SwitchUserEvent;
-use TYPO3\CMS\Backend\Backend\Event\SystemInformationToolbarCollectorEvent;
-use TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem;
-use TYPO3\CMS\Backend\Controller\EditDocumentController;
-use TYPO3\CMS\Backend\Controller\Event\AfterFormEnginePageInitializedEvent;
-use TYPO3\CMS\Backend\Controller\Event\BeforeFormEnginePageInitializedEvent;
-use TYPO3\CMS\Backend\LoginProvider\Event\ModifyPageLayoutOnLoginProviderSelectionEvent;
-use TYPO3\CMS\Backend\LoginProvider\UsernamePasswordLoginProvider;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Configuration\Event\AfterTcaCompilationEvent;
-use TYPO3\CMS\Core\Configuration\Event\ModifyLoadedPageTsConfigEvent;
-use TYPO3\CMS\Core\Database\Event\AlterTableDefinitionStatementsEvent;
-use TYPO3\CMS\Core\Database\ReferenceIndex;
-use TYPO3\CMS\Core\Database\SoftReferenceIndex;
-use TYPO3\CMS\Core\DataHandling\Event\AppendLinkHandlerElementsEvent;
-use TYPO3\CMS\Core\DataHandling\Event\IsTableExcludedFromReferenceIndexEvent;
-use TYPO3\CMS\Core\Imaging\Event\ModifyIconForResourcePropertiesEvent;
-use TYPO3\CMS\Core\Imaging\IconFactory;
-use TYPO3\CMS\Core\Package\Event\AfterPackageActivationEvent;
-use TYPO3\CMS\Core\Package\Event\AfterPackageDeactivationEvent;
-use TYPO3\CMS\Core\Package\Event\BeforePackageActivationEvent;
-use TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileAddedToIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileContentsSetEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMarkedAsMissingEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMetaDataUpdatedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileRemovedFromIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileReplacedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFileUpdatedInIndexEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterFolderRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\AfterResourceStorageInitializationEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileContentsSetEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileCreatedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFileReplacedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderAddedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderCopiedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderDeletedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderMovedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeFolderRenamedEvent;
-use TYPO3\CMS\Core\Resource\Event\BeforeResourceStorageInitializationEvent;
-use TYPO3\CMS\Core\Resource\Event\EnrichFileMetaDataEvent;
-use TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent;
-use TYPO3\CMS\Core\Resource\Event\SanitizeFileNameEvent;
-use TYPO3\CMS\Core\Resource\Index\FileIndexRepository;
-use TYPO3\CMS\Core\Resource\Index\MetaDataRepository;
-use TYPO3\CMS\Core\Resource\ResourceFactory;
-use TYPO3\CMS\Core\Resource\ResourceFactoryInterface;
-use TYPO3\CMS\Core\Resource\ResourceStorage;
-use TYPO3\CMS\Core\Resource\ResourceStorageInterface;
-use TYPO3\CMS\Core\Resource\Service\FileProcessingService;
 use TYPO3\CMS\Core\SingletonInterface;
-use TYPO3\CMS\Core\Tree\Event\ModifyTreeDataEvent;
-use TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider;
-use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
-use TYPO3\CMS\Extbase\Event\Mvc\AfterRequestDispatchedEvent;
-use TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\AfterObjectThawedEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityAddedToPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityFinalizedAfterPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityPersistedEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityRemovedFromPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\EntityUpdatedInPersistenceEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\ModifyQueryBeforeFetchingObjectDataEvent;
-use TYPO3\CMS\Extbase\Event\Persistence\ModifyResultAfterFetchingObjectDataEvent;
-use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
-use TYPO3\CMS\Extbase\Persistence\Generic\Backend;
-use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper;
 use TYPO3\CMS\Extbase\SignalSlot\Exception\InvalidSlotException;
 use TYPO3\CMS\Extbase\SignalSlot\Exception\InvalidSlotReturnException;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionDatabaseContentHasBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionFilesHaveBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionStaticDatabaseContentHasBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AvailableActionsForExtensionEvent;
-use TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService;
-use TYPO3\CMS\Extensionmanager\Utility\InstallUtility;
-use TYPO3\CMS\Extensionmanager\ViewHelpers\ProcessAvailableActionsViewHelper;
 
 /**
  * A dispatcher which dispatches signals by calling its registered slot methods
@@ -143,152 +51,6 @@ class Dispatcher implements SingletonInterface
      */
     protected $logger;
 
-    /**
-     * @var string[][]
-     */
-    protected $deprecatedSlots = [
-        FileIndexRepository::class => [
-            'recordUpdated' => AfterFileUpdatedInIndexEvent::class,
-            'recordCreated' => AfterFileAddedToIndexEvent::class,
-            'recordDeleted' => AfterFileRemovedFromIndexEvent::class,
-            'recordMarkedAsMissing' => AfterFileMarkedAsMissingEvent::class
-        ],
-        MetaDataRepository::class => [
-            'recordPostRetrieval' => EnrichFileMetaDataEvent::class,
-            'recordUpdated' => AfterFileMetaDataUpdatedEvent::class,
-            'recordCreated' => AfterFileMetaDataCreatedEvent::class,
-            'recordDeleted' => AfterFileMetaDataDeletedEvent::class
-        ],
-        ResourceFactory::class => [
-            ResourceFactoryInterface::SIGNAL_PreProcessStorage => BeforeResourceStorageInitializationEvent::class,
-            ResourceFactoryInterface::SIGNAL_PostProcessStorage => AfterResourceStorageInitializationEvent::class,
-        ],
-        ResourceStorage::class => [
-            ResourceStorageInterface::SIGNAL_SanitizeFileName => SanitizeFileNameEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileAdd => BeforeFileAddedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileAdd => AfterFileAddedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileCopy => BeforeFileCopiedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileCopy => AfterFileCopiedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileMove => BeforeFileMovedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileMove => AfterFileMovedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileRename => BeforeFileRenamedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileRename => AfterFileRenamedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileReplace => BeforeFileReplacedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileReplace => AfterFileReplacedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileCreate => BeforeFileCreatedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileCreate => AfterFileCreatedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileDelete => BeforeFileDeletedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileDelete => AfterFileDeletedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFileSetContents => BeforeFileContentsSetEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFileSetContents => AfterFileContentsSetEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFolderAdd => BeforeFolderAddedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFolderAdd => AfterFolderAddedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFolderCopy => BeforeFolderCopiedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFolderCopy => AfterFolderCopiedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFolderMove => BeforeFolderMovedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFolderMove => AfterFolderMovedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFolderRename => BeforeFolderRenamedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFolderRename => AfterFolderRenamedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreFolderDelete => BeforeFolderDeletedEvent::class,
-            ResourceStorageInterface::SIGNAL_PostFolderDelete => AfterFolderDeletedEvent::class,
-            ResourceStorageInterface::SIGNAL_PreGeneratePublicUrl => GeneratePublicUrlForResourceEvent::class,
-        ],
-        FileProcessingService::class => [
-            FileProcessingService::SIGNAL_PreFileProcess => BeforeFileProcessingEvent::class,
-            FileProcessingService::SIGNAL_PostFileProcess => AfterFileProcessingEvent::class,
-        ],
-        IconFactory::class => [
-            'buildIconForResourceSignal' => ModifyIconForResourcePropertiesEvent::class,
-        ],
-        SoftReferenceIndex::class => [
-            'setTypoLinkPartsElement' => AppendLinkHandlerElementsEvent::class,
-        ],
-        ReferenceIndex::class => [
-            'shouldExcludeTableFromReferenceIndex' => IsTableExcludedFromReferenceIndexEvent::class,
-        ],
-        ExtensionManagementUtility::class => [
-            'tcaIsBeingBuilt' => AfterTcaCompilationEvent::class,
-        ],
-        'TYPO3\\CMS\\Install\\Service\\SqlExpectedSchemaService' => [
-            'tablesDefinitionIsBeingBuilt' => AlterTableDefinitionStatementsEvent::class,
-        ],
-        DatabaseTreeDataProvider::class => [
-            'PostProcessTreeData' => ModifyTreeDataEvent::class,
-        ],
-        BackendUtility::class => [
-            'getPagesTSconfigPreInclude' => ModifyLoadedPageTsConfigEvent::class
-        ],
-        EditDocumentController::class => [
-            'preInitAfter' => BeforeFormEnginePageInitializedEvent::class,
-            'initAfter' => AfterFormEnginePageInitializedEvent::class,
-        ],
-        SystemInformationToolbarItem::class => [
-            'getSystemInformation' => SystemInformationToolbarCollectorEvent::class,
-            'loadMessages' => SystemInformationToolbarCollectorEvent::class
-        ],
-        UsernamePasswordLoginProvider::class => [
-            'getPageRenderer' => ModifyPageLayoutOnLoginProviderSelectionEvent::class
-        ],
-        \TYPO3\CMS\Extbase\Mvc\Dispatcher::class => [
-          'afterRequestDispatch' => AfterRequestDispatchedEvent::class
-        ],
-        ActionController::class => [
-            'beforeCallActionMethod' => BeforeActionCallEvent::class
-        ],
-        DataMapper::class => [
-            'afterMappingSingleRow' => AfterObjectThawedEvent::class
-        ],
-        Backend::class => [
-            'beforeGettingObjectData' => ModifyQueryBeforeFetchingObjectDataEvent::class,
-            'afterGettingObjectData' => ModifyResultAfterFetchingObjectDataEvent::class,
-            'endInsertObject' => EntityFinalizedAfterPersistenceEvent::class,
-            'afterInsertObject' => EntityAddedToPersistenceEvent::class,
-            'afterUpdateObject' => EntityUpdatedInPersistenceEvent::class,
-            'afterPersistObject' => EntityPersistedEvent::class,
-            'afterRemoveObject' => EntityRemovedFromPersistenceEvent::class
-        ],
-        // Strings are used here on purpose for all non-required system extensions. Do not change to
-        // Fqn::class *unless* you also declare each and every extension whose classes are listed
-        // here as explicit and mandatory dependencies of EXT:extbase.
-        'TYPO3\\CMS\\Beuser\\Controller\\BackendUserController' => [
-            'switchUser' => SwitchUserEvent::class
-        ],
-        'TYPO3\\CMS\\Lang\\Service\\TranslationService' => [
-            'postProcessMirrorUrl' => 'TYPO3\\CMS\\Install\\Service\\Event\\ModifyLanguagePackRemoteBaseUrlEvent'
-        ],
-        'TYPO3\\CMS\\Linkvalidator\\LinkAnalyzer' => [
-            'beforeAnalyzeRecord' => 'TYPO3\\CMS\\Linkvalidator\\Event\\BeforeRecordIsAnalyzedEvent'
-        ],
-        'TYPO3\\CMS\\Impexp\\Utility\\ImportExportUtility' => [
-            'afterImportExportInitialisation' => 'TYPO3\\CMS\\Impexp\\Event\\BeforeImportEvent'
-        ],
-        'TYPO3\\CMS\\Seo\\Canonical\\CanonicalGenerator' => [
-            'beforeGeneratingCanonical' => 'TYPO3\\CMS\\Seo\\Event\\ModifyUrlForCanonicalTagEvent'
-        ],
-        'TYPO3\\CMS\\Workspaces\\Service\\GridDataService' => [
-            'generateDataArray.beforeCaching' => 'TYPO3\\CMS\\Workspaces\\Event\\AfterCompiledCacheableDataForWorkspaceEvent',
-            'generateDataArray.postProcess' => 'TYPO3\\CMS\\Workspaces\\Event\\AfterDataGeneratedForWorkspaceEvent',
-            'getDataArray.postProcess' => 'TYPO3\\CMS\\Workspaces\\Event\\GetVersionedDataEvent',
-            'sortDataArray.postProcess' => 'TYPO3\\CMS\\Workspaces\\Event\\SortVersionedDataEvent',
-        ],
-        'PackageManagement' => [
-            'packagesMayHaveChanged' => PackagesMayHaveChangedEvent::class,
-        ],
-        InstallUtility::class => [
-            'afterExtensionInstall' => AfterPackageActivationEvent::class,
-            'afterExtensionUninstall' => AfterPackageDeactivationEvent::class,
-            'afterExtensionT3DImport' => AfterExtensionDatabaseContentHasBeenImportedEvent::class,
-            'afterExtensionStaticSqlImport' => AfterExtensionStaticDatabaseContentHasBeenImportedEvent::class,
-            'afterExtensionFileImport' => AfterExtensionFilesHaveBeenImportedEvent::class,
-        ],
-        ExtensionManagementService::class => [
-            'willInstallExtensions' => BeforePackageActivationEvent::class
-        ],
-        ProcessAvailableActionsViewHelper::class => [
-            'processActions' => AvailableActionsForExtensionEvent::class
-        ]
-    ];
-
     /**
      * @param ObjectManagerInterface $objectManager
      * @param LoggerInterface $logger
@@ -408,32 +170,4 @@ class Dispatcher implements SingletonInterface
     {
         return $this->slots[$signalClassName][$signalName] ?? [];
     }
-
-    /**
-     * This method is called by TYPO3\CMS\Extbase\Middleware\SignalSlotDeprecator to collect and report
-     * the deprecated slots only once per request.
-     *
-     * @internal
-     */
-    public function reportDeprecatedSignalSlots(): void
-    {
-        $messages = [];
-        foreach ($this->slots as $signalClassName => $signals) {
-            if (isset($this->deprecatedSlots[$signalClassName])) {
-                foreach (array_keys($signals) as $signalName) {
-                    $eventClass = $this->deprecatedSlots[$signalClassName][$signalName] ?? null;
-                    if ($eventClass !== null) {
-                        $messages[] = 'The signal "' . $signalName . '" in "' . $signalClassName . '" is deprecated and will stop working in TYPO3 11.0. Use the PSR-14 event: "' . $eventClass . '"';
-                    }
-                }
-            }
-        }
-        if (count($messages)) {
-            trigger_error(
-                'The following deprecated signals are connected:' . LF .
-                implode(LF, $messages),
-                E_USER_DEPRECATED
-            );
-        }
-    }
 }
diff --git a/typo3/sysext/extbase/Configuration/RequestMiddlewares.php b/typo3/sysext/extbase/Configuration/RequestMiddlewares.php
deleted file mode 100644
index 3cd80296162b..000000000000
--- a/typo3/sysext/extbase/Configuration/RequestMiddlewares.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-return [
-    'backend' => [
-        'typo3/cms-extbase/signal-slot-deprecator' => [
-            'target' => \TYPO3\CMS\Extbase\Middleware\SignalSlotDeprecator::class,
-            'after' => [
-                'typo3/cms-core/normalized-params-attribute'
-            ],
-        ],
-    ]
-];
diff --git a/typo3/sysext/extbase/Configuration/Services.yaml b/typo3/sysext/extbase/Configuration/Services.yaml
index 2e592c50e129..09e460e77e4e 100644
--- a/typo3/sysext/extbase/Configuration/Services.yaml
+++ b/typo3/sysext/extbase/Configuration/Services.yaml
@@ -45,49 +45,5 @@ services:
     factory: ['@TYPO3\CMS\Core\Cache\CacheManager', 'getCache']
     arguments: ['extbase']
 
-  # Listener for old Signal Slots
-  TYPO3\CMS\Extbase\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'afterRequestDispatched'
-        event: TYPO3\CMS\Extbase\Event\Mvc\AfterRequestDispatchedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'beforeCallActionMethod'
-        event: TYPO3\CMS\Extbase\Event\Mvc\BeforeActionCallEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'afterDataMappedForObject'
-        event: TYPO3\CMS\Extbase\Event\Persistence\AfterObjectThawedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitBeforeGettingObjectDataSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\ModifyQueryBeforeFetchingObjectDataEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterGettingObjectDataSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\ModifyResultAfterFetchingObjectDataEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitEndInsertObjectSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\EntityFinalizedAfterPersistenceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterInsertObjectSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\EntityAddedToPersistenceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterUpdateObjectSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\EntityUpdatedInPersistenceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterRemoveObjectSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\EntityRemovedFromPersistenceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterPersistObjectSignal'
-        event: TYPO3\CMS\Extbase\Event\Persistence\EntityPersistedEvent
-
   TYPO3\CMS\Extbase\Mvc\View\GenericViewResolver: ~
   TYPO3\CMS\Extbase\Mvc\View\ViewResolverInterface: '@TYPO3\CMS\Extbase\Mvc\View\GenericViewResolver'
diff --git a/typo3/sysext/extensionmanager/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/extensionmanager/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 51468bd612fd..000000000000
--- a/typo3/sysext/extensionmanager/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Extensionmanager\Compatibility;
-
-use TYPO3\CMS\Core\Package\Event\AfterPackageActivationEvent;
-use TYPO3\CMS\Core\Package\Event\AfterPackageDeactivationEvent;
-use TYPO3\CMS\Core\Package\Event\BeforePackageActivationEvent;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionDatabaseContentHasBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionFilesHaveBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AfterExtensionStaticDatabaseContentHasBeenImportedEvent;
-use TYPO3\CMS\Extensionmanager\Event\AvailableActionsForExtensionEvent;
-use TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService;
-use TYPO3\CMS\Extensionmanager\Utility\InstallUtility;
-use TYPO3\CMS\Extensionmanager\ViewHelpers\ProcessAvailableActionsViewHelper;
-
-/**
- * This class provides a replacement for all existing signals in EXT:extensionmanager of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function afterExtensionInstallSlot(AfterPackageActivationEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            InstallUtility::class,
-            'afterExtensionInstall',
-            [
-                $event->getPackageKey(),
-                $event->getEmitter()
-            ]
-        );
-    }
-
-    public function afterExtensionUninstallSlot(AfterPackageDeactivationEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            InstallUtility::class,
-            'afterExtensionUninstall',
-            [
-                $event->getPackageKey(),
-                $event->getEmitter()
-            ]
-        );
-    }
-
-    public function emitAfterExtensionT3DImportSignal(AfterExtensionDatabaseContentHasBeenImportedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            InstallUtility::class,
-            'afterExtensionT3DImport',
-            [
-                $event->getImportFileName(),
-                $event->getImportResult(),
-                $event->getEmitter()
-            ]
-        );
-    }
-
-    public function emitAfterExtensionStaticSqlImportSignal(AfterExtensionStaticDatabaseContentHasBeenImportedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            InstallUtility::class,
-            'afterExtensionStaticSqlImport',
-            [
-                $event->getSqlFileName(),
-                $event->getEmitter()
-            ]
-        );
-    }
-
-    public function emitAfterExtensionFileImportSignal(AfterExtensionFilesHaveBeenImportedEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            InstallUtility::class,
-            'afterExtensionFileImport',
-            [
-                $event->getDestinationAbsolutePath(),
-                $event->getEmitter()
-            ]
-        );
-    }
-
-    public function emitWillInstallExtensionsSignal(BeforePackageActivationEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ExtensionManagementService::class,
-            'willInstallExtensions',
-            [
-                $event->getPackageKeys()
-            ]
-        );
-    }
-
-    public function emitProcessActionsSignal(AvailableActionsForExtensionEvent $event): void
-    {
-        $actions = $event->getActions();
-        $this->signalSlotDispatcher->dispatch(
-            ProcessAvailableActionsViewHelper::class,
-            'processActions',
-            [
-                $event->getPackageData(),
-                &$actions,
-            ]
-        );
-        $event->setActions($actions);
-    }
-}
diff --git a/typo3/sysext/extensionmanager/Configuration/Services.yaml b/typo3/sysext/extensionmanager/Configuration/Services.yaml
index 9c547ab8306a..a765964393cf 100644
--- a/typo3/sysext/extensionmanager/Configuration/Services.yaml
+++ b/typo3/sysext/extensionmanager/Configuration/Services.yaml
@@ -10,37 +10,6 @@ services:
     # EXT:reports to be installed, ignore for now.
     exclude: '../Classes/{Task,Report}'
 
-  TYPO3\CMS\Extensionmanager\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitWillInstallExtensionsSignal'
-        event: TYPO3\CMS\Core\Package\Event\BeforePackageActivationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'afterExtensionInstallSlot'
-        event: TYPO3\CMS\Core\Package\Event\AfterPackageActivationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'afterExtensionUninstallSlot'
-        event: TYPO3\CMS\Core\Package\Event\AfterPackageDeactivationEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterExtensionT3DImportSignal'
-        event: TYPO3\CMS\Extensionmanager\Event\AfterExtensionDatabaseContentHasBeenImportedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterExtensionStaticSqlImportSignal'
-        event: TYPO3\CMS\Extensionmanager\Event\AfterExtensionStaticDatabaseContentHasBeenImportedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterExtensionFileImportSignal'
-        event: TYPO3\CMS\Extensionmanager\Event\AfterExtensionFilesHaveBeenImportedEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitProcessActionsSignal'
-        event: TYPO3\CMS\Extensionmanager\Event\AvailableActionsForExtensionEvent
-
   TYPO3\CMS\Extensionmanager\Command\ActivateExtensionCommand:
     tags:
       - name: 'console.command'
diff --git a/typo3/sysext/impexp/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/impexp/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 7acf93287f59..000000000000
--- a/typo3/sysext/impexp/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Impexp\Compatibility;
-
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Impexp\Event\BeforeImportEvent;
-use TYPO3\CMS\Impexp\Utility\ImportExportUtility;
-
-/**
- * This class provides a replacement for all existing signals in EXT:impexp of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function emitAfterImportExportInitialisationSignal(BeforeImportEvent $event): void
-    {
-        $this->signalSlotDispatcher->dispatch(
-            ImportExportUtility::class,
-            'afterImportExportInitialisation',
-            [$event->getImport()]
-        );
-    }
-}
diff --git a/typo3/sysext/impexp/Configuration/Services.yaml b/typo3/sysext/impexp/Configuration/Services.yaml
index 321ccd27139c..c486cb77a6df 100644
--- a/typo3/sysext/impexp/Configuration/Services.yaml
+++ b/typo3/sysext/impexp/Configuration/Services.yaml
@@ -14,11 +14,3 @@ services:
     tags:
       - name: 'console.command'
         command: 'impexp:import'
-
-  # Listener for old Signal Slots
-  TYPO3\CMS\Impexp\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'emitAfterImportExportInitialisationSignal'
-        event: TYPO3\CMS\Impexp\Event\BeforeImportEvent
diff --git a/typo3/sysext/install/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/install/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 9cee2399958b..000000000000
--- a/typo3/sysext/install/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Install\Compatibility;
-
-use TYPO3\CMS\Core\Http\Uri;
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Install\Service\Event\ModifyLanguagePackRemoteBaseUrlEvent;
-
-/**
- * This class provides a replacement for all existing signals in EXT:install of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function onLanguagePackProcessMirrorUrl(ModifyLanguagePackRemoteBaseUrlEvent $event): void
-    {
-        $languagePackBaseUrl = (string)$event->getBaseUrl();
-        $this->signalSlotDispatcher->dispatch(
-            'TYPO3\\CMS\\Lang\\Service\\TranslationService',
-            'postProcessMirrorUrl',
-            [
-                'extensionKey' => $event->getPackageKey(),
-                'mirrorUrl' => &$languagePackBaseUrl,
-            ]
-        );
-        $event->setBaseUrl(new Uri($languagePackBaseUrl));
-    }
-}
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassConstantMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassConstantMatcher.php
index 37e5959873de..54315520067f 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassConstantMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassConstantMatcher.php
@@ -196,191 +196,228 @@ return [
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreProcessStorage' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostProcessStorage' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileAdd' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileCopy' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileCreate' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileDelete' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileMove' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileRename' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileReplace' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFileSetContents' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFolderAdd' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFolderCopy' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFolderDelete' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFolderMove' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PostFolderRename' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileAdd' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileCopy' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileCreate' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileDelete' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileMove' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileRename' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileReplace' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFileSetContents' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFolderAdd' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFolderCopy' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFolderDelete' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFolderMove' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreFolderRename' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_PreGeneratePublicUrl' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface::SIGNAL_SanitizeFileName' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PreFileProcess' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Resource\Service\FileProcessingService::SIGNAL_PostFileProcess' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeDataProvider::SIGNAL_PostProcessTreeData' => [
         'restFiles' => [
             'Feature-89733-NewPSR-14EventsForExistingSignalSlotsInCoreExtension.rst',
             'Deprecation-89733-SignalSlotsInCoreExtensionMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_BeforeCaching' => [
         'restFiles' => [
             'Feature-89733-NewPSR-14EventsForExistingSignalSlotsInCoreExtension.rst',
             'Deprecation-89733-SignalSlotsInCoreExtensionMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GenerateDataArray_PostProcesss' => [
         'restFiles' => [
             'Feature-89733-NewPSR-14EventsForExistingSignalSlotsInCoreExtension.rst',
             'Deprecation-89733-SignalSlotsInCoreExtensionMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_GetDataArray_PostProcesss' => [
         'restFiles' => [
             'Feature-89733-NewPSR-14EventsForExistingSignalSlotsInCoreExtension.rst',
             'Deprecation-89733-SignalSlotsInCoreExtensionMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Workspaces\Service\GridDataService::SIGNAL_SortDataArray_PostProcesss' => [
         'restFiles' => [
             'Feature-89733-NewPSR-14EventsForExistingSignalSlotsInCoreExtension.rst',
             'Deprecation-89733-SignalSlotsInCoreExtensionMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ]
 ];
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
index 5582c107df27..98c632757dc0 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
@@ -1341,6 +1341,7 @@ return [
     'TYPO3\CMS\Core\Resource\ResourceFactoryInterface' => [
         'restFiles' => [
             'Deprecation-89577-FALSignalSlotHandlingMigratedToPSR-14Events.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Configuration\TsConfigParser' => [
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
index b01ebb26e48b..aa945e54ff6b 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
@@ -4397,6 +4397,7 @@ return [
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
             'Deprecation-89870-NewPSR-14EventsForExtbase-relatedSignals.rst',
+            'Breaking-91473-DeprecatedFunctionalityRemoved.rst'
         ],
     ],
     'TYPO3\CMS\Core\Html\RteHtmlParser->init' => [
diff --git a/typo3/sysext/install/Configuration/Services.yaml b/typo3/sysext/install/Configuration/Services.yaml
index 001682a48bb9..15f76349eb9f 100644
--- a/typo3/sysext/install/Configuration/Services.yaml
+++ b/typo3/sysext/install/Configuration/Services.yaml
@@ -8,12 +8,3 @@ services:
         identifier: 'install/show-latest-errors'
         method: 'appendMessage'
         event: TYPO3\CMS\Backend\Backend\Event\SystemInformationToolbarCollectorEvent
-  TYPO3\CMS\Install\Compatibility\SlotReplacement:
-    autowire: true
-    autoconfigure: true
-    public: false
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onLanguagePackProcessMirrorUrl'
-        event: TYPO3\CMS\Install\Service\Event\ModifyLanguagePackRemoteBaseUrlEvent
diff --git a/typo3/sysext/linkvalidator/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/linkvalidator/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 0f0afb8fb603..000000000000
--- a/typo3/sysext/linkvalidator/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Linkvalidator\Compatibility;
-
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Linkvalidator\Event\BeforeRecordIsAnalyzedEvent;
-use TYPO3\CMS\Linkvalidator\LinkAnalyzer;
-
-/**
- * This class provides a replacement for all existing signals in EXT:linkvalidator of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function beforeLinkAnalyzerRecordIsAnalyzed(BeforeRecordIsAnalyzedEvent $event): void
-    {
-        [$results, $record] = $this->signalSlotDispatcher->dispatch(
-            LinkAnalyzer::class,
-            'beforeAnalyzeRecord',
-            [
-                $event->getResults(),
-                $event->getRecord(),
-                $event->getTableName(),
-                $event->getFields(),
-                $event->getLinkAnalyzer()
-            ]
-        );
-        $event->setRecord($record);
-        $event->setResults($results);
-    }
-}
diff --git a/typo3/sysext/linkvalidator/Configuration/Services.yaml b/typo3/sysext/linkvalidator/Configuration/Services.yaml
index 70db046bb187..47a3fd398927 100644
--- a/typo3/sysext/linkvalidator/Configuration/Services.yaml
+++ b/typo3/sysext/linkvalidator/Configuration/Services.yaml
@@ -30,10 +30,3 @@ services:
         identifier: 'rte-check-link-to-file'
         event: TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent
         method: 'checkFileLink'
-
-  TYPO3\CMS\Linkvalidator\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'beforeLinkAnalyzerRecordIsAnalyzed'
-        event: TYPO3\CMS\Linkvalidator\Event\BeforeRecordIsAnalyzedEvent
diff --git a/typo3/sysext/seo/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/seo/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index a769fd08e186..000000000000
--- a/typo3/sysext/seo/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Seo\Compatibility;
-
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Seo\Canonical\CanonicalGenerator;
-use TYPO3\CMS\Seo\Event\ModifyUrlForCanonicalTagEvent;
-
-/**
- * This class provides a replacement for all existing signals in EXT:seo of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function beforeGeneratingCanonical(ModifyUrlForCanonicalTagEvent $event): void
-    {
-        $href = $event->getUrl();
-        $this->signalSlotDispatcher->dispatch(
-            CanonicalGenerator::class,
-            'beforeGeneratingCanonical',
-            [&$href]
-        );
-        $event->setUrl($href);
-    }
-}
diff --git a/typo3/sysext/seo/Configuration/Services.yaml b/typo3/sysext/seo/Configuration/Services.yaml
index cbba1c295d37..9ebc77a2fe47 100644
--- a/typo3/sysext/seo/Configuration/Services.yaml
+++ b/typo3/sysext/seo/Configuration/Services.yaml
@@ -7,13 +7,6 @@ services:
   TYPO3\CMS\Seo\:
     resource: '../Classes/*'
 
-  TYPO3\CMS\Seo\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'beforeGeneratingCanonical'
-        event: TYPO3\CMS\Seo\Event\ModifyUrlForCanonicalTagEvent
-
   TYPO3\CMS\Seo\HrefLang\HrefLangGenerator:
     tags:
       - name: event.listener
diff --git a/typo3/sysext/workspaces/Classes/Compatibility/SlotReplacement.php b/typo3/sysext/workspaces/Classes/Compatibility/SlotReplacement.php
deleted file mode 100644
index 94a16a2b6aee..000000000000
--- a/typo3/sysext/workspaces/Classes/Compatibility/SlotReplacement.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/*
- * 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!
- */
-
-namespace TYPO3\CMS\Workspaces\Compatibility;
-
-use TYPO3\CMS\Extbase\SignalSlot\Dispatcher as SignalSlotDispatcher;
-use TYPO3\CMS\Workspaces\Event\AfterCompiledCacheableDataForWorkspaceEvent;
-use TYPO3\CMS\Workspaces\Event\AfterDataGeneratedForWorkspaceEvent;
-use TYPO3\CMS\Workspaces\Event\GetVersionedDataEvent;
-use TYPO3\CMS\Workspaces\Event\SortVersionedDataEvent;
-use TYPO3\CMS\Workspaces\Service\GridDataService;
-
-/**
- * This class provides a replacement for all existing signals in EXT:workspaces of TYPO3 Core, which now act as a
- * simple wrapper for PSR-14 events with a simple ("first prioritized") listener implementation.
- *
- * @internal Please note that this class will likely be removed in TYPO3 v11, and Extension Authors should
- * switch to PSR-14 event listeners.
- */
-class SlotReplacement
-{
-    /**
-     * @var SignalSlotDispatcher
-     */
-    protected $signalSlotDispatcher;
-
-    public function __construct(SignalSlotDispatcher $signalSlotDispatcher)
-    {
-        $this->signalSlotDispatcher = $signalSlotDispatcher;
-    }
-
-    public function onGenerateDataArrayBeforeCaching(AfterCompiledCacheableDataForWorkspaceEvent $event): void
-    {
-        [$obj, $dataArray, $versions] = $this->signalSlotDispatcher->dispatch(
-            GridDataService::class,
-            GridDataService::SIGNAL_GenerateDataArray_BeforeCaching,
-            [$event->getGridService(), $event->getData(), $event->getVersions()]
-        );
-        $event->setData($dataArray);
-        $event->setVersions($versions);
-    }
-
-    public function onGenerateDataArrayPostProcessing(AfterDataGeneratedForWorkspaceEvent $event): void
-    {
-        [$obj, $dataArray] = $this->signalSlotDispatcher->dispatch(
-            GridDataService::class,
-            GridDataService::SIGNAL_GenerateDataArray_PostProcesss,
-            [$event->getGridService(), $event->getData(), $event->getVersions()]
-        );
-        $event->setData($dataArray);
-    }
-
-    public function onGetDataPostProcessing(GetVersionedDataEvent $event): void
-    {
-        [$obj, $dataArray, $start, $limit, $dataArrayPart] = $this->signalSlotDispatcher->dispatch(
-            GridDataService::class,
-            GridDataService::SIGNAL_GetDataArray_PostProcesss,
-            [$event->getGridService(), $event->getData(), $event->getStart(), $event->getLimit(), $event->getDataArrayPart()]
-        );
-        $event->setData($dataArray);
-        $event->setDataArrayPart($dataArrayPart);
-    }
-
-    public function onSortDataPostProcessing(SortVersionedDataEvent $event): void
-    {
-        [$obj, $dataArray, $sortingColumn, $sortingDirection] = $this->signalSlotDispatcher->dispatch(
-            GridDataService::class,
-            GridDataService::SIGNAL_SortDataArray_PostProcesss,
-            [$event->getGridService(), $event->getData(), $event->getSortColumn(), $event->getSortDirection()]
-        );
-        $event->setData($dataArray);
-        $event->setSortColumn($sortingColumn);
-        $event->setSortDirection($sortingDirection);
-    }
-}
diff --git a/typo3/sysext/workspaces/Classes/Service/GridDataService.php b/typo3/sysext/workspaces/Classes/Service/GridDataService.php
index 4cda2383e037..1cd07087a3bc 100644
--- a/typo3/sysext/workspaces/Classes/Service/GridDataService.php
+++ b/typo3/sysext/workspaces/Classes/Service/GridDataService.php
@@ -41,23 +41,6 @@ class GridDataService implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
 
-    /**
-     * @deprecated will be removed in TYPO3 v11 in favor of PSR-14 events
-     */
-    const SIGNAL_GenerateDataArray_BeforeCaching = 'generateDataArray.beforeCaching';
-    /**
-     * @deprecated will be removed in TYPO3 v11 in favor of PSR-14 events
-     */
-    const SIGNAL_GenerateDataArray_PostProcesss = 'generateDataArray.postProcess';
-    /**
-     * @deprecated will be removed in TYPO3 v11 in favor of PSR-14 events
-     */
-    const SIGNAL_GetDataArray_PostProcesss = 'getDataArray.postProcess';
-    /**
-     * @deprecated will be removed in TYPO3 v11 in favor of PSR-14 events
-     */
-    const SIGNAL_SortDataArray_PostProcesss = 'sortDataArray.postProcess';
-
     const GridColumn_Collection = 'Workspaces_Collection';
     const GridColumn_CollectionLevel = 'Workspaces_CollectionLevel';
     const GridColumn_CollectionParent = 'Workspaces_CollectionParent';
diff --git a/typo3/sysext/workspaces/Configuration/Services.yaml b/typo3/sysext/workspaces/Configuration/Services.yaml
index 2649612811de..655d222eee1a 100644
--- a/typo3/sysext/workspaces/Configuration/Services.yaml
+++ b/typo3/sysext/workspaces/Configuration/Services.yaml
@@ -29,22 +29,3 @@ services:
     tags:
       - name: 'console.command'
         command: 'workspace:autopublish'
-
-  TYPO3\CMS\Workspaces\Compatibility\SlotReplacement:
-    tags:
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onGenerateDataArrayBeforeCaching'
-        event: TYPO3\CMS\Workspaces\Event\AfterCompiledCacheableDataForWorkspaceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onGenerateDataArrayPostProcessing'
-        event: TYPO3\CMS\Workspaces\Event\AfterDataGeneratedForWorkspaceEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onGetDataPostProcessing'
-        event: TYPO3\CMS\Workspaces\Event\GetVersionedDataEvent
-      - name: event.listener
-        identifier: 'legacy-slot'
-        method: 'onSortDataPostProcessing'
-        event: TYPO3\CMS\Workspaces\Event\SortVersionedDataEvent
-- 
GitLab