diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/ContactDiaryStorageModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/ContactDiaryStorageModule.kt
index 8954837fc8f3dd5df846126f1dac1b3b0a4b1296..3a4f0d2102ea6c4d4af3e60440224723895f1481 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/ContactDiaryStorageModule.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/ContactDiaryStorageModule.kt
@@ -2,36 +2,12 @@ package de.rki.coronawarnapp.contactdiary.storage
 
 import dagger.Module
 import dagger.Provides
-import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryLocationDao
-import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryLocationVisitDao
-import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryPersonDao
-import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryPersonEncounterDao
 import de.rki.coronawarnapp.contactdiary.storage.repo.ContactDiaryRepository
 import de.rki.coronawarnapp.contactdiary.storage.repo.DefaultContactDiaryRepository
 import javax.inject.Singleton
 
 @Module
 class ContactDiaryStorageModule {
-    @Singleton
-    @Provides
-    fun contactDiaryDatabase(contactDiaryDatabaseFactory: ContactDiaryDatabase.Factory): ContactDiaryDatabase =
-        contactDiaryDatabaseFactory.create()
-
-    @Provides
-    fun locationDao(contactDiaryDatabase: ContactDiaryDatabase): ContactDiaryLocationDao =
-        contactDiaryDatabase.locationDao()
-
-    @Provides
-    fun locationVisitDao(contactDiaryDatabase: ContactDiaryDatabase): ContactDiaryLocationVisitDao =
-        contactDiaryDatabase.locationVisitDao()
-
-    @Provides
-    fun personDao(contactDiaryDatabase: ContactDiaryDatabase): ContactDiaryPersonDao =
-        contactDiaryDatabase.personDao()
-
-    @Provides
-    fun personEncounterDao(contactDiaryDatabase: ContactDiaryDatabase): ContactDiaryPersonEncounterDao =
-        contactDiaryDatabase.personEncounterDao()
 
     @Singleton
     @Provides
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/ContactDiaryRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/ContactDiaryRepository.kt
index a75ebda35f2bac15096256b0db8450dfea1fd7ae..484dbbcb6e6bff43cecc6ee3300e1d7e1c3cc54c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/ContactDiaryRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/ContactDiaryRepository.kt
@@ -41,4 +41,7 @@ interface ContactDiaryRepository {
     suspend fun deletePersonEncounter(contactDiaryPersonEncounter: ContactDiaryPersonEncounter)
     suspend fun deletePersonEncounters(contactDiaryPersonEncounters: List<ContactDiaryPersonEncounter>)
     suspend fun deleteAllPersonEncounters()
+
+    // Clean
+    suspend fun clear()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/DefaultContactDiaryRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/DefaultContactDiaryRepository.kt
index 8c63ce180d69c792a05fb05bce6ff07b61d0f331..0d5c3052648f7f4ad2d465be962e3931577ab554 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/DefaultContactDiaryRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/storage/repo/DefaultContactDiaryRepository.kt
@@ -5,6 +5,7 @@ import de.rki.coronawarnapp.contactdiary.model.ContactDiaryLocationVisit
 import de.rki.coronawarnapp.contactdiary.model.ContactDiaryPerson
 import de.rki.coronawarnapp.contactdiary.model.ContactDiaryPersonEncounter
 import de.rki.coronawarnapp.contactdiary.model.sortByNameAndIdASC
+import de.rki.coronawarnapp.contactdiary.storage.ContactDiaryDatabase
 import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryLocationDao
 import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryLocationVisitDao
 import de.rki.coronawarnapp.contactdiary.storage.dao.ContactDiaryPersonDao
@@ -25,16 +26,31 @@ import javax.inject.Singleton
 @Singleton
 @Suppress("TooManyFunctions")
 class DefaultContactDiaryRepository @Inject constructor(
-    private val contactDiaryLocationDao: ContactDiaryLocationDao,
-    private val contactDiaryLocationVisitDao: ContactDiaryLocationVisitDao,
-    private val contactDiaryPersonDao: ContactDiaryPersonDao,
-    private val contactDiaryPersonEncounterDao: ContactDiaryPersonEncounterDao
+    contactDiaryDatabaseFactory: ContactDiaryDatabase.Factory
 ) : ContactDiaryRepository {
 
+    private val contactDiaryDatabase: ContactDiaryDatabase by lazy {
+        contactDiaryDatabaseFactory.create()
+    }
+    private val contactDiaryLocationDao: ContactDiaryLocationDao by lazy {
+        contactDiaryDatabase.locationDao()
+    }
+    private val contactDiaryLocationVisitDao: ContactDiaryLocationVisitDao by lazy {
+        contactDiaryDatabase.locationVisitDao()
+    }
+    private val contactDiaryPersonDao: ContactDiaryPersonDao by lazy {
+        contactDiaryDatabase.personDao()
+    }
+    private val contactDiaryPersonEncounterDao: ContactDiaryPersonEncounterDao by lazy {
+        contactDiaryDatabase.personEncounterDao()
+    }
+
     // Location
-    override val locations: Flow<List<ContactDiaryLocation>> = contactDiaryLocationDao
-        .allEntries()
-        .map { it.sortByNameAndIdASC() }
+    override val locations: Flow<List<ContactDiaryLocation>> by lazy {
+        contactDiaryLocationDao
+            .allEntries()
+            .map { it.sortByNameAndIdASC() }
+    }
 
     override suspend fun addLocation(contactDiaryLocation: ContactDiaryLocation) {
         Timber.d("Adding location $contactDiaryLocation")
@@ -74,10 +90,11 @@ class DefaultContactDiaryRepository @Inject constructor(
     }
 
     // Location visit
-    override val locationVisits: Flow<List<ContactDiaryLocationVisit>> =
+    override val locationVisits: Flow<List<ContactDiaryLocationVisit>> by lazy {
         contactDiaryLocationVisitDao
             .allEntries()
             .map { it.toContactDiaryLocationVisitSortedList() }
+    }
 
     override fun locationVisitsForDate(date: LocalDate): Flow<List<ContactDiaryLocationVisit>> =
         contactDiaryLocationVisitDao
@@ -115,9 +132,11 @@ class DefaultContactDiaryRepository @Inject constructor(
     }
 
     // Person
-    override val people: Flow<List<ContactDiaryPerson>> = contactDiaryPersonDao
-        .allEntries()
-        .map { it.sortByNameAndIdASC() }
+    override val people: Flow<List<ContactDiaryPerson>> by lazy {
+        contactDiaryPersonDao
+            .allEntries()
+            .map { it.sortByNameAndIdASC() }
+    }
 
     override suspend fun addPerson(contactDiaryPerson: ContactDiaryPerson) {
         Timber.d("Adding person $contactDiaryPerson")
@@ -157,10 +176,11 @@ class DefaultContactDiaryRepository @Inject constructor(
     }
 
     // Person encounter
-    override val personEncounters: Flow<List<ContactDiaryPersonEncounter>> =
+    override val personEncounters: Flow<List<ContactDiaryPersonEncounter>> by lazy {
         contactDiaryPersonEncounterDao
             .allEntries()
             .map { it.toContactDiaryPersonEncounterSortedList() }
+    }
 
     override fun personEncountersForDate(date: LocalDate): Flow<List<ContactDiaryPersonEncounter>> =
         contactDiaryPersonEncounterDao
@@ -204,4 +224,9 @@ class DefaultContactDiaryRepository @Inject constructor(
             throw IllegalArgumentException("Entity has default id")
         }
     }
+
+    override suspend fun clear() {
+        Timber.d("Clearing contact diary database")
+        contactDiaryDatabase.clearAllTables()
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt
index 189cdf62a134b0d08ee8e0d9275715d4c4557063..d0529b41e9afaeebcb6b169b6869596481a2595e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt
@@ -18,11 +18,6 @@ import javax.inject.Inject
  * This activity holds all the contact diary fragments
  */
 class ContactDiaryActivity : AppCompatActivity(), HasAndroidInjector {
-    companion object {
-        fun start(context: Context) {
-            context.startActivity(Intent(context, ContactDiaryActivity::class.java))
-        }
-    }
 
     @Inject lateinit var settings: ContactDiarySettings
     @Inject lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Any>
@@ -59,4 +54,10 @@ class ContactDiaryActivity : AppCompatActivity(), HasAndroidInjector {
             data
         )
     }
+
+    companion object {
+        fun start(context: Context) {
+            context.startActivity(Intent(context, ContactDiaryActivity::class.java))
+        }
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt
index 730b20bf1083e902e46313e0a7e3149e1a5fd5d3..a7b81a1d343baa3996baaea86c11825fd64d44af 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt
@@ -9,9 +9,7 @@ import javax.inject.Singleton
 
 @Singleton
 class ContactDiarySettings @Inject constructor(
-
     @AppContext val context: Context
-
 ) {
 
     private val prefs by lazy {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
index dfe45bf08c0fddc5f5f6338359938ca96fa94926..55f7071c94a9709bcfbdec01e6372b573677e89d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/ContactDiaryDayViewModel.kt
@@ -4,6 +4,7 @@ import androidx.lifecycle.asLiveData
 import com.squareup.inject.assisted.Assisted
 import com.squareup.inject.assisted.AssistedInject
 import de.rki.coronawarnapp.contactdiary.ui.day.tabs.ContactDiaryDayTab
+import de.rki.coronawarnapp.contactdiary.util.toFormattedDay
 import de.rki.coronawarnapp.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
@@ -11,22 +12,17 @@ import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.map
 import org.joda.time.LocalDate
-import org.joda.time.format.DateTimeFormat
 
 class ContactDiaryDayViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     @Assisted selectedDay: String
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    private val dateFormat by lazy {
-        DateTimeFormat.forPattern("EEEE, dd.MM.yy")
-    }
-
     private val displayedDay = MutableStateFlow(LocalDate.parse(selectedDay))
 
     val routeToScreen: SingleLiveEvent<ContactDiaryDayNavigationEvents> = SingleLiveEvent()
 
     val uiState = displayedDay.map { day ->
-        UIState(dayText = day.toString(dateFormat))
+        UIState(dayText = day.toFormattedDay())
     }.asLiveData()
 
     fun onCreateButtonClicked(activeTab: ContactDiaryDayTab) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
index bd54f8b7015c866a115fda20d904bc6eae0073c3..4905fc535dfa615d674f817361658210e116f0d0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/overview/adapter/ContactDiaryOverviewAdapter.kt
@@ -4,8 +4,8 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
+import de.rki.coronawarnapp.contactdiary.util.toFormattedDay
 import de.rki.coronawarnapp.databinding.IncludeContactDiaryOverviewItemBinding
-import java.util.Locale
 
 class ContactDiaryOverviewAdapter(private val onItemSelectionListener: (ListItem) -> Unit) :
     RecyclerView.Adapter<ContactDiaryOverviewAdapter.OverviewElementHolder>() {
@@ -47,7 +47,7 @@ class ContactDiaryOverviewAdapter(private val onItemSelectionListener: (ListItem
             onElementSelectionListener: (ListItem) -> Unit
         ) {
             viewDataBinding.contactDiaryOverviewElementName.text =
-                item.date.toString("EEEE, dd.MM.yyyy", Locale.getDefault())
+                item.date.toFormattedDay()
 
             viewDataBinding.contactDiaryOverviewElementBody.setOnClickListener { onElementSelectionListener(item) }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
index 08be2ecedc7134df94b7d52b8feb2c58ae6f3862..6ceec8c3a4a72f82cc53afa2ef67891bf35e8006 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt
@@ -5,6 +5,8 @@ import android.view.inputmethod.InputMethodManager
 import android.widget.EditText
 import androidx.fragment.app.Fragment
 import androidx.viewpager2.widget.ViewPager2
+import org.joda.time.LocalDate
+import java.util.Locale
 
 fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) {
     this.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
@@ -14,6 +16,9 @@ fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) {
     })
 }
 
+// According to tech spec german locale only
+fun LocalDate.toFormattedDay(): String = toString("EEEE, dd.MM.yy", Locale.GERMAN)
+
 fun EditText.showKeyboard() = post {
         if (requestFocus()) context.inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
index 318368ebf5f76390110d8a3212f17a99ba3efb0e..e5beb2512c66b84ace8b4fab61d447f74dcb5f05 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt
@@ -22,7 +22,7 @@ package de.rki.coronawarnapp.util
 import android.annotation.SuppressLint
 import android.content.Context
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
-import de.rki.coronawarnapp.contactdiary.storage.ContactDiaryDatabase
+import de.rki.coronawarnapp.contactdiary.storage.repo.ContactDiaryRepository
 import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings
 import de.rki.coronawarnapp.diagnosiskeys.download.DownloadDiagnosisKeysSettings
 import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository
@@ -51,7 +51,7 @@ class DataReset @Inject constructor(
     private val exposureDetectionTracker: ExposureDetectionTracker,
     private val downloadDiagnosisKeysSettings: DownloadDiagnosisKeysSettings,
     private val riskLevelStorage: RiskLevelStorage,
-    private val contactDiaryDatabase: ContactDiaryDatabase,
+    private val contactDiaryRepository: ContactDiaryRepository,
     private var contactDiarySettings: ContactDiarySettings
 ) {
 
@@ -81,7 +81,7 @@ class DataReset @Inject constructor(
         contactDiarySettings.clear()
 
         // Clear contact diary database
-        contactDiaryDatabase.clearAllTables()
+        contactDiaryRepository.clear()
 
         Timber.w("CWA LOCAL DATA DELETION COMPLETED.")
     }