diff --git a/pengine/graph.c b/pengine/graph.c
index ad75635103..a4a84d66f2 100644
--- a/pengine/graph.c
+++ b/pengine/graph.c
@@ -1,801 +1,808 @@
 /* 
  * Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  * 
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
 #include <crm_internal.h>
 
 #include <sys/param.h>
 #include <crm/crm.h>
 #include <crm/cib.h>
 #include <crm/msg_xml.h>
 #include <crm/common/xml.h>
 #include <crm/common/msg.h>
 
 #include <glib.h>
 
 #include <allocate.h>
 #include <lib/pengine/utils.h>
 #include <utils.h>
 
 gboolean update_action(action_t * action);
 gboolean rsc_update_action(action_t * first, action_t * then, enum pe_ordering type);
 
 static enum pe_action_flags
 get_action_flags(action_t * action, node_t * node)
 {
     enum pe_action_flags flags = action->flags;
 
     if (action->rsc) {
         flags = action->rsc->cmds->action_flags(action, NULL);
 
         if (action->rsc->variant >= pe_clone && node) {
 
             /* We only care about activity on $node */
             enum pe_action_flags clone_flags = action->rsc->cmds->action_flags(action, node);
 
             /* Go to great lengths to ensure the correct value for pe_action_runnable...
              *
              * If we are a clone, then for _ordering_ constraints, its only relevant
              * if we are runnable _anywhere_.
              *
              * This only applies to _runnable_ though, and only for ordering constraints.
              * If this function is ever used during colocation, then we'll need additional logic
              *
              * Not very satisfying, but its logical and appears to work well.
              */
             if (is_not_set(clone_flags, pe_action_runnable)
                 && is_set(flags, pe_action_runnable)) {
                 crm_trace("Fixing up runnable flag for %s", action->uuid);
                 set_bit_inplace(clone_flags, pe_action_runnable);
             }
             flags = clone_flags;
         }
     }
     return flags;
 }
 
 static char *
 convert_non_atomic_uuid(char *old_uuid, resource_t * rsc, gboolean allow_notify,
                         gboolean free_original)
 {
     int interval = 0;
     char *uuid = NULL;
     char *rid = NULL;
     char *raw_task = NULL;
     int task = no_action;
 
     crm_trace("Processing %s", old_uuid);
     if (old_uuid == NULL) {
         return NULL;
 
     } else if (strstr(old_uuid, "notify") != NULL) {
         goto done;              /* no conversion */
 
     } else if (rsc->variant < pe_group) {
         goto done;              /* no conversion */
     }
 
     CRM_ASSERT(parse_op_key(old_uuid, &rid, &raw_task, &interval));
     if (interval > 0) {
         goto done;              /* no conversion */
     }
 
     task = text2task(raw_task);
     switch (task) {
         case stop_rsc:
         case start_rsc:
         case action_notify:
         case action_promote:
         case action_demote:
             break;
         case stopped_rsc:
         case started_rsc:
         case action_notified:
         case action_promoted:
         case action_demoted:
             task--;
             break;
         case monitor_rsc:
         case shutdown_crm:
         case stonith_node:
             task = no_action;
             break;
         default:
             crm_err("Unknown action: %s", raw_task);
             task = no_action;
             break;
     }
 
     if (task != no_action) {
         if (is_set(rsc->flags, pe_rsc_notify) && allow_notify) {
             uuid = generate_notify_key(rid, "confirmed-post", task2text(task + 1));
 
         } else {
             uuid = generate_op_key(rid, task2text(task + 1), 0);
         }
         crm_trace("Converted %s -> %s", old_uuid, uuid);
     }
 
   done:
     if (uuid == NULL) {
         uuid = crm_strdup(old_uuid);
     }
 
     if (free_original) {
         crm_free(old_uuid);
     }
 
     crm_free(raw_task);
     crm_free(rid);
     return uuid;
 }
 
 static action_t *
 rsc_expand_action(action_t * action)
 {
     action_t *result = action;
 
     if (action->rsc && action->rsc->variant >= pe_group) {
         /* Expand 'start' -> 'started' */
         char *uuid = NULL;
         gboolean notify = FALSE;
 
         if (action->rsc->parent == NULL) {
             /* Only outter-most resources have notification actions */
             notify = is_set(action->rsc->flags, pe_rsc_notify);
         }
 
         uuid = convert_non_atomic_uuid(action->uuid, action->rsc, notify, FALSE);
         if (uuid) {
             crm_trace("Converting %s to %s %d", action->uuid, uuid,
                       is_set(action->rsc->flags, pe_rsc_notify));
             result = find_first_action(action->rsc->actions, uuid, NULL, NULL);
             if (result == NULL) {
                 crm_err("Couldn't expand %s", action->uuid);
                 result = action;
             }
             crm_free(uuid);
         }
     }
     return result;
 }
 
 static enum pe_graph_flags
 graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags,
                     enum pe_ordering type)
 {
     enum pe_graph_flags changed = pe_graph_none;
     gboolean processed = FALSE;
 
     /* TODO: Do as many of these in parallel as possible */
 
     if (type & pe_order_implies_then) {
         crm_trace("implies right: %s then %s", first->uuid, then->uuid);
         processed = TRUE;
         if (then->rsc) {
             changed |=
                 then->rsc->cmds->update_actions(first, then, node, flags & pe_action_optional,
                                                 pe_action_optional, pe_order_implies_then);
 
         } else if (is_set(flags, pe_action_optional) == FALSE) {
             if (update_action_flags(then, pe_action_optional | pe_action_clear)) {
                 changed |= pe_graph_updated_then;
             }
         }
     }
 
     if ((type & pe_order_restart) && then->rsc) {
         enum pe_action_flags restart = (pe_action_optional | pe_action_runnable);
 
         crm_trace("restart: %s then %s", first->uuid, then->uuid);
         processed = TRUE;
         changed |=
             then->rsc->cmds->update_actions(first, then, node, flags & restart, restart,
                                             pe_order_restart);
     }
 
     if (type & pe_order_implies_first) {
         crm_trace("implies left: %s then %s", first->uuid, then->uuid);
         processed = TRUE;
         if (first->rsc) {
             changed |=
                 first->rsc->cmds->update_actions(first, then, node, flags & pe_action_optional,
                                                  pe_action_optional, pe_order_implies_first);
 
         } else if (is_set(flags, pe_action_optional) == FALSE) {
             if (update_action_flags(first, pe_action_runnable | pe_action_clear)) {
                 changed |= pe_graph_updated_first;
             }
         }
     }
 
     if (type & pe_order_runnable_left) {
         crm_trace("runnable: %s then %s", first->uuid, then->uuid);
         processed = TRUE;
         if (then->rsc) {
             changed |=
                 then->rsc->cmds->update_actions(first, then, node, flags & pe_action_runnable,
                                                 pe_action_runnable, pe_order_runnable_left);
 
         } else if (is_set(flags, pe_action_runnable) == FALSE) {
             if (update_action_flags(then, pe_action_runnable | pe_action_clear)) {
                 changed |= pe_graph_updated_then;
             }
         }
     }
 
     if (type & pe_order_optional) {
         crm_trace("optional: %s then %s", first->uuid, then->uuid);
         processed = TRUE;
         if (then->rsc) {
             changed |=
                 then->rsc->cmds->update_actions(first, then, node, flags & pe_action_runnable,
                                                 pe_action_runnable, pe_order_optional);
         }
     }
 
     if ((type & pe_order_implies_then_printed) && (flags & pe_action_optional) == 0) {
         processed = TRUE;
         crm_trace("%s implies %s printed", first->uuid, then->uuid);
         update_action_flags(then, pe_action_print_always);      /* dont care about changed */
     }
 
     if ((type & pe_order_implies_first_printed) && (flags & pe_action_optional) == 0) {
         processed = TRUE;
         crm_trace("%s implies %s printed", then->uuid, first->uuid);
         update_action_flags(first, pe_action_print_always);     /* dont care about changed */
     }
 
     if (processed == FALSE) {
         crm_trace("Constraint 0x%.6x not applicable", type);
     }
 
     return changed;
 }
 
 gboolean
 update_action(action_t * then)
 {
     GListPtr lpc = NULL;
     enum pe_graph_flags changed = pe_graph_none;
 
     crm_trace("Processing %s (%s %s %s)",
               then->uuid,
               is_set(then->flags, pe_action_optional) ? "optional" : "required",
               is_set(then->flags, pe_action_runnable) ? "runnable" : "unrunnable",
               is_set(then->flags,
                      pe_action_pseudo) ? "pseudo" : then->node ? then->node->details->uname : "");
     for (lpc = then->actions_before; lpc != NULL; lpc = lpc->next) {
         action_wrapper_t *other = (action_wrapper_t *) lpc->data;
         action_t *first = other->action;
 
         node_t *then_node = then->node;
         node_t *first_node = first->node;
 
         enum pe_action_flags then_flags = 0;
         enum pe_action_flags first_flags = 0;
 
         if (first->rsc && first->rsc->variant == pe_group && safe_str_eq(first->task, RSC_START)) {
             first_node = first->rsc->fns->location(first->rsc, NULL, FALSE);
             if (first_node) {
                 crm_trace("First: Found node %s for %s", first_node->details->uname, first->uuid);
             }
         }
 
         if (then->rsc && then->rsc->variant == pe_group && safe_str_eq(then->task, RSC_START)) {
             then_node = then->rsc->fns->location(then->rsc, NULL, FALSE);
             if (then_node) {
                 crm_trace("Then: Found node %s for %s", then_node->details->uname, then->uuid);
             }
         }
 
         clear_bit_inplace(changed, pe_graph_updated_first);
 
         if (first->rsc != then->rsc
             && first->rsc != NULL && then->rsc != NULL && first->rsc != then->rsc->parent) {
             first = rsc_expand_action(first);
         }
         if (first != other->action) {
             crm_trace("Ordering %s afer %s instead of %s", then->uuid, first->uuid,
                       other->action->uuid);
         }
 
         first_flags = get_action_flags(first, then_node);
         then_flags = get_action_flags(then, first_node);
 
         crm_trace("Checking %s (%s %s %s) against %s (%s %s %s) 0x%.6x",
                   then->uuid,
                   is_set(then_flags, pe_action_optional) ? "optional" : "required",
                   is_set(then_flags, pe_action_runnable) ? "runnable" : "unrunnable",
                   is_set(then_flags,
                          pe_action_pseudo) ? "pseudo" : then->node ? then->node->details->
                   uname : "", first->uuid, is_set(first_flags,
                                                   pe_action_optional) ? "optional" : "required",
                   is_set(first_flags, pe_action_runnable) ? "runnable" : "unrunnable",
                   is_set(first_flags,
                          pe_action_pseudo) ? "pseudo" : first->node ? first->node->details->
                   uname : "", other->type);
 
         if (first == other->action) {
             clear_bit_inplace(first_flags, pe_action_pseudo);
             changed |= graph_update_action(first, then, then->node, first_flags, other->type);
 
         } else if (order_actions(first, then, other->type)) {
             /* Start again to get the new actions_before list */
             changed |= (pe_graph_updated_then | pe_graph_disable);
         }
 
         if (changed & pe_graph_disable) {
             crm_trace("Disabled constraint %s -> %s", other->action->uuid, then->uuid);
             clear_bit_inplace(changed, pe_graph_disable);
             other->type = pe_order_none;
         }
 
         if (changed & pe_graph_updated_first) {
             GListPtr lpc2 = NULL;
 
             crm_trace("Updated %s (first %s %s %s), processing dependants ",
                       first->uuid,
                       is_set(first->flags, pe_action_optional) ? "optional" : "required",
                       is_set(first->flags, pe_action_runnable) ? "runnable" : "unrunnable",
                       is_set(first->flags,
                              pe_action_pseudo) ? "pseudo" : first->node ? first->node->details->
                       uname : "");
             for (lpc2 = first->actions_after; lpc2 != NULL; lpc2 = lpc2->next) {
                 action_wrapper_t *other = (action_wrapper_t *) lpc2->data;
 
                 update_action(other->action);
             }
             update_action(first);
         }
     }
 
     if (changed & pe_graph_updated_then) {
         crm_trace("Updated %s (then %s %s %s), processing dependants ",
                   then->uuid,
                   is_set(then->flags, pe_action_optional) ? "optional" : "required",
                   is_set(then->flags, pe_action_runnable) ? "runnable" : "unrunnable",
                   is_set(then->flags,
                          pe_action_pseudo) ? "pseudo" : then->node ? then->node->details->
                   uname : "");
 
         update_action(then);
         for (lpc = then->actions_after; lpc != NULL; lpc = lpc->next) {
             action_wrapper_t *other = (action_wrapper_t *) lpc->data;
 
             update_action(other->action);
         }
     }
 
     return FALSE;
 }
 
 gboolean
 shutdown_constraints(node_t * node, action_t * shutdown_op, pe_working_set_t * data_set)
 {
     /* add the stop to the before lists so it counts as a pre-req
      * for the shutdown
      */
     GListPtr lpc = NULL;
 
-    for (lpc = node->details->running_rsc; lpc != NULL; lpc = lpc->next) {
-        resource_t *rsc = (resource_t *) lpc->data;
+    for (lpc = data_set->actions; lpc != NULL; lpc = lpc->next) {
+        action_t *action = (action_t *) lpc->data;
 
-        if (is_not_set(rsc->flags, pe_rsc_managed)) {
+        if (action->rsc == NULL || action->node == NULL) {
+            continue;
+        } else if(is_not_set(action->rsc->flags, pe_rsc_managed)) {
+            continue;
+        } else if(action->node->details != node->details) {
+            continue;
+        } else if(safe_str_neq(action->task, RSC_STOP)) {
             continue;
         }
 
-        custom_action_order(rsc, stop_key(rsc), NULL,
+        crm_trace("Ordering %s before shutdown on %s", action->uuid, node->details->uname);
+        custom_action_order(action->rsc, NULL, action,
                             NULL, crm_strdup(CRM_OP_SHUTDOWN), shutdown_op,
                             pe_order_optional, data_set);
     }
 
     return TRUE;
 }
 
 gboolean
 stonith_constraints(node_t * node, action_t * stonith_op, pe_working_set_t * data_set)
 {
     CRM_CHECK(stonith_op != NULL, return FALSE);
 
     /*
      * Make sure the stonith OP occurs before we start any shared resources
      */
     if (stonith_op != NULL) {
         GListPtr lpc = NULL;
 
         for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) {
             resource_t *rsc = (resource_t *) lpc->data;
 
             rsc_stonith_ordering(rsc, stonith_op, data_set);
         }
     }
 
     /* add the stonith OP as a stop pre-req and the mark the stop
      * as a pseudo op - since its now redundant
      */
 
     return TRUE;
 }
 
 xmlNode *
 action2xml(action_t * action, gboolean as_input)
 {
     gboolean needs_node_info = TRUE;
     xmlNode *action_xml = NULL;
     xmlNode *args_xml = NULL;
     char *action_id_s = NULL;
 
     if (action == NULL) {
         return NULL;
     }
 
     crm_trace("Dumping action %d as XML", action->id);
     if (safe_str_eq(action->task, CRM_OP_FENCE)) {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
 /* 		needs_node_info = FALSE; */
 
     } else if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
 
     } else if (safe_str_eq(action->task, CRM_OP_CLEAR_FAILCOUNT)) {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
 
     } else if (safe_str_eq(action->task, CRM_OP_LRM_REFRESH)) {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
 
 /* 	} else if(safe_str_eq(action->task, RSC_PROBED)) { */
 /* 		action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); */
 
     } else if (is_set(action->flags, pe_action_pseudo)) {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_PSEUDO_EVENT);
         needs_node_info = FALSE;
 
     } else {
         action_xml = create_xml_node(NULL, XML_GRAPH_TAG_RSC_OP);
     }
 
     action_id_s = crm_itoa(action->id);
     crm_xml_add(action_xml, XML_ATTR_ID, action_id_s);
     crm_free(action_id_s);
 
     crm_xml_add(action_xml, XML_LRM_ATTR_TASK, action->task);
     if (action->rsc != NULL && action->rsc->clone_name != NULL) {
         char *clone_key = NULL;
         const char *interval_s = g_hash_table_lookup(action->meta, "interval");
         int interval = crm_parse_int(interval_s, "0");
 
         if (safe_str_eq(action->task, RSC_NOTIFY)) {
             const char *n_type = g_hash_table_lookup(action->meta, "notify_type");
             const char *n_task = g_hash_table_lookup(action->meta, "notify_operation");
 
             CRM_CHECK(n_type != NULL, crm_err("No notify type value found for %s", action->uuid));
             CRM_CHECK(n_task != NULL,
                       crm_err("No notify operation value found for %s", action->uuid));
             clone_key = generate_notify_key(action->rsc->clone_name, n_type, n_task);
 
         } else {
             clone_key = generate_op_key(action->rsc->clone_name, action->task, interval);
         }
 
         CRM_CHECK(clone_key != NULL, crm_err("Could not generate a key for %s", action->uuid));
         crm_xml_add(action_xml, XML_LRM_ATTR_TASK_KEY, clone_key);
         crm_xml_add(action_xml, "internal_" XML_LRM_ATTR_TASK_KEY, action->uuid);
         crm_free(clone_key);
 
     } else {
         crm_xml_add(action_xml, XML_LRM_ATTR_TASK_KEY, action->uuid);
     }
 
     if (needs_node_info && action->node != NULL) {
         crm_xml_add(action_xml, XML_LRM_ATTR_TARGET, action->node->details->uname);
 
         crm_xml_add(action_xml, XML_LRM_ATTR_TARGET_UUID, action->node->details->id);
     }
 
     if (is_set(action->flags, pe_action_failure_is_fatal) == FALSE) {
         add_hash_param(action->meta, XML_ATTR_TE_ALLOWFAIL, XML_BOOLEAN_TRUE);
     }
 
     if (as_input) {
         return action_xml;
     }
 
     if (action->rsc) {
         if (is_set(action->flags, pe_action_pseudo) == FALSE) {
             int lpc = 0;
 
             xmlNode *rsc_xml = create_xml_node(action_xml, crm_element_name(action->rsc->xml));
 
             const char *attr_list[] = {
                 XML_AGENT_ATTR_CLASS,
                 XML_AGENT_ATTR_PROVIDER,
                 XML_ATTR_TYPE
             };
 
             if (action->rsc->clone_name != NULL) {
                 crm_debug("Using clone name %s for %s", action->rsc->clone_name, action->rsc->id);
                 crm_xml_add(rsc_xml, XML_ATTR_ID, action->rsc->clone_name);
                 crm_xml_add(rsc_xml, XML_ATTR_ID_LONG, action->rsc->id);
 
             } else {
                 crm_xml_add(rsc_xml, XML_ATTR_ID, action->rsc->id);
                 crm_xml_add(rsc_xml, XML_ATTR_ID_LONG, action->rsc->long_name);
             }
 
             for (lpc = 0; lpc < DIMOF(attr_list); lpc++) {
                 crm_xml_add(rsc_xml, attr_list[lpc],
                             g_hash_table_lookup(action->rsc->meta, attr_list[lpc]));
             }
         }
     }
 
     args_xml = create_xml_node(NULL, XML_TAG_ATTRS);
     crm_xml_add(args_xml, XML_ATTR_CRM_VERSION, CRM_FEATURE_SET);
 
     g_hash_table_foreach(action->extra, hash2field, args_xml);
     if (action->rsc != NULL) {
         g_hash_table_foreach(action->rsc->parameters, hash2smartfield, args_xml);
     }
 
     g_hash_table_foreach(action->meta, hash2metafield, args_xml);
     if (action->rsc != NULL) {
         resource_t *parent = action->rsc;
 
         while (parent != NULL) {
             parent->cmds->append_meta(parent, args_xml);
             parent = parent->parent;
         }
 
     } else if (safe_str_eq(action->task, CRM_OP_FENCE)) {
         g_hash_table_foreach(action->node->details->attrs, hash2metafield, args_xml);
     }
 
     sorted_xml(args_xml, action_xml, FALSE);
     crm_log_xml_trace(action_xml, "dumped action");
     free_xml(args_xml);
 
     return action_xml;
 }
 
 static gboolean
 should_dump_action(action_t * action)
 {
     CRM_CHECK(action != NULL, return FALSE);
 
     if (is_set(action->flags, pe_action_dumped)) {
         crm_trace( "action %d (%s) was already dumped",
                             action->id, action->uuid);
         return FALSE;
 
     } else if (is_set(action->flags, pe_action_runnable) == FALSE) {
         crm_trace( "action %d (%s) was not runnable",
                             action->id, action->uuid);
         return FALSE;
 
     } else if (is_set(action->flags, pe_action_optional)
                && is_set(action->flags, pe_action_print_always) == FALSE) {
         crm_trace( "action %d (%s) was optional", action->id, action->uuid);
         return FALSE;
 
     } else if (action->rsc != NULL && is_not_set(action->rsc->flags, pe_rsc_managed)) {
         const char *interval = NULL;
 
         interval = g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL);
 
         /* make sure probes and recurring monitors go through */
         if (safe_str_neq(action->task, RSC_STATUS) && interval == NULL) {
             crm_trace( "action %d (%s) was for an unmanaged resource (%s)",
                                 action->id, action->uuid, action->rsc->id);
             return FALSE;
         }
     }
 
     if (is_set(action->flags, pe_action_pseudo)
         || safe_str_eq(action->task, CRM_OP_FENCE)
         || safe_str_eq(action->task, CRM_OP_SHUTDOWN)) {
         /* skip the next checks */
         return TRUE;
     }
 
     if (action->node == NULL) {
         pe_err("action %d (%s) was not allocated", action->id, action->uuid);
         log_action(LOG_DEBUG, "Unallocated action", action, FALSE);
         return FALSE;
 
     } else if (action->node->details->online == FALSE) {
         pe_err("action %d was (%s) scheduled for offline node", action->id, action->uuid);
         log_action(LOG_DEBUG, "Action for offline node", action, FALSE);
         return FALSE;
 #if 0
         /* but this would also affect resources that can be safely
          *  migrated before a fencing op
          */
     } else if (action->node->details->unclean == FALSE) {
         pe_err("action %d was (%s) scheduled for unclean node", action->id, action->uuid);
         log_action(LOG_DEBUG, "Action for unclean node", action, FALSE);
         return FALSE;
 #endif
     }
     return TRUE;
 }
 
 /* lowest to highest */
 static gint
 sort_action_id(gconstpointer a, gconstpointer b)
 {
     const action_wrapper_t *action_wrapper2 = (const action_wrapper_t *)a;
     const action_wrapper_t *action_wrapper1 = (const action_wrapper_t *)b;
 
     if (a == NULL) {
         return 1;
     }
     if (b == NULL) {
         return -1;
     }
 
     if (action_wrapper1->action->id > action_wrapper2->action->id) {
         return -1;
     }
 
     if (action_wrapper1->action->id < action_wrapper2->action->id) {
         return 1;
     }
     return 0;
 }
 
 static gboolean
 should_dump_input(int last_action, action_t * action, action_wrapper_t * wrapper)
 {
     int type = wrapper->type;
 
     type &= ~pe_order_implies_first_printed;
     type &= ~pe_order_implies_then_printed;
     type &= ~pe_order_optional;
 
     wrapper->state = pe_link_not_dumped;
     if (last_action == wrapper->action->id) {
         crm_trace( "Input (%d) %s duplicated for %s",
                             wrapper->action->id, wrapper->action->uuid, action->uuid);
         wrapper->state = pe_link_dup;
         return FALSE;
 
     } else if (wrapper->type == pe_order_none) {
         crm_trace( "Input (%d) %s suppressed for %s",
                             wrapper->action->id, wrapper->action->uuid, action->uuid);
         return FALSE;
 
     } else if (is_set(wrapper->action->flags, pe_action_runnable) == FALSE
                && type == pe_order_none && safe_str_neq(wrapper->action->uuid, CRM_OP_PROBED)) {
         crm_trace( "Input (%d) %s optional (ordering) for %s",
                             wrapper->action->id, wrapper->action->uuid, action->uuid);
         return FALSE;
 
     } else if (is_set(action->flags, pe_action_pseudo)
                && (wrapper->type & pe_order_stonith_stop)) {
         crm_trace( "Input (%d) %s suppressed for %s",
                             wrapper->action->id, wrapper->action->uuid, action->uuid);
         return FALSE;
 
     } else if (wrapper->action->rsc
                && wrapper->action->rsc != action->rsc
                && is_set(wrapper->action->rsc->flags, pe_rsc_failed)
                && is_not_set(wrapper->action->rsc->flags, pe_rsc_managed)
                && strstr(wrapper->action->uuid, "_stop_0")
                && action->rsc && action->rsc->variant >= pe_clone) {
         crm_warn("Ignoring requirement that %s comeplete before %s:"
                  " unmanaged failed resources cannot prevent clone shutdown",
                  wrapper->action->uuid, action->uuid);
         return FALSE;
 
     } else if (is_set(wrapper->action->flags, pe_action_dumped)
                || should_dump_action(wrapper->action)) {
         crm_trace( "Input (%d) %s should be dumped for %s", wrapper->action->id,
                             wrapper->action->uuid, action->uuid);
         goto dump;
 
 #if 0
     } else if (is_set(wrapper->action->flags, pe_action_runnable)
                && is_set(wrapper->action->flags, pe_action_pseudo)
                && wrapper->action->rsc->variant != pe_native) {
         crm_crit("Input (%d) %s should be dumped for %s",
                    wrapper->action->id, wrapper->action->uuid, action->uuid);
         goto dump;
 #endif
     } else if (is_set(wrapper->action->flags, pe_action_optional) == TRUE
                && is_set(wrapper->action->flags, pe_action_print_always) == FALSE) {
         crm_trace( "Input (%d) %s optional for %s", wrapper->action->id,
                             wrapper->action->uuid, action->uuid);
         crm_trace( "Input (%d) %s n=%p p=%d r=%d o=%d a=%d f=0x%.6x",
                             wrapper->action->id, wrapper->action->uuid, wrapper->action->node,
                             is_set(wrapper->action->flags, pe_action_pseudo),
                             is_set(wrapper->action->flags, pe_action_runnable),
                             is_set(wrapper->action->flags, pe_action_optional),
                             is_set(wrapper->action->flags, pe_action_print_always), wrapper->type);
         return FALSE;
     }
 
   dump:
     crm_trace( "Input (%d) %s n=%p p=%d r=%d o=%d a=%d f=0x%.6x dumped for %s",
                         wrapper->action->id,
                         wrapper->action->uuid,
                         wrapper->action->node,
                         is_set(wrapper->action->flags, pe_action_pseudo),
                         is_set(wrapper->action->flags, pe_action_runnable),
                         is_set(wrapper->action->flags, pe_action_optional),
                         is_set(wrapper->action->flags, pe_action_print_always),
                         wrapper->type, action->uuid);
     return TRUE;
 }
 
 void
 graph_element_from_action(action_t * action, pe_working_set_t * data_set)
 {
     GListPtr lpc = NULL;
     int last_action = -1;
     int synapse_priority = 0;
     xmlNode *syn = NULL;
     xmlNode *set = NULL;
     xmlNode *in = NULL;
     xmlNode *input = NULL;
     xmlNode *xml_action = NULL;
 
     if (should_dump_action(action) == FALSE) {
         return;
     }
 
     set_bit_inplace(action->flags, pe_action_dumped);
 
     syn = create_xml_node(data_set->graph, "synapse");
     set = create_xml_node(syn, "action_set");
     in = create_xml_node(syn, "inputs");
 
     crm_xml_add_int(syn, XML_ATTR_ID, data_set->num_synapse);
     data_set->num_synapse++;
 
     if (action->rsc != NULL) {
         synapse_priority = action->rsc->priority;
     }
     if (action->priority > synapse_priority) {
         synapse_priority = action->priority;
     }
     if (synapse_priority > 0) {
         crm_xml_add_int(syn, XML_CIB_ATTR_PRIORITY, synapse_priority);
     }
 
     xml_action = action2xml(action, FALSE);
     add_node_nocopy(set, crm_element_name(xml_action), xml_action);
 
     action->actions_before = g_list_sort(action->actions_before, sort_action_id);
 
     for (lpc = action->actions_before; lpc != NULL; lpc = lpc->next) {
         action_wrapper_t *wrapper = (action_wrapper_t *) lpc->data;
 
         if (should_dump_input(last_action, action, wrapper) == FALSE) {
             continue;
         }
 
         wrapper->state = pe_link_dumped;
         CRM_CHECK(last_action < wrapper->action->id,;
             );
         last_action = wrapper->action->id;
         input = create_xml_node(in, "trigger");
 
         xml_action = action2xml(wrapper->action, TRUE);
         add_node_nocopy(input, crm_element_name(xml_action), xml_action);
     }
 }
