diff --git a/workbench_moderation.module b/workbench_moderation.module
index 5ccb921..bb4ee84 100644
--- a/workbench_moderation.module
+++ b/workbench_moderation.module
@@ -1468,6 +1468,12 @@ function workbench_moderation_moderate($node, $state) {
   if (!empty($node->workbench_moderation['published'])) {
     drupal_register_shutdown_function('workbench_moderation_store', $node);
   }
+
+  if (module_exists('rules')){
+    if ($new_revision['from_state'] !== $new_revision['state']){
+      rules_invoke_event('workbench_moderation_after_changing_state', $node, $new_revision);
+    }
+  }
 }
 
 /**
diff --git a/workbench_moderation.node.inc b/workbench_moderation.node.inc
index ddbce3c..cbc31f0 100644
--- a/workbench_moderation.node.inc
+++ b/workbench_moderation.node.inc
@@ -250,4 +250,8 @@ function workbench_moderation_node_unpublish_form_submit($form, &$form_state) {
 
   drupal_set_message(t('The live revision of this content has been unpublished.'));
   $form_state['redirect'] ="node/{$node->nid}/moderation";
+
+  if (module_exists('rules')){
+    rules_invoke_event('workbench_moderation_after_unpublishing_live_content', $node, $live_revision);
+  }
 }
diff --git a/workbench_moderation.rules.inc b/workbench_moderation.rules.inc
new file mode 100644
index 0000000..75a40c4
--- /dev/null
+++ b/workbench_moderation.rules.inc
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * Implements hook_rules_file_info().
+ */
+function workbench_moderation_rules_file_info() {
+  $items = array();
+  $items[] = 'workbench_moderation.rules';
+
+  return $items;
+}
+
+/**
+ * Implements hook_rules_condition_info().
+ */
+function workbench_moderation_rules_condition_info() {
+   $items = array();
+
+   $items['content_is_live_revision'] = array(
+    'group' => t("Node"),
+    'label' => t("Content is Live Workbench Revision"),
+    'base' => 'workbench_moderation_rules_condition_content_is_live_revision',
+    'parameter' => array(
+      'node' => array('type' => 'node', 'label' => t("Content")),
+    ),
+    'access callback' => 'rules_node_integration_access',
+  );
+
+  return $items;
+}
+
+/**
+ * Implements hook_rules_event_info().
+ */
+function workbench_moderation_rules_event_info() {
+  $items = array();
+
+  $items['workbench_moderation_after_unpublishing_live_content'] = array(
+    'label' => t("After Unpublishing Live Workbench Content"),
+    'group' => t("Node"),
+    'variables' => rules_events_node_variables(t("Unpublished Content"), FALSE),
+    'access callback' => 'rules_node_integration_access',
+  );
+
+  $items['workbench_moderation_after_unpublishing_live_content']['variables']['live_content'] = array(
+    'type' => 'node',
+    'label' => t("Live Workbench Content"),
+  );
+
+  $items['workbench_moderation_after_changing_state'] = array(
+    'label' => t("After Changing Workbench Moderation State"),
+    'group' => t("Node"),
+    'variables' => rules_events_node_variables(t("Content"), FALSE),
+    'access callback' => 'rules_node_integration_access',
+  );
+
+  $items['workbench_moderation_after_changing_state']['variables']['new_revision'] = array(
+    'type' => 'unknown',
+    'label' => t("New Revision"),
+  );
+
+  return $items;
+}
+
+/**
+ * TODO: Implements hook_rules_action_info() on behalf of the workbench_moderation module.
+ *
+function workbench_moderation_rules_action_info() {
+  $items = array();
+
+  $items['workbench_moderation_set_state' = array(
+    'label' => t("Set Moderation State"),
+    'group' => t("Node"),
+    'base' => 'workbench_moderation_set_state_action',
+    'parameter' => killfile_rules_actions_parameters(t("Content")),
+    'access callback' => 'rules_node_integration_access',
+  );
+
+  return $items;
+}
+//*/
+
+/**
+ * Condition: Check if the content is live revision
+ *
+ * @param $node
+ *   A node object
+ *
+ * @return
+ *   TRUE/FALSE depending on if the content is live revision.
+ */
+function workbench_moderation_rules_condition_content_is_live_revision($node) {
+  if (!is_object($node)){
+    return FALSE;
+  }
+
+  return workbench_moderation_node_is_current($node);
+}
