diff --git a/neo/storage/operation.py b/neo/storage/operation.py
index c78eaa07dcfa01e7449fa7eb04773d90b15e334d..b20e97dc1133d15496c9c9c01528f24eb3288b3b 100644
--- a/neo/storage/operation.py
+++ b/neo/storage/operation.py
@@ -301,6 +301,7 @@ class OperationEventHandler(StorageEventHandler):
         o = app.dm.getObject(oid, serial, tid)
         p = Packet()
         if o is not None:
+            logging.debug('o = %r' % (o,))
             serial, next_serial, compression, checksum, data = o
             if next_serial is None:
                 next_serial = INVALID_SERIAL
@@ -341,16 +342,14 @@ class OperationEventHandler(StorageEventHandler):
 
     def handleAskStoreTransaction(self, conn, packet, tid, user, desc,
                                   ext, oid_list):
-        app = self.app
-
-        try:
-            t = app.transaction_dict[tid]
-        except KeyError:
-            p = Packet()
-            p.protocolError(packet.getId(), 'unknown tid %s' % dump(tid))
-            conn.addPacket(p)
+        uuid = conn.getUUID()
+        if uuid is None:
+            self.handleUnexpectedPacket(conn, packet)
             return
 
+        app = self.app
+
+        t = app.transaction_dict.setdefault(tid, TransactionInformation(uuid))
         t.addTransaction(oid_list, user, desc, ext)
         conn.addPacket(Packet().answerStoreTransaction(packet.getId(), tid))