diff --git a/src/Plugin/Deriver/TypedDataEntityRelationshipDeriver.php b/src/Plugin/Deriver/TypedDataEntityRelationshipDeriver.php
index 41628620..5ccb09d7 100644
--- a/src/Plugin/Deriver/TypedDataEntityRelationshipDeriver.php
+++ b/src/Plugin/Deriver/TypedDataEntityRelationshipDeriver.php
@@ -24,7 +24,14 @@ class TypedDataEntityRelationshipDeriver extends TypedDataRelationshipDeriver {
       // Provide the entity type.
       $derivative_id = $data_type_id . ':' . $property_name;
       if (isset($this->derivatives[$derivative_id])) {
-        $this->derivatives[$derivative_id]['target_entity_type'] = $property_definition->getFieldStorageDefinition()->getPropertyDefinition('entity')->getConstraint('EntityType');
+        $constraint = $property_definition->getFieldStorageDefinition()->getPropertyDefinition('entity')->getConstraint('EntityType');
+        if (is_array($constraint) && isset($constraint['type'])) {
+          $entity_type_id = $constraint['type'];
+        }
+        else {
+          $entity_type_id = $constraint;
+        }
+        $this->derivatives[$derivative_id]['target_entity_type'] = $entity_type_id;
       }
     }
   }
diff --git a/src/Plugin/Deriver/TypedDataRelationshipDeriver.php b/src/Plugin/Deriver/TypedDataRelationshipDeriver.php
index 7778b321..90d29291 100644
--- a/src/Plugin/Deriver/TypedDataRelationshipDeriver.php
+++ b/src/Plugin/Deriver/TypedDataRelationshipDeriver.php
@@ -17,10 +17,23 @@ class TypedDataRelationshipDeriver extends TypedDataPropertyDeriverBase implemen
    * {@inheritdoc}
    */
   protected function generateDerivativeDefinition($base_plugin_definition, $data_type_id, $data_type_definition, DataDefinitionInterface $base_definition, $property_name, DataDefinitionInterface $property_definition) {
-    $bundle_info = $base_definition->getConstraint('Bundle');
+    $bundle_constraint = $base_definition->getConstraint('Bundle');
+    if (is_array($bundle_constraint) && isset($bundle_constraint['bundle'])) {
+      $bundle_info = $bundle_constraint['bundle'];
+    }
+    else {
+      $bundle_info = $bundle_constraint;
+    }
     // Identify base definitions that appear on bundle-able entities.
     if ($bundle_info && array_filter($bundle_info) && $base_definition->getConstraint('EntityType')) {
-      $base_data_type = 'entity:' . $base_definition->getConstraint('EntityType');
+      $entity_type_constraint = $base_definition->getConstraint('EntityType');
+      if (is_array($entity_type_constraint) && isset($entity_type_constraint['type'])) {
+        $entity_type_id = $entity_type_constraint['type'];
+      }
+      else {
+        $entity_type_id = $entity_type_constraint;
+      }
+      $base_data_type = 'entity:' . $entity_type_id;
     }
     // Otherwise, just use the raw data type identifier.
     else {
@@ -76,9 +89,18 @@ class TypedDataRelationshipDeriver extends TypedDataPropertyDeriverBase implemen
       $this->derivatives[$base_data_type . ':' . $property_name]['label'] = $this->t($string, $arguments);
       if ($base_definition->getConstraint('Bundle')) {
         // Add bundle constraints.
+        $bundle_constraint = $base_definition->getConstraint('Bundle');
         $context_definition = $derivative['context_definitions']['base'];
-        $bundles = $context_definition->getConstraint('Bundle') ?: [];
-        $bundles = array_merge($bundles, $base_definition->getConstraint('Bundle'));
+
+        if (is_array($bundle_constraint) && isset($bundle_constraint['bundle'])) {
+          $bundles = $context_definition->getConstraint('Bundle')['bundle'] ?: [];
+          $bundles = ['bundle' => array_merge($bundles, $bundle_constraint['bundle'])];
+        }
+        else {
+          $bundles = $context_definition->getConstraint('Bundle') ?: [];
+          $bundles = array_merge($bundles, $base_definition->getConstraint('Bundle'));
+        }
+
         $context_definition->addConstraint('Bundle', $bundles);
       }
     }
diff --git a/tests/src/Kernel/RelationshipManagerTest.php b/tests/src/Kernel/RelationshipManagerTest.php
index 6f071aaf..dd5a3e61 100644
--- a/tests/src/Kernel/RelationshipManagerTest.php
+++ b/tests/src/Kernel/RelationshipManagerTest.php
@@ -18,8 +18,10 @@ class RelationshipManagerTest extends RelationshipsTestBase {
     $definitions = $this->relationshipManager->getDefinitions();
     $expected = [
       'Bundle' => [
-        0 => "page",
-        1 => "foo",
+        'bundle' => [
+          0 => "page",
+          1 => "foo",
+        ],
       ],
     ];
     $this->assertSame($expected, $definitions['typed_data_relationship:entity:node:body']['context_definitions']['base']->getConstraints());
