diff --git a/spec/clients.spec.js b/spec/clients.spec.js
index 9996944..1a40975 100644
--- a/spec/clients.spec.js
+++ b/spec/clients.spec.js
@@ -80,7 +80,7 @@
                         workflowRunId = message.workflow_run_id;
 
                         // call-back
-                        workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_KICKSTART, {
+                        workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_NOTIFY_NEW_RUN, {
                             workflow_id: workflowId,
                             workflow_run_id: workflowRunId
                         })
@@ -128,12 +128,12 @@
                     if(register) {
                         let essence = essenceLoader.loadEssence(essenceFileName, true);
 
-                        workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_REG_ESSENCE, {
+                        workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_REGISTER_ESSENCE, {
                             essence: essence
                         });
 
                         workflowManagerClient.on(
-                            eventrouter.serviceEvents.WORKFLOW_REG_ESSENCE,
+                            eventrouter.serviceEvents.WORKFLOW_REGISTER_ESSENCE,
                             (workflowRegResult) => {
                                 callback(null, workflowRegResult);
                             }
@@ -182,7 +182,7 @@
 
         afterEach(function(done) {
             // remove workflow run
-            workflowManagerClient.emit(server.serviceEvents.WORKFLOW_RUN_REMOVE, {
+            workflowManagerClient.emit(server.serviceEvents.WORKFLOW_REMOVE_RUN, {
                 workflow_id: workflowId,
                 workflow_run_id: workflowRunId
             });
@@ -325,4 +325,4 @@
             }, 100);
         });
     });
-})();
\ No newline at end of file
+})();
diff --git a/spec/eventrouter.spec.js b/spec/eventrouter.spec.js
index df594fb..acf1e39 100644
--- a/spec/eventrouter.spec.js
+++ b/spec/eventrouter.spec.js
@@ -87,7 +87,7 @@
 
                         setTimeout(() => {
                             // call-back
-                            workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_KICKSTART, {
+                            workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_NOTIFY_NEW_RUN, {
                                 workflow_id: message.workflow_id,
                                 workflow_run_id: message.workflow_run_id
                             })
@@ -111,6 +111,14 @@
 
                     workflowManagerClient.on(eventrouter.serviceEvents.WORKFLOW_KICKSTART, (message) => {
                         receivedKickstartMessages[1].push(message);
+
+                        setTimeout(() => {
+                            // call-back
+                            workflowManagerClient.emit(eventrouter.serviceEvents.WORKFLOW_NOTIFY_NEW_RUN, {
+                                workflow_id: message.workflow_id,
+                                workflow_run_id: message.workflow_run_id
+                            })
+                        }, 1000);
                     });
 
                     workflowManagerClient.on('connect', () => {
@@ -124,7 +132,7 @@
                     let essence = essenceLoader.loadEssence(essenceFileName, true);
 
                     // register the workflow
-                    workflowManagerClients[0].emit(eventrouter.serviceEvents.WORKFLOW_REG_ESSENCE, {
+                    workflowManagerClients[0].emit(eventrouter.serviceEvents.WORKFLOW_REGISTER_ESSENCE, {
                         essence: essence
                     });
 
@@ -135,7 +143,7 @@
 
                     // handle return
                     workflowManagerClients[0].on(
-                        eventrouter.serviceEvents.WORKFLOW_REG_ESSENCE,
+                        eventrouter.serviceEvents.WORKFLOW_REGISTER_ESSENCE,
                         (workflowRegResult) => {
                             callback(null, workflowRegResult);
                         }
@@ -158,7 +166,7 @@
         afterEach(function() {
             // remove workflow runs
             _.forOwn(workflowRunInfos, (workflowRunInfo) => {
-                workflowManagerClients[0].emit(server.serviceEvents.WORKFLOW_RUN_REMOVE, {
+                workflowManagerClients[0].emit(server.serviceEvents.WORKFLOW_REMOVE_RUN, {
                     workflow_id: workflowRunInfo.workflowId,
                     workflow_run_id: workflowRunInfo.workflowRunId
                 });
@@ -213,6 +221,8 @@
         });
 
         it('all managers should receive kickstart messages', function(done) {
+            this.timeout(5000);
+
             // kickstart the workflow
             probeClient.emit('onu.events', {serialNumber: 'testSerialXXX', other: 'test_other_field'});
             setTimeout(() => {
@@ -221,7 +231,7 @@
                     expect(receivedKickstartMessageStore.length, 'num of messages in a store').to.equal(1);
                 });
                 done();
-            }, 1000);
+            }, 2000);
         });
 
         it('should have only one workflow run', function(done) {
@@ -353,4 +363,4 @@
             }, 2000);
         });
     });
-})();
\ No newline at end of file
+})();
diff --git a/spec/test_clients_workflow_essence.json b/spec/test_clients_workflow_essence.json
index bd37499..90d8bfc 100644
--- a/spec/test_clients_workflow_essence.json
+++ b/spec/test_clients_workflow_essence.json
@@ -19,6 +19,7 @@
         "tasks": {
             "task1": {
                 "class": "XOSEventSensor",
+                "dag_id": "test_clients_workflow",
                 "dag": "dag_test_clients_workflow",
                 "key_field": "serialNumber",
                 "local_variable": "task1",
@@ -30,6 +31,7 @@
             },
             "task2": {
                 "class": "XOSModelSensor",
+                "dag_id": "test_clients_workflow",
                 "dag": "dag_test_clients_workflow",
                 "key_field": "serialNumber",
                 "local_variable": "task2",
diff --git a/spec/test_multi_workflow_essence.json b/spec/test_multi_workflow_essence.json
index 572a432..7d033f5 100644
--- a/spec/test_multi_workflow_essence.json
+++ b/spec/test_multi_workflow_essence.json
@@ -27,6 +27,7 @@
         "tasks": {
             "must_not_be_called_handler": {
                 "class": "UnknownSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_must_not_be_called",
                 "local_variable": "must_not_be_called_handler",
                 "poke_interval": 5,
@@ -35,6 +36,7 @@
             },
             "onu_event_handler": {
                 "class": "XOSEventSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_must_not_be_called",
                 "key_field": "serialNumber",
                 "local_variable": "onu_event_handler",
@@ -46,6 +48,7 @@
             },
             "onu_model_event_handler": {
                 "class": "XOSModelSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_must_not_be_called",
                 "key_field": "serialNumber",
                 "local_variable": "onu_model_event_handler",
@@ -85,6 +88,7 @@
         "tasks": {
             "onu_event_handler": {
                 "class": "XOSEventSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_should_be_called",
                 "key_field": "serialNumber",
                 "local_variable": "onu_event_handler",
@@ -96,6 +100,7 @@
             },
             "onu_model_event_handler": {
                 "class": "XOSModelSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_should_be_called",
                 "key_field": "serialNumber",
                 "local_variable": "onu_model_event_handler",
@@ -107,6 +112,7 @@
             },
             "can_be_stuck_handler": {
                 "class": "UnknownSensor",
+                "dag_id": "must_not_be_called",
                 "dag": "dag_should_be_called",
                 "local_variable": "can_be_stuck_handler",
                 "poke_interval": 5,
