You can insert a Foreach element in the workflow that you develop to run a sub-workflow that iterates over arrays of parameters or attributes. To improve the understanding and readability of the workflow, you can group several workflow parameters of different types that are logically connected in a single type that is called a composite type.

A Foreach element runs a sub-workflow iteratively over an array of input parameters or attributes. For this purpose, you can bind parameters or attributes of the workflow as iterators. As a result, parameters and attributes that are bound as iterators are of type array. You can pass the values for the elements of such an array when you run the workflow. The sub-workflow runs as many times as the number of elements that you have defined in the array.

If you have a configuration element that contains an array of attributes, you can run a workflow that iterates over these attributes in a Foreach element.

For example, suppose that you have 10 virtual machines in a folder that you want to rename. To do this, you must insert a Foreach element in a workflow and define the Rename virtual machine workflow as a sub-workflow in the element. The Rename virtual machine workflow takes two input parameters, a virtual machine and its new name. You can bind these parameters as iterators, and as a result, they become arrays over which the Rename virtual machine workflow will iterate. When you run your workflow, you can specify the 10 virtual machines in the folder and their new names. Every time the workflow runs, it takes an element from the array of the virtual machines and an element from the array of the new names for the virtual machines.

A composite type is a group of more than one input parameter or attribute that are connected logically but are of different types. In a Foreach element, you can bind a composite type as an iterator. In this way, the Foreach element takes the values for the grouped parameters at once in every subsequent run of the workflow.

For example, suppose that you are about to rename a virtual machine. You need the virtual machine object and its new name. If you have to rename multiple virtual machines, you need two arrays, one for the virtual machines and one for their names. These two arrays are not explicitly connected. A composite type allows you to have one array, where each element contains both the virtual machine and its new name. In this way, the connection between those two parameters in case of multiple values is specified explicitly and not implied by the workflow schema.


You cannot run a workflow that contains composite types from an Orchestrator Web view or from the vSphere Web Client.