Since there is only 'one' command to bring down the MQ component, one effective method would be to set up all control through the MSTR since it is the first task that needs started. Set up your orderly start up as you have it , but for the MQ tasks (BTCH,CHIN,DLQH) that depend on MSTR up first, set their REFMODE value to PREREQ. This setting will tell SSM to only evaluate these tasks during prereq check (starting things up) and not during subreq processing (shutting things down). This setting will allow the stop process for MSTR to execute (not be held up because dependent tasks are active.) Then for the UP_DOWN actions (shutdown) for MSTR, specify the primary stop command for this region - MVSCMD("xxxx STOP QMGR"), and then for the MQ tasks UP_DOWN actions (BTCH,CHIN,DLQH), you can code an action to something like SETCOL("CURRENT_STATE,MQSHUT"). This will simply set a CS state to let you know that the MQ component is being shutdown. CS will be set to DOWN when those components reach EOM by the SSMEOM rule. So simply update REFMODE=PREREQ for the 'task' components (BTCH,CHIN,DLQH) and then update your action table like :
----------------------------------------------
Action to START the xxxxMSTR
Action_Process: ACTION
Action_Current: DOWN
Action_Desired: UP
Action_Res_Type:xxxxMSTR
Action_Text: MVSCMD("xxxx START QMGR PARM(ourparm)") !! Front-end with SSMRETRY action if using
-----------------------------------------------
Action to START the xxxxCHIN
Action_Process: ACTION
Action_Current: DOWN
Action_Desired: UP
Action_Res_Type: xxxxCHIN
Action_Text: MVSCMD("xxxx START CHINIT") !! Front-end with SSMRETRY action if using
Generic DOWN_UP wills start the other MQ tasks
------------------------------------------------
Action to STOP the xxxxMSTR
Action_Process: ACTION
Action_Current: UP
Action_Desired: DOWN
Action_Res_Type: xxxxMSTR
Action_Text: MVSCMD("xxxx STOP QMGR")
-----------------------------------------------
Action to STOP the MQ components (this one action would be for all MQ tasks if you give them a unique type, such as TYPE=MQTASK. If not you will need a UP_DOWN for each xxxxMQtask job)
Action_Process: ACTION
Action_Current: UP
Action_Desired: DOWN
Action_Res_Type: MQTASK
Action_Text:
SETCOL("CURRENT_STATE,MQSHUT")
This type of setup can be used for any component that has an orderly start up (task1, then task 2, then task 3,etc), but then has only one command that stops the complete component, such as Websphere. (refer to SSMWEBSP SSM rule as it has the above details explained). Future SSMMQ will have this same explanation detail.