diff --git a/go.mod b/go.mod
index 0d90e6d..1386ecf 100644
--- a/go.mod
+++ b/go.mod
@@ -17,7 +17,7 @@
 	github.com/golang/mock v1.6.0
 	github.com/golang/protobuf v1.5.2
 	github.com/google/uuid v1.3.0
-	github.com/opencord/voltha-lib-go/v7 v7.1.1
+	github.com/opencord/voltha-lib-go/v7 v7.1.2
 	github.com/opencord/voltha-protos/v5 v5.1.1
 	github.com/opentracing/opentracing-go v1.2.0
 	github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
diff --git a/go.sum b/go.sum
index c96969b..fe86759 100644
--- a/go.sum
+++ b/go.sum
@@ -191,8 +191,8 @@
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
 github.com/onsi/gomega v1.14.0 h1:ep6kpPVwmr/nTbklSx2nrLNSIO62DoYAhnPNIMhK8gI=
 github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0=
-github.com/opencord/voltha-lib-go/v7 v7.1.1 h1:GWh0Ix7A1gr3b9L7GNy5pSDkLaPyZzJk/4ZNsj/B3eg=
-github.com/opencord/voltha-lib-go/v7 v7.1.1/go.mod h1:LjoFfwqdf/OHKUmzMqzBDGmoxfjmq9l/Y47yeBsK1xI=
+github.com/opencord/voltha-lib-go/v7 v7.1.2 h1:pLO6eorxrPTvABar0Q+4D4znk8S8ndb6t24BmbbWOXs=
+github.com/opencord/voltha-lib-go/v7 v7.1.2/go.mod h1:LjoFfwqdf/OHKUmzMqzBDGmoxfjmq9l/Y47yeBsK1xI=
 github.com/opencord/voltha-protos/v5 v5.1.0/go.mod h1:Ff7eoWsL0K7oNtOBB4UcuWDZdv1zBQ9lLHvpJr02erE=
 github.com/opencord/voltha-protos/v5 v5.1.1 h1:Mj3HQVUw/SNwKOQB1do0fd09ZL/DCSOiFUqa7xR4IsE=
 github.com/opencord/voltha-protos/v5 v5.1.1/go.mod h1:Ff7eoWsL0K7oNtOBB4UcuWDZdv1zBQ9lLHvpJr02erE=
diff --git a/rw_core/core/device/agent.go b/rw_core/core/device/agent.go
index d819fae..1adf88c 100755
--- a/rw_core/core/device/agent.go
+++ b/rw_core/core/device/agent.go
@@ -209,6 +209,8 @@
 	if err := agent.dbProxy.Remove(ctx, agent.deviceID); err != nil {
 		return err
 	}
+	//send the device event to the message bus
+	_ = agent.deviceMgr.Agent.SendDeviceDeletedEvent(ctx, agent.device, time.Now().Unix())
 
 	close(agent.exitChannel)
 
diff --git a/rw_core/core/device/event/event.go b/rw_core/core/device/event/event.go
index ab80736..5d8ccda 100644
--- a/rw_core/core/device/event/event.go
+++ b/rw_core/core/device/event/event.go
@@ -321,3 +321,27 @@
 	logger.Debugw(ctx, "device-state-change-sent", log.Fields{"event": *de})
 	return nil
 }
+
+// SendDeviceDeletedEvent sends Device deleted Event to message bus
+func (q *Agent) SendDeviceDeletedEvent(ctx context.Context, device *voltha.Device, raisedTs int64) error {
+
+	var onuId uint32
+	var ponId uint32
+
+	subCategory := voltha.EventSubCategory_OLT
+	if !device.Root {
+		onuId = device.ProxyAddress.OnuId
+		ponId = device.ProxyAddress.ChannelId
+		subCategory = voltha.EventSubCategory_ONU
+	}
+	de := ev.CreateDeviceDeletedEvent(device.SerialNumber, device.Id, device.ParentId,
+		onuId, ponId, device.Root)
+
+	if err := q.eventProxy.SendDeviceEvent(ctx, de, voltha.EventCategory_EQUIPMENT,
+		subCategory, raisedTs); err != nil {
+		logger.Errorw(ctx, "error-sending-device-deleted-event", log.Fields{"id": device.Id, "err": err})
+		return err
+	}
+	logger.Debugw(ctx, "device-deleted-event-sent", log.Fields{"event": *de})
+	return nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/utils.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/utils.go
index 4598161..f02c3bc 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/utils.go
@@ -48,12 +48,20 @@
 	ContextIsRoot ContextType = "is-root"
 	// ContextParentPort is for the parent interface id of child in the context of the event
 	ContextParentPort ContextType = "parent-port"
+	//ContextPonID is the PON ID the Child device is connected to
+	ContextPonID ContextType = "pon-id"
+	//ContextOnuID is the Onu ID of the child device
+	ContextOnuID ContextType = "onu-id"
+	//ContextParentSerialNum is the serila number of the parent device
+	ContextParentSerialNum ContextType = "olt-serial-number"
 )
 
 type EventName string
 
 const (
 	DeviceStateChangeEvent EventName = "DEVICE_STATE_CHANGE"
+	OltDeviceStateDeleted  EventName = "OLT_DELETED_RAISE_EVENT"
+	OnuDeviceStateDeleted  EventName = "ONU_DELETED_RAISE_EVENT"
 )
 
 type EventAction string
@@ -89,3 +97,27 @@
 		DeviceEventName: fmt.Sprintf("%s_%s", string(DeviceStateChangeEvent), string(Raise)),
 	}
 }
+
+//CreateDeviceDeletedEvent forms and returns a new DeviceState Event
+func CreateDeviceDeletedEvent(serialNumber string, deviceID string, parentID string,
+	onuId uint32, parentPonPort uint32, isRoot bool) *voltha.DeviceEvent {
+
+	context := make(map[string]string)
+	eventName := string(OltDeviceStateDeleted)
+	/* Populating event context */
+	context[string(ContextSerialNumber)] = serialNumber
+	context[string(ContextDeviceID)] = deviceID
+	if !isRoot {
+		context[string(ContextPonID)] = strconv.FormatUint(uint64(parentPonPort), 10)
+		context[string(ContextOnuID)] = strconv.FormatUint(uint64(onuId), 10)
+		context[string(ContextParentID)] = parentID
+		eventName = string(OnuDeviceStateDeleted)
+
+	}
+
+	return &voltha.DeviceEvent{
+		Context:         context,
+		ResourceId:      deviceID,
+		DeviceEventName: eventName,
+	}
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 650f720..f45379f 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -211,7 +211,7 @@
 github.com/modern-go/concurrent
 # github.com/modern-go/reflect2 v1.0.1
 github.com/modern-go/reflect2
-# github.com/opencord/voltha-lib-go/v7 v7.1.1
+# github.com/opencord/voltha-lib-go/v7 v7.1.2
 ## explicit
 github.com/opencord/voltha-lib-go/v7/pkg/adapters/common
 github.com/opencord/voltha-lib-go/v7/pkg/config
