diff --git a/ui/ui.forms.inc b/ui/ui.forms.inc
index 9ed2511..20954cf 100644
--- a/ui/ui.forms.inc
+++ b/ui/ui.forms.inc
@@ -327,17 +327,19 @@ function rules_ui_delete_element_validate($form, &$form_state) {
   $form_state['element_parent'] = $form_state['rules_element']->parentElement();
   $removed_plugin = $form_state['rules_element']->plugin();
   $form_state['rules_element']->delete();
-  try {
-    $form_state['rules_config']->integrityCheck();
-  }
-  catch (RulesIntegrityException $e) {
-    $args = array(
-      '@plugin' => $e->element->plugin(),
-      '%label' => $e->element->label(),
-      '@removed-plugin' => $removed_plugin,
-      '!url' => url(RulesPluginUI::path($form_state['rules_config']->name, 'edit', $e->element)),
-    );
-    form_set_error('', t('Unable to delete the @removed-plugin as some of its provided variables are utilized by the @plugin <a href="!url">%label</a>.', $args));
+  if (empty($form_state['rules_element']->root()->dirty)) {
+    try {
+      $form_state['rules_config']->integrityCheck();
+    }
+    catch (RulesIntegrityException $e) {
+      $args = array(
+        '@plugin' => $e->element->plugin(),
+        '%label' => $e->element->label(),
+        '@removed-plugin' => $removed_plugin,
+        '!url' => url(RulesPluginUI::path($form_state['rules_config']->name, 'edit', $e->element)),
+      );
+      form_set_error('', t('Unable to delete the @removed-plugin as some of its provided variables are utilized by the @plugin <a href="!url">%label</a>.', $args));
+    }
   }
 }
 
@@ -413,6 +415,8 @@ function rules_ui_add_event_validate($form, &$form_state) {
   if (!empty($form_state['values']['event'])) {
     $rules_config = $form_state['rules_config'];
     $rules_config->event($form_state['values']['event']);
+
+    // @todo: This only works if the rule is not already dirty. Improve check.
     try {
       $rules_config->integrityCheck();
     }
@@ -456,16 +460,18 @@ function rules_ui_remove_event($form, &$form_state, $rules_config, $event, $base
 function rules_ui_remove_event_validate($form, &$form_state) {
   $rules_config = $form_state['rules_config'];
   $rules_config->removeEvent($form_state['rules_event']);
-  try {
-    $rules_config->integrityCheck();
-  }
-  catch (RulesIntegrityException $e) {
-    $args = array(
-      '@plugin' => $e->element->plugin(),
-      '%label' => $e->element->label(),
-      '!url' => url(RulesPluginUI::path($form_state['rules_config']->name, 'edit', $e->element)),
-    );
-    form_set_error('', t('Unable to remove the event as some of its provided variables are utilized by the @plugin <a href="!url">%label</a>.', $args));
+  if (empty($rules_config->dirty)) {
+    try {
+      $rules_config->integrityCheck();
+    }
+    catch (RulesIntegrityException $e) {
+      $args = array(
+        '@plugin' => $e->element->plugin(),
+        '%label' => $e->element->label(),
+        '!url' => url(RulesPluginUI::path($form_state['rules_config']->name, 'edit', $e->element)),
+      );
+      form_set_error('', t('Unable to remove the event as some of its provided variables are utilized by the @plugin <a href="!url">%label</a>.', $args));
+    }
   }
 }
 
