diff --git modules/data.eval.inc modules/data.eval.inc
index 7e414de..557b382 100644
--- modules/data.eval.inc
+++ modules/data.eval.inc
@@ -176,7 +176,7 @@ function rules_action_entity_delete($wrapper, $settings, $state, $element) {
 }
 
 /**
- * Action: Add a list item
+ * Action: Add a list item.
  */
 function rules_action_data_list_add($list, $item, $pos = 'end', $settings) {
   switch ($pos) {
@@ -192,7 +192,7 @@ function rules_action_data_list_add($list, $item, $pos = 'end', $settings) {
 }
 
 /**
- * Action: Remove a list item
+ * Action: Remove a list item.
  */
 function rules_action_data_list_remove($list, $item) {
   foreach (array_keys($list, $item) as $key) {
@@ -280,7 +280,7 @@ function rules_action_data_create_array($values = array(), $type) {
 }
 
 /**
- * Condition: Compare data
+ * Condition: Compare data.
  */
 function rules_condition_data_is($data, $op, $value) {
   switch ($op) {
@@ -311,7 +311,14 @@ function rules_condition_data_is_info_alter(&$element_info, RulesAbstractPlugin
 }
 
 /**
- * Condition: Entity is new
+ * Condition: Data value is empty.
+ */
+function rules_condition_data_is_empty($data) {
+  return empty($data);
+}
+
+/**
+ * Condition: Entity is new.
  */
 function rules_condition_entity_is_new($wrapper, $settings, $state, $element) {
   return !$wrapper->getIdentifier() || !empty($entity->is_new);
diff --git modules/data.rules.inc modules/data.rules.inc
index ee61292..eec36a4 100644
--- modules/data.rules.inc
+++ modules/data.rules.inc
@@ -585,6 +585,19 @@ function rules_data_condition_info() {
       'group' => t('Data'),
       'base' => 'rules_condition_data_is',
     ),
+    'data_is_empty' => array(
+      'label' => t('Data value is empty'),
+      'parameter' => array(
+        'data' => array(
+          'type' => '*',
+          'label' => t('Data to check'),
+          'description' => t('The data to be checked to be empty, specified by using a data selector, e.g. "node:author:name".'),
+          'allow null' => TRUE,
+         ),
+      ),
+      'group' => t('Data'),
+      'base' => 'rules_condition_data_is_empty',
+    ),
     'entity_is_new' => array(
       'label' => t('Entity is new'),
       'parameter' => array(
diff --git tests/rules.test tests/rules.test
index fdddabc..07f7638 100644
--- tests/rules.test
+++ tests/rules.test
@@ -1116,9 +1116,9 @@ class RulesIntegrationTestCase extends DrupalWebTestCase {
   }
 
   /**
-   * Test the provided list actions.
+   * Test data integration.
    */
-  function testListActions() {
+  function testDataIntegration() {
     $rule = rule(array(
       'list' => array(
         'type' => 'list<text>',
@@ -1133,6 +1133,22 @@ class RulesIntegrationTestCase extends DrupalWebTestCase {
     RulesLog::logger()->checkLog();
     $this->assertEqual($list->value(), array('bar', 'foo', 'foo2'), 'List items removed and added.');
     //debug(RulesLog::logger()->render());
+
+    // Test Condition: Data is empty.
+    $rule = rule(array('node' => array('type' => 'node')));
+    $rule->condition('data_is_empty', array('data:select' => 'node:title'));
+    $rule->action('data_set', array('data:select' => 'node:title', 'value' => 'bar'));
+    $rule->integrityCheck();
+
+    // Data is empty condition evaluates to TRUE
+    // for node with empty title, action sets title to 'bar'.
+    $node = $this->drupalCreateNode(array('title' => '', 'type' => 'article'));
+    $rule->execute($node);
+    $this->assertEqual($node->title, 'bar', "Data is empty condition evaluates to TRUE for node with empty title, action sets title to 'bar'.");
+
+    // Data is empty condition evaluates to FALSE
+    // for node with title 'foo', action is not executed.
+    $node = $this->drupalCreateNode(array('title' => 'foo', 'type' => 'article'));
+    $rule->execute($node);
+    $this->assertEqual($node->title, 'foo', "Data is empty condition evaluates to FALSE for node with title 'foo', action is not executed.");
   }
 
   /**