diff --git a/pengine/regression.sh b/pengine/regression.sh
index 7637e614eb..e85c9c1fce 100755
--- a/pengine/regression.sh
+++ b/pengine/regression.sh
@@ -1,543 +1,544 @@
 #!/bin/bash
 
  # Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
  # 
  # This program is free software; you can redistribute it and/or
  # modify it under the terms of the GNU General Public
  # License as published by the Free Software Foundation; either
  # version 2 of the License, or (at your option) any later version.
  # 
  # This software is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  # General Public License for more details.
  # 
  # You should have received a copy of the GNU General Public
  # License along with this library; if not, write to the Free Software
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  #
 
 core=`dirname $0`
 . $core/regression.core.sh
 io_dir=$test_home/test10
 
 create_mode="true"
 info Generating test outputs for these tests...
 # do_test file description
 
 info Done.
 echo ""
 
 info Performing the following tests from $io_dir
 create_mode="false"
 
 echo ""
 do_test simple1 "Offline     "
 do_test simple2 "Start       "
 do_test simple3 "Start 2     "
 do_test simple4 "Start Failed"
 do_test simple6 "Stop Start  "
 do_test simple7 "Shutdown    "
 #do_test simple8 "Stonith	"
 #do_test simple9 "Lower version"
 #do_test simple10 "Higher version"
 do_test simple11 "Priority (ne)"
 do_test simple12 "Priority (eq)"
 do_test simple8 "Stickiness"
 
 echo ""
 do_test group1 "Group		"
 do_test group2 "Group + Native	"
 do_test group3 "Group + Group	"
 do_test group4 "Group + Native (nothing)"
 do_test group5 "Group + Native (move)   "
 do_test group6 "Group + Group (move)    "
 do_test group7 "Group colocation"
 do_test group13 "Group colocation (cant run)"
 do_test group8 "Group anti-colocation"
 do_test group9 "Group recovery"
 do_test group10 "Group partial recovery"
 do_test group11 "Group target_role"
 do_test group14 "Group stop (graph terminated)"
 do_test group15 "-ve group colocation"
 do_test bug-1573 "Partial stop of a group with two children"
 do_test bug-1718 "Mandatory group ordering - Stop group_FUN"
 do_test bug-lf-2613 "Move group on failure"
 do_test bug-lf-2619 "Move group on clone failure"
 
 echo ""
 do_test rsc_dep1 "Must not     "
 do_test rsc_dep3 "Must         "
 do_test rsc_dep5 "Must not 3   "
 do_test rsc_dep7 "Must 3       "
 do_test rsc_dep10 "Must (but cant)"
 do_test rsc_dep2  "Must (running) "
 do_test rsc_dep8  "Must (running : alt) "
 do_test rsc_dep4  "Must (running + move)"
 do_test asymmetric "Asymmetric - require explicit location constraints"
 
 echo ""
 do_test orphan-0 "Orphan ignore"
 do_test orphan-1 "Orphan stop"
 
 echo ""
 do_test params-0 "Params: No change"
 do_test params-1 "Params: Changed"
 do_test params-2 "Params: Resource definition"
 do_test params-4 "Params: Reload"
 do_test params-5 "Params: Restart based on probe digest"
 do_test novell-251689 "Resource definition change + target_role=stopped"
 do_test bug-lf-2106 "Restart all anonymous clone instances after config change"
 do_test params-6 "Params: Detect reload in previously migrated resource"
 
 echo ""
 do_test target-0 "Target Role : baseline"
 do_test target-1 "Target Role : master"
 do_test target-2 "Target Role : invalid"
 
 echo ""
 do_test domain "Failover domains"
 do_test base-score "Set a node's default score for all nodes"
 
 echo ""
 do_test date-1 "Dates" -t "2005-020"
 do_test date-2 "Date Spec - Pass" -t "2005-020T12:30"
 do_test date-3 "Date Spec - Fail" -t "2005-020T11:30"
 do_test probe-0 "Probe (anon clone)"
 do_test probe-1 "Pending Probe"
 do_test probe-2 "Correctly re-probe cloned groups"
 do_test probe-3 "Probe (pending node)"
 do_test probe-4 "Probe (pending node + stopped resource)" --rc 4
 do_test standby "Standby"
 do_test comments "Comments"
 
 
 echo ""
 do_test order1 "Order start 1     "
 do_test order2 "Order start 2     "
 do_test order3 "Order stop	  "
 do_test order4 "Order (multiple)  "
 do_test order5 "Order (move)  "
 do_test order6 "Order (move w/ restart)  "
 do_test order7 "Order (manditory)  "
 do_test order-optional "Order (score=0)  "
 do_test order-required "Order (score=INFINITY)  "
 do_test bug-lf-2171 "Prevent group start when clone is stopped"
 do_test order-clone "Clone ordering should be able to prevent startup of dependant clones"
 do_test order-sets "Ordering for resource sets"
 do_test order-serialize "Serialize resources without inhibiting migration"
 do_test order-serialize-set "Serialize a set of resources without inhibiting migration"
 do_test clone-order-primitive "Order clone start after a primitive"
 do_test order-optional-keyword "Order (optional keyword)"
 do_test order-mandatory "Order (mandatory keyword)"
 do_test bug-lf-2493 "Don't imply colocation requirements when applying ordering constraints with clones"
 # This test emits an error log and thus upsets the test suite; even
 # though it explicitly aims to test an error leg. FIXME
 # do_test order-wrong-kind "Order (error)"
 
 echo ""
 do_test coloc-loop "Colocation - loop"
 do_test coloc-many-one "Colocation - many-to-one"
 do_test coloc-list "Colocation - many-to-one with list"
 do_test coloc-group "Colocation - groups"
 do_test coloc-slave-anti "Anti-colocation with slave shouldn't prevent master colocation"
 do_test coloc-attr "Colocation based on node attributes"
 do_test coloc-negative-group "Negative colocation with a group"
 do_test coloc-intra-set "Intra-set colocation"
 do_test bug-lf-2435 "Colocation sets with a negative score"
 do_test coloc-clone-stays-active "Ensure clones don't get stopped/demoted because a dependant must stop"
 
 echo ""
 do_test rsc-sets-seq-true "Resource Sets - sequential=false"
 do_test rsc-sets-seq-false "Resource Sets - sequential=true"
 do_test rsc-sets-clone "Resource Sets - Clone"
 do_test rsc-sets-master "Resource Sets - Master"
 do_test rsc-sets-clone-1 "Resource Sets - Clone (lf#2404)"
 
 #echo ""
 #do_test agent1 "version: lt (empty)"
 #do_test agent2 "version: eq	"
 #do_test agent3 "version: gt	"
 
 echo ""
 do_test attrs1 "string: eq (and)     "
 do_test attrs2 "string: lt / gt (and)"
 do_test attrs3 "string: ne (or)      "
 do_test attrs4 "string: exists       "
 do_test attrs5 "string: not_exists   "
 do_test attrs6 "is_dc: true          "
 do_test attrs7 "is_dc: false         "
 do_test attrs8 "score_attribute      "
 
 echo ""
 do_test mon-rsc-1 "Schedule Monitor - start"
 do_test mon-rsc-2 "Schedule Monitor - move "
 do_test mon-rsc-3 "Schedule Monitor - pending start     "
 do_test mon-rsc-4 "Schedule Monitor - move/pending start"
 
 echo ""
 do_test rec-rsc-0 "Resource Recover - no start     "
 do_test rec-rsc-1 "Resource Recover - start        "
 do_test rec-rsc-2 "Resource Recover - monitor      "
 do_test rec-rsc-3 "Resource Recover - stop - ignore"
 do_test rec-rsc-4 "Resource Recover - stop - block "
 do_test rec-rsc-5 "Resource Recover - stop - fence "
 do_test rec-rsc-6 "Resource Recover - multiple - restart"
 do_test rec-rsc-7 "Resource Recover - multiple - stop   "
 do_test rec-rsc-8 "Resource Recover - multiple - block  "
 do_test rec-rsc-9 "Resource Recover - group/group"
 
 echo ""
 do_test quorum-1 "No quorum - ignore"
 do_test quorum-2 "No quorum - freeze"
 do_test quorum-3 "No quorum - stop  "
 do_test quorum-4 "No quorum - start anyway"
 do_test quorum-5 "No quorum - start anyway (group)"
 do_test quorum-6 "No quorum - start anyway (clone)"
 
 echo ""
 do_test rec-node-1 "Node Recover - Startup   - no fence"
 do_test rec-node-2 "Node Recover - Startup   - fence   "
 do_test rec-node-3 "Node Recover - HA down   - no fence"
 do_test rec-node-4 "Node Recover - HA down   - fence   "
 do_test rec-node-5 "Node Recover - CRM down  - no fence"
 do_test rec-node-6 "Node Recover - CRM down  - fence   "
 do_test rec-node-7 "Node Recover - no quorum - ignore  "
 do_test rec-node-8 "Node Recover - no quorum - freeze  "
 do_test rec-node-9 "Node Recover - no quorum - stop    "
 do_test rec-node-10 "Node Recover - no quorum - stop w/fence"
 do_test rec-node-11 "Node Recover - CRM down w/ group - fence   "
 do_test rec-node-12 "Node Recover - nothing active - fence   "
 do_test rec-node-13 "Node Recover - failed resource + shutdown - fence   "
 do_test rec-node-15 "Node Recover - unknown lrm section"
 do_test rec-node-14 "Serialize all stonith's"
 
 echo ""
 do_test multi1 "Multiple Active (stop/start)"
 
 echo ""
 do_test migrate-begin     "Normal migration"
 do_test migrate-success   "Completed migration"
 do_test migrate-partial-1 "Completed migration, missing stop on source"
 do_test migrate-partial-2 "Successful migrate_to only"
 do_test migrate-partial-3 "Successful migrate_to only, target down"
 
 do_test migrate-fail-2 "Failed migrate_from"
 do_test migrate-fail-3 "Failed migrate_from + stop on source"
 do_test migrate-fail-4 "Failed migrate_from + stop on target - ideally we wouldn't need to re-stop on target"
 do_test migrate-fail-5 "Failed migrate_from + stop on source and target"
 
 do_test migrate-fail-6 "Failed migrate_to"
 do_test migrate-fail-7 "Failed migrate_to + stop on source"
 do_test migrate-fail-8 "Failed migrate_to + stop on target - ideally we wouldn't need to re-stop on target"
 do_test migrate-fail-9 "Failed migrate_to + stop on source and target"
 
 do_test migrate-stop "Migration in a stopping stack"
 do_test migrate-start "Migration in a starting stack"
 do_test migrate-stop_start "Migration in a restarting stack"
 do_test migrate-stop-complex "Migration in a complex stopping stack"
 do_test migrate-start-complex "Migration in a complex starting stack"
 do_test migrate-stop-start-complex "Migration in a complex moving stack"
