diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt
index 806527c88bd5bccff9fe8fe0e6575f42987c62ae..593e82d0d29f8f387ee021e8f9d6b2d12b5e837a 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/controller/ToolController.kt
@@ -1,7 +1,7 @@
 package de.fraunhofer.iem.dataprovider.tool.controller
 
 import de.fraunhofer.iem.dataprovider.configuration.ApiPaths
-import de.fraunhofer.iem.dataprovider.tool.dto.ToolEntityResponseDto
+import de.fraunhofer.iem.dataprovider.tool.dto.ToolDto
 import de.fraunhofer.iem.dataprovider.tool.repository.ToolRepository
 import org.springframework.web.bind.annotation.GetMapping
 import org.springframework.web.bind.annotation.RestController
@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController
 class ToolController(val toolRepository: ToolRepository) {
 
     @GetMapping(ApiPaths.GET_ALL_TOOLS)
-    fun getAllTools(): List<ToolEntityResponseDto> {
+    fun getAllTools(): List<ToolDto> {
         return toolRepository.findAll().map { it.toDto() }
     }
 }
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolDto.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6409abf72cfdcd265c9f5b139fa25ef5cc0764aa
--- /dev/null
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolDto.kt
@@ -0,0 +1,11 @@
+package de.fraunhofer.iem.dataprovider.tool.dto
+
+import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType
+
+data class ToolDto(
+    val name: String,
+    val description: String,
+    val relevantKpis: List<String>,
+    val findings: MutableList<FindingDto> = mutableListOf(),
+    val toolType: ToolType
+)
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt
deleted file mode 100644
index 4d9e4d1430716839d526c0da7ddcf95689e32880..0000000000000000000000000000000000000000
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolEntityResponseDto.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package de.fraunhofer.iem.dataprovider.tool.dto
-
-import java.util.*
-
-data class ToolEntityResponseDto(val id: UUID, val name: String, val toolType: String)
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolResponseDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolResponseDto.kt
deleted file mode 100644
index 26d2c757ec73252369f2fcda2de7a00c750f27f2..0000000000000000000000000000000000000000
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/dto/ToolResponseDto.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.fraunhofer.iem.dataprovider.tool.dto
-
-data class ToolResponseDto(
-    val name: String,
-    val description: String,
-    val relevantKpis: List<String>,
-    val findings: List<FindingDto> = emptyList()
-)
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt
index ac6008cdd77a7d999db2fa168705353fc3211f74..a9af058a32ecaa06813f7d8c200c2238e67467fe 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/entity/ToolEntity.kt
@@ -1,6 +1,6 @@
 package de.fraunhofer.iem.dataprovider.tool.entity
 
-import de.fraunhofer.iem.dataprovider.tool.dto.ToolEntityResponseDto
+import de.fraunhofer.iem.dataprovider.tool.dto.ToolDto
 import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType
 import jakarta.persistence.*
 import org.hibernate.Hibernate
@@ -21,8 +21,8 @@ class ToolEntity(
     var toolType: ToolType,
 ) {
 
-    fun toDto(): ToolEntityResponseDto {
-        return ToolEntityResponseDto(this.id!!, this.name, this.toolType.getName())
+    fun toDto(): ToolDto {
+        return toolType.toViewModel()
     }
 
     override fun equals(other: Any?): Boolean {
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/enumeration/ToolType.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/enumeration/ToolType.kt
index c8ddc8a91ea8baa18658b5cacf7f0d07944c5450..32fd953302b4f1c09ad06f6177aa5391ead3463b 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/enumeration/ToolType.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tool/enumeration/ToolType.kt
@@ -1,22 +1,21 @@
 package de.fraunhofer.iem.dataprovider.tool.enumeration
 
 import de.fraunhofer.iem.dataprovider.kpi.enumeration.KpiKind
-import de.fraunhofer.iem.dataprovider.tool.dto.FindingDto
-import de.fraunhofer.iem.dataprovider.tool.dto.ToolResponseDto
+import de.fraunhofer.iem.dataprovider.tool.dto.ToolDto
 
 enum class ToolType {
     ORT {
-        override fun toViewModel(findings: List<FindingDto>): ToolResponseDto {
-            return ToolResponseDto(
+        override fun toViewModel(): ToolDto {
+            return ToolDto(
                 name = this.getName(),
-                findings = findings,
                 relevantKpis = listOf(
                     KpiKind.MAXIMAL_VULNERABILITY.getName(),
                     KpiKind.VULNERABILITY_SCORE.getName(),
                     KpiKind.SECURITY.getName()
                 ),
                 description = "The OSS Review Toolkit (ORT) provides information about dependencies." +
-                    "For more information see https://github.com/oss-review-toolkit/ort."
+                    "For more information see https://github.com/oss-review-toolkit/ort.",
+                toolType = ORT
             )
         }
 
@@ -25,10 +24,9 @@ enum class ToolType {
         }
     },
     OCCMD {
-        override fun toViewModel(findings: List<FindingDto>): ToolResponseDto {
-            return ToolResponseDto(
+        override fun toViewModel(): ToolDto {
+            return ToolDto(
                 name = this.getName(),
-                findings = findings,
                 relevantKpis = listOf(
                     KpiKind.SECURITY.getName(),
                     KpiKind.PROCESS_TRANSPARENCY.getName(),
@@ -40,7 +38,9 @@ enum class ToolType {
                     KpiKind.CHECKED_IN_BINARIES.getName()
                 ),
                 description = "The OCCMD provides various information about the analyzed project." +
-                    "For more information see https://gitlab.opencode.de/opencode-analyzer/occmd-public."
+                    "For more information see https://gitlab.opencode.de/opencode-analyzer/occmd-public.",
+                toolType = OCCMD
+
             )
         }
 
@@ -49,10 +49,9 @@ enum class ToolType {
         }
     },
     Gitlab {
-        override fun toViewModel(findings: List<FindingDto>): ToolResponseDto {
-            return ToolResponseDto(
+        override fun toViewModel(): ToolDto {
+            return ToolDto(
                 name = this.getName(),
-                findings = findings,
                 relevantKpis = listOf(
                     KpiKind.PROCESS_TRANSPARENCY.getName(),
                     KpiKind.PROCESS_COMPLIANCE.getName(),
@@ -61,7 +60,8 @@ enum class ToolType {
                     KpiKind.DOCUMENTATION.getName(),
                 ),
                 description = "The Gitlab API is used to derive information about, e.g., the project's compliance" +
-                    "to OpenCoDE's platform rules."
+                    "to OpenCoDE's platform rules.",
+                toolType = Gitlab
             )
         }
 
@@ -70,6 +70,6 @@ enum class ToolType {
         }
     };
 
-    abstract fun toViewModel(findings: List<FindingDto> = emptyList()): ToolResponseDto
+    abstract fun toViewModel(): ToolDto
     abstract fun getName(): String
 }
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt
index 3d05df712e0805ce5c327fecbe4c3ab5fab3088d..ef1e7b61b6e78309d01ed311a049b87d5ca632a2 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt
@@ -1,6 +1,6 @@
 package de.fraunhofer.iem.dataprovider.toolRun.dto
 
-import de.fraunhofer.iem.dataprovider.tool.dto.ToolResponseDto
+import de.fraunhofer.iem.dataprovider.tool.dto.ToolDto
 import de.fraunhofer.iem.dataprovider.toolRun.entity.ToolRunEntity
 import java.util.*
 
@@ -8,17 +8,17 @@ data class ToolRunDto(
     val id: UUID,
     val createdAt: String,
     val projectId: Long,
-    val tools: List<ToolResponseDto>,
+    val tools: List<ToolDto>,
     val languages: Set<LanguageDto> = emptySet()
 ) {
     companion object {
-        fun getDtoFromEntityWithToolFindings(toolRunEntity: ToolRunEntity, tools: List<ToolResponseDto>): ToolRunDto {
+        fun getDtoFromEntity(toolRunEntity: ToolRunEntity): ToolRunDto {
             if (toolRunEntity.id != null) {
                 return ToolRunDto(
                     id = toolRunEntity.id!!,
                     createdAt = toolRunEntity.createdAt.toString(),
                     projectId = toolRunEntity.repository.projectId,
-                    tools = tools,
+                    tools = toolRunEntity.toolEntities.map { it.toDto() },
                     languages = toolRunEntity.languageEntities.map {
                         LanguageDto(name = it.name, percentage = it.percentage)
                     }.toSet()
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
index da26308d4854087f841b3965fe4a374efe920efe..f1461731cd00fd4b13cf38808b72794b9e68d54c 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
@@ -5,6 +5,7 @@ import de.fraunhofer.iem.dataprovider.repository.dto.RepositoryCreateDto
 import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService
 import de.fraunhofer.iem.dataprovider.tool.dto.CreateToolDto
 import de.fraunhofer.iem.dataprovider.tool.service.ToolService
+import de.fraunhofer.iem.dataprovider.toolRun.dto.ToolRunDto
 import de.fraunhofer.iem.dataprovider.toolRun.entity.LanguageEntity
 import de.fraunhofer.iem.dataprovider.toolRun.entity.ToolRunEntity
 import de.fraunhofer.iem.dataprovider.toolRun.repository.ToolRunRepository
@@ -18,7 +19,6 @@ class ToolRunDbService(
     private val toolService: ToolService
 ) {
 
-
     @Transactional
     fun createToolRun(
         repoDto: RepositoryCreateDto,
@@ -56,7 +56,9 @@ class ToolRunDbService(
 
     //TODO: this should return a create tool run dto
     @Transactional(readOnly = true)
-    fun getToolRunByProjectId(projectId: Long): ToolRunEntity {
-        return toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId)
+    fun getToolRunByProjectId(projectId: Long): ToolRunDto {
+        return ToolRunDto.getDtoFromEntity(
+            toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId)
+        )
     }
 }
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt
index 1734266b769f6341bc96146c9e91c0ceb851ae2d..a343e4b5effe28a1e7d85c619ecbcde84b9f7b51 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt
@@ -3,7 +3,6 @@ package de.fraunhofer.iem.dataprovider.toolRun.service
 import de.fraunhofer.iem.dataprovider.kpi.service.KPIService
 import de.fraunhofer.iem.dataprovider.logger.getLogger
 import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService
-import de.fraunhofer.iem.dataprovider.tool.dto.ToolResponseDto
 import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType
 import de.fraunhofer.iem.dataprovider.toolRun.dto.ToolRunDto
 import de.fraunhofer.iem.dataprovider.tools.gitlab.service.RepositoryDetailsService
@@ -124,51 +123,40 @@ class ToolRunService(
         dispatcher: CoroutineDispatcher = Dispatchers.IO,
         includeFindings: Boolean = false
     ): ToolRunDto {
-        val toolRunEntity = toolRunDbService.getToolRunByProjectId(projectId = projectId)
+        val toolRun = withContext(dispatcher) {
+            toolRunDbService.getToolRunByProjectId(projectId = projectId)
+        }
 
-        val apiJobs: MutableList<Deferred<ToolResponseDto>> = mutableListOf()
+        val apiJobs: MutableList<Job> = mutableListOf()
 
         if (includeFindings) {
-            toolRunEntity.toolEntities.forEach { tool ->
+            toolRun.tools.forEach { tool ->
                 when (tool.toolType) {
                     ToolType.ORT -> {
                         apiJobs.add(
-                            defaultScope.async {
+                            defaultScope.launch {
                                 val rawOrtResult = ortService.getOrtResults(projectId = projectId)
                                 val findings = ortService.getFindings(rawOrtResult)
-                                tool.toolType.toViewModel(findings = findings)
+                                tool.findings.addAll(findings)
                             }
                         )
                     }
 
                     else -> {
-                        apiJobs.add(
-                            defaultScope.async {
-                                tool.toolType.toViewModel()
-                            }
-                        )
+                        logger.info("No findings to retrieve for tool ${tool.toolType}")
                     }
                 }
             }
-        } else {
-            toolRunEntity.toolEntities.forEach { tool ->
-                apiJobs.add(
-                    defaultScope.async {
-                        tool.toolType.toViewModel()
-                    }
-                )
-            }
         }
 
-        val tools = apiJobs.mapNotNull {
+        apiJobs.forEach {
             try {
-                it.await()
+                it.join()
             } catch (exception: Exception) {
                 logger.error("API job failed with error $exception")
-                null
             }
         }
 
-        return ToolRunDto.getDtoFromEntityWithToolFindings(toolRunEntity, tools)
+        return toolRun
     }
 }