 jsonapi.info.yml                                   |  2 +-
 src/JsonapiServiceProvider.php                     |  9 +++++
 src/Normalizer/ScalarNormalizer.php                | 44 ++++++++++++++++++++++
 .../Unit/Normalizer/ConfigEntityNormalizerTest.php |  7 ++++
 4 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/jsonapi.info.yml b/jsonapi.info.yml
index 3702756..cd3b601 100644
--- a/jsonapi.info.yml
+++ b/jsonapi.info.yml
@@ -4,5 +4,5 @@ description: Provides a JSON API standards-compliant API for accessing and manip
 core: 8.x
 package: Web services
 dependencies:
-  - drupal:system (>=8.3)
+  - drupal:system (>=8.2)
   - serialization
diff --git a/src/JsonapiServiceProvider.php b/src/JsonapiServiceProvider.php
index f801059..f3ecce8 100644
--- a/src/JsonapiServiceProvider.php
+++ b/src/JsonapiServiceProvider.php
@@ -6,6 +6,7 @@ use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\DependencyInjection\ServiceModifierInterface;
 use Drupal\Core\DependencyInjection\ServiceProviderInterface;
 use Drupal\jsonapi\DependencyInjection\Compiler\RemoveJsonapiFormatCompilerPass;
+use Drupal\jsonapi\Normalizer\ScalarNormalizer;
 use Symfony\Component\DependencyInjection\Compiler\PassConfig;
 
 /**
@@ -29,6 +30,14 @@ class JsonapiServiceProvider implements ServiceModifierInterface, ServiceProvide
           ['application/vnd.api+json'],
         ]);
     }
+
+    // BC for Drupal 8.2.
+    // @see \Drupal\jsonapi\Normalizer\ScalarNormalizer
+    if (!$container->has('serializer.normalizer.primitive_data')) {
+      $container->register('serializer.normalizer.scalar.jsonapi', ScalarNormalizer::class)
+        ->setDeprecated(TRUE, 'The "%service_id%" service is deprecated in JSON API 1.5, because Drupal 8.3.0 ships with the "serializer.normalizer.primitive_data" service. On Drupal 8.3.0 and newer sites, that service is used instead.')
+        ->addTag('normalizer', ['priority' => 5]);
+    }
   }
 
   /**
diff --git a/src/Normalizer/ScalarNormalizer.php b/src/Normalizer/ScalarNormalizer.php
new file mode 100644
index 0000000..f190df3
--- /dev/null
+++ b/src/Normalizer/ScalarNormalizer.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\jsonapi\Normalizer;
+
+use Drupal\jsonapi\Normalizer\Value\FieldItemNormalizerValue;
+use Drupal\jsonapi\Normalizer\Value\FieldNormalizerValue;
+use Symfony\Component\Serializer\Exception\UnexpectedValueException;
+
+@trigger_error(__NAMESPACE__ . '\ScalarNormalizer is deprecated in JSON API 1.5, because Drupal 8.3.0 ships with the "serializer.normalizer.primitive_data" service. On Drupal 8.3.0 and newer sites, that service is used instead.', E_USER_DEPRECATED);
+
+/**
+ * @deprecated in favor of \Drupal\serialization\Normalizer\PrimitiveDataNormalizer, kept only for Drupal 8.2 sites using JSON API.
+ * @internal
+ */
+class ScalarNormalizer extends NormalizerBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected $formats = ['api_json'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function supportsNormalization($data, $format = NULL) {
+    return (!$data || is_scalar($data)) && in_array($format, $this->formats);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function normalize($object, $format = NULL, array $context = []) {
+    $value = new FieldItemNormalizerValue(['value' => $object]);
+    return new FieldNormalizerValue([$value], 1);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function denormalize($data, $class, $format = NULL, array $context = []) {
+    throw new UnexpectedValueException('Denormalization not implemented for JSON API');
+  }
+
+}
diff --git a/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php b/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
index 74ad5b7..23a088b 100644
--- a/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
+++ b/tests/src/Unit/Normalizer/ConfigEntityNormalizerTest.php
@@ -8,6 +8,7 @@ use Drupal\jsonapi\ResourceType\ResourceType;
 use Drupal\jsonapi\ResourceType\ResourceTypeRepository;
 use Drupal\jsonapi\Normalizer\ConfigEntityNormalizer;
 use Drupal\jsonapi\LinkManager\LinkManager;
+use Drupal\jsonapi\Normalizer\ScalarNormalizer;
 use Drupal\Tests\UnitTestCase;
 use Prophecy\Argument;
 use Symfony\Component\Serializer\Serializer;
@@ -40,6 +41,12 @@ class ConfigEntityNormalizerTest extends UnitTestCase {
       $resource_type_repository->reveal(),
       $this->prophesize(EntityTypeManagerInterface::class)->reveal()
     );
+
+    // BC for Drupal 8.2.
+    // @see \Drupal\jsonapi\Normalizer\ScalarNormalizer
+    $normalizers = [new ScalarNormalizer()];
+    $serializer = new Serializer($normalizers, []);
+    $this->normalizer->setSerializer($serializer);
   }
 
   /**
