diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
index 04b08cdd10b8ef86ebcb046d27c86077fdc6fbf9..279d405c9973be0178628c99591b7104c7c9297f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
@@ -5,9 +5,11 @@ import androidx.core.content.edit
 import de.rki.coronawarnapp.CoronaWarnApplication
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.risk.RiskLevel
+import de.rki.coronawarnapp.util.preferences.createFlowPreference
 import de.rki.coronawarnapp.util.security.SecurityHelper.globalEncryptedSharedPreferencesInstance
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.map
 import java.util.Date
 
 /**
@@ -399,6 +401,12 @@ object LocalData {
         return Date(time)
     }
 
+    fun lastTimeDiagnosisKeysFromServerFetchFlow() =
+        getSharedPreferenceInstance()
+            .createFlowPreference<Long?>(CoronaWarnApplication.getAppContext()
+                .getString(R.string.preference_timestamp_diagnosis_keys_fetch), 0L).flow
+            .map { if (it != null && it != 0L) Date(it) else null }
+
     /**
      * Sets the last time the server fetched the diagnosis keys from the server as Date object
      * from the EncryptedSharedPrefs
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
index e45cbc98f179654ac80834bbf44931a2cc1e1608..64f63583aa271339a0fd101bb35de41cf6d0f13a 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt
@@ -49,22 +49,11 @@ class TracingRepository @Inject constructor(
     private val timeStamper: TimeStamper
 ) {
 
-    private val internalLastTimeDiagnosisKeysFetched = MutableStateFlow<Date?>(null)
-    val lastTimeDiagnosisKeysFetched: Flow<Date?> = internalLastTimeDiagnosisKeysFetched
+    val lastTimeDiagnosisKeysFetched: Flow<Date?> = LocalData.lastTimeDiagnosisKeysFromServerFetchFlow()
 
     private val internalActiveTracingDaysInRetentionPeriod = MutableStateFlow(0L)
     val activeTracingDaysInRetentionPeriod: Flow<Long> = internalActiveTracingDaysInRetentionPeriod
 
-    /**
-     * Refresh the last time diagnosis keys fetched date with the current shared preferences state.
-     *
-     * @see LocalData
-     */
-    fun refreshLastTimeDiagnosisKeysFetchedDate() {
-        internalLastTimeDiagnosisKeysFetched.value =
-            LocalData.lastTimeDiagnosisKeysFromServerFetch()
-    }
-
     private val internalIsRefreshing =
         taskController.tasks.map { it.isDownloadDiagnosisKeysTaskRunning() || it.isRiskLevelTaskRunning() }
 
@@ -104,7 +93,6 @@ class TracingRepository @Inject constructor(
                 )
             )
             taskController.submit(DefaultTaskRequest(RiskLevelTask::class))
-            refreshLastTimeDiagnosisKeysFetchedDate()
             TimerHelper.startManualKeyRetrievalTimer()
         }
     }
@@ -152,7 +140,6 @@ class TracingRepository @Inject constructor(
                             DownloadDiagnosisKeysTask.Arguments()
                         )
                     )
-                    refreshLastTimeDiagnosisKeysFetchedDate()
                     TimerHelper.checkManualKeyRetrievalTimer()
 
                     taskController.submit(DefaultTaskRequest(RiskLevelTask::class))
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
index ea111127b91b13506bd3a057672c47a837e4d555..0141c47ef0790f12f9a80c15bfb3b2cf9f8afe15 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
@@ -104,7 +104,6 @@ class HomeFragmentViewModel @AssistedInject constructor(
         // TODO the ordering here is weird, do we expect these to run in sequence?
         tracingRepository.refreshRiskLevel()
         tracingRepository.refreshExposureSummary()
-        tracingRepository.refreshLastTimeDiagnosisKeysFetchedDate()
         tracingRepository.refreshActiveTracingDaysInRetentionPeriod()
         TimerHelper.checkManualKeyRetrievalTimer()
         tracingRepository.refreshLastSuccessfullyCalculatedScore()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt
index 2075f82ed79aa0788b3aeec2707de2a86c338597..0c7d1c0197eb8260ead0b4e212dcf5603894417d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt
@@ -37,7 +37,6 @@ class RiskDetailsFragmentViewModel @AssistedInject constructor(
     fun refreshData() {
         tracingRepository.refreshRiskLevel()
         tracingRepository.refreshExposureSummary()
-        tracingRepository.refreshLastTimeDiagnosisKeysFetchedDate()
         TimerHelper.checkManualKeyRetrievalTimer()
         tracingRepository.refreshActiveTracingDaysInRetentionPeriod()
     }