diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
index e1c218f..d32e577 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
@@ -257,7 +257,7 @@
         getNCServices().entrySet().forEach(ncService -> {
             final TriggerNCWork triggerWork = new TriggerNCWork(ClusterControllerService.this,
                     ncService.getValue().getLeft(), ncService.getValue().getRight(), ncService.getKey());
-            workQueue.schedule(triggerWork);
+            executor.submit(triggerWork);
         });
         serviceCtx.addClusterLifecycleListener(new IClusterLifecycleListener() {
             @Override
@@ -271,9 +271,11 @@
                 LOGGER.log(Level.WARNING, "Getting notified that nodes: " + deadNodeIds + " has failed");
                 for (String nodeId : deadNodeIds) {
                     Pair<String, Integer> ncService = getNCService(nodeId);
-                    final TriggerNCWork triggerWork = new TriggerNCWork(ClusterControllerService.this,
-                            ncService.getLeft(), ncService.getRight(), nodeId);
-                    workQueue.schedule(triggerWork);
+                    if (ncService.getRight() != NCConfig.NCSERVICE_PORT_DISABLED) {
+                        final TriggerNCWork triggerWork = new TriggerNCWork(ClusterControllerService.this,
+                                ncService.getLeft(), ncService.getRight(), nodeId);
+                        executor.submit(triggerWork);
+                    }
                 }
             }
         });
@@ -282,10 +284,12 @@
     private void terminateNCServices() throws Exception {
         List<ShutdownNCServiceWork> shutdownNCServiceWorks = new ArrayList<>();
         getNCServices().entrySet().forEach(ncService -> {
-            ShutdownNCServiceWork shutdownWork = new ShutdownNCServiceWork(ncService.getValue().getLeft(),
-                    ncService.getValue().getRight(), ncService.getKey());
-            workQueue.schedule(shutdownWork);
-            shutdownNCServiceWorks.add(shutdownWork);
+            if (ncService.getValue().getRight() != NCConfig.NCSERVICE_PORT_DISABLED) {
+                ShutdownNCServiceWork shutdownWork = new ShutdownNCServiceWork(ncService.getValue().getLeft(),
+                        ncService.getValue().getRight(), ncService.getKey());
+                workQueue.schedule(shutdownWork);
+                shutdownNCServiceWorks.add(shutdownWork);
+            }
         });
         for (ShutdownNCServiceWork shutdownWork : shutdownNCServiceWorks) {
             shutdownWork.sync();
