diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index 1f15ec8f9e7548e147754128ce6906232c5ccd3b..e2f1c0b735a85468cf4853632cc416ed0d75e60f 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -416,7 +416,7 @@ def dbus_connection(name, instance=1):
         return dbuscon
     except:
         # print('Please start ' + str(name) + ' if it is not running')
-        logger.info('Connection to ' + str(name) + ' is not possible.')
+        logger.warning('Connection to ' + str(name) + ' is not possible.')
         return False
 
 
@@ -2364,8 +2364,15 @@ def get_module_handle(module_name, instance=1, timeout=5):
     if module:
         return module
     else:
-        logger.error('No running {} instance found'.format(module_name.upper()))
-        return False
+        try:
+            # try one last time with fixed instance
+            module = dbus_connection(module_name, instance=1)
+            if not module:
+                raise ValueError
+            return module
+        except Exception as err:
+            logger.error('No running {} instance found'.format(module_name.upper()))
+            return False
 
 
 def _get_ccs_dbus_names(exclude=None):
diff --git a/Ccs/poolview_sql.py b/Ccs/poolview_sql.py
index 065750264e1f82b13f77b88ec263d8a1622df03f..3a966f4a707bdcc8eacec525d67d6d6d8dd02f8f 100644
--- a/Ccs/poolview_sql.py
+++ b/Ccs/poolview_sql.py
@@ -1594,18 +1594,23 @@ class TMPoolView(Gtk.Window):
         #         # self.change_cursor(self.scrolled_treelist.get_window(),'progress')
 
     def clear_pool(self, widget):
-        poolmgr = cfl.dbus_connection('poolmanager', cfl.communication['poolmanager'])
 
         # don't clear static pools
         if self.active_pool_info.filename.count('/'):
             return
 
-        widget.set_sensitive(False)
         pool_name = self.get_active_pool_name()
 
         if pool_name is None:
             return
 
+        widget.set_sensitive(False)
+        poolmgr = cfl.get_module_handle('poolmanager', timeout=2)
+
+        if not poolmgr:
+            widget.set_sensitive(True)
+            return
+
         poolmgr.Functions('_clear_pool', pool_name)
         # self.active_pool_info = poolmgr.Dictionaries('loaded_pools', pool_name)
         self.Active_Pool_Info_append(poolmgr.Dictionaries('loaded_pools', pool_name))
diff --git a/Ccs/pus_datapool.py b/Ccs/pus_datapool.py
index e9c1ef799255aef7f6ce4d6d2b633d32baef6d74..dffa48e55e97abb159325f96f967c77938e5325c 100644
--- a/Ccs/pus_datapool.py
+++ b/Ccs/pus_datapool.py
@@ -60,6 +60,8 @@ PLM_PKT_SUFFIX = packet_config.PLM_PKT_SUFFIX
 
 SOCK_TO_LIMIT = 900  # number of tm_recv socket timeouts before SQL session reconnect
 
+PROTOCOLS = ['PUS', 'PLMSIM', 'SPW']
+
 communication = {}
 for name in cfg['ccs-dbus_names']:
     communication[name] = 0
@@ -369,6 +371,9 @@ class DatapoolManager:
             # options = override.get('options', options)
 
         protocol = protocol.upper()
+        if protocol not in PROTOCOLS:
+            self.logger.error('"{}" is not a supported protocol, aborting.'.format(protocol))
+            return
 
         # check if recording connection with pool_name already exists and return if it does
         if pool_name in self.connections:
@@ -477,6 +482,11 @@ class DatapoolManager:
             use_socket = override.get('use_socket', use_socket)
             # options = override.get('options', options)
 
+        protocol = protocol.upper()
+        if protocol not in PROTOCOLS:
+            self.logger.error('"{}" is not a supported protocol, aborting.'.format(protocol))
+            return
+
         if use_socket is not None:
             if isinstance(use_socket, socket.socket):
                 sockfd = use_socket