diff --git a/SAS/ResourceAssignment/SystemStatusDatabase/ssdb.py b/SAS/ResourceAssignment/SystemStatusDatabase/ssdb.py
index e97ac20636637324dd4e791ee233f3e0821b50f3..cb869b21e1a86715a51f26f6a32e96b3daeebd9a 100644
--- a/SAS/ResourceAssignment/SystemStatusDatabase/ssdb.py
+++ b/SAS/ResourceAssignment/SystemStatusDatabase/ssdb.py
@@ -5,21 +5,16 @@ import psycopg2 as pg
 import psycopg2.extras as pgdefs
 from lofar.messaging import Service
 from lofar.common.util import waitForInterrupt
+from lofar.common import dbcredentials
 
 import logging
 import sys
 logging.basicConfig(stream=sys.stdout, level=logging.INFO)
 logger = logging.getLogger(__name__)
 
-DATABASE    = "datamonitor"
-USER        = "lofarsys"
-PASSWORD    = "welkom001"
-
 class SSDB:
     def __init__(self,**kwargs):
-        self.username = kwargs.pop("username", USER)
-        self.password = kwargs.pop("password", PASSWORD)
-        self.database = kwargs.pop("database", DATABASE)
+        self.dbcreds =  kwargs.pop("dbcreds", None)
         self.conn = None
         self.DBconnected = (self.conn and self.conn.status==1)
         self.Qlistall="select * from hosts inner join datapaths on hosts.id = datapaths.hostid;"
@@ -42,10 +37,14 @@ class SSDB:
         self.DBconnected = (self.conn and self.conn.status==1)
         if not self.DBconnected:
             try:
-                self.conn= pg.connect("dbname=%s user=%s password=%s" % (DATABASE,USER,PASSWORD))
+                self.conn = pg.connect(host=self.dbcreds.host,
+                                       user=self.dbcreds.user,
+                                       password=self.dbcreds.password,
+                                       database=self.dbcreds.database,
+                                       connect_timeout=5)
                 self.DBconnected = (self.conn and self.conn.status==1)
             except Exception as e:
-                logger.error("[SSDBconnector]: DB connection could not be restored.")
+                logger.error("[SSDBconnector]: DB connection could not be restored: %s" % (e,))
         return self.DBconnected
 
     def _doquery(self,q):
diff --git a/SAS/ResourceAssignment/SystemStatusService/SSDBQueryService.py b/SAS/ResourceAssignment/SystemStatusService/SSDBQueryService.py
index 7201d5d92aee28d686c08d1bf1690f2dd1d0c558..81cbf0b9bd4ee9e48da7403a657c9eecea9259b9 100644
--- a/SAS/ResourceAssignment/SystemStatusService/SSDBQueryService.py
+++ b/SAS/ResourceAssignment/SystemStatusService/SSDBQueryService.py
@@ -3,6 +3,7 @@
 from lofar.messaging import Service, MessageHandlerInterface
 from lofar.common.util import waitForInterrupt
 from lofar.sas.systemstatus.database.ssdb import SSDB
+from lofar.common import dbcredentials
 
 import logging
 import sys
@@ -11,18 +12,13 @@ logger = logging.getLogger(__name__)
 
 SERVICENAME = "GetServerState"
 BUSNAME     = "simpletest"
-DATABASE    = "datamonitor"
-USER        = "lofarsys"
-PASSWORD    = "welkom001"
 
 class DataMonitorQueryService(MessageHandlerInterface):
 
     def __init__(self,**kwargs):
         super(DataMonitorQueryService,self).__init__(**kwargs)
 
-        self.username = kwargs.pop("username", USER)
-        self.password = kwargs.pop("password", PASSWORD)
-        self.database = kwargs.pop("database", DATABASE)
+        self.dbcreds = kwargs.pop("dbcreds", None)
 
         self.service2MethodMap = {
             'GetStateNames':self.getstatenames,
@@ -35,7 +31,7 @@ class DataMonitorQueryService(MessageHandlerInterface):
 
 
     def prepare_loop(self):
-        self.ssdb = SSDB(username=self.username,password=self.password,database=self.database)
+        self.ssdb = SSDB(dbcreds=self.dbcreds)
 
     def prepare_receive(self):
         self.ssdb.ensure_connected()
@@ -99,9 +95,14 @@ class DataMonitorQueryService(MessageHandlerInterface):
         jobinfo  = self.ssdb.getIngestJobs()
         return { "main" : maininfo, "jobs" : jobinfo };
 
-def createService(busname=BUSNAME,servicename=SERVICENAME):
-    return Service(servicename,DataMonitorQueryService,busname=busname,numthreads=4,use_service_methods=True)
+def createService(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
+    return Service(servicename,
+                   DataMonitorQueryService,
+                   busname=busname,
+                   numthreads=4,
+                   handler_args={'dbcreds': dbcreds},
+                   use_service_methods=True)
 
-def runservice(busname=BUSNAME,servicename=SERVICENAME):
-    with createService(busname,servicename) as GetServerState:
+def runservice(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
+    with createService(busname,servicename,dbcreds) as GetServerState:
         waitForInterrupt()
diff --git a/SAS/ResourceAssignment/SystemStatusService/ssdbservice b/SAS/ResourceAssignment/SystemStatusService/ssdbservice
index 11b7adb47e2e6840552111db4e4d52832fb3ee7a..9f69e52043c0d40c8c36fc4da41d7f75d3217877 100755
--- a/SAS/ResourceAssignment/SystemStatusService/ssdbservice
+++ b/SAS/ResourceAssignment/SystemStatusService/ssdbservice
@@ -7,6 +7,7 @@ runs the systemstatus database service
 import logging
 from optparse import OptionParser
 from lofar.sas.systemstatus.service.SSDBQueryService import runservice
+from lofar.common import dbcredentials
 
 logger = logging.getLogger(__name__)
 DEFAULT_BUSNAME="amq.topic"
@@ -18,8 +19,18 @@ if __name__ == '__main__':
     # Check the invocation arguments
     parser = OptionParser("%prog [options]",
                           description='runs the systemstatus database service')
-    parser.add_option("-b", "--busname", dest="busname", type="string", default=DEFAULT_BUSNAME, help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME)
-    parser.add_option("-s", "--servicename", dest="servicename", type="string", default=DEFAULT_SERVICENAME, help="Name for this service, default: %s" % DEFAULT_SERVICENAME)
+    parser.add_option("-b", "--busname", dest="busname", type="string",
+                      default=DEFAULT_BUSNAME,
+                      help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME)
+    parser.add_option("-s", "--servicename", dest="servicename", type="string",
+                      default=DEFAULT_SERVICENAME,
+                      help="Name for this service, default: %s" % DEFAULT_SERVICENAME)
+    parser.add_option_group(dbcredentials.options_group(parser))
+    parser.set_defaults(dbcredentials="SSDB")
     (options, args) = parser.parse_args()
 
-    runservice(busname=options.busname, servicename=options.servicename)
+    dbcreds = dbcredentials.parse_options(options)
+
+    logger.info("Using dbcreds: %s" % dbcreds.stringWithHiddenPassword())
+
+    runservice(busname=options.busname, servicename=options.servicename, dbcreds=dbcreds)