diff --git a/internal/pkg/common/interfaces.go b/internal/pkg/common/interfaces.go
index 3268564..728d10e 100755
--- a/internal/pkg/common/interfaces.go
+++ b/internal/pkg/common/interfaces.go
@@ -88,6 +88,7 @@
 
 	SetReadyForOmciConfig(bool)
 	IsReadyForOmciConfig() bool
+	IsOltAvailable() bool
 
 	StorePersistentData(context.Context) error
 	StorePersUniFlowConfig(context.Context, uint8, *[]UniVlanFlowParams, bool) error
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index 8726eb3..6dbddbd 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -4463,9 +4463,14 @@
 			break loop
 		case <-time.After(time.Duration(aTimeout) * time.Second):
 			if retryCounter == retries {
-				logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - send ONU device event!",
-					log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
-				oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureSwUpgrade, OnuOmciCommunicationFailureSwUpgradeDesc)
+				if oo.pBaseDeviceHandler.IsOltAvailable() {
+					logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - send ONU device event!",
+						log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
+					oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureSwUpgrade, OnuOmciCommunicationFailureSwUpgradeDesc)
+				} else {
+					logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - skip ONU device event: OLT unavailable!",
+						log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
+				}
 				oo.incrementTxTimesouts()
 				break loop
 			} else {
@@ -4966,9 +4971,14 @@
 			break loop
 		case <-time.After(time.Duration(aTimeout) * time.Second):
 			if retryCounter == retries {
-				logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - send ONU device event!",
-					log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
-				oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureConfig, OnuOmciCommunicationFailureConfigDesc)
+				if oo.pBaseDeviceHandler.IsOltAvailable() {
+					logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - send ONU device event!",
+						log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
+					oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureConfig, OnuOmciCommunicationFailureConfigDesc)
+				} else {
+					logger.Errorw(ctx, "reqMon: timeout waiting for response - no of max retries reached - skip ONU device event: OLT unavailable!",
+						log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
+				}
 				oo.incrementTxTimesouts()
 				break loop
 			} else {
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 744834a..5910f5f 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -55,6 +55,8 @@
 	oop "github.com/opencord/voltha-protos/v5/go/openolt"
 	"github.com/opencord/voltha-protos/v5/go/tech_profile"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
 )
 
 const (
@@ -224,9 +226,11 @@
 	flowCbChan                     []chan FlowCb
 	mutexFlowMonitoringRoutineFlag sync.RWMutex
 	mutexForDisableDeviceRequested sync.RWMutex
+	mutexOltAvailable              sync.RWMutex
 	stopFlowMonitoringRoutine      []chan bool // length of slice equal to number of uni ports
 	isFlowMonitoringRoutineActive  []bool      // length of slice equal to number of uni ports
 	disableDeviceRequested         bool        // this flag identify ONU received disable request or not
+	oltAvailable                   bool
 }
 
 //newDeviceHandler creates a new device handler
@@ -261,6 +265,7 @@
 	dh.reconcilingReasonUpdate = false
 	dh.reconcilingFirstPass = true
 	dh.disableDeviceRequested = false
+	dh.oltAvailable = false
 	dh.chReconcilingFinished = make(chan bool)
 	dh.reconcileExpiryComplete = adapter.maxTimeoutReconciling //assumption is to have it as duration in s!
 	rECSeconds := int(dh.reconcileExpiryComplete / time.Second)
@@ -4422,12 +4427,16 @@
 	}
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), dh.config.MaxTimeoutInterAdapterComm)
 	defer cancel()
+	dh.setOltAvailable(true)
 	logger.Debugw(subCtx, "send-omci-request", log.Fields{"device-id": dh.device.Id, "request": request, "parent-endpoint": parentEndpoint})
 	_, err = pgClient.ProxyOmciRequest(subCtx, request)
 	if err != nil {
+		if status.Code(err) == codes.Unavailable {
+			dh.setOltAvailable(false)
+		}
 		logger.Errorw(ctx, "omci-failure",
 			log.Fields{"device-id": dh.device.Id, "request": request, "error": err, "request-parent": request.ParentDeviceId,
-				"request-child": request.ChildDeviceId, "request-proxy": request.ProxyAddress})
+				"request-child": request.ChildDeviceId, "request-proxy": request.ProxyAddress, "oltAvailable": dh.IsOltAvailable})
 	}
 	return err
 }
@@ -4602,6 +4611,19 @@
 	return dh.device
 }
 
+func (dh *deviceHandler) setOltAvailable(value bool) {
+	dh.mutexOltAvailable.Lock()
+	dh.oltAvailable = value
+	dh.mutexOltAvailable.Unlock()
+}
+
+// IsOltAvailable - TODO: add comment
+func (dh *deviceHandler) IsOltAvailable() bool {
+	dh.mutexOltAvailable.RLock()
+	defer dh.mutexOltAvailable.RUnlock()
+	return dh.oltAvailable
+}
+
 // GetMetricsEnabled - TODO: add comment
 func (dh *deviceHandler) GetMetricsEnabled() bool {
 	return dh.pOpenOnuAc.MetricsEnabled
