diff --git a/core/core.services.yml b/core/core.services.yml
index 3196589..80761d1 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -796,6 +802,11 @@ services:
     tags:
       - { name: paramconverter }
     arguments: ['@entity.manager']
+  paramconverter.psr7:
+    class: Drupal\Core\EventSubscriber\PsrServerRequestParamConverterSubscriber
+    tags:
+      - { name: event_subscriber }
+    arguments: ['@symfony.psr7.http_message_factory']
   paramconverter.configentity_admin:
     class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
     tags:
diff --git a/core/lib/Drupal/Core/Controller/ControllerResolver.php b/core/lib/Drupal/Core/Controller/ControllerResolver.php
index bf58aff..dca055a 100644
--- a/core/lib/Drupal/Core/Controller/ControllerResolver.php
+++ b/core/lib/Drupal/Core/Controller/ControllerResolver.php
@@ -135,6 +135,9 @@ protected function doGetArguments(Request $request, $controller, array $paramete
       elseif ($param->getClass() && $param->getClass()->isInstance($request)) {
         $arguments[] = $request;
       }
+     elseif ($param->getClass() && $param->getClass()->name === 'Psr\Http\Message\ServerRequestInterface') {
+        $arguments[] = $attributes['psr7'];
+      }
       elseif ($param->getClass() && ($param->getClass()->name == 'Drupal\Core\Routing\RouteMatchInterface' || is_subclass_of($param->getClass()->name, 'Drupal\Core\Routing\RouteMatchInterface'))) {
         $arguments[] = RouteMatch::createFromRequest($request);
       }
diff --git a/core/lib/Drupal/Core/EventSubscriber/PsrServerRequestParamConverterSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/PsrServerRequestParamConverterSubscriber.php
new file mode 100644
index 0000000..a205d80
--- /dev/null
+++ b/core/lib/Drupal/Core/EventSubscriber/PsrServerRequestParamConverterSubscriber.php
@@ -0,0 +1,38 @@
+<?php
+namespace Drupal\Core\EventSubscriber;
+
+
+use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+
+
+class PsrServerRequestParamConverterSubscriber implements EventSubscriberInterface
+{
+
+    /**
+     * @var HttpMessageFactoryInterface
+     */
+    private $httpMessageFactory;
+    
+    public function __construct(HttpMessageFactoryInterface $httpMessageFactory)
+    {
+        $this->httpMessageFactory = $httpMessageFactory;
+    }
+
+
+    public function onKernelRequest(GetResponseEvent $event)
+    {
+        $request = $event->getRequest();
+        $request->attributes->set('psr7', $this->httpMessageFactory->createRequest($request));
+
+    }
+    
+        public static function getSubscribedEvents()
+    {
+        return array(
+            KernelEvents::REQUEST => array(array('onKernelRequest', 33)),
+        );
+    }
+}
\ No newline at end of file
