<?xml version="1.0"?>
<!DOCTYPE DeploymentSets [
<!ELEMENT DeploymentSets (DeploymentSet*) >
<!ATTLIST DeploymentSets
          name CDATA #REQUIRED>	
<!ELEMENT DeploymentSet (ActionSet*, Component*, DeployList*)>
<!ATTLIST DeploymentSet
          when (PRE | POST) "PRE">
<!ATTLIST DeploymentSet
          deploy (DEPL | SKIP-NWDI | SKIP-DEPL | DEPL-TASK |UNDEPL) "DEPL">		 
<!ATTLIST DeploymentSet
          name CDATA #REQUIRED>		 
	   
<!ELEMENT ActionSet (action+)>
<!ATTLIST ActionSet
          when (PRE | POST) "PRE">
<!ATTLIST ActionSet
          name CDATA #REQUIRED>		 

<!ELEMENT action (param*)>
<!ATTLIST action
			type (SEQUENCE | CLUSTER-OPERATION | JMT_MIGRATION | DEPLOY_BOOTSTRAP | IMPORT-CR-SDA-MODELS) #REQUIRED>
<!ATTLIST action
          name CDATA #REQUIRED>		 

<!ELEMENT param EMPTY>
<!ATTLIST param
			name CDATA #REQUIRED
			value  CDATA #REQUIRED >

<!-- The next param variations are shown for informative and readability purposes only,
as possible combinations for expected name-value binding by the JSPM program logic. 
	
SEQUENCE based name-value bindings
============================= 	
<!ATTLIST param
			name (ACTION-DEF) "ACTION-DEF"
			value  CDATA #REQUIRED>

RESTART based name-value bindings
=============================
<!ATTLIST param
			name (TYPE) "TYPE"
			value (RESTART | START | STOP) "START">
<!ATTLIST param
			name (TARGET) "TARGET"
			value (ENGINE | SDM | CLUSTER | JSPM | SCS) "CLUSTER" >
<!ATTLIST param			
			name (MODE) "MODE"
			value (NORMAL | SAFE | STANDALONE | INTEGRATED) "NORMAL">
<!ATTLIST param			
			name (ACTION) "ACTION"
			value (NONE) "NONE">
-->

<!ELEMENT Component (ActionSet*)>
<!ATTLIST Component
          name CDATA #REQUIRED
          vendor CDATA #REQUIRED
          mandatory CDATA #IMPLIED >

<!ELEMENT DeployList (ActionSet*)>
<!ATTLIST DeployList 
          inputFile CDATA #REQUIRED >
]>
 
<!-- 

 A sample for usage
========================== 	  	

  <DeploymentSet when="SKIP-DEPL">
		<Component name="SAP_BUILDT" vendor="sap.com"/>
		<Component name="EP_BUILDT" vendor="sap.com"/>
  </DeploymentSet>
  
  <DeploymentSet when="PRE">
		<ActionSet when="PRE">
			 <action type="SEQUENCE" >
				<param name="seq_1" value="zzz"/>
				<param name="ACTION-DEF" value="ddd1.xml" />
			</action>
			<action type="SEQUENCE">
				<param name="seq_2" value="zzz2"/>
				<param name="ACTION-DEF" value="ddd3.xml" />
			</action>
			<action type="CLUSTER-OPERATION">
				<param name="TYPE" value="RESTART"/>
				<param name="TARGET"   value="ENGINE" />
				<param name="MODE"   value="SAFE"/>
			</action>
		</ActionSet>
    
		<ActionSet when="POST">
			<action type="SEQUENCE">
				<param name="seq_3" value="zzz4"/>
				<param name="ACTION-DEF" value="ddd4.xml" />
			</action>	
		</ActionSet>
		
		<Component name="SAP KERNEL" vendor="sap.com" mandatory="true"/>
		<Component name="BC-FES-IGS" vendor="sap.com" mandatory="true" />
 		<Component name="JSPM" vendor="sap.com" mandatory="true">
			  <ActionSet when="PRE">
					<action type="SEQUENCE" >
						<param name="seq_15" value="jspm"/>
						<param name="ACTION-DEF" value="ddd.xml" />
					</action>
			  </ActionSet>
			  <ActionSet when="POST">
					<action type="SEQUENCE" >
						<param name="seq_25" value="jspm2"/>
						<param name="ACTION-DEF" value="ddd.xml" />
					</action>
			  </ActionSet>
		</Component>
  </DeploymentSet>
  
  </DeploymentSets>
-->

