diff --git a/webform_rules.rules.inc b/webform_rules.rules.inc
index 359da6b..d813741 100644
--- a/webform_rules.rules.inc
+++ b/webform_rules.rules.inc
@@ -64,14 +64,73 @@ function webform_rules_rules_condition_info() {
           'restriction' => 'input',
         ),
       ),
-      'help' => t('This condition just compares two texts. It returns TRUE, if both texts are equal.'),
+      'help' => t('This condition compares the id of the submitted form with the selected value(s).'),
       'group' => t('Webform'),
       'base' => 'webform_rules_condition_webform_has_id',
     ),
+    'node_is_webform' => array(
+      'label' => t('Content is webform-enabled'),
+      'parameter' => array(
+      'node' => array(
+        'type' => 'node',
+        'label' => t('Content'),
+        'description' => t('The content to verify.'),
+      ),
+      ),
+      'help' => t('This condition verifies a node contains a webform.'),
+      'group' => t('Webform'),
+      'base' => 'webform_rules_condition_node_is_webform',
+    ),
   );
 }
 
 /**
+ * Implements hook_rules_action_info().
+ *
+ */
+function webform_rules_rules_action_info() {
+  $defaults = array(
+    'group' => t('Webform'),
+    'access callback' => 'rules_node_admin_access',
+    'parameter' => array(
+      'node' => array(
+        'type' => 'node',
+        'label' => t('Webform'),
+        'description' => t('A webform-enabled node.'),
+        'save' => TRUE,
+        'optional' => TRUE,
+      ),
+      'selected_webform' => array(
+        'type' => 'list<text>',
+        'label' => t('Webforms'),
+        'options list' => 'webform_rules_get_webforms',
+        'description' => t('The name of the webforms to open.'),
+        'restriction' => 'input',
+        'optional' => TRUE,
+      ),
+    ),
+    'callbacks' => array(
+      'validate' => 'webform_rules_webform_statuschange_validate',
+    ),
+  );
+  $actions = array(
+    'webform_open' => $defaults + array(
+      'label' => t('Open webforms'),
+      'base' => 'webform_rules_webform_open',
+    ),
+    'webform_close' => $defaults + array(
+      'label' => t('Close webforms'),
+      'base' => 'webform_rules_webform_close',
+    ),
+  );
+
+  // Modify description of closing action.
+  $actions['webform_close']['parameter']['selected_webform']['description'] = t('The name of the webforms to close.');
+
+  return $actions;
+}
+
+/**
  * Implements hook_rules_data_info().
  */
 function webform_rules_data_info() {
@@ -86,6 +145,16 @@ function webform_rules_data_info() {
 }
 
 /**
+ * Validation callback for actions 'webform_rules_webform_open' and
+ * 'webform_rules_webform_close'.
+ */
+function webform_rules_webform_statuschange_validate($element) {
+  if (empty($element->settings['node:select']) && empty($element->settings['selected_webform'])) {
+    throw new RulesIntegrityException(t('At least one parameter needs to be set.'), array($element, 'parameter', 'node'));
+  }
+}
+
+/**
  * Function to compare the form id of the submitted webform with the selected
  * form.
  */
@@ -100,6 +169,55 @@ function webform_rules_condition_webform_has_id($form_id, $selected_webform) {
 }
 
 /**
+ * Condition callback to determine whether a node contains a webform.
+ */
+function webform_rules_condition_node_is_webform($node) {
+  if (!empty($node->webform)) {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/**
+ * Rules action callback to open webforms.
+ */
+function webform_rules_webform_open($node = FALSE, $selected_webforms = array()) {
+  _webform_rules_webform_set_status($node, $selected_webforms);
+}
+
+/**
+ * Rules action callback to close webforms.
+ */
+function webform_rules_webform_close($node = FALSE, $selected_webforms = array()) {
+  _webform_rules_webform_set_status($node, $selected_webforms, FALSE);
+}
+
+/**
+ * Helper method to update the status of a webform.
+ */
+function _webform_rules_webform_set_status($node = FALSE, $selected_webforms = array(), $open = TRUE) {
+  if (!empty($node->nid) && webform_rules_condition_node_is_webform($node)) {
+    // Set new status.
+    $node->webform['status'] = ($open == TRUE) ? 1 : 0;
+  }
+  module_load_include('inc', 'rules', 'modules/entity.eval');
+  // Try to close all selected webforms.
+  foreach ($selected_webforms as $form_id) {
+    // Try to get node id from form_id.
+    $nid = str_replace('webform-client-form-', '', $form_id);
+    // Load the node object.
+    $result = rules_action_entity_fetch('node', $nid, NULL);
+    $webform = $result['entity_fetched'];
+    if (!empty($webform->nid) && webform_rules_condition_node_is_webform($webform)) {
+      // Set new status.
+      $webform->webform['status'] = ($open == TRUE) ? 1 : 0;
+      // Save the webform node. Maybe we can find a better way how to save?
+      node_save($webform);
+    }
+  }
+}
+
+/**
  * Get an option list of all webforms.
  */
 function webform_rules_get_webforms() {
@@ -157,3 +275,4 @@ function _webform_rules_event_variables() {
     ),
   );
 }
+
