diff --git a/.gitattributes b/.gitattributes
index 05595d5efdd437b1b130fba443f8617fcbc630bb..f2131fcfdfe3ab43c12cb330caf1d483e836bffc 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4959,10 +4959,11 @@ SAS/OTDB_Services/test/t_TreeStatusEvents.run -text svneol=unset#application/x-s
 SAS/OTDB_Services/test/t_TreeStatusEvents.sh -text svneol=unset#application/x-shellscript
 SAS/OTDB_Services/test/unittest_db.dump.gz -text svneol=unset#application/x-gzip
 SAS/ResourceAssignment/CMakeLists.txt -text
-SAS/ResourceAssignment/QPIDDatabase/bin/AddHostToQPIDDB.py -text
+SAS/ResourceAssignment/QPIDDatabase/bin/addtoQPIDDB.py -text
 SAS/ResourceAssignment/QPIDDatabase/bin/configQPIDfromDB.py -text
 SAS/ResourceAssignment/QPIDDatabase/bin/gatherfrombrokers.sh -text
 SAS/ResourceAssignment/QPIDDatabase/bin/qpidinfra_dump.sql -text
+SAS/ResourceAssignment/QPIDDatabase/bin/route_to_struct.py -text
 SAS/ResourceAssignment/QPIDDatabase/lib/QPIDDB.py -text
 SAS/ResourceAssignment/QPIDDatabase/lib/__init__.py -text
 SAS/ResourceAssignment/QPIDDatabase/sql/qpidinfradb.sql -text
diff --git a/SAS/ResourceAssignment/QPIDDatabase/bin/AddHostToQPIDDB.py b/SAS/ResourceAssignment/QPIDDatabase/bin/addtoQPIDDB.py
similarity index 100%
rename from SAS/ResourceAssignment/QPIDDatabase/bin/AddHostToQPIDDB.py
rename to SAS/ResourceAssignment/QPIDDatabase/bin/addtoQPIDDB.py
diff --git a/SAS/ResourceAssignment/QPIDDatabase/bin/configQPIDfromDB.py b/SAS/ResourceAssignment/QPIDDatabase/bin/configQPIDfromDB.py
index dfa898811b02c1d6c2f6f6a52b922f00454667e8..4e7184bd7c333af8e9297c2fe0001d442e7f4379 100755
--- a/SAS/ResourceAssignment/QPIDDatabase/bin/configQPIDfromDB.py
+++ b/SAS/ResourceAssignment/QPIDDatabase/bin/configQPIDfromDB.py
@@ -14,10 +14,15 @@ def qpidconfig_add_topic(host,exchange):
 def qpidroute_add(fromhost,tohost,exchange,routingkey):
     print ("qpid-route -d route add %s %s %s \'%s\' " %(tohost,fromhost,exchange,routingkey))
 
+def qpidQroute_add(fromhost,tohost,queue):
+    print ("qpid-route -d queue add %s %s %s amq.direct" %(tohost,fromhost,queue))
+
 QPIDinfra = qpidinfra()
 QPIDinfra.perqueue(qpidconfig_add_queue)
 QPIDinfra.perexchange(qpidconfig_add_topic)
 QPIDinfra.perfederationexchange(qpidroute_add)
+QPIDinfra.perfederationqueue(qpidQroute_add)
+
 
 
 
diff --git a/SAS/ResourceAssignment/QPIDDatabase/bin/route_to_struct.py b/SAS/ResourceAssignment/QPIDDatabase/bin/route_to_struct.py
new file mode 100755
index 0000000000000000000000000000000000000000..e092756eab8bc012c9798711690631000d58a7d4
--- /dev/null
+++ b/SAS/ResourceAssignment/QPIDDatabase/bin/route_to_struct.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+import sys
+from QPIDDB import qpidinfra
+
+
+
+
+todb=qpidinfra()
+
+tosearch = sys.stdin.readlines()
+
+numlines = len(tosearch)
+
+#fqdn=['lhn001.cep2.lofar',
+#      'ccu001.control.lofar',
+#      'sas001.control.lofar',
+#      'cbm001.control.lofar',
+#      'cbm001.control.lofar',
+#      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',      'cbm001.control.lofar',
+      
+
+def to_hostname(s):
+    leafname=s.split(':')[0].split('.')[0].lower()
+    fqdn="%s.control.lofar" %(leafname)
+    #print leafname[0:5]
+    if (leafname[0:5]=='locus'):
+	fqdn="%s.cep2.lofar" %(leafname)
+    if (leafname=='lhn001'):
+	fqdn="%s.cep2.lofar" %(leafname)
+
+    return fqdn
+
+
+
+print (" Num lines %d " %(numlines))
+
+offset=0
+
+while (tosearch[offset] != 'Static Routes:\n'):
+    #print ( "'%s'" %( tosearch[offset]))
+    offset += 1
+    if (offset==numlines):
+	print "notfound"
+	break
+
+if (offset!=numlines):
+    for offset in range(offset,numlines):
+	s = tosearch[offset].split(' ')
+	if ( len(s) ==5 ): # valid description
+	    hosta=to_hostname(s[2])
+	    queuename=s[4].split('=')[1].split(')')[0]
+	    hostb=to_hostname(s[4]) #.split(':')[0].split('.')
+	    if (s[3]=='<='):
+		todb.bindqueuetohost(queuename,hosta)
+		todb.bindqueuetohost(queuename,hostb)
+		todb.setqueueroute(queuename,hostb,hosta)
+		print ("# queue %s from %s to %s" %(queuename,hostb,hosta))
+	    if (s[3]=='=>'):
+		todb.bindqueuetohost(queuename,hosta)
+		todb.bindqueuetohost(queuename,hostb)
+		todb.setqueueroute(queuename,hosta,hostb)
+		print ("# queue %s from %s to %s" %(queuename,hosta,hostb))
+
+
diff --git a/SAS/ResourceAssignment/QPIDDatabase/lib/QPIDDB.py b/SAS/ResourceAssignment/QPIDDatabase/lib/QPIDDB.py
index 408b96a5dff7333d52a631c454567fcb8201fe71..7a85e8ec0ea6861994e048b1422063b0e975b91d 100755
--- a/SAS/ResourceAssignment/QPIDDatabase/lib/QPIDDB.py
+++ b/SAS/ResourceAssignment/QPIDDatabase/lib/QPIDDB.py
@@ -48,6 +48,11 @@ class qpidinfra:
 	for item in ret:
 	    callback(item['fromhost'],item['tohost'],item['exchangename'],'#') #item['keyname'])
 
+    def perfederationqueue(self,callback):
+	ret=self.doquery("select h1.hostname as fromhost ,h2.hostname as tohost , queuename from queueroutes JOIN hosts as h1 on (fromhost=h1.hostid) JOIN hosts as h2 on (tohost=h2.hostid) JOIN queues on (queueid=qid);")
+	for item in ret:
+	    callback(item['fromhost'],item['tohost'],item['queuename'])
+
     def gethostid(self,hostname):
 	tmp=self.doquery("select * from hosts where hostname='%s';" %(hostname))
 	if (tmp==[]):