diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
index ad3e5707f4b2ddb6c9985776646ddc7126b946bb..ed383c7d1fa83bb75448b86cb217054caeea4445 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
@@ -167,7 +167,7 @@ class TestCertificateRepository @Inject constructor(
             mutate {
                 toRefresh.forEach {
                     workedOnIds.add(it.identifier)
-                    this[it.identifier] = it.copy(isUpdatingData = false)
+                    this[it.identifier] = it.copy(isUpdatingData = true)
                 }
             }
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragment.kt
index 228d1e33330e32f43149bf98cb3a90e962fb6aeb..96263715b079593f273d3a19bddbcd80c0d736a2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragment.kt
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.DefaultItemAnimator
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.covidcertificate.vaccination.ui.list.VaccinationListFragment
 import de.rki.coronawarnapp.databinding.FragmentCertificatesBinding
+import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.lists.decorations.TopBottomPaddingDecorator
 import de.rki.coronawarnapp.util.lists.diffutil.update
@@ -56,6 +57,30 @@ class CertificatesFragment : Fragment(R.layout.fragment_certificates), AutoInjec
                             .actionCertificatesFragmentToCovidCertificateDetailsFragment(event.identifier)
                     )
                 }
+                is CertificatesFragmentEvents.ShowRefreshErrorCertificateDialog -> {
+                    val dialog = DialogHelper.DialogInstance(
+                        context = requireContext(),
+                        title = R.string.test_certificate_refresh_dialog_title,
+                        message = event.error.localizedMessage,
+                        positiveButton = R.string.test_certificate_refresh_dialog_confirm_button,
+                        cancelable = false
+                    )
+                    DialogHelper.showDialog(dialog)
+                }
+                is CertificatesFragmentEvents.ShowDeleteErrorCertificateDialog -> {
+                    val dialog = DialogHelper.DialogInstance(
+                        context = requireContext(),
+                        title = R.string.test_certificate_delete_dialog_title,
+                        message = R.string.test_certificate_delete_dialog_body,
+                        positiveButton = R.string.test_certificate_delete_dialog_confirm_button,
+                        negativeButton = R.string.test_certificate_delete_dialog_cancel_button,
+                        cancelable = false,
+                        positiveButtonFunction = {
+                            viewModel.deleteTestCertificate(event.identifier)
+                        }
+                    )
+                    DialogHelper.showDialog(dialog)
+                }
             }
         }
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragmentEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragmentEvents.kt
index af40e9f704570011c894891a0ed85c4ce6b091fb..259f0feb5c669db1f99a271c1ffc7d11a7869061 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragmentEvents.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesFragmentEvents.kt
@@ -1,5 +1,7 @@
 package de.rki.coronawarnapp.covidcertificate.test.ui
 
