diff --git a/VERSION b/VERSION
index 4db4b03..93ea0c9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.9.3
+2.9.4
diff --git a/rw_core/core/device/manager.go b/rw_core/core/device/manager.go
index 0b34bfb..75435b1 100755
--- a/rw_core/core/device/manager.go
+++ b/rw_core/core/device/manager.go
@@ -1666,22 +1666,46 @@
 		go func(deviceID string, req *voltha.DeviceImageDownloadRequest, ch chan []*voltha.DeviceImageState) {
 			agent := dMgr.getDeviceAgent(ctx, deviceID)
 			if agent == nil {
-				logger.Errorw(ctx, "Not-found", log.Fields{"device-id": deviceID})
-				ch <- nil
+				logger.Errorw(ctx, "Device-agent-not-found", log.Fields{"device-id": deviceID})
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       req.GetImage().GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_FAILED,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			resp, err := agent.downloadImageToDevice(ctx, req)
 			if err != nil {
 				logger.Errorw(ctx, "download-image-to-device-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       req.GetImage().GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_FAILED,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			err = dMgr.validateDeviceImageResponse(resp)
 			if err != nil {
 				logger.Errorw(ctx, "download-image-to-device-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       req.GetImage().GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_FAILED,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 			ch <- resp.GetDeviceImageStates()
@@ -1713,22 +1737,46 @@
 		go func(deviceID string, req *voltha.DeviceImageRequest, ch chan []*voltha.DeviceImageState) {
 			agent := dMgr.getDeviceAgent(ctx, deviceID)
 			if agent == nil {
-				logger.Errorw(ctx, "Not-found", log.Fields{"device-id": deviceID})
-				ch <- nil
+				logger.Errorw(ctx, "Device-agent-not-found", log.Fields{"device-id": deviceID})
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			resp, err := agent.getImageStatus(ctx, req)
 			if err != nil {
 				logger.Errorw(ctx, "get-image-status-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			err = dMgr.validateDeviceImageResponse(resp)
 			if err != nil {
 				logger.Errorw(ctx, "get-image-status-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 			ch <- resp.GetDeviceImageStates()
@@ -1760,22 +1808,46 @@
 		go func(deviceID string, req *voltha.DeviceImageRequest, ch chan []*voltha.DeviceImageState) {
 			agent := dMgr.getDeviceAgent(ctx, deviceID)
 			if agent == nil {
-				logger.Errorw(ctx, "Not-found", log.Fields{"device-id": deviceID})
-				ch <- nil
+				logger.Errorw(ctx, "Device-agent-not-found", log.Fields{"device-id": deviceID})
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			resp, err := agent.abortImageUpgradeToDevice(ctx, req)
 			if err != nil {
 				logger.Errorw(ctx, "abort-image-upgrade-to-device-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
 			err = dMgr.validateDeviceImageResponse(resp)
 			if err != nil {
 				logger.Errorw(ctx, "abort-image-upgrade-to-device-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 			ch <- resp.GetDeviceImageStates()
@@ -1829,22 +1901,46 @@
 		go func(deviceID string, req *voltha.DeviceImageRequest, ch chan []*voltha.DeviceImageState) {
 			agent := dMgr.getDeviceAgent(ctx, deviceID)
 			if agent == nil {
-				logger.Errorw(ctx, "Not-found", log.Fields{"device-id": deviceID})
-				ch <- nil
+				logger.Errorw(ctx, "Device-agent-not-found", log.Fields{"device-id": deviceID})
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_ACTIVATION_ABORTED,
+					},
+				}}
 				return
 			}
 
 			resp, err := agent.activateImageOnDevice(ctx, req)
 			if err != nil {
 				logger.Errorw(ctx, "activate-image-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_ACTIVATION_ABORTED,
+					},
+				}}
 				return
 			}
 
 			err = dMgr.validateDeviceImageResponse(resp)
 			if err != nil {
 				logger.Errorw(ctx, "activate-image-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 
@@ -1876,22 +1972,46 @@
 		go func(deviceID string, req *voltha.DeviceImageRequest, ch chan []*voltha.DeviceImageState) {
 			agent := dMgr.getDeviceAgent(ctx, deviceID)
 			if agent == nil {
-				logger.Errorw(ctx, "Not-found", log.Fields{"device-id": deviceID})
-				ch <- nil
+				logger.Errorw(ctx, "Device-agent-not-found", log.Fields{"device-id": deviceID})
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_COMMIT_ABORTED,
+					},
+				}}
 				return
 			}
 
 			resp, err := agent.commitImage(ctx, req)
 			if err != nil {
 				logger.Errorw(ctx, "commit-image-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_COMMIT_ABORTED,
+					},
+				}}
 				return
 			}
 
 			err = dMgr.validateDeviceImageResponse(resp)
 			if err != nil {
 				logger.Errorf(ctx, "commit-image-failed", log.Fields{"device-id": deviceID, "error": err})
-				ch <- nil
+				ch <- []*voltha.DeviceImageState{{
+					DeviceId: deviceID,
+					ImageState: &voltha.ImageState{
+						Version:       request.GetVersion(),
+						DownloadState: voltha.ImageState_DOWNLOAD_UNKNOWN,
+						Reason:        voltha.ImageState_UNKNOWN_ERROR,
+						ImageState:    voltha.ImageState_IMAGE_UNKNOWN,
+					},
+				}}
 				return
 			}
 			ch <- resp.GetDeviceImageStates()
