diff --git a/webform_rules.module b/webform_rules.module
index ac9ab02..b26b20d 100644
--- a/webform_rules.module
+++ b/webform_rules.module
@@ -321,3 +321,41 @@ function webform_rules_render_component($component, $value, $format = 'text', $t
   }
   return drupal_render($display_element);
 }
+
+/**
+ * Get a list of all webforms.
+ */
+function webform_rules_get_webforms() {
+  // Get a list of all webform-enabled content types.
+  $webform_types = webform_variable_get('webform_node_types');
+  // Get a list of all nodes that are configured to use a webform.
+  $query = db_select('node', 'n')
+    ->fields('n', array('nid', 'title'))
+    ->condition('n.type', $webform_types, 'IN');
+  // Join to limit result list to nodes that really have a webform.
+  $query->join('webform', 'w', 'n.nid = w.nid');
+  // Join {webform_component} to prevent listing unconfigured webforms.
+  $query->join('webform_component', 'c', 'n.nid = c.nid');
+  // Get the result list.
+  $results = $query->execute();
+
+  $webforms = array();
+  foreach ($results as $record) {
+    $webforms[$record->nid] = $record->title;
+  }
+  return $webforms;
+}
+
+/**
+ * Get an option list of all webforms.
+ */
+function webform_rules_get_webforms_as_options() {
+  // Get the list of all webforms.
+  $webforms = webform_rules_get_webforms();
+
+  $options = array();
+  foreach ($webforms as $nid => $webform) {
+    $options["webform-client-form-{$nid}"] = $webform;
+  }
+  return $options;
+}
diff --git a/webform_rules.rules.inc b/webform_rules.rules.inc
index d813741..0f45105 100644
--- a/webform_rules.rules.inc
+++ b/webform_rules.rules.inc
@@ -59,7 +59,7 @@ function webform_rules_rules_condition_info() {
         'selected_webform' => array(
           'type' => 'list<text>',
           'label' => t('Webforms'),
-          'options list' => 'webform_rules_get_webforms',
+          'options list' => 'webform_rules_get_webforms_as_options',
           'description' => t('The name of the webform to check for.'),
           'restriction' => 'input',
         ),
@@ -93,7 +93,7 @@ function webform_rules_rules_action_info() {
     'group' => t('Webform'),
     'access callback' => 'rules_node_admin_access',
     'parameter' => array(
-      'node' => array(
+      'entity' => array(
         'type' => 'node',
         'label' => t('Webform'),
         'description' => t('A webform-enabled node.'),
@@ -103,7 +103,7 @@ function webform_rules_rules_action_info() {
       'selected_webform' => array(
         'type' => 'list<text>',
         'label' => t('Webforms'),
-        'options list' => 'webform_rules_get_webforms',
+        'options list' => 'webform_rules_get_webforms_as_options',
         'description' => t('The name of the webforms to open.'),
         'restriction' => 'input',
         'optional' => TRUE,
@@ -172,7 +172,16 @@ 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)) {
+  // Get a list of all nodes that are configured to use a webform.
+  $query = db_select('node', 'n')
+    ->fields('n', array('nid', 'title'))
+    ->condition('n.nid', $node->nid);
+  // Join to limit result list to node that really have a webform.
+  $query->join('webform', 'w', 'n.nid = w.nid');
+  // Join {webform_component} to prevent listing unconfigured webforms.
+  $query->join('webform_component', 'c', 'n.nid = c.nid');
+  // Get the result list.
+  if ($query->execute()->rowCount() > 0) {
     return TRUE;
   }
   return FALSE;
@@ -181,24 +190,24 @@ function webform_rules_condition_node_is_webform($node) {
 /**
  * Rules action callback to open webforms.
  */
-function webform_rules_webform_open($node = FALSE, $selected_webforms = array()) {
-  _webform_rules_webform_set_status($node, $selected_webforms);
+function webform_rules_webform_open($entity = FALSE, $selected_webforms = array()) {
+  _webform_rules_webform_set_status($entity, $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);
+function webform_rules_webform_close($entity = FALSE, $selected_webforms = array()) {
+  _webform_rules_webform_set_status($entity, $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)) {
+function _webform_rules_webform_set_status($entity = FALSE, $selected_webforms = array(), $open = TRUE) {
+  if (!empty($entity->nid) && webform_rules_condition_node_is_webform($entity)) {
     // Set new status.
-    $node->webform['status'] = ($open == TRUE) ? 1 : 0;
+    $entity->webform['status'] = ($open == TRUE) ? 1 : 0;
   }
   module_load_include('inc', 'rules', 'modules/entity.eval');
   // Try to close all selected webforms.
@@ -218,28 +227,6 @@ function _webform_rules_webform_set_status($node = FALSE, $selected_webforms = a
 }
 
 /**
- * Get an option list of all webforms.
- */
-function webform_rules_get_webforms() {
-  // Get a list of all webform-enabled content types.
-  $webform_types = webform_variable_get('webform_node_types');
-  // Get a list of all nodes that are configured to use a webform.
-  $query = db_select('node', 'n')
-    ->fields('n', array('nid', 'title'))
-    ->condition('n.type', $webform_types, 'IN');
-  // Join to limi result list to node that really have a webform.
-  $query->join('webform', 'w', 'n.nid = w.nid');
-  // Get the result list.
-  $results = $query->execute();
-
-  $options = array();
-  foreach ($results as $record) {
-    $options["webform-client-form-{$record->nid}"] = $record->title;
-  }
-  return $options;
-}
-
-/**
  * Helper function for event variables.
  *
  * @return
@@ -267,7 +254,7 @@ function _webform_rules_event_variables() {
     'selected_webform' => array(
       'type' => 'list<text>',
       'label' => t('Webforms'),
-      'options list' => 'webform_rules_get_webforms',
+      'options list' => 'webform_rules_get_webforms_as_options',
       'description' => t('The name of the webform to check for.'),
       'restriction' => 'input',
       'hidden' => TRUE,
