diff --git a/LCS/MessageBus/src/message.py b/LCS/MessageBus/src/message.py
index 8ac655a62c498e70669817917dea3f3fc3ee427e..c4824bb03c8faf69e7b4933fab9fba2d40433a22 100644
--- a/LCS/MessageBus/src/message.py
+++ b/LCS/MessageBus/src/message.py
@@ -194,6 +194,10 @@ class MessageContent(object):
         # builds, skip encode if XML tags continue in <payload>. Hack ahead!
         if qpidMsg.body is None:
           qpidMsg.body = ''  # avoid find() or replace() via escape() on None
+
+        if isinstance(qpidMsg.body, bytes):
+            qpidMsg.body = qpidMsg.body.decode('utf-8')
+
         plIdx = qpidMsg.body.find('<payload>')
         if plIdx != -1:
           plIdx += len('<payload>')
diff --git a/LCS/MessageDaemons/ObservationStartListener/src/ObservationStartListener.py b/LCS/MessageDaemons/ObservationStartListener/src/ObservationStartListener.py
index 3f53d95fea0915776a9de2159256998216548ff5..1b0ec5a5eb943bbbcead3c6223ba2b728adb4840 100755
--- a/LCS/MessageDaemons/ObservationStartListener/src/ObservationStartListener.py
+++ b/LCS/MessageDaemons/ObservationStartListener/src/ObservationStartListener.py
@@ -120,7 +120,7 @@ def processMessages(receiver, matchPrefix, execPath, msgSaveDir):
                 messageFilename = msgSaveDir + 'L' + obsId + '.parset.xml'
 
                 try:
-                    saveData(messageFilename, message)
+                    saveData(messageFilename, message.encode('utf-8'))
 
                     hosts = uniq(hosts)
                     hosts.sort()
@@ -139,7 +139,7 @@ def processMessages(receiver, matchPrefix, execPath, msgSaveDir):
 
         finally:
             if msg is not None:
-                receiver.ack()  # optional for topics, needed for queues
+                receiver.ack(msg)  # optional for topics, needed for queues
 
 def run(broker, address, matchPrefix, execPath, msgSaveDir):
     # Receiver test: qpid-receive -b broker_hostname -a queue_or_exchange_name -f -m 1