+do_test migrate-shutdown "Order the post-migration 'stop' before node shutdown"
 
 do_test migrate-1 "Migrate (migrate)"
 do_test migrate-2 "Migrate (stable)"
 do_test migrate-3 "Migrate (failed migrate_to)"
 do_test migrate-4 "Migrate (failed migrate_from)"
 do_test novell-252693 "Migration in a stopping stack"
 do_test novell-252693-2 "Migration in a starting stack"
 do_test novell-252693-3 "Non-Migration in a starting and stopping stack"
 do_test bug-1820 "Migration in a group"
 do_test bug-1820-1 "Non-migration in a group"
 do_test migrate-5 "Primitive migration with a clone"
 do_test migrate-fencing "Migration after Fencing"
 
 #echo ""
 #do_test complex1 "Complex	"
 
 do_test bug-lf-2422 "Dependancy on partially active group - stop ocfs:*"
 
 echo ""
 do_test clone-anon-probe-1 "Probe the correct (anonymous) clone instance for each node"
 do_test clone-anon-probe-2 "Avoid needless re-probing of anonymous clones"
 do_test clone-anon-failcount "Merge failcounts for anonymous clones"
 do_test inc0 "Incarnation start" 
 do_test inc1 "Incarnation start order" 
 do_test inc2 "Incarnation silent restart, stop, move"
 do_test inc3 "Inter-incarnation ordering, silent restart, stop, move"
 do_test inc4 "Inter-incarnation ordering, silent restart, stop, move (ordered)"
 do_test inc5 "Inter-incarnation ordering, silent restart, stop, move (restart 1)"
 do_test inc6 "Inter-incarnation ordering, silent restart, stop, move (restart 2)"
 do_test inc7 "Clone colocation"
 do_test inc8 "Clone anti-colocation"
 do_test inc9 "Non-unique clone"
 do_test inc10 "Non-unique clone (stop)"
 do_test inc11 "Primitive colocation with clones" 
 do_test inc12 "Clone shutdown" 
 do_test cloned-group "Make sure only the correct number of cloned groups are started"
 do_test clone-no-shuffle "Dont prioritize allocation of instances that must be moved"
 do_test clone-max-zero "Orphan processing with clone-max=0"
 do_test clone-anon-dup "Bug LF#2087 - Correctly parse the state of anonymous clones that are active more than once per node"
 do_test bug-lf-2160 "Dont shuffle clones due to colocation"
 do_test bug-lf-2213 "clone-node-max enforcement for cloned groups"
 do_test bug-lf-2153 "Clone ordering constraints"
 do_test bug-lf-2361 "Ensure clones observe mandatory ordering constraints if the LHS is unrunnable"
 do_test bug-lf-2317 "Avoid needless restart of primitive depending on a clone"
 do_test clone-colocate-instance-1 "Colocation with a specific clone instance (negative example)"
 do_test clone-colocate-instance-2 "Colocation with a specific clone instance"
 do_test clone-order-instance "Ordering with specific clone instances"
 do_test bug-lf-2453 "Enforce mandatory clone ordering without colocation"
 do_test bug-lf-2508 "Correctly reconstruct the status of anonymous cloned groups" 
 do_test bug-lf-2544 "Balanced clone placement"
 do_test bug-lf-2445 "Redistribute clones with node-max > 1 and stickiness = 0"
 do_test bug-lf-2574 "Avoid clone shuffle"
 do_test bug-lf-2581 "Avoid group restart due to unrelated clone (re)start"
 
 echo ""
 do_test master-0 "Stopped -> Slave"
 do_test master-1 "Stopped -> Promote"
 do_test master-2 "Stopped -> Promote : notify"
 do_test master-3 "Stopped -> Promote : master location"
 do_test master-4 "Started -> Promote : master location"
 do_test master-5 "Promoted -> Promoted"
 do_test master-6 "Promoted -> Promoted (2)"
 do_test master-7 "Promoted -> Fenced"
 do_test master-8 "Promoted -> Fenced -> Moved"
 do_test master-9 "Stopped + Promotable + No quorum"
 do_test master-10 "Stopped -> Promotable : notify with monitor"
 do_test master-11 "Stopped -> Promote : colocation"
 do_test novell-239082 "Demote/Promote ordering"
 do_test novell-239087 "Stable master placement"
 do_test master-12 "Promotion based solely on rsc_location constraints"
 do_test master-13 "Include preferences of colocated resources when placing master"
 do_test master-demote "Ordering when actions depends on demoting a slave resource" 
 do_test master-ordering "Prevent resources from starting that need a master"
 do_test bug-1765 "Master-Master Colocation (dont stop the slaves)"
 do_test master-group "Promotion of cloned groups"
 do_test bug-lf-1852 "Don't shuffle master/slave instances unnecessarily"
 do_test master-failed-demote "Dont retry failed demote actions"
 do_test master-failed-demote-2 "Dont retry failed demote actions (notify=false)"
 do_test master-depend "Ensure resources that depend on the master don't get allocated until the master does"
 do_test master-reattach "Re-attach to a running master"
 do_test master-allow-start "Don't include master score if it would prevent allocation"
 do_test master-colocation "Allow master instances placemaker to be influenced by colocation constraints"
 do_test master-pseudo "Make sure promote/demote pseudo actions are created correctly"
 do_test master-role "Prevent target-role from promoting more than master-max instances"
 do_test bug-lf-2358 "Master-Master anti-colocation"
 do_test master-promotion-constraint "Mandatory master colocation constraints"
 do_test unmanaged-master "Ensure role is preserved for unmanaged resources"
 do_test master-unmanaged-monitor "Start the correct monitor operation for unmanaged masters"
 do_test master-demote-2 "Demote does not clear past failure"
 do_test master-move "Move master based on failure of colocated group"   
 
 echo ""
 do_test history-1 "Correctly parse stateful-1 resource state"
 
 echo ""
 do_test managed-0 "Managed (reference)"
 do_test managed-1 "Not managed - down "
 do_test managed-2 "Not managed - up   "
 
 echo ""
 do_test interleave-0 "Interleave (reference)"
 do_test interleave-1 "coloc - not interleaved"
 do_test interleave-2 "coloc - interleaved   "
 do_test interleave-3 "coloc - interleaved (2)"
 do_test interleave-pseudo-stop "Interleaved clone during stonith"
 do_test interleave-stop "Interleaved clone during stop"
 do_test interleave-restart "Interleaved clone during dependancy restart"
 
 echo ""
 do_test notify-0 "Notify reference"
 do_test notify-1 "Notify simple"
 do_test notify-2 "Notify simple, confirm"
 do_test notify-3 "Notify move, confirm"
 do_test novell-239079 "Notification priority"
 #do_test notify-2 "Notify - 764"
 
 echo ""
 do_test 594 "OSDL #594"
 do_test 662 "OSDL #662"
 do_test 696 "OSDL #696"
 do_test 726 "OSDL #726"
 do_test 735 "OSDL #735"
 do_test 764 "OSDL #764"
 do_test 797 "OSDL #797"
 do_test 829 "OSDL #829"
 do_test 994 "OSDL #994"
 do_test 994-2 "OSDL #994 - with a dependant resource"
 do_test 1360 "OSDL #1360 - Clone stickiness"
 do_test 1484 "OSDL #1484 - on_fail=stop"
 do_test 1494 "OSDL #1494 - Clone stability"
 do_test unrunnable-1 "Unrunnable"
 do_test stonith-0 "Stonith loop - 1"
 do_test stonith-1 "Stonith loop - 2"
 do_test stonith-2 "Stonith loop - 3"
 do_test stonith-3 "Stonith startup"
 do_test bug-1572-1 "Recovery of groups depending on master/slave"
 do_test bug-1572-2 "Recovery of groups depending on master/slave when the master is never re-promoted"
 do_test bug-1685 "Depends-on-master ordering"
 do_test bug-1822 "Dont promote partially active groups"
 do_test bug-pm-11 "New resource added to a m/s group"
 do_test bug-pm-12 "Recover only the failed portion of a cloned group"
 do_test bug-n-387749 "Don't shuffle clone instances"
 do_test bug-n-385265 "Don't ignore the failure stickiness of group children - resource_idvscommon should stay stopped"
 do_test bug-n-385265-2 "Ensure groups are migrated instead of remaining partially active on the current node"
 do_test bug-lf-1920 "Correctly handle probes that find active resources"
 do_test bnc-515172 "Location constraint with multiple expressions"
 do_test colocate-primitive-with-clone "Optional colocation with a clone"
 do_test use-after-free-merge "Use-after-free in native_merge_weights"
 do_test bug-lf-2551 "STONITH ordering for stop"
 do_test bug-lf-2606 "Stonith implies demote"
 do_test bug-lf-2474 "Ensure resource op timeout takes precedence over op_defaults"
 do_test bug-suse-707150 "Prevent vm-01 from starting due to colocation/ordering"
 
 
 echo ""
 do_test systemhealth1  "System Health ()               #1"
 do_test systemhealth2  "System Health ()               #2"
 do_test systemhealth3  "System Health ()               #3"
 do_test systemhealthn1 "System Health (None)           #1"
 do_test systemhealthn2 "System Health (None)           #2"
 do_test systemhealthn3 "System Health (None)           #3"
 do_test systemhealthm1 "System Health (Migrate On Red) #1"
 do_test systemhealthm2 "System Health (Migrate On Red) #2"
 do_test systemhealthm3 "System Health (Migrate On Red) #3"
 do_test systemhealtho1 "System Health (Only Green)     #1"
 do_test systemhealtho2 "System Health (Only Green)     #2"
 do_test systemhealtho3 "System Health (Only Green)     #3"
 do_test systemhealthp1 "System Health (Progessive)     #1"
 do_test systemhealthp2 "System Health (Progessive)     #2"
 do_test systemhealthp3 "System Health (Progessive)     #3"
 
 echo ""
 do_test utilization "Placement Strategy - utilization"
 do_test minimal     "Placement Strategy - minimal"
 do_test balanced    "Placement Strategy - balanced"
 
 echo ""
 do_test placement-stickiness "Optimized Placement Strategy - stickiness"
 do_test placement-priority   "Optimized Placement Strategy - priority"
 do_test placement-location   "Optimized Placement Strategy - location"
 do_test placement-capacity   "Optimized Placement Strategy - capacity"
 
 echo ""
 do_test utilization-order1 "Utilization Order - Simple"
 do_test utilization-order2 "Utilization Order - Complex"
 do_test utilization-order3 "Utilization Order - Migrate"
 do_test utilization-order4 "Utilization Order - Live Mirgration (bnc#695440)"
 do_test utilization-shuffle "Don't displace prmExPostgreSQLDB2 on act2, Start prmExPostgreSQLDB1 on act3"
 
 echo ""
 do_test reprobe-target_rc "Ensure correct target_rc for reprobe of inactive resources"
 
 echo ""
 do_test stopped-monitor-00	"Stopped Monitor - initial start"
 do_test stopped-monitor-01	"Stopped Monitor - failed started"
 do_test stopped-monitor-02	"Stopped Monitor - started multi-up"
 do_test stopped-monitor-03	"Stopped Monitor - stop started"
 do_test stopped-monitor-04	"Stopped Monitor - failed stop"
 do_test stopped-monitor-05	"Stopped Monitor - start unmanaged"
 do_test stopped-monitor-06	"Stopped Monitor - unmanaged multi-up"
 do_test stopped-monitor-07	"Stopped Monitor - start unmanaged multi-up"
 do_test stopped-monitor-08	"Stopped Monitor - migrate"
 do_test stopped-monitor-09	"Stopped Monitor - unmanage started"
 do_test stopped-monitor-10	"Stopped Monitor - unmanaged started multi-up"
 do_test stopped-monitor-11	"Stopped Monitor - stop unmanaged started"
 do_test stopped-monitor-12	"Stopped Monitor - unmanaged started multi-up (targer-role="Stopped")"
 do_test stopped-monitor-20	"Stopped Monitor - initial stop"
 do_test stopped-monitor-21	"Stopped Monitor - stopped single-up"
 do_test stopped-monitor-22	"Stopped Monitor - stopped multi-up"
 do_test stopped-monitor-23	"Stopped Monitor - start stopped"
 do_test stopped-monitor-24	"Stopped Monitor - unmanage stopped"
 do_test stopped-monitor-25	"Stopped Monitor - unmanaged stopped multi-up"
 do_test stopped-monitor-26	"Stopped Monitor - start unmanaged stopped"
 do_test stopped-monitor-27	"Stopped Monitor - unmanaged stopped multi-up (target-role="Started")"
 do_test stopped-monitor-30	"Stopped Monitor - new node started"
 do_test stopped-monitor-31	"Stopped Monitor - new node stopped"
 
 echo""
 do_test ticket-primitive-1 "Ticket - Primitive (loss-policy=stop, initial)"
 do_test ticket-primitive-2 "Ticket - Primitive (loss-policy=stop, granted)"
 do_test ticket-primitive-3 "Ticket - Primitive (loss-policy-stop, revoked)"
 do_test ticket-primitive-4 "Ticket - Primitive (loss-policy=demote, initial)"
 do_test ticket-primitive-5 "Ticket - Primitive (loss-policy=demote, granted)"
 do_test ticket-primitive-6 "Ticket - Primitive (loss-policy=demote, revoked)"
 do_test ticket-primitive-7 "Ticket - Primitive (loss-policy=fence, initial)"
 do_test ticket-primitive-8 "Ticket - Primitive (loss-policy=fence, granted)"
 do_test ticket-primitive-9 "Ticket - Primitive (loss-policy=fence, revoked)"
 do_test ticket-primitive-10 "Ticket - Primitive (loss-policy=freeze, initial)"
 do_test ticket-primitive-11 "Ticket - Primitive (loss-policy=freeze, granted)"
 do_test ticket-primitive-12 "Ticket - Primitive (loss-policy=freeze, revoked)"
 
 echo""
 do_test ticket-group-1 "Ticket - Group (loss-policy=stop, initial)"
 do_test ticket-group-2 "Ticket - Group (loss-policy=stop, granted)"
 do_test ticket-group-3 "Ticket - Group (loss-policy-stop, revoked)"
 do_test ticket-group-4 "Ticket - Group (loss-policy=demote, initial)"
 do_test ticket-group-5 "Ticket - Group (loss-policy=demote, granted)"
 do_test ticket-group-6 "Ticket - Group (loss-policy=demote, revoked)"
 do_test ticket-group-7 "Ticket - Group (loss-policy=fence, initial)"
 do_test ticket-group-8 "Ticket - Group (loss-policy=fence, granted)"
 do_test ticket-group-9 "Ticket - Group (loss-policy=fence, revoked)"
 do_test ticket-group-10 "Ticket - Group (loss-policy=freeze, initial)"
 do_test ticket-group-11 "Ticket - Group (loss-policy=freeze, granted)"
 do_test ticket-group-12 "Ticket - Group (loss-policy=freeze, revoked)"
   
 echo""
 do_test ticket-clone-1 "Ticket - Clone (loss-policy=stop, initial)"
 do_test ticket-clone-2 "Ticket - Clone (loss-policy=stop, granted)"
 do_test ticket-clone-3 "Ticket - Clone (loss-policy-stop, revoked)"
 do_test ticket-clone-4 "Ticket - Clone (loss-policy=demote, initial)"
 do_test ticket-clone-5 "Ticket - Clone (loss-policy=demote, granted)"
 do_test ticket-clone-6 "Ticket - Clone (loss-policy=demote, revoked)"
 do_test ticket-clone-7 "Ticket - Clone (loss-policy=fence, initial)"
 do_test ticket-clone-8 "Ticket - Clone (loss-policy=fence, granted)"
 do_test ticket-clone-9 "Ticket - Clone (loss-policy=fence, revoked)"
 do_test ticket-clone-10 "Ticket - Clone (loss-policy=freeze, initial)"
 do_test ticket-clone-11 "Ticket - Clone (loss-policy=freeze, granted)"
 do_test ticket-clone-12 "Ticket - Clone (loss-policy=freeze, revoked)"
   
 echo""  
 do_test ticket-master-1 "Ticket - Master (loss-policy=stop, initial)"
 do_test ticket-master-2 "Ticket - Master (loss-policy=stop, granted)"
 do_test ticket-master-3 "Ticket - Master (loss-policy-stop, revoked)"
 do_test ticket-master-4 "Ticket - Master (loss-policy=demote, initial)"
 do_test ticket-master-5 "Ticket - Master (loss-policy=demote, granted)"
 do_test ticket-master-6 "Ticket - Master (loss-policy=demote, revoked)"
 do_test ticket-master-7 "Ticket - Master (loss-policy=fence, initial)"
 do_test ticket-master-8 "Ticket - Master (loss-policy=fence, granted)"
 do_test ticket-master-9 "Ticket - Master (loss-policy=fence, revoked)"
 do_test ticket-master-10 "Ticket - Master (loss-policy=freeze, initial)"
 do_test ticket-master-11 "Ticket - Master (loss-policy=freeze, granted)"
 do_test ticket-master-12 "Ticket - Master (loss-policy=freeze, revoked)"
 
 echo ""
 do_test ticket-rsc-sets-1 "Ticket - Resource sets (1 ticket, initial)"
 do_test ticket-rsc-sets-2 "Ticket - Resource sets (1 ticket, granted)"
 do_test ticket-rsc-sets-3 "Ticket - Resource sets (1 ticket, revoked)"
 do_test ticket-rsc-sets-4 "Ticket - Resource sets (2 tickets, initial)"
 do_test ticket-rsc-sets-5 "Ticket - Resource sets (2 tickets, granted)"
 do_test ticket-rsc-sets-6 "Ticket - Resource sets (2 tickets, granted)"
 do_test ticket-rsc-sets-7 "Ticket - Resource sets (2 tickets, revoked)"
 
 echo ""
 do_test template-1 "Template - 1"
 do_test template-2 "Template - 2"
 do_test template-3 "Template - 3 (merge operations)"
 
 do_test template-coloc-1 "Template - Colocation 1"
 do_test template-coloc-2 "Template - Colocation 2"
 do_test template-coloc-3 "Template - Colocation 3"
 do_test template-order-1 "Template - Order 1"
 do_test template-order-2 "Template - Order 2"
 do_test template-order-3 "Template - Order 3"
 do_test template-ticket  "Template - Ticket"
 
 do_test template-rsc-sets-1  "Template - Resource Sets 1"
 do_test template-rsc-sets-2  "Template - Resource Sets 2"
 do_test template-rsc-sets-3  "Template - Resource Sets 3"
 do_test template-rsc-sets-4  "Template - Resource Sets 4"
 
 echo ""
 
 test_results
