diff --git a/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt b/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt
index 56ae463f42b412c1ecd713da75d110372d7f5af1..2cc1888f45eae6a8c18919933d9cc6d8a0693d27 100644
--- a/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt
+++ b/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt
@@ -1,6 +1,5 @@
 package de.fraunhofer.iem.app.toolRun.service
 
-import de.fraunhofer.iem.adapter.cve.CveAdapter
 import de.fraunhofer.iem.app.kpi.service.KPIService
 import de.fraunhofer.iem.app.logger.getLogger
 import de.fraunhofer.iem.app.repository.service.RepositoryService
@@ -9,6 +8,7 @@ import de.fraunhofer.iem.app.toolRun.dto.ToolRunDto
 import de.fraunhofer.iem.app.tools.gitlab.service.RepositoryDetailsService
 import de.fraunhofer.iem.app.tools.occmd.service.OccmdService
 import de.fraunhofer.iem.app.tools.ort.service.OrtService
+import de.fraunhofer.iem.kpiCalculator.adapter.cve.CveAdapter
 import kotlinx.coroutines.*
 import org.springframework.stereotype.Service
 
@@ -120,10 +120,11 @@ class ToolRunService(
      */
     suspend fun getToolRunForRepository(
         projectId: Long,
-        includeFindings: Boolean = false
+        includeFindings: Boolean = false,
+        dispatcher: CoroutineDispatcher = Dispatchers.IO
     ): ToolRunDto? {
 
-        val toolRun = withContext(Dispatchers.IO) {
+        val toolRun = withContext(dispatcher) {
             repositoryService.getToolRunByProjectId(projectId = projectId)
         }
 
diff --git a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt
similarity index 88%
rename from kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt
rename to kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt
index 262400c53e2fd6028e7f678bcc50c370ed39c0e1..316c11b7ad3bcdee0b07a3ccce22de372eaa96db 100644
--- a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt
+++ b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt
@@ -1,4 +1,4 @@
-package de.fraunhofer.iem.adapter
+package de.fraunhofer.iem.kpiCalculator.adapter
 
 import de.fraunhofer.iem.kpiCalculator.model.kpi.KpiKind
 import de.fraunhofer.iem.kpiCalculator.model.kpi.RawValueKpiCreateDto
diff --git a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt
similarity index 84%
rename from kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt
rename to kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt
index e2519b47487eb8da44d7f968e1dc1ae3860f2511..469d3490a8d340e849eedb0d1cd5809279a5975a 100644
--- a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt
+++ b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt
@@ -1,6 +1,6 @@
-package de.fraunhofer.iem.adapter.cve
+package de.fraunhofer.iem.kpiCalculator.adapter.cve
 
-import de.fraunhofer.iem.adapter.KpiAdapter
+import de.fraunhofer.iem.kpiCalculator.adapter.KpiAdapter
 import de.fraunhofer.iem.kpiCalculator.model.adapter.VulnerabilityDto
 import de.fraunhofer.iem.kpiCalculator.model.kpi.KpiKind
 import de.fraunhofer.iem.kpiCalculator.model.kpi.RawValueKpiCreateDto
@@ -11,7 +11,7 @@ object CveAdapter : KpiAdapter<VulnerabilityDto> {
 
     override fun transformDataToKpi(data: List<VulnerabilityDto>): List<RawValueKpiCreateDto> {
         return data
-            .filter(::filterData)
+            .filter(CveAdapter::filterData)
             .map {
                 RawValueKpiCreateDto(
                     kind = kpiKind,
diff --git a/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt b/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..578e221bdbc960dc4dda6045bb810e8d50c39a0c
--- /dev/null
+++ b/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt
@@ -0,0 +1,49 @@
+package de.fraunhofer.iem.kpiCalculator.adapter.cve
+
+import de.fraunhofer.iem.kpiCalculator.model.adapter.VulnerabilityDto
+import org.junit.jupiter.api.Test
+
+class CveAdapterTest {
+
+    @Test
+    fun transformSingleVulnerabilityToKpi() {
+        val adapter = CveAdapter
+        // valid input
+        val validKpi = adapter.transformDataToKpi(
+            VulnerabilityDto(
+                cveIdentifier = "not blank",
+                packageName = "not blank",
+                severity = 0.1
+            )
+        )
+        assert(validKpi.isNotEmpty())
+        assert(validKpi.first().score in (0..100))
+
+        // invalid input
+        val invalidKpis = CveAdapter.transformDataToKpi(
+            listOf(
+                VulnerabilityDto(
+                    cveIdentifier = "not blank",
+                    packageName = "",
+                    severity = 0.1
+                ),
+                VulnerabilityDto(
+                    cveIdentifier = "",
+                    packageName = "not blank",
+                    severity = 0.1
+                ),
+                VulnerabilityDto(
+                    cveIdentifier = "not blank",
+                    packageName = "not blank",
+                    severity = -0.1
+                ),
+                VulnerabilityDto(
+                    cveIdentifier = "not blank",
+                    packageName = "not blank",
+                    severity = 10.1
+                )
+            )
+        )
+        assert(invalidKpis.isEmpty())
+    }
+}