<DeploymentSets name="DODF_ACTIONS">	
  
  <!-- JSPM update - first -->
  <DeploymentSet when="PRE" name="JSPM_SELF_UPDATE">
	<ActionSet when="POST" name="POST_AS1">
		<action type="SEQUENCE" name="JSPM_TASKS_SEQUENCE">
			<param name="post" value="JspmTasksSequence.xml" />
		</action>
	</ActionSet>	
    <ActionSet when="POST" name="POST_AS2">
			<action type="CLUSTER-OPERATION" name="RESTART_JSPM">
				<param name="TYPE" value="STOP"/>
				<param name="TARGET"  value="JSPM" />
			</action>	
    </ActionSet>
    <Component name="JSPM" vendor="sap.com"/>
  </DeploymentSet>

  <!-- Binaries update -->
  <DeploymentSet when="PRE" name="EXCHANGE_KERNEL_BINARIES">
    <ActionSet when="PRE" name="PRE_AS">
    	<action type="CLUSTER-OPERATION" name="STOPPING_ENGINE">
				<param name="TYPE" value="STOP"/>
				<param name="TARGET"  value="ENGINE" />
			</action>	
    </ActionSet>
    <ActionSet when="POST" name="POST_AS">
    	<action type="CLUSTER-OPERATION" name="STARTING_ENGINE">
				<param name="TYPE" value="START" />
				<param name="TARGET"  value="ENGINE" />
			</action>	
    </ActionSet>
  
    <Component name="SAP KERNEL" vendor="sap.com"/>
    <Component name="SAP J2EE KERNEL" vendor="sap.com"/>
    <Component name="BC-FES-IGS" vendor="sap.com"/>
    <Component name="SAPJVM" vendor="sap.com"/>
  </DeploymentSet>

  <DeploymentSet when="PRE" name="UPDATE_SAPHOSTAGENT">
    <Component name="SAPHOSTAGENT" vendor="sap.com"/>
  </DeploymentSet>

  <DeploymentSet when="PRE" deploy="DEPL-TASK" name="PREDEPLOY_MIGRATION_SLOT">
    <ActionSet when="PRE" name="PRE_AS">
      <action type="JMT_MIGRATION" name="JMT_MIGRATIONS">		
        <param name="action" value="migrate.database;migrate.deploy;migrate.engine.data;migrate.default.data;migrate.data" /> 
        <param name="downtime" value="true" /> 
        <param name="location" value="$(/JUMP/DIR/DATA/MIG)" /> 
        <param name="scenario" value="all" /> 
        <param name="jspmslot" value="pre.deployment" /> 
      </action>
    </ActionSet>
  </DeploymentSet>  

  <!-- undeploy pre removed components -->
  <DeploymentSet when="PRE" deploy="UNDEPL" name="PREDEPLOY_UNDEPLOYMENT">
  </DeploymentSet>
  
  <!-- bootstrap update -->
  <DeploymentSet when="PRE" deploy="DEPL-TASK" name="EXCHANGE_BOOTSTRAP">
    <ActionSet when="PRE" name="PRE_AS">
      <action type="DEPLOY_BOOTSTRAP" name="EXCHANGE_BOOTSTRAP_ACTION"> 		
          <param name="conponentName" value="SERVERCORE" /> 
          <param name="conponentVendor" value="sap.com" /> 
      </action>
    </ActionSet>
    
  </DeploymentSet>  
    
  <DeploymentSet when="PRE" deploy="DEPL-TASK" name="IMPORT-CR-SDA-MODELS">
    <ActionSet when="PRE" name="PRE_AS">
      <action type="IMPORT-CR-SDA-MODELS" name="ACTION" />		
    </ActionSet>
  </DeploymentSet>  

  <!-- check whether at least one server node is started -->  
  <DeploymentSet when="POST" name="WAIT_J2EE_STARTED_MINIMAL">
    <ActionSet when="POST" name="POST_AS">
			<action type="CLUSTER-OPERATION" name="ACTION">
				<param name="TYPE" value="WAIT_J2EE_STARTED_MINIMAL"/>
				<param name="TARGET"  value="ENGINE" />
			</action>	
    </ActionSet>
  </DeploymentSet>
  
  <!-- undeploy post removed components -->
  <DeploymentSet when="POST" deploy="UNDEPL" name="POSTDEPLOY_UNDEPLOYMENT">
  </DeploymentSet>
  
  <!-- check whether the engine is really started -->  
  <DeploymentSet when="POST" name="WAIT_J2EE_STARTED">
    <ActionSet when="POST" name="POST_AS">
			<action type="CLUSTER-OPERATION" name="ACTION">
				<param name="TYPE" value="WAIT_STARTED"/>
				<param name="TARGET"  value="ENGINE" />
			</action>	
    </ActionSet>
  </DeploymentSet>

  <DeploymentSet when="POST" deploy="DEPL-TASK" name="POSTDEPLOY_MIGRATION_SLOT">
    <ActionSet when="POST" name="POST_AS">
      <action type="JMT_MIGRATION" name="JMT_MIGRATION">		
        <param name="action" value="migrate.database;migrate.deploy;migrate.engine.data;migrate.default.data" /> 
        <param name="downtime" value="false" /> 
        <param name="location" value="$(/JUMP/DIR/DATA/MIG)" /> 
        <param name="scenario" value="all" /> 
        <param name="slot" value="post.deployment" /> 
        <param name="jspmslot" value="post.deployment" /> 
      </action>
    </ActionSet>
  </DeploymentSet>  
  
</DeploymentSets>