diff --git a/.gitattributes b/.gitattributes
index a75c0ab764f960e9e2a69832daedd5dcfa4abf02..c30c7891640dabd3ca23f69759bfab0e98ba8450 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4599,6 +4599,11 @@ SAS/Feedback_Service/src/Feedback.h -text
 SAS/Feedback_Service/src/FeedbackMain.cc -text
 SAS/Feedback_Service/src/FeedbackService.conf -text
 SAS/Feedback_Service/src/fb_data_44883.txt -text
+SAS/MoM/CMakeLists.txt -text
+SAS/MoM/MoMQueryService/CMakeLists.txt -text
+SAS/MoM/MoMQueryService/__init__.py -text
+SAS/MoM/MoMQueryService/momprojectdetailsquery.py -text
+SAS/MoM/MoMQueryService/momqueryservice.py -text
 SAS/OTB/OTB-distribution/assembly.xml -text
 SAS/OTB/OTB-distribution/pom.xml -text
 SAS/OTB/OTB/assembly.xml -text
diff --git a/CMake/LofarPackageList.cmake b/CMake/LofarPackageList.cmake
index 1e2efe49f3fc4aab51141a21b84b52c770b9dc87..5a209546d421f49af9b1c3557e40d0b1bdda4f9f 100644
--- a/CMake/LofarPackageList.cmake
+++ b/CMake/LofarPackageList.cmake
@@ -66,6 +66,8 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
   set(MessageBus_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageBus)
   set(MessageDaemons_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageDaemons)
   set(Messaging_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging)
+  set(PyCommon_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging/python/common)
+  set(PyMessaging_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging/python/messaging)
   set(MSLofar_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MSLofar)
   set(pyparameterset_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pyparameterset)
   set(pytools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pytools)
@@ -151,4 +153,5 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
   set(SAS_Tools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/SAS_Tools)
   set(PVSS_DB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/PVSS_DB)
   set(LAPS_CEP_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/LAPS_CEP)
+  set(MoMQueryService_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SAS/MoM/MoMQueryService)
 endif(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
diff --git a/LCS/Messaging/python/messaging/CMakeLists.txt b/LCS/Messaging/python/messaging/CMakeLists.txt
index 142cd51e6ae2bcf14fc2a5e83ff7dc3c38635948..7da1a11a0d96fee3aa46de0b60518c58f9edb52f 100644
--- a/LCS/Messaging/python/messaging/CMakeLists.txt
+++ b/LCS/Messaging/python/messaging/CMakeLists.txt
@@ -1,6 +1,6 @@
 # $Id$
 
-#lofar_package(PyMessaging 1.0 DEPENDS PyCommon)
+lofar_package(PyMessaging 1.0 DEPENDS PyCommon)
 
 include(PythonInstall)
 
diff --git a/SAS/MoM/CMakeLists.txt b/SAS/MoM/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fe7eed0755a032b13c9df21e015f81196840570a
--- /dev/null
+++ b/SAS/MoM/CMakeLists.txt
@@ -0,0 +1,3 @@
+# $Id: CMakeLists.txt 32745 2015-11-01 20:17:08Z schoenmakers $
+
+add_directory(MoMQueryService)
diff --git a/SAS/MoM/MoMQueryService/CMakeLists.txt b/SAS/MoM/MoMQueryService/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4143cbec73786ab9f97a167366e1dc18bd91fed2
--- /dev/null
+++ b/SAS/MoM/MoMQueryService/CMakeLists.txt
@@ -0,0 +1,14 @@
+# $Id$
+
+lofar_package(MoMQueryService 1.0 DEPENDS PyMessaging)
+
+include(PythonInstall)
+
+set(_py_files
+  __init__.py
+  momqueryservice.py
+  momprojectdetailsquery.py
+)
+
+python_install(${_py_files} DESTINATION lofar/mom/momqueryservice)
+
diff --git a/SAS/MoM/MoMQueryService/__init__.py b/SAS/MoM/MoMQueryService/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbbab2d1199b1de168c7f25fb5e7eac727b3d066
--- /dev/null
+++ b/SAS/MoM/MoMQueryService/__init__.py
@@ -0,0 +1 @@
+# $Id$
diff --git a/SAS/MoM/MoMQueryService/momprojectdetailsquery.py b/SAS/MoM/MoMQueryService/momprojectdetailsquery.py
new file mode 100755
index 0000000000000000000000000000000000000000..b2f99eb823a875cae5525fa97954e6d6c6fee746
--- /dev/null
+++ b/SAS/MoM/MoMQueryService/momprojectdetailsquery.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+
+import sys
+from lofar.messaging.RPC import RPC
+
+''' Simple RPC client for Service momqueryservice.GetProjectDetails
+'''
+
+if __name__ == '__main__':
+    if len(sys.argv) <= 1:
+        print 'Please provide one or more mom ids'
+        sys.exit(1)
+
+    ids = ','.join(sys.argv[1:])
+    with RPC('momqueryservice','GetProjectDetails',timeout=10) as getProjectDetails:
+        res,status=getProjectDetails(ids)
+
+        if status == 'OK':
+            for id,obj in res.items():
+                print 'Object %s' % (id)
+                for k,v in obj.items():
+                    print '  %s: %s' % (k, v)
+                print
+        else:
+            print status, res
+
diff --git a/SAS/MoM/MoMQueryService/momqueryservice.py b/SAS/MoM/MoMQueryService/momqueryservice.py
new file mode 100755
index 0000000000000000000000000000000000000000..b36b416e05dc647a2675ee9a1977cbbe26494045
--- /dev/null
+++ b/SAS/MoM/MoMQueryService/momqueryservice.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# $Id$
+
+'''
+Simple Service listening on momqueryservice.GetProjectDetails
+which gives the project details for each requested mom object id
+'''
+
+from mysql import connector
+from lofar.messaging import Service
+
+# do not commit passwd in svn
+passwd=''
+
+class DBlistener:
+    def __init__(self):
+        self.conn = connector.connect(host="mysql1.control.lofar",
+                                        user="momreadonly",
+                                        passwd=passwd,
+                                        database="lofar_mom3")
+
+    def __call__(self, text):
+        # parse text
+        # it should contain a list of ints
+        # filter out everything else to prevent sql injection
+        mom_ids = [x.strip() for x in text.split(',')]
+        mom_ids = [x for x in mom_ids if x.isdigit()]
+
+        cursor = self.conn.cursor()
+        # TODO: make a view for this query in momdb!
+        query = '''SELECT project.mom2id as project_mom2id, project.name as project_name, project.description as project_description,
+        object.mom2id as object_mom2id, object.name as object_name, object.description as object_description, object.mom2objecttype as object_type, object.group_id as object_group_id
+        FROM lofar_mom3.mom2object as object
+        inner join lofar_mom3.mom2object as project on project.id = object.ownerprojectid
+        where object.mom2id in (%s)
+        order by project_mom2id
+        ''' % (','.join(mom_ids))
+        cursor.execute(query)
+
+        result={}
+
+        rows= cursor.fetchall()
+        for row in rows:
+            item = {'project_mom2id': int(row[0]),
+                    'project_name': row[1],
+                    'project_description': row[2],
+                    'object_mom2id': int(row[3]),
+                    'object_name': row[4],
+                    'object_description': row[5],
+                    'object_type': row[6],
+                    'object_group_id': int(row[7]) if row[7] else None}
+            result[str(row[3])] = item
+
+        return result
+
+with Service("momqueryservice", "GetProjectDetails", DBlistener(), startonwith=True) as getProjectDetailsService:
+    getProjectDetailsService.WaitForInterrupt()