diff --git a/apphandler.C b/apphandler.C
index 9d53552..40cd79d 100755
--- a/apphandler.C
+++ b/apphandler.C
@@ -134,8 +134,8 @@
         return -1;
     }
 
-    // Start watchdog
-    r = sd_bus_message_new_method_call(bus,&m,busname,objname,iface,"start");
+    // Stop the current watchdog if any
+    r = sd_bus_message_new_method_call(bus,&m,busname,objname,iface,"stop");
     if (r < 0) {
         fprintf(stderr, "Failed to add the start method object: %s\n", strerror(-r));
         return -1;
@@ -146,6 +146,21 @@
         return -1;
     }
 
+    // Start the watchdog if requested
+    if (reqptr->t_use & 0x40)
+    {
+        r = sd_bus_message_new_method_call(bus,&m,busname,objname,iface,"start");
+        if (r < 0) {
+            fprintf(stderr, "Failed to add the start method object: %s\n", strerror(-r));
+            return -1;
+        }
+        r = sd_bus_call(bus, m, 0, &error, &reply);
+        if (r < 0) {
+            fprintf(stderr, "Failed to call the start method: %s\n", strerror(-r));
+            return -1;
+        }
+    }
+
     sd_bus_error_free(&error);
     sd_bus_message_unref(m);
 
@@ -188,7 +203,18 @@
     return rc;
 }
 
+ipmi_ret_t ipmi_app_set_bmc_global_enables(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+                             ipmi_request_t request, ipmi_response_t response,
+                             ipmi_data_len_t data_len, ipmi_context_t context)
+{
+    ipmi_ret_t rc = IPMI_CC_OK;
+    *data_len = 0;
 
+    // Event and message logging enabled by default so return for now
+    printf("IPMI APP SET BMC GLOBAL ENABLES Ignoring for now\n");
+
+    return rc;
+}
 
 
 
@@ -231,6 +257,12 @@
 
     printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_APP, IPMI_CMD_READ_EVENT);
     ipmi_register_callback(NETFUN_APP, IPMI_CMD_READ_EVENT, NULL, ipmi_app_read_event);
+
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_APP,
+                                            IPMI_CMD_SET_BMC_GLOBAL_ENABLES);
+    ipmi_register_callback(NETFUN_APP, IPMI_CMD_SET_BMC_GLOBAL_ENABLES, NULL,
+                                            ipmi_app_set_bmc_global_enables);
+
     return;
 }
 
diff --git a/apphandler.h b/apphandler.h
index 2c4ea22..2957437 100644
--- a/apphandler.h
+++ b/apphandler.h
@@ -1,16 +1,17 @@
 #ifndef __HOST_IPMI_APP_HANDLER_H__
 #define __HOST_IPMI_APP_HANDLER_H__
 
-// IPMI commands for net functions.
+// IPMI commands for App net functions.
 enum ipmi_netfn_app_cmds
 {
     // Get capability bits
-    IPMI_CMD_RESET_WD       = 0x22,
-    IPMI_CMD_SET_WD         = 0x24,
-    IPMI_CMD_GET_CAP_BIT    = 0x36,
-    IPMI_CMD_GET_DEVICE_ID  = 0x00,
-    IPMI_CMD_SET_ACPI       = 0x06,
-    IPMI_CMD_READ_EVENT     = 0x35,
+    IPMI_CMD_GET_DEVICE_ID          = 0x01,
+    IPMI_CMD_SET_ACPI               = 0x06,
+    IPMI_CMD_RESET_WD               = 0x22,
+    IPMI_CMD_SET_WD                 = 0x24,
+    IPMI_CMD_SET_BMC_GLOBAL_ENABLES = 0x2E,
+    IPMI_CMD_READ_EVENT             = 0x35,
+    IPMI_CMD_GET_CAP_BIT            = 0x36,
 
 };
 
