You can make use of Cutover's ability to create multiple, parallel streams of activity. Execution of a runbook that has multiple "legs" is possible by setting dependencies of tasks to allow for this.
With the runbook above, all three legs are executed in the normal manner, with tasks being started and completed as dependencies are met. Each one of the legs, can have tasks running parallel with tasks in the other legs of the runbook.
Sometimes though, in execution of the runbook, you'll want to make a decision as to which of the legs, or branches, you want to continue executing as your runbook progresses. You may be evaluating a number of conditions, and want to progress certain parts of your runbook, whilst not executing the other(s).
You can do this with the use of a branching task type.
Branching tasks overview
A branching task, provides a way for you to selectively choose which legs, or branches, are executed, in a particular part of your runbook. A branching task then, allows conditional progression of your runbook activity.
How do branching tasks work?
A branching task should be placed at the point in your runbook, where you want to make the decision as to which branches you want to execute, and which you want to abandon. Select the task type as Branching and set dependencies as you normally would. In this case it's important to set the first task of each branch as being dependent on the branching task itself.
In execution, when the task is progressed, the person (or team) assigned to that task is prompted to continue with or abandon the branches beneath the branching task.
The pop-up modal provides the title of the first task in each available branch (no and Yes in this instance), and prompts the user executing the branching task to continue or abandon on that basis.
Note: The default option is to continue all available branches, with you having to intentionally select which of the available branches you want to abandon.
When selecting the branch(es) to be abandoned, you're prompted with a warning that indicates that the selected successor task(s) and descendants will be abandoned.
Clicking Continue shows another pop-up modal window, where again, you are asked to confirm your understanding of the specific tasks being abandoned. In this case, all tasks (including descendants) are listed, before you then abandon the branch(es) you don't want to execute.
It's good practice to terminate your branches in a task - in the example below, abandoning all branches would cause the runbook to complete - as you've effectively indicated to Cutover that you do not want to process any remaining tasks.
What's a branch header task?
Within your Cutover instance, you may also have a custom task defined called a Branch Header task. This allows you to effectively name the branches by using the branch header task as the first task in each of the branches you define beneath the branching task.
In our example, you'll see that we've added a branch header task at the start of each branch, which provides for a more useful way to describe your branch, without having to change the title of the first real executable task in each branch.
Note: The branch header task is set to be Auto Start and Auto Finish, and thus there is no time penalty to your overall execution of activity, in your runbook.
When executing the branching task, you'll see the difference in the branching dialog, with branches more clearly described. We recommend use of branch header tasks as the first task in each branch to simplify the path of execution.
How do I enable branching and branch header tasks?
Branching tasks are not currently one of the default task types available to users of Cutover. The branching and branch header task types can though be enabled very easily if this is not already available to you. Contact your Customer Success Manager (CSM) or get in touch with our Support team via the in-app chat. Our Support team can also be reached at support@cutover.com.