diff --git a/src/Engine/RulesComponent.php b/src/Engine/RulesComponent.php
index 2daf03cfb01c38f8b490f13afac1e4bf04c5949d..e67fb292ca8d12f9e85e20b267029016c3c331be 100644
--- a/src/Engine/RulesComponent.php
+++ b/src/Engine/RulesComponent.php
@@ -65,21 +65,26 @@ class RulesComponent {
    */
   public static function createFromConfiguration(array $configuration) {
     $configuration += [
-      'context_definitions' => [],
-      'provided_context_definitions' => [],
+        'context_definitions' => [],
+        'provided_context_definitions' => [],
     ];
+
     // @todo Can we improve this use dependency injection somehow?
-    $expression_manager = \Drupal::service('plugin.manager.rules_expression');
-    $expression = $expression_manager->createInstance($configuration['expression']['id'], $configuration['expression']);
+    $expression_manager = \Drupal::service('plugin.manager.rules_expression');  
+    // Check if $configuration['expression'] exists and is an array before using it.
+    $expressionConfig = isset($configuration['expression']) && is_array($configuration['expression']) ? $configuration['expression'] : [];
+    $expression = $expression_manager->createInstance($expressionConfig['id'], $expressionConfig);
     $component = static::create($expression);
     foreach ($configuration['context_definitions'] as $name => $definition) {
-      $component->addContextDefinition($name, ContextDefinition::createFromArray($definition));
+        $component->addContextDefinition($name, ContextDefinition::createFromArray($definition));
     }
     foreach ($configuration['provided_context_definitions'] as $name => $definition) {
-      $component->provideContext($name);
+        $component->provideContext($name);
     }
+    
     return $component;
-  }
+}
+
 
   /**
    * Constructs the object.