diff --git a/pengine/test10/migrate-shutdown.dot b/pengine/test10/migrate-shutdown.dot
new file mode 100644
index 0000000000..412c68e6ca
--- /dev/null
+++ b/pengine/test10/migrate-shutdown.dot
@@ -0,0 +1,97 @@
+digraph "g" {
+"Connectivity_stop_0" -> "Connectivity_stopped_0" [ style = bold]
+"Connectivity_stop_0" -> "ping-1:0_stop_0 pcmk-1" [ style = bold]
+"Connectivity_stop_0" -> "ping-1:1_stop_0 pcmk-2" [ style = bold]
+"Connectivity_stop_0" -> "ping-1:3_stop_0 pcmk-4" [ style = bold]
+"Connectivity_stop_0" [ style=bold color="green" fontcolor="orange"]
+"Connectivity_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"Fencing_stop_0 pcmk-1" -> "do_shutdown pcmk-1" [ style = bold]
+"Fencing_stop_0 pcmk-1" [ style=bold color="green" fontcolor="black"]
+"all_stopped" -> "Fencing_stop_0 pcmk-1" [ style = bold]
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
+"do_shutdown pcmk-1" [ style=bold color="green" fontcolor="black"]
+"do_shutdown pcmk-2" -> "do_shutdown pcmk-1" [ style = bold]
+"do_shutdown pcmk-2" [ style=bold color="green" fontcolor="black"]
+"do_shutdown pcmk-3" -> "do_shutdown pcmk-1" [ style = bold]
+"do_shutdown pcmk-3" [ style=bold color="green" fontcolor="black"]
+"do_shutdown pcmk-4" -> "do_shutdown pcmk-1" [ style = bold]
+"do_shutdown pcmk-4" [ style=bold color="green" fontcolor="black"]
+"group-1_stop_0" -> "group-1_stopped_0" [ style = bold]
+"group-1_stop_0" -> "r192.168.122.105_stop_0 pcmk-2" [ style = bold]
+"group-1_stop_0" -> "r192.168.122.106_stop_0 pcmk-2" [ style = bold]
+"group-1_stop_0" -> "r192.168.122.107_stop_0 pcmk-2" [ style = bold]
+"group-1_stop_0" [ style=bold color="green" fontcolor="orange"]
+"group-1_stopped_0" -> "master-1_demote_0" [ style = bold]
+"group-1_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"lsb-dummy_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"lsb-dummy_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"lsb-dummy_stop_0 pcmk-2" -> "group-1_stop_0" [ style = bold]
+"lsb-dummy_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"master-1_demote_0" -> "master-1_demoted_0" [ style = bold]
+"master-1_demote_0" -> "stateful-1:0_demote_0 pcmk-2" [ style = bold]
+"master-1_demote_0" [ style=bold color="green" fontcolor="orange"]
+"master-1_demoted_0" -> "master-1_stop_0" [ style = bold]
+"master-1_demoted_0" [ style=bold color="green" fontcolor="orange"]
+"master-1_stop_0" -> "master-1_stopped_0" [ style = bold]
+"master-1_stop_0" -> "stateful-1:0_stop_0 pcmk-2" [ style = bold]
+"master-1_stop_0" -> "stateful-1:2_stop_0 pcmk-1" [ style = bold]
+"master-1_stop_0" -> "stateful-1:3_stop_0 pcmk-4" [ style = bold]
+"master-1_stop_0" [ style=bold color="green" fontcolor="orange"]
+"master-1_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"migrator_stop_0 pcmk-1" -> "all_stopped" [ style = bold]
+"migrator_stop_0 pcmk-1" -> "do_shutdown pcmk-1" [ style = bold]
+"migrator_stop_0 pcmk-1" [ style=bold color="green" fontcolor="black"]
+"migrator_stop_0 pcmk-3" -> "all_stopped" [ style = bold]
+"migrator_stop_0 pcmk-3" -> "do_shutdown pcmk-3" [ style = bold]
+"migrator_stop_0 pcmk-3" [ style=bold color="green" fontcolor="black"]
+"ping-1:0_stop_0 pcmk-1" -> "Connectivity_stopped_0" [ style = bold]
+"ping-1:0_stop_0 pcmk-1" -> "all_stopped" [ style = bold]
+"ping-1:0_stop_0 pcmk-1" -> "do_shutdown pcmk-1" [ style = bold]
+"ping-1:0_stop_0 pcmk-1" [ style=bold color="green" fontcolor="black"]
+"ping-1:1_stop_0 pcmk-2" -> "Connectivity_stopped_0" [ style = bold]
+"ping-1:1_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"ping-1:1_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"ping-1:1_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"ping-1:3_stop_0 pcmk-4" -> "Connectivity_stopped_0" [ style = bold]
+"ping-1:3_stop_0 pcmk-4" -> "all_stopped" [ style = bold]
+"ping-1:3_stop_0 pcmk-4" -> "do_shutdown pcmk-4" [ style = bold]
+"ping-1:3_stop_0 pcmk-4" [ style=bold color="green" fontcolor="black"]
+"r192.168.122.105_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"r192.168.122.105_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"r192.168.122.105_stop_0 pcmk-2" -> "group-1_stopped_0" [ style = bold]
+"r192.168.122.105_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"r192.168.122.106_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"r192.168.122.106_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"r192.168.122.106_stop_0 pcmk-2" -> "group-1_stopped_0" [ style = bold]
+"r192.168.122.106_stop_0 pcmk-2" -> "r192.168.122.105_stop_0 pcmk-2" [ style = bold]
+"r192.168.122.106_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"r192.168.122.107_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"r192.168.122.107_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"r192.168.122.107_stop_0 pcmk-2" -> "group-1_stopped_0" [ style = bold]
+"r192.168.122.107_stop_0 pcmk-2" -> "r192.168.122.106_stop_0 pcmk-2" [ style = bold]
+"r192.168.122.107_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"rsc_pcmk-1_stop_0 pcmk-1" -> "all_stopped" [ style = bold]
+"rsc_pcmk-1_stop_0 pcmk-1" -> "do_shutdown pcmk-1" [ style = bold]
+"rsc_pcmk-1_stop_0 pcmk-1" [ style=bold color="green" fontcolor="black"]
+"rsc_pcmk-2_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"rsc_pcmk-2_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"rsc_pcmk-2_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"rsc_pcmk-4_stop_0 pcmk-4" -> "all_stopped" [ style = bold]
+"rsc_pcmk-4_stop_0 pcmk-4" -> "do_shutdown pcmk-4" [ style = bold]
+"rsc_pcmk-4_stop_0 pcmk-4" [ style=bold color="green" fontcolor="black"]
+"stateful-1:0_demote_0 pcmk-2" -> "master-1_demoted_0" [ style = bold]
+"stateful-1:0_demote_0 pcmk-2" -> "stateful-1:0_stop_0 pcmk-2" [ style = bold]
+"stateful-1:0_demote_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"stateful-1:0_stop_0 pcmk-2" -> "all_stopped" [ style = bold]
+"stateful-1:0_stop_0 pcmk-2" -> "do_shutdown pcmk-2" [ style = bold]
+"stateful-1:0_stop_0 pcmk-2" -> "master-1_stopped_0" [ style = bold]
+"stateful-1:0_stop_0 pcmk-2" [ style=bold color="green" fontcolor="black"]
+"stateful-1:2_stop_0 pcmk-1" -> "all_stopped" [ style = bold]
+"stateful-1:2_stop_0 pcmk-1" -> "do_shutdown pcmk-1" [ style = bold]
+"stateful-1:2_stop_0 pcmk-1" -> "master-1_stopped_0" [ style = bold]
+"stateful-1:2_stop_0 pcmk-1" [ style=bold color="green" fontcolor="black"]
+"stateful-1:3_stop_0 pcmk-4" -> "all_stopped" [ style = bold]
+"stateful-1:3_stop_0 pcmk-4" -> "do_shutdown pcmk-4" [ style = bold]
+"stateful-1:3_stop_0 pcmk-4" -> "master-1_stopped_0" [ style = bold]
+"stateful-1:3_stop_0 pcmk-4" [ style=bold color="green" fontcolor="black"]
+}
diff --git a/pengine/test10/migrate-shutdown.exp b/pengine/test10/migrate-shutdown.exp
new file mode 100644
index 0000000000..57e1a11b8e
--- /dev/null
+++ b/pengine/test10/migrate-shutdown.exp
@@ -0,0 +1,478 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="1" batch-limit="10" transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <rsc_op id="22" operation="stop" operation_key="Fencing_stop_0" on_node="pcmk-1" on_node_uuid="101">
+        <primitive id="Fencing" long-id="Fencing" class="stonith" type="fence_xvm"/>
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="180000" crm_feature_set="3.0.6" pcmk_arg_map="domain:uname"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="16" operation="all_stopped" operation_key="all_stopped"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <pseudo_event id="29" operation="stopped" operation_key="group-1_stopped_0">
+        <attributes CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="23" operation="stop" operation_key="r192.168.122.105_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="24" operation="stop" operation_key="r192.168.122.106_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="25" operation="stop" operation_key="r192.168.122.107_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="28" operation="stop" operation_key="group-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <pseudo_event id="28" operation="stop" operation_key="group-1_stop_0">
+        <attributes CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="33" operation="stop" operation_key="lsb-dummy_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="3">
+    <action_set>
+      <rsc_op id="23" operation="stop" operation_key="r192.168.122.105_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="r192.168.122.105" long-id="group-1:r192.168.122.105" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.105"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="24" operation="stop" operation_key="r192.168.122.106_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="28" operation="stop" operation_key="group-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="4">
+    <action_set>
+      <rsc_op id="24" operation="stop" operation_key="r192.168.122.106_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="r192.168.122.106" long-id="group-1:r192.168.122.106" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.106"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="25" operation="stop" operation_key="r192.168.122.107_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="28" operation="stop" operation_key="group-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="5">
+    <action_set>
+      <rsc_op id="25" operation="stop" operation_key="r192.168.122.107_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="r192.168.122.107" long-id="group-1:r192.168.122.107" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.107"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="28" operation="stop" operation_key="group-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="6">
+    <action_set>
+      <rsc_op id="30" operation="stop" operation_key="rsc_pcmk-1_stop_0" on_node="pcmk-1" on_node_uuid="101">
+        <primitive id="rsc_pcmk-1" long-id="rsc_pcmk-1" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.108"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="7">
+    <action_set>
+      <rsc_op id="31" operation="stop" operation_key="rsc_pcmk-2_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="rsc_pcmk-2" long-id="rsc_pcmk-2" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.109"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="8">
+    <action_set>
+      <rsc_op id="32" operation="stop" operation_key="rsc_pcmk-4_stop_0" on_node="pcmk-4" on_node_uuid="104">
+        <primitive id="rsc_pcmk-4" long-id="rsc_pcmk-4" class="ocf" provider="heartbeat" type="IPaddr"/>
+        <attributes CRM_meta_timeout="60000" cidr_netmask="32" crm_feature_set="3.0.6" ip="192.168.122.111"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="9">
+    <action_set>
+      <rsc_op id="33" operation="stop" operation_key="lsb-dummy_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="lsb-dummy" long-id="lsb-dummy" class="lsb" type="/usr/share/pacemaker/tests/cts/LSBDummy"/>
+        <attributes CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="10">
+    <action_set>
+      <rsc_op id="35" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-1" on_node_uuid="101">
+        <primitive id="migrator" long-id="migrator" class="ocf" provider="pacemaker" type="Dummy"/>
+        <attributes CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="11">
+    <action_set>
+      <rsc_op id="34" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-3" on_node_uuid="103">
+        <primitive id="migrator" long-id="migrator" class="ocf" provider="pacemaker" type="Dummy"/>
+        <attributes CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="12">
+    <action_set>
+      <rsc_op id="36" operation="stop" operation_key="ping-1:0_stop_0" on_node="pcmk-1" on_node_uuid="101">
+        <primitive id="ping-1:0" long-id="Connectivity:ping-1:0" class="ocf" provider="pacemaker" type="ping"/>
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6" debug="true" host_list="10.0.0.6" name="connected"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="41" operation="stop" operation_key="Connectivity_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="13">
+    <action_set>
+      <rsc_op id="37" operation="stop" operation_key="ping-1:1_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="ping-1:1" long-id="Connectivity:ping-1:1" class="ocf" provider="pacemaker" type="ping"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6" debug="true" host_list="10.0.0.6" name="connected"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="41" operation="stop" operation_key="Connectivity_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="14">
+    <action_set>
+      <rsc_op id="38" operation="stop" operation_key="ping-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104">
+        <primitive id="ping-1:3" long-id="Connectivity:ping-1:3" class="ocf" provider="pacemaker" type="ping"/>
+        <attributes CRM_meta_clone="3" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6" debug="true" host_list="10.0.0.6" name="connected"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="41" operation="stop" operation_key="Connectivity_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="15" priority="1000000">
+    <action_set>
+      <pseudo_event id="42" operation="stopped" operation_key="Connectivity_stopped_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="36" operation="stop" operation_key="ping-1:0_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="37" operation="stop" operation_key="ping-1:1_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="38" operation="stop" operation_key="ping-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="41" operation="stop" operation_key="Connectivity_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="16">
+    <action_set>
+      <pseudo_event id="41" operation="stop" operation_key="Connectivity_stop_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="17">
+    <action_set>
+      <rsc_op id="44" operation="stop" operation_key="stateful-1:0_stop_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="stateful-1:0" long-id="master-1:stateful-1:0" class="ocf" provider="pacemaker" type="Stateful"/>
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="43" operation="demote" operation_key="stateful-1:0_demote_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="49" operation="stop" operation_key="master-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="18">
+    <action_set>
+      <rsc_op id="43" operation="demote" operation_key="stateful-1:0_demote_0" on_node="pcmk-2" on_node_uuid="102">
+        <primitive id="stateful-1:0" long-id="master-1:stateful-1:0" class="ocf" provider="pacemaker" type="Stateful"/>
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="53" operation="demote" operation_key="master-1_demote_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="19">
+    <action_set>
+      <rsc_op id="45" operation="stop" operation_key="stateful-1:2_stop_0" on_node="pcmk-1" on_node_uuid="101">
+        <primitive id="stateful-1:2" long-id="master-1:stateful-1:2" class="ocf" provider="pacemaker" type="Stateful"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="49" operation="stop" operation_key="master-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="20">
+    <action_set>
+      <rsc_op id="46" operation="stop" operation_key="stateful-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104">
+        <primitive id="stateful-1:3" long-id="master-1:stateful-1:3" class="ocf" provider="pacemaker" type="Stateful"/>
+        <attributes CRM_meta_clone="3" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="49" operation="stop" operation_key="master-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="21" priority="1000000">
+    <action_set>
+      <pseudo_event id="54" operation="demoted" operation_key="master-1_demoted_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="43" operation="demote" operation_key="stateful-1:0_demote_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="53" operation="demote" operation_key="master-1_demote_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="22">
+    <action_set>
+      <pseudo_event id="53" operation="demote" operation_key="master-1_demote_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="29" operation="stopped" operation_key="group-1_stopped_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="23" priority="1000000">
+    <action_set>
+      <pseudo_event id="50" operation="stopped" operation_key="master-1_stopped_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="44" operation="stop" operation_key="stateful-1:0_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="45" operation="stop" operation_key="stateful-1:2_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="46" operation="stop" operation_key="stateful-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="49" operation="stop" operation_key="master-1_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="24">
+    <action_set>
+      <pseudo_event id="49" operation="stop" operation_key="master-1_stop_0">
+        <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="60000" crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="54" operation="demoted" operation_key="master-1_demoted_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="25">
+    <action_set>
+      <crm_event id="60" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-4" on_node_uuid="104">
+        <attributes CRM_meta_op_no_wait="true" crm_feature_set="3.0.6"/>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="stop" operation_key="rsc_pcmk-4_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="38" operation="stop" operation_key="ping-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="46" operation="stop" operation_key="stateful-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="26">
+    <action_set>
+      <crm_event id="59" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-3" on_node_uuid="103">
+        <attributes CRM_meta_op_no_wait="true" crm_feature_set="3.0.6"/>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="34" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-3" on_node_uuid="103"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="27">
+    <action_set>
+      <crm_event id="58" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-2" on_node_uuid="102">
+        <attributes CRM_meta_op_no_wait="true" crm_feature_set="3.0.6"/>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="23" operation="stop" operation_key="r192.168.122.105_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="24" operation="stop" operation_key="r192.168.122.106_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="25" operation="stop" operation_key="r192.168.122.107_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="31" operation="stop" operation_key="rsc_pcmk-2_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="33" operation="stop" operation_key="lsb-dummy_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="37" operation="stop" operation_key="ping-1:1_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="44" operation="stop" operation_key="stateful-1:0_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="28">
+    <action_set>
+      <crm_event id="57" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-1" on_node_uuid="101">
+        <attributes CRM_meta_op_no_wait="true" crm_feature_set="3.0.6"/>
+      </crm_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="22" operation="stop" operation_key="Fencing_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="30" operation="stop" operation_key="rsc_pcmk-1_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="35" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="36" operation="stop" operation_key="ping-1:0_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="45" operation="stop" operation_key="stateful-1:2_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <crm_event id="58" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <crm_event id="59" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-3" on_node_uuid="103"/>
+      </trigger>
+      <trigger>
+        <crm_event id="60" operation="do_shutdown" operation_key="do_shutdown" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="29">
+    <action_set>
+      <pseudo_event id="16" operation="all_stopped" operation_key="all_stopped">
+        <attributes crm_feature_set="3.0.6"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="23" operation="stop" operation_key="r192.168.122.105_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="24" operation="stop" operation_key="r192.168.122.106_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="25" operation="stop" operation_key="r192.168.122.107_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="30" operation="stop" operation_key="rsc_pcmk-1_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="31" operation="stop" operation_key="rsc_pcmk-2_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="32" operation="stop" operation_key="rsc_pcmk-4_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="33" operation="stop" operation_key="lsb-dummy_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="34" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-3" on_node_uuid="103"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="35" operation="stop" operation_key="migrator_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="36" operation="stop" operation_key="ping-1:0_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="37" operation="stop" operation_key="ping-1:1_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="38" operation="stop" operation_key="ping-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="44" operation="stop" operation_key="stateful-1:0_stop_0" on_node="pcmk-2" on_node_uuid="102"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="45" operation="stop" operation_key="stateful-1:2_stop_0" on_node="pcmk-1" on_node_uuid="101"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="46" operation="stop" operation_key="stateful-1:3_stop_0" on_node="pcmk-4" on_node_uuid="104"/>
+      </trigger>
+    </inputs>
+  </synapse>
+</transition_graph>
+
diff --git a/pengine/test10/migrate-shutdown.scores b/pengine/test10/migrate-shutdown.scores
new file mode 100644
index 0000000000..aca7dd94b2
--- /dev/null
+++ b/pengine/test10/migrate-shutdown.scores
@@ -0,0 +1,133 @@
+Allocation scores:
+clone_color: Connectivity allocation score on pcmk-1: 0
+clone_color: Connectivity allocation score on pcmk-2: 0
+clone_color: Connectivity allocation score on pcmk-3: 0
+clone_color: Connectivity allocation score on pcmk-4: 0
+clone_color: master-1 allocation score on pcmk-1: 0
+clone_color: master-1 allocation score on pcmk-2: 0
+clone_color: master-1 allocation score on pcmk-3: 0
+clone_color: master-1 allocation score on pcmk-4: 0
+clone_color: ping-1:0 allocation score on pcmk-1: 1
+clone_color: ping-1:0 allocation score on pcmk-2: 0
+clone_color: ping-1:0 allocation score on pcmk-3: 0
+clone_color: ping-1:0 allocation score on pcmk-4: 0
+clone_color: ping-1:1 allocation score on pcmk-1: 0
+clone_color: ping-1:1 allocation score on pcmk-2: 1
+clone_color: ping-1:1 allocation score on pcmk-3: 0
+clone_color: ping-1:1 allocation score on pcmk-4: 0
+clone_color: ping-1:2 allocation score on pcmk-1: 0
+clone_color: ping-1:2 allocation score on pcmk-2: 0
+clone_color: ping-1:2 allocation score on pcmk-3: 0
+clone_color: ping-1:2 allocation score on pcmk-4: 0
+clone_color: ping-1:3 allocation score on pcmk-1: 0
+clone_color: ping-1:3 allocation score on pcmk-2: 0
+clone_color: ping-1:3 allocation score on pcmk-3: 0
+clone_color: ping-1:3 allocation score on pcmk-4: 1
+clone_color: stateful-1:0 allocation score on pcmk-1: 0
+clone_color: stateful-1:0 allocation score on pcmk-2: 1
+clone_color: stateful-1:0 allocation score on pcmk-3: 0
+clone_color: stateful-1:0 allocation score on pcmk-4: 0
+clone_color: stateful-1:1 allocation score on pcmk-1: 0
+clone_color: stateful-1:1 allocation score on pcmk-2: 0
+clone_color: stateful-1:1 allocation score on pcmk-3: 0
+clone_color: stateful-1:1 allocation score on pcmk-4: 0
+clone_color: stateful-1:2 allocation score on pcmk-1: 1
+clone_color: stateful-1:2 allocation score on pcmk-2: 0
+clone_color: stateful-1:2 allocation score on pcmk-3: 0
+clone_color: stateful-1:2 allocation score on pcmk-4: 0
+clone_color: stateful-1:3 allocation score on pcmk-1: 0
+clone_color: stateful-1:3 allocation score on pcmk-2: 0
+clone_color: stateful-1:3 allocation score on pcmk-3: 0
+clone_color: stateful-1:3 allocation score on pcmk-4: 1
+group_color: group-1 allocation score on pcmk-1: 0
+group_color: group-1 allocation score on pcmk-2: 0
+group_color: group-1 allocation score on pcmk-3: 0
+group_color: group-1 allocation score on pcmk-4: 0
+group_color: r192.168.122.105 allocation score on pcmk-1: 0
+group_color: r192.168.122.105 allocation score on pcmk-2: 0
+group_color: r192.168.122.105 allocation score on pcmk-3: 0
+group_color: r192.168.122.105 allocation score on pcmk-4: 0
+group_color: r192.168.122.106 allocation score on pcmk-1: 0
+group_color: r192.168.122.106 allocation score on pcmk-2: 0
+group_color: r192.168.122.106 allocation score on pcmk-3: 0
+group_color: r192.168.122.106 allocation score on pcmk-4: 0
+group_color: r192.168.122.107 allocation score on pcmk-1: 0
+group_color: r192.168.122.107 allocation score on pcmk-2: 0
+group_color: r192.168.122.107 allocation score on pcmk-3: 0
+group_color: r192.168.122.107 allocation score on pcmk-4: 0
+native_color: Fencing allocation score on pcmk-1: 0
+native_color: Fencing allocation score on pcmk-2: 0
+native_color: Fencing allocation score on pcmk-3: 0
+native_color: Fencing allocation score on pcmk-4: 0
+native_color: lsb-dummy allocation score on pcmk-1: -INFINITY
+native_color: lsb-dummy allocation score on pcmk-2: -INFINITY
+native_color: lsb-dummy allocation score on pcmk-3: -INFINITY
+native_color: lsb-dummy allocation score on pcmk-4: -INFINITY
+native_color: migrator allocation score on pcmk-1: 0
+native_color: migrator allocation score on pcmk-2: 0
+native_color: migrator allocation score on pcmk-3: 0
+native_color: migrator allocation score on pcmk-4: 0
+native_color: ping-1:0 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:0 allocation score on pcmk-4: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:1 allocation score on pcmk-4: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:2 allocation score on pcmk-4: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-1: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-2: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-3: -INFINITY
+native_color: ping-1:3 allocation score on pcmk-4: -INFINITY
+native_color: r192.168.122.105 allocation score on pcmk-1: -INFINITY
+native_color: r192.168.122.105 allocation score on pcmk-2: -INFINITY
+native_color: r192.168.122.105 allocation score on pcmk-3: -INFINITY
+native_color: r192.168.122.105 allocation score on pcmk-4: -INFINITY
+native_color: r192.168.122.106 allocation score on pcmk-1: -INFINITY
+native_color: r192.168.122.106 allocation score on pcmk-2: -INFINITY
+native_color: r192.168.122.106 allocation score on pcmk-3: -INFINITY
+native_color: r192.168.122.106 allocation score on pcmk-4: -INFINITY
+native_color: r192.168.122.107 allocation score on pcmk-1: -INFINITY
+native_color: r192.168.122.107 allocation score on pcmk-2: -INFINITY
+native_color: r192.168.122.107 allocation score on pcmk-3: -INFINITY
+native_color: r192.168.122.107 allocation score on pcmk-4: -INFINITY
+native_color: rsc_pcmk-1 allocation score on pcmk-1: 100
+native_color: rsc_pcmk-1 allocation score on pcmk-2: 0
+native_color: rsc_pcmk-1 allocation score on pcmk-3: 0
+native_color: rsc_pcmk-1 allocation score on pcmk-4: 0
+native_color: rsc_pcmk-2 allocation score on pcmk-1: 0
+native_color: rsc_pcmk-2 allocation score on pcmk-2: 100
+native_color: rsc_pcmk-2 allocation score on pcmk-3: 0
+native_color: rsc_pcmk-2 allocation score on pcmk-4: 0
+native_color: rsc_pcmk-3 allocation score on pcmk-1: 0
+native_color: rsc_pcmk-3 allocation score on pcmk-2: 0
+native_color: rsc_pcmk-3 allocation score on pcmk-3: 100
+native_color: rsc_pcmk-3 allocation score on pcmk-4: 0
+native_color: rsc_pcmk-4 allocation score on pcmk-1: 0
+native_color: rsc_pcmk-4 allocation score on pcmk-2: 0
+native_color: rsc_pcmk-4 allocation score on pcmk-3: 0
+native_color: rsc_pcmk-4 allocation score on pcmk-4: 100
+native_color: stateful-1:0 allocation score on pcmk-1: -INFINITY
+native_color: stateful-1:0 allocation score on pcmk-2: -INFINITY
+native_color: stateful-1:0 allocation score on pcmk-3: -INFINITY
+native_color: stateful-1:0 allocation score on pcmk-4: -INFINITY
+native_color: stateful-1:1 allocation score on pcmk-1: -INFINITY
+native_color: stateful-1:1 allocation score on pcmk-2: -INFINITY
+native_color: stateful-1:1 allocation score on pcmk-3: -INFINITY
+native_color: stateful-1:1 allocation score on pcmk-4: -INFINITY
+native_color: stateful-1:2 allocation score on pcmk-1: -INFINITY
+native_color: stateful-1:2 allocation score on pcmk-2: -INFINITY
+native_color: stateful-1:2 allocation score on pcmk-3: -INFINITY
+native_color: stateful-1:2 allocation score on pcmk-4: -INFINITY
+native_color: stateful-1:3 allocation score on pcmk-1: -INFINITY
+native_color: stateful-1:3 allocation score on pcmk-2: -INFINITY
+native_color: stateful-1:3 allocation score on pcmk-3: -INFINITY
+native_color: stateful-1:3 allocation score on pcmk-4: -INFINITY
+stateful-1:0 promotion score on none: 0
+stateful-1:1 promotion score on none: 0
+stateful-1:2 promotion score on none: 0
+stateful-1:3 promotion score on none: 0
diff --git a/pengine/test10/migrate-shutdown.xml b/pengine/test10/migrate-shutdown.xml
new file mode 100644
index 0000000000..264e124e02
--- /dev/null
+++ b/pengine/test10/migrate-shutdown.xml
@@ -0,0 +1,425 @@
+<cib crm_feature_set="3.0.6" admin_epoch="1" epoch="47" num_updates="322" validate-with="pacemaker-1.0" remote-tls-port="9898" remote-clear-port="9999" cib-last-written="Sat Feb  4 14:21:32 2012" have-quorum="1" dc-uuid="101">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="1"/>
+        <nvpair id="cib-bootstrap-options-start-failure-is-fatal" name="start-failure-is-fatal" value="false"/>
+        <nvpair id="cib-bootstrap-options-pe-input-series-max" name="pe-input-series-max" value="5000"/>
+        <nvpair id="cib-bootstrap-options-default-action-timeout" name="default-action-timeout" value="60s"/>
+        <nvpair id="cib-bootstrap-options-shutdown-escalation" name="shutdown-escalation" value="5min"/>
+        <nvpair id="cib-bootstrap-options-batch-limit" name="batch-limit" value="10"/>
+        <nvpair id="cib-bootstrap-options-dc-deadtime" name="dc-deadtime" value="5s"/>
+        <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="stop"/>
+        <nvpair id="cib-bootstrap-options-expected-quorum-votes" name="expected-quorum-votes" value="4"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.7-0.325.1314d3e.git.fc16-1314d3ecb5914be71dee2fd9ba460aa922ebfa1c"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="101" uname="pcmk-1" type="normal">
+        <instance_attributes id="nodes-101">
+          <nvpair id="nodes-101-standby" name="standby" value="off"/>
+        </instance_attributes>
+      </node>
+      <node id="102" uname="pcmk-2" type="normal">
+        <instance_attributes id="nodes-102">
+          <nvpair id="nodes-102-standby" name="standby" value="off"/>
+        </instance_attributes>
+      </node>
+      <node id="103" uname="pcmk-3" type="normal">
+        <instance_attributes id="nodes-103">
+          <nvpair id="nodes-103-standby" name="standby" value="off"/>
+        </instance_attributes>
+      </node>
+      <node id="104" uname="pcmk-4" type="normal">
+        <instance_attributes id="nodes-104">
+          <nvpair id="nodes-104-standby" name="standby" value="off"/>
+        </instance_attributes>
+      </node>
+    </nodes>
+    <resources>
+      <primitive class="stonith" id="Fencing" type="fence_xvm">
+        <instance_attributes id="Fencing-instance_attributes">
+          <nvpair id="Fencing-instance_attributes-pcmk_arg_map" name="pcmk_arg_map" value="domain:uname"/>
+        </instance_attributes>
+        <meta_attributes id="Fencing-meta_attributes">
+          <nvpair id="Fencing-meta_attributes-migration-threshold" name="migration-threshold" value="5"/>
+        </meta_attributes>
+        <operations>
+          <op id="Fencing-monitor-120s" interval="120s" name="monitor" timeout="300"/>
+          <op id="Fencing-start-0" interval="0" name="start" timeout="180s"/>
+          <op id="Fencing-stop-0" interval="0" name="stop" timeout="180s"/>
+        </operations>
+      </primitive>
+      <group id="group-1">
+        <primitive class="ocf" id="r192.168.122.105" provider="heartbeat" type="IPaddr">
+          <instance_attributes id="r192.168.122.105-instance_attributes">
+            <nvpair id="r192.168.122.105-instance_attributes-ip" name="ip" value="192.168.122.105"/>
+            <nvpair id="r192.168.122.105-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+          </instance_attributes>
+          <operations>
+            <op id="r192.168.122.105-monitor-5s" interval="5s" name="monitor"/>
+          </operations>
+        </primitive>
+        <primitive class="ocf" id="r192.168.122.106" provider="heartbeat" type="IPaddr">
+          <instance_attributes id="r192.168.122.106-instance_attributes">
+            <nvpair id="r192.168.122.106-instance_attributes-ip" name="ip" value="192.168.122.106"/>
+            <nvpair id="r192.168.122.106-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+          </instance_attributes>
+          <operations>
+            <op id="r192.168.122.106-monitor-5s" interval="5s" name="monitor"/>
+          </operations>
+        </primitive>
+        <primitive class="ocf" id="r192.168.122.107" provider="heartbeat" type="IPaddr">
+          <instance_attributes id="r192.168.122.107-instance_attributes">
+            <nvpair id="r192.168.122.107-instance_attributes-ip" name="ip" value="192.168.122.107"/>
+            <nvpair id="r192.168.122.107-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+          </instance_attributes>
+          <operations>
+            <op id="r192.168.122.107-monitor-5s" interval="5s" name="monitor"/>
+          </operations>
+        </primitive>
+      </group>
+      <primitive class="ocf" id="rsc_pcmk-1" provider="heartbeat" type="IPaddr">
+        <instance_attributes id="rsc_pcmk-1-instance_attributes">
+          <nvpair id="rsc_pcmk-1-instance_attributes-ip" name="ip" value="192.168.122.108"/>
+          <nvpair id="rsc_pcmk-1-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <operations>
+          <op id="rsc_pcmk-1-monitor-5s" interval="5s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="rsc_pcmk-2" provider="heartbeat" type="IPaddr">
+        <instance_attributes id="rsc_pcmk-2-instance_attributes">
+          <nvpair id="rsc_pcmk-2-instance_attributes-ip" name="ip" value="192.168.122.109"/>
+          <nvpair id="rsc_pcmk-2-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <operations>
+          <op id="rsc_pcmk-2-monitor-5s" interval="5s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="rsc_pcmk-3" provider="heartbeat" type="IPaddr">
+        <instance_attributes id="rsc_pcmk-3-instance_attributes">
+          <nvpair id="rsc_pcmk-3-instance_attributes-ip" name="ip" value="192.168.122.110"/>
+          <nvpair id="rsc_pcmk-3-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <operations>
+          <op id="rsc_pcmk-3-monitor-5s" interval="5s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="rsc_pcmk-4" provider="heartbeat" type="IPaddr">
+        <instance_attributes id="rsc_pcmk-4-instance_attributes">
+          <nvpair id="rsc_pcmk-4-instance_attributes-ip" name="ip" value="192.168.122.111"/>
+          <nvpair id="rsc_pcmk-4-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <operations>
+          <op id="rsc_pcmk-4-monitor-5s" interval="5s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="lsb" id="lsb-dummy" type="/usr/share/pacemaker/tests/cts/LSBDummy">
+        <operations>
+          <op id="lsb-dummy-monitor-5s" interval="5s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="migrator" provider="pacemaker" type="Dummy">
+        <meta_attributes id="migrator-meta_attributes">
+          <nvpair id="migrator-meta_attributes-allow-migrate" name="allow-migrate" value="1"/>
+        </meta_attributes>
+        <operations>
+          <op id="migrator-monitor-P10S" interval="P10S" name="monitor"/>
+        </operations>
+      </primitive>
+      <clone id="Connectivity">
+        <meta_attributes id="Connectivity-meta_attributes">
+          <nvpair id="Connectivity-meta_attributes-globally-unique" name="globally-unique" value="false"/>
+        </meta_attributes>
+        <primitive class="ocf" id="ping-1" provider="pacemaker" type="ping">
+          <instance_attributes id="ping-1-instance_attributes">
+            <nvpair id="ping-1-instance_attributes-host_list" name="host_list" value="10.0.0.6"/>
+            <nvpair id="ping-1-instance_attributes-name" name="name" value="connected"/>
+            <nvpair id="ping-1-instance_attributes-debug" name="debug" value="true"/>
+          </instance_attributes>
+          <operations>
+            <op id="ping-1-monitor-60s" interval="60s" name="monitor"/>
+          </operations>
+        </primitive>
+      </clone>
+      <master id="master-1">
+        <meta_attributes id="master-1-meta_attributes">
+          <nvpair id="master-1-meta_attributes-clone-max" name="clone-max" value="4"/>
+          <nvpair id="master-1-meta_attributes-clone-node-max" name="clone-node-max" value="1"/>
+          <nvpair id="master-1-meta_attributes-master-max" name="master-max" value="1"/>
+          <nvpair id="master-1-meta_attributes-master-node-max" name="master-node-max" value="1"/>
+        </meta_attributes>
+        <primitive class="ocf" id="stateful-1" provider="pacemaker" type="Stateful">
+          <operations>
+            <op id="stateful-1-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+            <op id="stateful-1-monitor-16s" interval="16s" name="monitor" role="Master" timeout="60s"/>
+          </operations>
+        </primitive>
+      </master>
+    </resources>
+    <constraints>
+      <rsc_location id="prefer-pcmk-1" rsc="rsc_pcmk-1">
+        <rule id="prefer-pcmk-1-rule" score="100">
+          <expression attribute="#uname" id="prefer-pcmk-1-expression" operation="eq" value="pcmk-1"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="prefer-pcmk-2" rsc="rsc_pcmk-2">
+        <rule id="prefer-pcmk-2-rule" score="100">
+          <expression attribute="#uname" id="prefer-pcmk-2-expression" operation="eq" value="pcmk-2"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="prefer-pcmk-3" rsc="rsc_pcmk-3">
+        <rule id="prefer-pcmk-3-rule" score="100">
+          <expression attribute="#uname" id="prefer-pcmk-3-expression" operation="eq" value="pcmk-3"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="prefer-pcmk-4" rsc="rsc_pcmk-4">
+        <rule id="prefer-pcmk-4-rule" score="100">
+          <expression attribute="#uname" id="prefer-pcmk-4-expression" operation="eq" value="pcmk-4"/>
+        </rule>
+      </rsc_location>
+      <rsc_colocation id="lsb-with-group" rsc="lsb-dummy" score="INFINITY" with-rsc="group-1"/>
+      <rsc_order first="group-1" id="lsb-after-group" score="INFINITY" symmetrical="true" then="lsb-dummy"/>
+      <rsc_location id="m1-is-connected" rsc="master-1">
+        <rule boolean-op="or" id="m1-is-connected-rule" score="-INFINITY">
+          <expression attribute="connected" id="m1-is-connected-expression" operation="lt" value="1"/>
+          <expression attribute="connected" id="m1-is-connected-expression-0" operation="not_defined"/>
+        </rule>
+      </rsc_location>
+      <rsc_colocation id="group-with-master" rsc="group-1" score="INFINITY" with-rsc="master-1" with-rsc-role="Master"/>
+      <rsc_order first="master-1" first-action="promote" id="group-after-master" score="INFINITY" symmetrical="true" then="group-1" then-action="start"/>
+    </constraints>
+  </configuration>
+  <status>
+    <node_state id="101" uname="pcmk-1" ha="active" in_ccm="true" crmd="online" join="member" expected="down" crm-debug-origin="do_update_resource" shutdown="0">
+      <transient_attributes id="101">
+        <instance_attributes id="status-101">
+          <nvpair id="status-101-probe_complete" name="probe_complete" value="true"/>
+          <nvpair id="status-101-connected" name="connected" value="1"/>
+          <nvpair id="status-101-master-stateful-1.2" name="master-stateful-1:2" value="5"/>
+          <nvpair id="status-101-shutdown" name="shutdown" value="1328361688"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="101">
+        <lrm_resources>
+          <lrm_resource id="r192.168.122.107" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.107_last_0" operation_key="r192.168.122.107_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="7:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;7:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="5" rc-code="7" op-status="0" interval="0" op-digest="4d928476ef29f17bebb4800c510aed0a"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:0" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:0_last_0" operation_key="stateful-1:0_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="15:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;15:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="13" rc-code="7" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:2" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:2_last_0" operation_key="stateful-1:2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="45:3:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;45:3:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="20" rc-code="0" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="stateful-1:2_monitor_15000" operation_key="stateful-1:2_monitor_15000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="62:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;62:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="21" rc-code="0" op-status="0" interval="15000" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="lsb-dummy" type="/usr/share/pacemaker/tests/cts/LSBDummy" class="lsb">
+            <lrm_rsc_op id="lsb-dummy_last_0" operation_key="lsb-dummy_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="12:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;12:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="10" rc-code="7" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="ping-1:0" type="ping" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="ping-1:0_last_0" operation_key="ping-1:0_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="35:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;35:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="17" rc-code="0" op-status="0" interval="0" op-digest="e506d43352f0c3a0612bad463d17132d"/>
+            <lrm_rsc_op id="ping-1:0_monitor_60000" operation_key="ping-1:0_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="36:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;36:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="19" rc-code="0" op-status="0" interval="60000" op-digest="929d9a69b0662943b861c54870b2bf77"/>
+          </lrm_resource>
+          <lrm_resource id="Fencing" type="fence_xvm" class="stonith">
+            <lrm_rsc_op id="Fencing_last_0" operation_key="Fencing_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="16:0:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;16:0:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="14" rc-code="0" op-status="0" interval="0" op-digest="c61958477da2c6c6487c122b7d44855c"/>
+            <lrm_rsc_op id="Fencing_monitor_120000" operation_key="Fencing_monitor_120000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="17:0:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;17:0:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="15" rc-code="0" op-status="0" interval="120000" op-digest="4bc4753bc0c6170d3af41f2c48b1afc0"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-1" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-1_last_0" operation_key="rsc_pcmk-1_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="25:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;25:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="16" rc-code="0" op-status="0" interval="0" op-digest="1b18702e550e224875106de83902bdba"/>
+            <lrm_rsc_op id="rsc_pcmk-1_monitor_5000" operation_key="rsc_pcmk-1_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="26:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;26:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="18" rc-code="0" op-status="0" interval="5000" op-digest="6e384f5ca8c58008bd7d9364a1d1141d"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-2" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-2_last_0" operation_key="rsc_pcmk-2_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="9:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;9:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="7" rc-code="7" op-status="0" interval="0" op-digest="71ad281637eaf4089a366debb4a50a2c"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-3" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-3_last_0" operation_key="rsc_pcmk-3_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="10:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;10:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="8" rc-code="7" op-status="0" interval="0" op-digest="29ff2934399fed8854ecf0f5e0c18048"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-4" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-4_last_0" operation_key="rsc_pcmk-4_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="11:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;11:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="9" rc-code="7" op-status="0" interval="0" op-digest="40063315a08db0fe58334eef62637af3"/>
+          </lrm_resource>
+          <lrm_resource id="migrator" type="Dummy" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="migrator_last_0" operation_key="migrator_migrate_from_0" operation="migrate_from" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="91:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;91:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="22" rc-code="0" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" state " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" last-run="1328361691" last-rc-change="1328361691" exec-time="350" queue-time="0" migrate_source="pcmk-3" migrate_target="pcmk-1"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.105" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.105_last_0" operation_key="r192.168.122.105_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="5:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;5:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="3" rc-code="7" op-status="0" interval="0" op-digest="f56a31f1e25022a0fffc10d06a8e9238"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.106" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.106_last_0" operation_key="r192.168.122.106_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="6:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;6:0:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="4" rc-code="7" op-status="0" interval="0" op-digest="4cc7eb11c0fddf78376cc170052400b2"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="102" uname="pcmk-2" crmd="online" crm-debug-origin="handle_shutdown_request" ha="active" in_ccm="true" join="member" expected="down" shutdown="0">
+      <transient_attributes id="102">
+        <instance_attributes id="status-102">
+          <nvpair id="status-102-connected" name="connected" value="1"/>
+          <nvpair id="status-102-master-stateful-1.0" name="master-stateful-1:0" value="10"/>
+          <nvpair id="status-102-probe_complete" name="probe_complete" value="true"/>
+          <nvpair id="status-102-shutdown" name="shutdown" value="1328361688"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="102">
+        <lrm_resources>
+          <lrm_resource id="r192.168.122.107" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.107_last_0" operation_key="r192.168.122.107_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="22:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;22:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="28" rc-code="0" op-status="0" interval="0" op-digest="4d928476ef29f17bebb4800c510aed0a"/>
+            <lrm_rsc_op id="r192.168.122.107_monitor_5000" operation_key="r192.168.122.107_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="23:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;23:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="29" rc-code="0" op-status="0" interval="5000" op-digest="1b37780763fb538ff9b282a61c87294b"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:0" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:0_last_0" operation_key="stateful-1:0_promote_0" operation="promote" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="53:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;53:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="22" rc-code="0" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="stateful-1:0_monitor_16000" operation_key="stateful-1:0_monitor_16000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="55:5:8:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:8;55:5:8:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="24" rc-code="8" op-status="0" interval="16000" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="lsb-dummy" type="/usr/share/pacemaker/tests/cts/LSBDummy" class="lsb">
+            <lrm_rsc_op id="lsb-dummy_last_0" operation_key="lsb-dummy_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="37:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;37:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="30" rc-code="0" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="lsb-dummy_monitor_5000" operation_key="lsb-dummy_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="38:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;38:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="31" rc-code="0" op-status="0" interval="5000" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="ping-1:1" type="ping" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="ping-1:1_last_0" operation_key="ping-1:1_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="37:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;37:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="16" rc-code="0" op-status="0" interval="0" op-digest="e506d43352f0c3a0612bad463d17132d"/>
+            <lrm_rsc_op id="ping-1:1_monitor_60000" operation_key="ping-1:1_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="38:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;38:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="19" rc-code="0" op-status="0" interval="60000" op-digest="929d9a69b0662943b861c54870b2bf77"/>
+          </lrm_resource>
+          <lrm_resource id="Fencing" type="fence_xvm" class="stonith">
+            <lrm_rsc_op id="Fencing_last_0" operation_key="Fencing_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="6:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;6:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="2" rc-code="7" op-status="0" interval="0" op-digest="c61958477da2c6c6487c122b7d44855c"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-1" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-1_last_0" operation_key="rsc_pcmk-1_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="10:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;10:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="6" rc-code="7" op-status="0" interval="0" op-digest="1b18702e550e224875106de83902bdba"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-2" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-2_last_0" operation_key="rsc_pcmk-2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="27:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;27:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="14" rc-code="0" op-status="0" interval="0" op-digest="71ad281637eaf4089a366debb4a50a2c"/>
+            <lrm_rsc_op id="rsc_pcmk-2_monitor_5000" operation_key="rsc_pcmk-2_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="28:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;28:2:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="17" rc-code="0" op-status="0" interval="5000" op-digest="541584247794b0b4c96b10c250ac59ec"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-3" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-3_last_0" operation_key="rsc_pcmk-3_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="12:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;12:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="8" rc-code="7" op-status="0" interval="0" op-digest="29ff2934399fed8854ecf0f5e0c18048"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-4" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-4_last_0" operation_key="rsc_pcmk-4_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="33:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;33:4:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="21" rc-code="0" op-status="0" interval="0" op-digest="40063315a08db0fe58334eef62637af3"/>
+          </lrm_resource>
+          <lrm_resource id="migrator" type="Dummy" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="migrator_last_0" operation_key="migrator_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="15:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;15:1:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="11" rc-code="7" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" state " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.105" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.105_last_0" operation_key="r192.168.122.105_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="18:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;18:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="23" rc-code="0" op-status="0" interval="0" op-digest="f56a31f1e25022a0fffc10d06a8e9238"/>
+            <lrm_rsc_op id="r192.168.122.105_monitor_5000" operation_key="r192.168.122.105_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="19:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;19:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="25" rc-code="0" op-status="0" interval="5000" op-digest="7b4ab543e6607f3640c5f722679a9a0b"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.106" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.106_last_0" operation_key="r192.168.122.106_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="20:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;20:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="26" rc-code="0" op-status="0" interval="0" op-digest="4cc7eb11c0fddf78376cc170052400b2"/>
+            <lrm_rsc_op id="r192.168.122.106_monitor_5000" operation_key="r192.168.122.106_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="21:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;21:5:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="27" rc-code="0" op-status="0" interval="5000" op-digest="c9000d26e63393675b9a91a41f50d5e8"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="103" uname="pcmk-3" crmd="online" crm-debug-origin="do_update_resource" ha="active" in_ccm="true" join="member" expected="down" shutdown="0">
+      <lrm id="103">
+        <lrm_resources>
+          <lrm_resource id="Fencing" type="fence_xvm" class="stonith">
+            <lrm_rsc_op id="Fencing_last_0" operation_key="Fencing_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="22:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;22:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1328361647" last-rc-change="1328361647" exec-time="600" queue-time="0" op-digest="c61958477da2c6c6487c122b7d44855c"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.106" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.106_last_0" operation_key="r192.168.122.106_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="24:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;24:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="4" rc-code="7" op-status="0" interval="0" last-run="1328361646" last-rc-change="1328361646" exec-time="2240" queue-time="0" op-digest="4cc7eb11c0fddf78376cc170052400b2"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.105" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.105_last_0" operation_key="r192.168.122.105_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="23:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;23:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1328361646" last-rc-change="1328361646" exec-time="3470" queue-time="0" op-digest="f56a31f1e25022a0fffc10d06a8e9238"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.107" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.107_last_0" operation_key="r192.168.122.107_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="25:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;25:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1328361646" last-rc-change="1328361646" exec-time="3460" queue-time="0" op-digest="4d928476ef29f17bebb4800c510aed0a"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-1" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-1_last_0" operation_key="rsc_pcmk-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="26:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;26:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="6" rc-code="7" op-status="0" interval="0" last-run="1328361646" last-rc-change="1328361646" exec-time="3350" queue-time="0" op-digest="1b18702e550e224875106de83902bdba"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-2" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-2_last_0" operation_key="rsc_pcmk-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="27:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;27:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="7" rc-code="7" op-status="0" interval="0" last-run="1328361650" last-rc-change="1328361650" exec-time="1650" queue-time="3340" op-digest="71ad281637eaf4089a366debb4a50a2c"/>
+          </lrm_resource>
+          <lrm_resource id="lsb-dummy" type="/usr/share/pacemaker/tests/cts/LSBDummy" class="lsb">
+            <lrm_rsc_op id="lsb-dummy_last_0" operation_key="lsb-dummy_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="30:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;30:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="10" rc-code="7" op-status="0" interval="0" last-run="1328361650" last-rc-change="1328361650" exec-time="1660" queue-time="3350" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-4" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-4_last_0" operation_key="rsc_pcmk-4_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="29:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;29:14:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="9" rc-code="7" op-status="0" interval="0" last-run="1328361650" last-rc-change="1328361650" exec-time="1760" queue-time="3340" op-digest="40063315a08db0fe58334eef62637af3"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-3" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-3_last_0" operation_key="rsc_pcmk-3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="41:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;41:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="22" rc-code="0" op-status="0" interval="0" last-run="1328361688" last-rc-change="1328361688" exec-time="3680" queue-time="0" op-digest="29ff2934399fed8854ecf0f5e0c18048"/>
+            <lrm_rsc_op id="rsc_pcmk-3_monitor_5000" operation_key="rsc_pcmk-3_monitor_5000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="43:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;43:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="19" rc-code="0" op-status="0" interval="5000" last-rc-change="1328361663" exec-time="520" queue-time="0" op-digest="9b75fd844632e867080ca6d668548883"/>
+          </lrm_resource>
+          <lrm_resource id="migrator" type="Dummy" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="migrator_last_0" operation_key="migrator_migrate_to_0" operation="migrate_to" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="90:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;90:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="23" rc-code="0" op-status="0" interval="0" last-run="1328361689" last-rc-change="1328361689" exec-time="2730" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" state " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" migrate_source="pcmk-3" migrate_target="pcmk-1"/>
+            <lrm_rsc_op id="migrator_monitor_10000" operation_key="migrator_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="50:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;50:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="17" rc-code="0" op-status="0" interval="10000" last-rc-change="1328361658" exec-time="400" queue-time="0" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="ping-1:2" type="ping" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="ping-1:2_last_0" operation_key="ping-1:2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="55:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;55:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="24" rc-code="0" op-status="0" interval="0" last-run="1328361689" last-rc-change="1328361689" exec-time="2760" queue-time="0" op-digest="e506d43352f0c3a0612bad463d17132d"/>
+            <lrm_rsc_op id="ping-1:2_monitor_60000" operation_key="ping-1:2_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="56:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;56:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="18" rc-code="0" op-status="0" interval="60000" last-rc-change="1328361659" exec-time="3850" queue-time="0" op-digest="929d9a69b0662943b861c54870b2bf77"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:0" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:0_last_0" operation_key="stateful-1:0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="23:15:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;23:15:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="13" rc-code="7" op-status="0" interval="0" last-run="1328361653" last-rc-change="1328361653" exec-time="1010" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:1" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:1_last_0" operation_key="stateful-1:1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="66:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;66:18:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1328361688" last-rc-change="1328361688" exec-time="2270" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="stateful-1:1_monitor_15000" operation_key="stateful-1:1_monitor_15000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="67:17:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;67:17:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="21" rc-code="0" op-status="0" interval="15000" last-rc-change="1328361665" exec-time="590" queue-time="0" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+      <transient_attributes id="103">
+        <instance_attributes id="status-103">
+          <nvpair id="status-103-probe_complete" name="probe_complete" value="true"/>
+          <nvpair id="status-103-connected" name="connected" value="1"/>
+          <nvpair id="status-103-shutdown" name="shutdown" value="1328361688"/>
+        </instance_attributes>
+      </transient_attributes>
+    </node_state>
+    <node_state id="104" uname="pcmk-4" ha="active" in_ccm="true" crmd="online" join="member" expected="down" crm-debug-origin="handle_shutdown_request" shutdown="0">
+      <transient_attributes id="104">
+        <instance_attributes id="status-104">
+          <nvpair id="status-104-probe_complete" name="probe_complete" value="true"/>
+          <nvpair id="status-104-connected" name="connected" value="1"/>
+          <nvpair id="status-104-master-stateful-1.3" name="master-stateful-1:3" value="5"/>
+          <nvpair id="status-104-shutdown" name="shutdown" value="1328361688"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="104">
+        <lrm_resources>
+          <lrm_resource id="r192.168.122.107" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.107_last_0" operation_key="r192.168.122.107_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="26:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;26:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="5" rc-code="7" op-status="0" interval="0" op-digest="4d928476ef29f17bebb4800c510aed0a"/>
+          </lrm_resource>
+          <lrm_resource id="lsb-dummy" type="/usr/share/pacemaker/tests/cts/LSBDummy" class="lsb">
+            <lrm_rsc_op id="lsb-dummy_last_0" operation_key="lsb-dummy_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="31:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;31:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="10" rc-code="7" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:0" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:0_last_0" operation_key="stateful-1:0_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="34:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;34:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="13" rc-code="7" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="stateful-1:3" type="Stateful" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="stateful-1:3_last_0" operation_key="stateful-1:3_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="70:8:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;70:8:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="20" rc-code="0" op-status="0" interval="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="stateful-1:3_monitor_15000" operation_key="stateful-1:3_monitor_15000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="73:9:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;73:9:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="21" rc-code="0" op-status="0" interval="15000" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="ping-1:3" type="ping" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="ping-1:3_last_0" operation_key="ping-1:3_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="67:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;67:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="14" rc-code="0" op-status="0" interval="0" op-digest="e506d43352f0c3a0612bad463d17132d"/>
+            <lrm_rsc_op id="ping-1:3_monitor_60000" operation_key="ping-1:3_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="68:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;68:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="19" rc-code="0" op-status="0" interval="60000" op-digest="929d9a69b0662943b861c54870b2bf77"/>
+          </lrm_resource>
+          <lrm_resource id="Fencing" type="fence_xvm" class="stonith">
+            <lrm_rsc_op id="Fencing_last_0" operation_key="Fencing_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="23:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;23:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="2" rc-code="7" op-status="0" interval="0" op-digest="c61958477da2c6c6487c122b7d44855c"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-1" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-1_last_0" operation_key="rsc_pcmk-1_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="27:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;27:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="6" rc-code="7" op-status="0" interval="0" op-digest="1b18702e550e224875106de83902bdba"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-2" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-2_last_0" operation_key="rsc_pcmk-2_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="28:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;28:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="7" rc-code="7" op-status="0" interval="0" op-digest="71ad281637eaf4089a366debb4a50a2c"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-3" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-3_last_0" operation_key="rsc_pcmk-3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="41:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;41:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="24" rc-code="0" op-status="0" interval="0" op-digest="29ff2934399fed8854ecf0f5e0c18048" last-run="1328361655" last-rc-change="1328361655" exec-time="1830" queue-time="0"/>
+            <lrm_rsc_op id="rsc_pcmk-3_monitor_5000" operation_key="rsc_pcmk-3_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="39:11:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;39:11:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="23" rc-code="0" op-status="0" interval="5000" op-digest="9b75fd844632e867080ca6d668548883"/>
+          </lrm_resource>
+          <lrm_resource id="rsc_pcmk-4" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rsc_pcmk-4_last_0" operation_key="rsc_pcmk-4_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="54:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;54:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="16" rc-code="0" op-status="0" interval="0" op-digest="40063315a08db0fe58334eef62637af3"/>
+            <lrm_rsc_op id="rsc_pcmk-4_monitor_5000" operation_key="rsc_pcmk-4_monitor_5000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="55:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;55:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="18" rc-code="0" op-status="0" interval="5000" op-digest="4ec89382ba626e9174c9bdd8b900c171"/>
+          </lrm_resource>
+          <lrm_resource id="migrator" type="Dummy" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="migrator_last_0" operation_key="migrator_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.6" transition-key="48:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;48:15:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="26" rc-code="0" op-status="0" interval="0" migrate_source="pcmk-4" migrate_target="pcmk-3" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" state " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" last-run="1328361657" last-rc-change="1328361657" exec-time="80" queue-time="80"/>
+            <lrm_rsc_op id="migrator_monitor_10000" operation_key="migrator_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="60:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:0;60:7:0:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="17" rc-code="0" op-status="0" interval="10000" op-digest="873ed4f07792aa8ff18f3254244675ea"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.105" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.105_last_0" operation_key="r192.168.122.105_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="24:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;24:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="3" rc-code="7" op-status="0" interval="0" op-digest="f56a31f1e25022a0fffc10d06a8e9238"/>
+          </lrm_resource>
+          <lrm_resource id="r192.168.122.106" type="IPaddr" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="r192.168.122.106_last_0" operation_key="r192.168.122.106_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.6" transition-key="25:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" transition-magic="0:7;25:7:7:f1903952-b658-4a96-b44f-f2dbefd2a4da" call-id="4" rc-code="7" op-status="0" interval="0" op-digest="4cc7eb11c0fddf78376cc170052400b2"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+  </status>
+</cib>