Business process models capture process requirements that are typically expressed in unstructured, directed graphs that specify parallelism. However, modeling guidelines or requirements from execution engines may require that process models are structured in blocks. The goal of this paper is to define an automated method to convert an unstructured process model containing parallelism into an equivalent semi-structured process model, which contains blocks and synchronization links between parallel branches. We define the method by means of an algorithm that is based on dominators, a well-known technique from compiler theory for structuring sequential flow graphs. The method runs in polynomial time. We implemented and evaluated the algorithm extensively. In addition we compared the method in detail with the BPStruct method from literature. The comparison shows that our method can handle cases that BPStruct is not able to and that the method coincides with BPStruct for the cases that BPStruct is able to handle.