+import de.rki.coronawarnapp.covidcertificate.test.core.storage.TestCertificateIdentifier
+
 sealed class CertificatesFragmentEvents {
 
     data class OpenVaccinationRegistrationGraph(val registrationAcknowledged: Boolean) : CertificatesFragmentEvents()
@@ -7,4 +9,9 @@ sealed class CertificatesFragmentEvents {
     data class GoToVaccinationList(val personIdentifierCodeSha256: String) : CertificatesFragmentEvents()
 
     data class GoToCovidCertificateDetailScreen(val identifier: String) : CertificatesFragmentEvents()
+
+    data class ShowRefreshErrorCertificateDialog(val error: Exception) : CertificatesFragmentEvents()
+
+    data class ShowDeleteErrorCertificateDialog(val identifier: TestCertificateIdentifier) :
+        CertificatesFragmentEvents()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesViewModel.kt
index 33a26b263fe19f09009c279ce5b0dcdbcd0b3d86..374c269b475ecea16b6f5fe41bc4f6896b73937e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/CertificatesViewModel.kt
@@ -33,7 +33,16 @@ class CertificatesViewModel @AssistedInject constructor(
 
     private fun refreshTestCertificate(identifier: TestCertificateIdentifier) {
         launch {
-            testCertificateRepository.refresh(identifier)
+            val error = testCertificateRepository.refresh(identifier).mapNotNull { it.error }.singleOrNull()
+            if (error != null) {
+                events.postValue(CertificatesFragmentEvents.ShowRefreshErrorCertificateDialog(error))
+            }
+        }
+    }
+
+    fun deleteTestCertificate(identifier: TestCertificateIdentifier) {
+        launch {
+            testCertificateRepository.deleteCertificate(identifier)
         }
     }
 
@@ -90,8 +99,16 @@ class CertificatesViewModel @AssistedInject constructor(
         if (certificate.isCertificateRetrievalPending) {
             CovidTestCertificateErrorCard.Item(
                 testDate = certificate.registeredAt,
-                onClickAction = {
+                isUpdatingData = certificate.isUpdatingData,
+                onRetryAction = {
                     refreshTestCertificate(certificate.identifier)
+                },
+                onDeleteAction = {
+                    events.postValue(
+                        CertificatesFragmentEvents.ShowDeleteErrorCertificateDialog(
+                            certificate.identifier
+                        )
+                    )
                 }
             )
         } else {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/cards/CovidTestCertificateErrorCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/cards/CovidTestCertificateErrorCard.kt
index 2b67415637fb9ce4103f873902807b72a9dece95..3377a129fe47ba8d15b4ac6677af453871b3e028 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/cards/CovidTestCertificateErrorCard.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/cards/CovidTestCertificateErrorCard.kt
@@ -1,6 +1,8 @@
 package de.rki.coronawarnapp.covidcertificate.test.ui.cards
 
 import android.view.ViewGroup
+import androidx.core.view.isGone
+import androidx.core.view.isInvisible
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.covidcertificate.test.ui.CertificatesAdapter
 import de.rki.coronawarnapp.databinding.CovidTestErrorCardBinding
@@ -30,12 +32,31 @@ class CovidTestCertificateErrorCard(parent: ViewGroup) :
             item.testDate.toShortTimeFormat(),
         )
 
-        retryButton.setOnClickListener { item.onClickAction(item) }
+        retryButton.setOnClickListener {
+            item.onRetryAction(item)
+        }
+
+        if (item.isUpdatingData) {
+            refreshStatus.isGone = false
+            progressBar.show()
+            retryButton.isInvisible = true
+            deleteButton.isInvisible = true
+            body.text = context.getString(R.string.test_certificate_error_label_refreshing)
+        } else {
+            refreshStatus.isGone = true
+            progressBar.hide()
+            retryButton.isInvisible = false
+            deleteButton.isInvisible = false
+            body.text = context.getString(R.string.test_certificate_error_label)
+        }
+        deleteButton.setOnClickListener { item.onDeleteAction(item) }
     }
 
     data class Item(
         override val testDate: Instant,
-        val onClickAction: (Item) -> Unit,
+        val onRetryAction: (Item) -> Unit,
+        val onDeleteAction: (Item) -> Unit,
+        val isUpdatingData: Boolean,
     ) : CovidCertificateTestItem, HasPayloadDiffer {
         override fun diffPayload(old: Any, new: Any): Any? = if (old::class == new::class) new else null
     }
diff --git a/Corona-Warn-App/src/main/res/layout/covid_test_error_card.xml b/Corona-Warn-App/src/main/res/layout/covid_test_error_card.xml
index 4e38c7504b0bb09ea6ef1fba7e02777533a2b7c3..d71d688299aaac25ba702daa4ca0ec8ee1ccb976 100644
--- a/Corona-Warn-App/src/main/res/layout/covid_test_error_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/covid_test_error_card.xml
@@ -63,6 +63,38 @@
         app:layout_constraintTop_toBottomOf="@id/body"
         tools:text="Test durchgeführt am 12.04.21, 18:01 Uhr " />
 
+    <com.google.android.material.progressindicator.CircularProgressIndicator
+        android:id="@+id/progress_bar"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/card_padding"
+        android:layout_marginTop="@dimen/spacing_small"
+        android:layout_marginEnd="@dimen/card_padding"
+        android:layout_marginBottom="@dimen/spacing_small"
+        android:indeterminate="true"
+        android:visibility="gone"
+        app:indicatorColor="@color/colorAccent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/test_time"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:showAnimationBehavior="inward"
+        app:trackColor="@android:color/transparent" />
+
+    <TextView
+        android:id="@+id/refresh_status"
+        style="@style/body2"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/spacing_small"
+        android:layout_marginEnd="@dimen/card_padding"
+        android:focusable="false"
+        android:visibility="gone"
+        android:text="@string/test_certificate_error_refreshing_status"
+        app:layout_constraintStart_toEndOf="@id/progress_bar"
+        app:layout_constraintTop_toTopOf="@id/progress_bar"
+        app:layout_constraintEnd_toEndOf="parent"
+        tools:text="@string/test_certificate_error_refreshing_status" />
+
     <com.google.android.material.button.MaterialButton
         android:id="@+id/retry_button"
         style="@style/Widget.MaterialComponents.Button.OutlinedButton"
@@ -74,9 +106,24 @@
         android:layout_marginBottom="@dimen/spacing_small"
         android:text="@string/test_certificate_error_retry_button"
         android:textColor="@color/colorAccent"
-        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/test_time"
         app:strokeColor="@color/colorAccent" />
 
+    <Button
+        android:id="@+id/delete_button"
+        style="@style/buttonLight"
+        android:backgroundTint="@color/button_main_tracing"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/card_padding"
+        android:layout_marginEnd="@dimen/card_padding"
+        android:layout_marginBottom="@dimen/spacing_small"
+        android:text="@string/test_certificate_error_delete_button"
+        android:textColor="@color/colorAccent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/retry_button"
+        app:strokeColor="@color/colorAccent" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml b/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml
index 40baf5b79178b8f2ce0459db4ec35fb7c0331fb0..5303812669a2119eec01b5ee3dd9c82c91655de1 100644
--- a/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml
@@ -82,4 +82,22 @@
     <string name="error_tc_client_error_call_hotline">Ein Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal oder kontaktieren Sie die technische Hotline über App-Informationen -> Technische Hotline.</string>
     <!-- XTXT: Error text -->
     <string name="error_tc_dcc_expired">Das Zertifikat ist nicht mehr aktuell, Sie können es aus der Corona-App entfernen.</string>
+    <!-- XBUT: Test error delete button -->
+    <string name="test_certificate_error_delete_button">Testzertifikat entfernen</string>
+    <!-- XTXT: Test error refresh dialog title -->
+    <string name="test_certificate_refresh_dialog_title">"Es gibt weiterhin Probleme bei der Abfrage"</string>
+    <!-- XBUT: Test error refresh dialog confirm button -->
+    <string name="test_certificate_refresh_dialog_confirm_button">"OK"</string>
+    <!-- XTXT: Test error delete dialog title -->
+    <string name="test_certificate_delete_dialog_title">"Wollen Sie das Zertifikat wirklich entfernen?"</string>
+    <!-- XTXT: Test error delete dialog body -->
+    <string name="test_certificate_delete_dialog_body">"Wenn das Zertifikat enfernt wird, kann es nicht noch einmal angefordert werden."</string>
+    <!-- XBUT: Test error delete dialog confirm button -->
+    <string name="test_certificate_delete_dialog_confirm_button">"Entfernen"</string>
+    <!-- XBUT: Test error delete dialog cancel button -->
+    <string name="test_certificate_delete_dialog_cancel_button">"Abbrechen"</string>
+    <!-- XTXT: Test error card body refreshing -->
+    <string name="test_certificate_error_label_refreshing">"Ihr Zertifikat wird gerade erstellt…"</string>
+    <!-- XTXT: Test error card body refreshing -->
+    <string name="test_certificate_error_refreshing_status">"Ihr Zertifikat wird gerade angefragt, dies kann einige Minuten dauern…"</string>
 </resources>
diff --git a/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml b/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml
index f38e7b47e394504f1e51149ccd550e9be922d874..ece39a2784ecdbf679e5cbfca640fee0a8a12d3d 100644
--- a/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml
+++ b/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml
@@ -81,4 +81,22 @@
     <string name="error_tc_client_error_call_hotline">Ein Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal oder kontaktieren Sie die technische Hotline über App-Informationen -> Technische Hotline.></string>
     <!-- XTXT: Error text -->
     <string name="error_tc_dcc_expired">Das Zertifikat ist nicht mehr aktuell, Sie können es aus der Corona-App entfernen.</string>
+    <!-- XBUT: Test error delete button -->
+    <string name="test_certificate_error_delete_button">Testzertifikat entfernen</string>
+    <!-- XTXT: Test error refresh dialog title -->
+    <string name="test_certificate_refresh_dialog_title">"Es gibt weiterhin Probleme bei der Abfrage"</string>
+    <!-- XBUT: Test error refresh dialog confirm button -->
+    <string name="test_certificate_refresh_dialog_confirm_button">"OK"</string>
+    <!-- XTXT: Test error delete dialog title -->
+    <string name="test_certificate_delete_dialog_title">"Wollen Sie das Zertifikat wirklich entfernen?"</string>
+    <!-- XTXT: Test error delete dialog body -->
+    <string name="test_certificate_delete_dialog_body">"Wenn das Zertifikat enfernt wird, kann es nicht noch einmal angefordert werden."</string>
+    <!-- XBUT: Test error delete dialog confirm button -->
+    <string name="test_certificate_delete_dialog_confirm_button">"Entfernen"</string>
+    <!-- XBUT: Test error delete dialog cancel button -->
+    <string name="test_certificate_delete_dialog_cancel_button">"Abbrechen"</string>
+    <!-- XTXT: Test error card body refreshing -->
+    <string name="test_certificate_error_label_refreshing">"Ihr Zertifikat wird gerade erstellt…"</string>
+    <!-- XTXT: Test error card body refreshing -->
+    <string name="test_certificate_error_refreshing_status">"Ihr Zertifikat wird gerade angefragt, dies kann einige Minuten dauern…"</string>
 </resources>