diff --git a/adaptercore/openolt_eventmgr.go b/adaptercore/openolt_eventmgr.go
index b5650ed..f233f6c 100644
--- a/adaptercore/openolt_eventmgr.go
+++ b/adaptercore/openolt_eventmgr.go
@@ -30,26 +30,27 @@
 )
 
 const (
-	onuDiscoveryEvent       = "ONU_DISCOVERY"
-	onuLosEvent             = "ONU_LOSS_OF_SIGNAL"
-	onuLobEvent             = "ONU_LOSS_OF_BURST"
-	onuLopcMissEvent        = "ONU_LOPC_MISS"
-	onuLopcMicErrorEvent    = "ONU_LOPC_MIC_ERROR"
-	oltLosEvent             = "OLT_LOSS_OF_SIGNAL"
-	oltIndicationDown       = "OLT_DOWN_INDICATION"
-	onuDyingGaspEvent       = "ONU_DYING_GASP"
-	onuSignalsFailEvent     = "ONU_SIGNALS_FAIL"
-	onuStartupFailEvent     = "ONU_STARTUP_FAIL"
-	onuSignalDegradeEvent   = "ONU_SIGNAL_DEGRADE"
-	onuDriftOfWindowEvent   = "ONU_DRIFT_OF_WINDOW"
-	onuActivationFailEvent  = "ONU_ACTIVATION_FAIL"
-	onuProcessingErrorEvent = "ONU_PROCESSING_ERROR"
-	onuTiwiEvent            = "ONU_TRANSMISSION_WARNING"
-	onuLossOmciEvent        = "ONU_LOSS_OF_OMCI_CHANNEL"
-	onuLossOfKeySyncEvent   = "ONU_LOSS_OF_KEY_SYNC"
-	onuLossOfFrameEvent     = "ONU_LOSS_OF_FRAME"
-	onuLossOfPloamEvent     = "ONU_LOSS_OF_PLOAM"
-	ponIntfDownIndiction    = "OLT_PON_INTERFACE_DOWN"
+	onuDiscoveryEvent           = "ONU_DISCOVERY"
+	onuLosEvent                 = "ONU_LOSS_OF_SIGNAL"
+	onuLobEvent                 = "ONU_LOSS_OF_BURST"
+	onuLopcMissEvent            = "ONU_LOPC_MISS"
+	onuLopcMicErrorEvent        = "ONU_LOPC_MIC_ERROR"
+	oltLosEvent                 = "OLT_LOSS_OF_SIGNAL"
+	oltIndicationDown           = "OLT_DOWN_INDICATION"
+	onuDyingGaspEvent           = "ONU_DYING_GASP"
+	onuSignalsFailEvent         = "ONU_SIGNALS_FAIL"
+	onuStartupFailEvent         = "ONU_STARTUP_FAIL"
+	onuSignalDegradeEvent       = "ONU_SIGNAL_DEGRADE"
+	onuDriftOfWindowEvent       = "ONU_DRIFT_OF_WINDOW"
+	onuActivationFailEvent      = "ONU_ACTIVATION_FAIL"
+	onuProcessingErrorEvent     = "ONU_PROCESSING_ERROR"
+	onuTiwiEvent                = "ONU_TRANSMISSION_WARNING"
+	onuLossOmciEvent            = "ONU_LOSS_OF_OMCI_CHANNEL"
+	onuLossOfKeySyncEvent       = "ONU_LOSS_OF_KEY_SYNC"
+	onuLossOfFrameEvent         = "ONU_LOSS_OF_FRAME"
+	onuLossOfPloamEvent         = "ONU_LOSS_OF_PLOAM"
+	ponIntfDownIndiction        = "OLT_PON_INTERFACE_DOWN"
+	onuDeactivationFailureEvent = "ONU_DEACTIVATION_FAILURE"
 )
 
 const (
@@ -133,6 +134,9 @@
 	case *oop.AlarmIndication_OnuItuPonStatsInd:
 		log.Infow("Received onu Itu Pon Stats indication ", log.Fields{"alarm_ind": alarmInd})
 		log.Infow("Not implemented yet", log.Fields{"alarm_ind": alarmInd})
+	case *oop.AlarmIndication_OnuDeactivationFailureInd:
+		log.Infow("Received onu deactivation failure indication ", log.Fields{"alarm_ind": alarmInd})
+		err = em.onuDeactivationFailureIndication(alarmInd.GetOnuDeactivationFailureInd(), deviceID, raisedTs)
 	default:
 		err = NewErrInvalidValue(log.Fields{"indication-type": alarmInd}, nil)
 	}
@@ -477,3 +481,24 @@
 	}
 	log.Info("sent-olt-intf-oper-status-event-to-kafka")
 }
+
+func (em *OpenOltEventMgr) onuDeactivationFailureIndication(onuDFI *oop.OnuDeactivationFailureIndication, deviceID string, raisedTs int64) error {
+	var de voltha.DeviceEvent
+	context := make(map[string]string)
+	/* Populating event context */
+	context["onu-id"] = strconv.FormatUint(uint64(onuDFI.OnuId), base10)
+	context["intf-id"] = strconv.FormatUint(uint64(onuDFI.IntfId), base10)
+	context["failure-reason"] = strconv.FormatUint(uint64(onuDFI.FailReason), base10)
+	/* Populating device event body */
+	de.Context = context
+	de.ResourceId = deviceID
+	de.DeviceEventName = onuDeactivationFailureEvent
+
+	/* Send event to KAFKA */
+	if err := em.eventProxy.SendDeviceEvent(&de, equipment, onu, raisedTs); err != nil {
+		log.Errorw("Failed to send ONU deactivation failure event", log.Fields{"onu-id": onuDFI.OnuId, "intf-id": onuDFI.IntfId})
+		return err
+	}
+	log.Infow("ONU deactivation failure event sent to KAFKA", log.Fields{"onu-id": onuDFI.OnuId, "intf-id": onuDFI.IntfId})
+	return nil
+}
