diff -uprN commerce/modules/checkout/commerce_checkout.rules.inc commerce.patched/modules/checkout/commerce_checkout.rules.inc
--- commerce/modules/checkout/commerce_checkout.rules.inc	2011-11-23 02:19:44.469403314 +0400
+++ commerce.patched/modules/checkout/commerce_checkout.rules.inc	2011-11-23 02:13:18.000000000 +0400
@@ -174,10 +174,66 @@ function commerce_checkout_entity_type_o
  *   property value.
  */
 function commerce_checkout_condition_entity_exists($type, $property, $value) {
-  $result = entity_metadata_table_query($type, $property, $value, 1);
+  $result = entity_property_query($type, $property, $value, 1);
   return !empty($result);
 }
 
 /**
+ * Info alteration callback for the entity query action.
+ */
+function commerce_checkout_condition_entity_exists_info_alter(&$element_info, RulesAbstractPlugin $element) {
+  $element->settings += array('type' => NULL, 'property' => NULL);
+  if ($element->settings['type']) {
+    $element_info['parameter']['property']['options list'] = 'commerce_checkout_condition_entity_exists_property_options_list';
+
+    if ($element->settings['property']) {
+      $wrapper = entity_metadata_wrapper($element->settings['type']);
+      if (isset($wrapper->{$element->settings['property']}) && $property = $wrapper->{$element->settings['property']}) {
+        $element_info['parameter']['value']['type'] = $property->type();
+        $element_info['parameter']['value']['options list']  = $property->optionsList() ? 'commerce_checkout_condition_entity_exists_value_options_list' : FALSE;
+      }
+    }
+  }
+}
+
+/**
+ * Returns the options list for choosing a property of an entity type.
+ */
+function commerce_checkout_condition_entity_exists_property_options_list(RulesAbstractPlugin $element) {
+  $element->settings += array('type' => NULL);
+  if ($element->settings['type']) {
+    $properties = entity_get_all_property_info($element->settings['type']);
+    return rules_extract_property($properties, 'label');
+  }
+}
+
+/**
+ * Returns the options list specified for the chosen property.
+ */
+function commerce_checkout_condition_entity_exists_value_options_list(RulesAbstractPlugin $element) {
+  // Get the possible values for the selected property.
+  $element->settings += array('type' => NULL, 'property' => NULL);
+  if ($element->settings['type'] && $element->settings['property']) {
+    $wrapper = entity_metadata_wrapper($element->settings['type']);
+
+    if (isset($wrapper->{$element->settings['property']}) && $property = $wrapper->{$element->settings['property']}) {
+      return $property->optionsList('view');
+    }
+  }
+}
+
+/**
+ * Custom validate callback for data query action.
+ */
+function commerce_checkout_condition_entity_exists_validate($element) {
+  if (!isset($element->settings['type'])) {
+    throw new RulesEvaluationException('Invalid type specified.', array(), array($element, 'parameter', 'type'));
+  }
+  if (!isset($element->settings['property'])) {
+    throw new RulesEvaluationException('Invalid property specified.', array(), array($element, 'parameter', 'property'));
+  }
+}
+
+/**
  * @}
  */
