I'm working in Azure DevOps and have some organisational restrictions so instead of using "State" we will use a custom field "Status" with 6 options:
- On Track
The rule we want is: Parent status is restricted and dependent on child Status. If any of the children of a parent item have the Status as Blocked, the parent item is changed to Blocked. Same with Delayed. The Status of the parent cannot be changed from Blocked or Delayed until all children are in one of the other states. If all children are in any other state, the parent changes to on track and can be manually changed.