diff --git a/composer.json b/composer.json
index c760a33a458ddb102997fdc0b0714a5768521ff3..68c9c634eb03ad95d1276ef9e59153120d320b88 100644
--- a/composer.json
+++ b/composer.json
@@ -45,7 +45,7 @@
 		"doctrine/annotations": "^1.3",
 		"typo3/cms-cli": "^1.0",
 		"typo3/class-alias-loader": "^1.0",
-		"typo3/cms-composer-installers": "^1.4",
+		"typo3/cms-composer-installers": "^2.0",
 		"psr/http-message": "~1.0",
 		"cogpowered/finediff": "~0.3.1",
 		"mso/idna-convert": "^1.1.0",
diff --git a/composer.lock b/composer.lock
index bf4b2b582b024370ac3ca98cdf52ac282ae2b215..9878a93408e8e31bff3e5f26486e182a4b0e1326 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "ee8fd70e59c3f86ff7728b866e54149c",
+    "content-hash": "f97dca50e21002a44cc3ede3fee3f025",
     "packages": [
         {
             "name": "cogpowered/finediff",
@@ -1524,16 +1524,16 @@
         },
         {
             "name": "typo3/cms-composer-installers",
-            "version": "1.4.5",
+            "version": "2.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/TYPO3/CmsComposerInstallers.git",
-                "reference": "0ef630f82f12aa611fb44a3e1e5491fc98b97e78"
+                "reference": "68a206451b8d479049a8886bdb0001134bfe03ac"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/TYPO3/CmsComposerInstallers/zipball/0ef630f82f12aa611fb44a3e1e5491fc98b97e78",
-                "reference": "0ef630f82f12aa611fb44a3e1e5491fc98b97e78",
+                "url": "https://api.github.com/repos/TYPO3/CmsComposerInstallers/zipball/68a206451b8d479049a8886bdb0001134bfe03ac",
+                "reference": "68a206451b8d479049a8886bdb0001134bfe03ac",
                 "shasum": ""
             },
             "require": {
@@ -1554,7 +1554,7 @@
             "extra": {
                 "class": "TYPO3\\CMS\\Composer\\Installer\\Plugin",
                 "branch-alias": {
-                    "dev-master": "1.4.x-dev"
+                    "dev-master": "2.0.x-dev"
                 }
             },
             "autoload": {
@@ -1568,16 +1568,14 @@
             ],
             "authors": [
                 {
-                    "name": "Christian Opitz",
-                    "email": "christian.opitz@netresearch.de"
-                },
-                {
-                    "name": "Lars Peipmann",
-                    "email": "lars@peipmann.de"
+                    "name": "The TYPO3 Community",
+                    "homepage": "https://typo3.org/community/",
+                    "role": "Contributor"
                 },
                 {
-                    "name": "Helmut Hummel",
-                    "email": "info@helhum.io"
+                    "name": "TYPO3 CMS Core Team",
+                    "homepage": "https://forge.typo3.org/projects/typo3cms-core",
+                    "role": "Developer"
                 }
             ],
             "description": "TYPO3 CMS Installers",
@@ -1589,7 +1587,7 @@
                 "installer",
                 "typo3"
             ],
-            "time": "2017-11-06T11:44:16+00:00"
+            "time": "2017-12-12T14:04:22+00:00"
         },
         {
             "name": "typo3fluid/fluid",
diff --git a/typo3/sysext/core/Classes/Composer/InstallerScripts.php b/typo3/sysext/core/Classes/Composer/InstallerScripts.php
deleted file mode 100644
index df5d396c30c01e2387624fa8ee464e24c94ec684..0000000000000000000000000000000000000000
--- a/typo3/sysext/core/Classes/Composer/InstallerScripts.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-declare(strict_types=1);
-namespace TYPO3\CMS\Core\Composer;
-
-/*
- * This file is part of the TYPO3 project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Composer\Script\Event;
-use Composer\Semver\Constraint\EmptyConstraint;
-use TYPO3\CMS\Composer\Plugin\Core\InstallerScriptsRegistration;
-use TYPO3\CMS\Composer\Plugin\Core\ScriptDispatcher;
-use TYPO3\CMS\Core\Composer\InstallerScripts\WebDirectory;
-
-/**
- * Hook into Composer build to set up TYPO3 web directory if necessary
- */
-class InstallerScripts implements InstallerScriptsRegistration
-{
-    /**
-     * @param Event $event
-     * @param ScriptDispatcher $scriptDispatcher
-     */
-    public static function register(Event $event, ScriptDispatcher $scriptDispatcher)
-    {
-        if (null !== $event->getComposer()->getRepositoryManager()->getLocalRepository()->findPackage('typo3/cms', new EmptyConstraint())) {
-            $scriptDispatcher->addInstallerScript(
-                new WebDirectory(),
-                60
-            );
-        }
-    }
-}
diff --git a/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php b/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php
deleted file mode 100644
index 2c7a1dcd690f50794348320076e211068b04bf5c..0000000000000000000000000000000000000000
--- a/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-declare(strict_types=1);
-namespace TYPO3\CMS\Core\Composer\InstallerScripts;
-
-/*
- * This file is part of the TYPO3 project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Composer\Composer;
-use Composer\IO\IOInterface;
-use Composer\Script\Event;
-use Composer\Semver\Constraint\EmptyConstraint;
-use TYPO3\CMS\Composer\Plugin\Config;
-use TYPO3\CMS\Composer\Plugin\Core\InstallerScript;
-use TYPO3\CMS\Composer\Plugin\Util\Filesystem;
-
-/**
- * Setting up TYPO3 web directory
- */
-class WebDirectory implements InstallerScript
-{
-    /**
-     * @var string
-     */
-    private static $typo3Dir = '/typo3';
-
-    /**
-     * @var string
-     */
-    private static $systemExtensionsDir = '/sysext';
-
-    /**
-     * @var IOInterface
-     */
-    private $io;
-
-    /**
-     * @var Composer
-     */
-    private $composer;
-
-    /**
-     * @var Filesystem
-     */
-    private $filesystem;
-
-    /**
-     * @var Config
-     */
-    private $pluginConfig;
-
-    /**
-     * Prepare the web directory with symlinks
-     *
-     * @param Event $event
-     * @return bool
-     */
-    public function run(Event $event): bool
-    {
-        $this->io = $event->getIO();
-        $this->composer = $event->getComposer();
-        $this->filesystem = new Filesystem();
-        $this->pluginConfig = Config::load($this->composer);
-
-        $symlinks = $this->initializeSymlinks();
-        if ($this->filesystem->someFilesExist($symlinks)) {
-            $this->filesystem->removeSymlinks($symlinks);
-        }
-        $this->filesystem->establishSymlinks($symlinks);
-
-        return true;
-    }
-
-    /**
-     * Initialize symlinks from configuration
-     * @return array
-     */
-    private function initializeSymlinks(): array
-    {
-        $webDir = $this->filesystem->normalizePath($this->pluginConfig->get('web-dir'));
-        $backendDir = $webDir . self::$typo3Dir;
-        // Ensure we delete a previously existing symlink to typo3 folder in web directory
-        if ($this->filesystem->isSymlinkedDirectory($backendDir)) {
-            $this->filesystem->removeDirectory($backendDir);
-        }
-        $this->filesystem->ensureDirectoryExists($backendDir);
-        $localRepository = $this->composer->getRepositoryManager()->getLocalRepository();
-        $package = $localRepository->findPackage('typo3/cms', new EmptyConstraint());
-        $sourcesDir = $this->composer->getInstallationManager()->getInstallPath($package);
-        return [
-            $sourcesDir . self::$typo3Dir . self::$systemExtensionsDir => $backendDir . self::$systemExtensionsDir,
-        ];
-    }
-}
diff --git a/typo3/sysext/core/Documentation/Changelog/9.0/Breaking-83302-ComposerRestrictsInstallationOfTypo3cms.rst b/typo3/sysext/core/Documentation/Changelog/9.0/Breaking-83302-ComposerRestrictsInstallationOfTypo3cms.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c9d93a8817285073d5d22244103762321c2ec385
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/9.0/Breaking-83302-ComposerRestrictsInstallationOfTypo3cms.rst
@@ -0,0 +1,55 @@
+.. include:: ../../Includes.txt
+
+===============================================================
+Breaking: #83302 - Composer restricts installation of typo3/cms
+===============================================================
+
+See :issue:`83302`
+
+Description
+===========
+
+When running a composer-based TYPO3 instance, it is not possible anymore to require the whole
+TYPO3 Core via `composer require typo3/cms`. This package is solely used for Core-development purposes
+from now on.
+
+Instead, all system extensions maintained by the TYPO3 Core Team must be required individually.
+
+Some examples:
+
+* `composer require typo3/cms-core:^9`
+* `composer require typo3/cms-fluid-styled-content:^9`
+* `composer require typo3/cms-extbase:^9`
+* `composer require typo3/cms-workspaces:^9`
+* `composer require typo3/cms-sys-note:^9`
+
+For convenience, TYPO3 projects can simply require `composer require typo3/minimal` to get the main
+system extensions that are needed for a running TYPO3 instance, and add custom system extensions
+as mentioned above.
+
+
+Impact
+======
+
+Installing or updating the composer package `typo3/cms` will show an error for TYPO3 v9.
+
+
+Affected Installations
+======================
+
+Composer-based TYPO3 installations that previously required `typo3/cms` in the projects'
+`composer.json` file or in any required extension `composer.json` file.
+
+
+Migration
+=========
+
+Extension authors should specifically define their dependencies of system extensions in their
+`composer.json` file, if they have previously added `typo3/cms`.
+
+Site administrators / developers should require only the necessary `typo3/cms-*` packages that they
+have installed in their projects. In order to find out, which system extensions have been installed,
+have a look at `typo3conf/PackageStates.php` and look for all extensions that are located under
+`typo3/sysext/`.
+
+.. index:: CLI, NotScanned
diff --git a/typo3/sysext/core/composer.json b/typo3/sysext/core/composer.json
index ffea89eb1e62fc04ce4d43acdd308d9739d489d3..fcb78962ddaec6bb0ed5e908e7f0d6e5b25e3007 100644
--- a/typo3/sysext/core/composer.json
+++ b/typo3/sysext/core/composer.json
@@ -26,7 +26,7 @@
 		"doctrine/annotations": "^1.3",
 		"typo3/cms-cli": "^1.0",
 		"typo3/class-alias-loader": "^1.0",
-		"typo3/cms-composer-installers": "^1.4",
+		"typo3/cms-composer-installers": "^2.0",
 		"psr/http-message": "~1.0",
 		"cogpowered/finediff": "~0.3.1",
 		"mso/idna-convert": "^1.1.0",