diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResult.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResult.kt
index 1feb415e71dd3e6ce4951b4e8dff34ccc8caa7ae..6424a0ef5f904ae99a655f7981b765056854d097 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResult.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResult.kt
@@ -49,6 +49,8 @@ interface RiskLevelResult {
             aggregatedRiskResult?.mostRecentDateWithLowRisk
         }
 
+    val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+
     enum class FailureReason(val failureCode: String) {
         UNKNOWN("unknown"),
         TRACING_OFF("tracingOff"),
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensions.kt
index 8911020fcceda4ed3392ce67d19b7d5bad108f87..7ce685ff0adb00c276cc5f1ab1c41e5827f12d30 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensions.kt
@@ -30,6 +30,8 @@ private object InitialLowLevelRiskLevelResult : RiskLevelResult {
     override val exposureWindows: List<ExposureWindow>? = null
     override val matchedKeyCount: Int = 0
     override val daysWithEncounters: Int = 0
+    override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+        get() = emptyList() // TODO("Not yet implemented")
 }
 
 private object UndeterminedRiskLevelResult : RiskLevelResult {
@@ -40,4 +42,6 @@ private object UndeterminedRiskLevelResult : RiskLevelResult {
     override val exposureWindows: List<ExposureWindow>? = null
     override val matchedKeyCount: Int = 0
     override val daysWithEncounters: Int = 0
+    override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+        get() = emptyList() // TODO("Not yet implemented")
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTaskResult.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTaskResult.kt
index deddc698d80068ace635d18f229796dada054d07..bdb133d2e01213e721b373fa0818e7ac99096b4c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTaskResult.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTaskResult.kt
@@ -33,6 +33,9 @@ data class RiskLevelTaskResult(
         exposureWindows = null
     )
 
+    override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+        get() = emptyList() // TODO("Not yet implemented")
+
     override fun toString(): String = "RiskLevelTaskResult(" +
         "calculatedAt=$calculatedAt, " +
         "failureReason=$failureReason, " +
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TraceLocationCheckInRisk.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TraceLocationCheckInRisk.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b62398a1c0f006b6fd1008914a491c8eb0c2ead0
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TraceLocationCheckInRisk.kt
@@ -0,0 +1,6 @@
+package de.rki.coronawarnapp.risk
+
+interface TraceLocationCheckInRisk {
+    val checkInId: Long
+    val riskState: RiskState
+}
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt
index 8e65fb16cf165c58a2429ccf987cde6fba68609d..f40a42669d9f633f50cf526f7c219e27ae27e111 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/datadonation/analytics/modules/ExposureRiskMetadataDonorTest.kt
@@ -5,6 +5,7 @@ import de.rki.coronawarnapp.appconfig.ConfigData
 import de.rki.coronawarnapp.datadonation.analytics.modules.exposureriskmetadata.ExposureRiskMetadataDonor
 import de.rki.coronawarnapp.datadonation.analytics.storage.AnalyticsSettings
 import de.rki.coronawarnapp.risk.RiskLevelResult
+import de.rki.coronawarnapp.risk.TraceLocationCheckInRisk
 import de.rki.coronawarnapp.risk.result.AggregatedRiskResult
 import de.rki.coronawarnapp.risk.storage.RiskLevelStorage
 import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
@@ -51,6 +52,8 @@ class ExposureRiskMetadataDonorTest : BaseTest() {
         override val exposureWindows: List<ExposureWindow>? = null
         override val matchedKeyCount: Int = 0
         override val daysWithEncounters: Int = 0
+        override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+            get() = emptyList() // todo
     }
 
     private fun createInstance() = ExposureRiskMetadataDonor(
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
index 9ec5698f0d5b0529d2aff62a4fea3b64333d9c6b..7b281394792db04f57fc4d9030ca1d43d0573092 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelChangeDetectorTest.kt
@@ -68,6 +68,8 @@ class RiskLevelChangeDetectorTest : BaseTest() {
         override val exposureWindows: List<ExposureWindow>? = null
         override val matchedKeyCount: Int = 0
         override val daysWithEncounters: Int = 0
+        override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+            get() = emptyList() // TODO
     }
 
     private fun createInstance(scope: CoroutineScope) = RiskLevelChangeDetector(
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensionsTest.kt
index 986a67bc737f9244c8c9677b354360a77802aac8..61f5e691cadca7bdef7fd97c730fe069e7e000e4 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensionsTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultExtensionsTest.kt
@@ -22,10 +22,12 @@ class RiskLevelResultExtensionsTest : BaseTest() {
         override val exposureWindows: List<ExposureWindow>? = null
         override val matchedKeyCount: Int = 0
         override val daysWithEncounters: Int = 0
+        override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+            get() = emptyList() // TODO("Not yet implemented")
     }
 
     @Test
-    fun `getLastestAndLastSuccessful on empty results`() {
+    fun `getLatestAndLastSuccessful on empty results`() {
         val emptyResults = emptyList<RiskLevelResult>()
 
         emptyResults.tryLatestResultsWithDefaults().apply {
@@ -41,7 +43,7 @@ class RiskLevelResultExtensionsTest : BaseTest() {
     }
 
     @Test
-    fun `getLastestAndLastSuccessful last calculation was successful`() {
+    fun `getLatestAndLastSuccessful last calculation was successful`() {
         val results = listOf(
             createRiskLevelResult(hasResult = true, calculatedAt = Instant.EPOCH),
             createRiskLevelResult(hasResult = true, calculatedAt = Instant.EPOCH.plus(1))
@@ -54,7 +56,7 @@ class RiskLevelResultExtensionsTest : BaseTest() {
     }
 
     @Test
-    fun `getLastestAndLastSuccessful last calculation was not successful`() {
+    fun `getLatestAndLastSuccessful last calculation was not successful`() {
         val results = listOf(
             createRiskLevelResult(hasResult = true, calculatedAt = Instant.EPOCH),
             createRiskLevelResult(hasResult = true, calculatedAt = Instant.EPOCH.plus(1)),
@@ -68,7 +70,7 @@ class RiskLevelResultExtensionsTest : BaseTest() {
     }
 
     @Test
-    fun `getLastestAndLastSuccessful no successful calculations yet`() {
+    fun `getLatestAndLastSuccessful no successful calculations yet`() {
         val results = listOf(
             createRiskLevelResult(hasResult = false, calculatedAt = Instant.EPOCH.plus(10)),
             createRiskLevelResult(hasResult = false, calculatedAt = Instant.EPOCH.plus(11)),
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultTest.kt
index b401435390b6df088edcc5d583196d34be7fc066..27e93e671d109b2534f98775894243528a0be3ed 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelResultTest.kt
@@ -20,6 +20,8 @@ class RiskLevelResultTest : BaseTest() {
         override val exposureWindows: List<ExposureWindow>? = null
         override val matchedKeyCount: Int = 0
         override val daysWithEncounters: Int = 0
+        override val traceLocationCheckInRiskStates: List<TraceLocationCheckInRisk>
+            get() = emptyList() // TODO("Not yet implemented")
     }
 
     @Test