public virtual MigrationPlanDto generateMigrationPlan(MigrationPlanGenerationDto generationDto) { RuntimeService runtimeService = processEngine.RuntimeService; string sourceProcessDefinitionId = generationDto.SourceProcessDefinitionId; string targetProcessDefinitionId = generationDto.TargetProcessDefinitionId; try { MigrationInstructionsBuilder instructionsBuilder = runtimeService.createMigrationPlan(sourceProcessDefinitionId, targetProcessDefinitionId).mapEqualActivities(); if (generationDto.UpdateEventTriggers) { instructionsBuilder = instructionsBuilder.updateEventTriggers(); } MigrationPlan migrationPlan = instructionsBuilder.build(); return(MigrationPlanDto.from(migrationPlan)); } catch (BadUserRequestException e) { throw new InvalidRequestException(Status.BAD_REQUEST, e, e.Message); } }