public virtual void testRemoveParallelMultiInstanceBodyScope() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.PAR_MI_SUBPROCESS_PROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.SubprocessProcess); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess", "subProcess") .MapActivities("userTask", "userTask") .Build(); // when testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then var subProcessInstances = testHelper.SnapshotBeforeMigration.ActivityTree.GetActivityInstances("subProcess"); testHelper.AssertExecutionTreeAfterMigration() .HasProcessDefinitionId(targetProcessDefinition.Id) .Matches(ExecutionAssert.DescribeExecutionTree(null) .Scope() .Id(testHelper.SnapshotBeforeMigration.ProcessInstanceId) .Child(null) .Concurrent() .NoScope() .Child("userTask") .Scope() .Id(testHelper.GetSingleExecutionIdForActivity(subProcessInstances[0], "subProcess")) .Up() .Up() .Child(null) .Concurrent() .NoScope() .Child("userTask") .Scope() .Id(testHelper.GetSingleExecutionIdForActivity(subProcessInstances[1], "subProcess")) .Up() .Up() .Child(null) .Concurrent() .NoScope() .Child("userTask") .Scope() .Id(testHelper.GetSingleExecutionIdForActivity(subProcessInstances[2], "subProcess")) .Done()); testHelper.AssertActivityTreeAfterMigration() .HasStructure(ActivityInstanceAssert.DescribeActivityInstanceTree(targetProcessDefinition.Id) .BeginScope("subProcess", subProcessInstances[0].Id) .Activity("userTask", subProcessInstances[0].GetActivityInstances("userTask")[0].Id) .EndScope() .BeginScope("subProcess", subProcessInstances[1].Id) .Activity("userTask", subProcessInstances[1].GetActivityInstances("userTask")[0].Id) .EndScope() .BeginScope("subProcess", subProcessInstances[2].Id) .Activity("userTask", subProcessInstances[2].GetActivityInstances("userTask")[0].Id) .EndScope() .Done()); var migratedTasks = testHelper.SnapshotAfterMigration.Tasks; Assert.AreEqual(3, migratedTasks.Count); // and it is possible to successfully complete the migrated instance foreach (var migratedTask in migratedTasks) { rule.TaskService.Complete(migratedTask.Id); } testHelper.AssertProcessEnded(testHelper.SnapshotBeforeMigration.ProcessInstanceId); }