--- alias: user-guide-using-propagation-validation description: "This documentation details state change propagation and validation within resource clusters, governing system state transitions" --- # Using State Change Propagations and Validations ## Overview In this section, it's described how to use the resource state change propagation and validation in Resource Clusters. A Resource Cluster consists of different Sub-Resource groups which may consist of resources of type *Process*, *LoadPorts*, *ConsumableFeeds* and *Components*. The affiliation to a particular Resource Group is defined by the Resource Group property of the **Resource** that is a free text field. If a **Resource** has no Resource Group it's not considered for the purpose of Resource State Change propagations and validations. Whenever a **Resource** state change takes place, if the **Resource** property *ValidateDown* is set, the system will call the business rule *ResourceValidateDown* to check whether the state change is valid according to the cluster configuration and sub-resource current states. If the **Resource** property *PropagateUp* is set, the system will propagate the state change by calling the business rule *ResourcePropagateUp*. The standard *ResourceValidateDown* and *ResourcePropagateUp* provides a certain behavior - described later in this section - but the customer can override this behavior by implementing their own logic. ![Resource cluster][resource_cluster] The system standard business rules are based only on the *SystemState* property of the **Resource**. At each Resource Group level, the following rules apply: |Group State|Condition|Validate down|Propagate up| |:--:|----|:--:|:--:| |Down|No group member is up and at least one group member is down|Checked|Checked| |Non-scheduled|All group members are Non Scheduled|Not Checked|Checked| |Up|At least one group member is up|Not Checked|Checked| Table: Resource Group level rules At the Resource Cluster level (which represents the state of all Resource Groups that belong to the Resource Cluster), the following rules apply: |Cluster State|Condition|Validate down|Propagate up| |:--:|----|:--:|:--:| |Down|At least one group is Down|Not Checked|Checked| |Non-scheduled|At least one group is Non-Scheduled and no group is Down|Not Checked|Checked| |Up|All groups are Up|Checked|Checked| Table: Resource Cluster level rules ## Validate Down The standard *ResourceValidateDown* business rule makes only one check, that the Resource Cluster is not changed to an *Up* state if the there is one Resource Group which is *Down*. ## Propagate Up The standard *ResourcePropagateUp* business rule implements the following logic: 1. It tests if the current **Resource** system state has changed as the result of the state change. If it has not changed, the business rule exits gracefully. 1. It tests if the current Resource Group state has changed (using the Group State rules above) as a result of the state change of the current Resource.If it has not changed, the business rule exits gracefully. 1. For each Parent of the **Resource** (the Parent representing the Cluster), the rule will evaluate whether the system of the Parent must change (using the Cluster State rules above). If it has not changed, the business rule exits gracefully. 1. If the Parent state change must change, the system tries to change the state using the following methods in the following sequence: 1. Applying the same state transition 2. Adjust the state 3. Set the system state [resource_cluster]: images/resource_cluster.png