diff --git a/src/calng/utils.py b/src/calng/utils.py
index e3e747af117fa9e32661db77120250e8a1a4ebcb..d4cd132174e339a920762d35091cc179c5ff4040 100644
--- a/src/calng/utils.py
+++ b/src/calng/utils.py
@@ -47,13 +47,16 @@ class ContextWarningLamp:
         if (warn_type not in self._active_warnings) or (
             not only_print_once and message != self._active_warnings[warn_type]
         ):
-            self._device.log_status_warn(message)
+            self._device.log_status_warn(f"{warn_type.name}: {message}")
         self._new_warnings.add(warn_type)
         self._active_warnings[warn_type] = message
 
     def update_state(self, on_success="NORMAL", on_error="ERROR"):
-        for now_okay in self._new_tested - self._new_warnings:
-            self._active_warnings.pop(now_okay, None)
+        for warn_type_lifted in self._active_warnings.keys() & (
+            self._new_tested - self._new_warnings
+        ):
+            del self._active_warnings[warn_type_lifted]
+            self._device.log_status_info(f"Lifted warning: {warn_type_lifted.name}")
         current_state = self._device.unsafe_get(self._schema_key)
         if self._active_warnings and current_state != on_error:
             self._device.set(self._schema_key, on_error)