diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py
index e12c646542301a895feb6c976c3ef03755e8433b..eb419db426cd516da30f5f953b8a52850a470d79 100644
--- a/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py
+++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py
@@ -1,17 +1,31 @@
-from traits.api import Any
+from traits.api import Any, List
 
 from force_bdss.api import BaseNotificationListener
 import zmq
 
 
 class UINotification(BaseNotificationListener):
-    _zmq_context = Any()
-    _zmq_socket = Any()
+    _context = Any()
+    _pub_socket = Any()
+    _rep_socket = Any()
+    _msg_cache = List()
 
     def deliver(self, model, message):
-        self._zmq_socket.send(("ACTION {}".format(message)).encode("utf-8"))
+        try:
+            data = self._rep_socket.recv(flags=zmq.NOBLOCK)
+        except zmq.ZMQError:
+            pass
+        else:
+            self._rep_socket.send_multipart(self._msg_cache)
+
+        msg = "ACTION {}".format(message).encode("utf-8")
+        self._msg_cache.append(msg)
+        self._pub_socket.send(msg)
 
     def init_persistent_state(self, model):
-        self._zmq_context = zmq.Context()
-        self._zmq_socket = self._zmq_context.socket(zmq.PUB)
-        self._zmq_socket.bind("tcp://*:12345")
+        self._context = zmq.Context()
+        self._pub_socket = self._context.socket(zmq.PUB)
+        self._pub_socket.bind("tcp://*:12345")
+
+        self._rep_socket = self._context.socket(zmq.REP)
+        self._rep_socket.bind("tcp://*:12346")
diff --git a/utils/zmq_client.py b/utils/zmq_client.py
index 60961f8f1ae05e9a07bd6bcf3c095a0ed9f0ad1e..03a2b44a3644a640ea5d1124d68f80ff760d8453 100644
--- a/utils/zmq_client.py
+++ b/utils/zmq_client.py
@@ -5,9 +5,20 @@ port = "5556"
 # Socket to talk to server
 context = zmq.Context()
 socket = context.socket(zmq.SUB)
-socket.connect ("tcp://localhost:12345")
-
+socket.connect("tcp://localhost:12345")
 socket.setsockopt(zmq.SUBSCRIBE, "".encode("utf-8"))
+send_socket = context.socket(zmq.REQ)
+send_socket.connect("tcp://localhost:12346")
+send_socket.send("hello".encode("utf-8"))
+while True:
+    try:
+        data = send_socket.recv_multipart(flags=zmq.NOBLOCK)
+    except zmq.ZMQError:
+        pass
+    else:
+        print("RECOVERING CACHE", data)
+        break
+
 
 while True:
     string = socket.recv()