diff --git a/includes/rules.core.inc b/includes/rules.core.inc
index 6f87e95..a6cb70e 100644
--- a/includes/rules.core.inc
+++ b/includes/rules.core.inc
@@ -1132,6 +1132,12 @@ abstract class RulesPlugin extends RulesExtendable {
       }
       $this->ensureNameExists();
       $this->data = $this;
+      // Load the stored entity, if any, to use it for variable comparison in
+      // the cache clearing logic below.
+      if (!isset($this->original) && !empty($this->id)) {
+        $this->original = entity_load_unchanged('rules_config', $this->id);
+      }
+      $original = isset($this->original) ? $this->original : NULL;
       $return = entity_get_controller('rules_config')->save($this);
       unset($this->data);
 
@@ -1144,7 +1150,7 @@ abstract class RulesPlugin extends RulesExtendable {
         if (!empty($plugin_info['component'])) {
           // When component variables changes rebuild the complete cache so the
           // changes to the provided action/condition take affect.
-          if (empty($this->original) || $this->componentVariables() != $this->original->componentVariables()) {
+          if (empty($original) || $this->componentVariables() != $original->componentVariables()) {
             rules_clear_cache();
           }
           // Clear components cached for evaluation.
