diff --git a/VERSION b/VERSION
index 2975971..29c87b1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.5.15
+4.5.16
diff --git a/internal/pkg/config/config.go b/internal/pkg/config/config.go
index 0bd4fde..a7dc890 100644
--- a/internal/pkg/config/config.go
+++ b/internal/pkg/config/config.go
@@ -61,6 +61,7 @@
 	defaultMaxBackoffRetryDelay               = 10 * time.Second
 	defaultAdapterEndpoint                    = "adapter-open-olt"
 	defaultCheckOnuDevExistenceAtOnuDiscovery = false
+	defaultForceOnuDiscIndProcessing          = false
 	defaultMaxRetries                         = 10
 )
 
@@ -101,6 +102,7 @@
 	EnableONUStats                     bool
 	EnableGEMStats                     bool
 	CheckOnuDevExistenceAtOnuDiscovery bool
+	ForceOnuDiscIndProcessing          bool
 }
 
 // NewAdapterFlags returns a new RWCore config
@@ -135,6 +137,7 @@
 		MinBackoffRetryDelay:               defaultMinBackoffRetryDelay,
 		MaxBackoffRetryDelay:               defaultMaxBackoffRetryDelay,
 		CheckOnuDevExistenceAtOnuDiscovery: defaultCheckOnuDevExistenceAtOnuDiscovery,
+		ForceOnuDiscIndProcessing:          defaultForceOnuDiscIndProcessing,
 		MaxRetries:                         defaultMaxRetries,
 	}
 	return &adapterFlags
@@ -301,6 +304,10 @@
 		"check_onu_exist_on_discovery",
 		defaultCheckOnuDevExistenceAtOnuDiscovery,
 		"Whether to check for flows only or child device before honoring discovery?")
+	flag.BoolVar(&(so.ForceOnuDiscIndProcessing),
+		"force_onu_disc_processing",
+		defaultForceOnuDiscIndProcessing,
+		"Skip the check for onu device existence on onu discovery")
 
 	flag.Parse()
 	containerName := getContainerInfo()
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 9c82a8c..bc971a6 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -1710,14 +1710,28 @@
 	return onuDev
 }
 
+// checkForResourceExistance checks for either device in rw-core or active techprofile in olt-adapter, based on the flag CheckOnuDevExistenceAtOnuDiscovery.
+// If the ONU device/resource exists in either of these, the ONU discovery will be ignored.
 func (dh *DeviceHandler) checkForResourceExistance(ctx context.Context, onuDiscInd *oop.OnuDiscIndication, sn string) (bool, error) {
-	channelID := onuDiscInd.GetIntfId()
 	parentPortNo := plt.IntfIDToPortNo(onuDiscInd.GetIntfId(), voltha.Port_PON_OLT)
-	tpInstExists := false
-
 	// CheckOnuDevExistenceAtOnuDiscovery if true , a check will be made for the existence of the onu device. If the onu device
 	// still exists , the onu discovery will be ignored, else a check for active techprofiles for ONU is checked.
-	if !dh.openOLT.CheckOnuDevExistenceAtOnuDiscovery {
+	if dh.openOLT.CheckOnuDevExistenceAtOnuDiscovery {
+		onuDevice, _ := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
+			ParentId:     dh.device.Id,
+			SerialNumber: sn,
+			ParentPortNo: parentPortNo,
+		})
+		if onuDevice != nil {
+			logger.Infow(ctx, "Child device still present ignoring discovery indication", log.Fields{"sn": sn})
+			return true, nil
+		}
+		logger.Infow(ctx, "No device present in core , continuing with discovery", log.Fields{"sn": sn})
+
+		return false, nil
+	} else {
+		tpInstExists := false
+		channelID := onuDiscInd.GetIntfId()
 		onuDev := dh.getChildDevice(ctx, sn, parentPortNo)
 		if onuDev != nil {
 			var onuGemInfo *rsrcMgr.OnuGemInfo
@@ -1740,19 +1754,6 @@
 		}
 		return tpInstExists, nil
 	}
-
-	onuDevice, _ := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
-		ParentId:     dh.device.Id,
-		SerialNumber: sn,
-		ParentPortNo: parentPortNo,
-	})
-	if onuDevice != nil {
-		logger.Infow(ctx, "Child device still present ignoring discovery indication", log.Fields{"sn": sn})
-		return true, nil
-	}
-	logger.Infow(ctx, "No device present in core , continuing with discovery", log.Fields{"sn": sn})
-
-	return false, nil
 }
 
 // processDiscONULOSClear clears the LOS Alarm if it's needed
@@ -1815,14 +1816,17 @@
 
 	logger.Infow(ctx, "new-discovery-indication", log.Fields{"sn": sn})
 
-	tpInstExists, error = dh.checkForResourceExistance(ctx, onuDiscInd, sn)
-	if error != nil {
-		return error
-	}
-	if tpInstExists {
-		// ignore the discovery if tpinstance is present.
-		logger.Debugw(ctx, "ignoring-onu-indication-as-tp-already-exists", log.Fields{"sn": sn})
-		return nil
+	// Check for resource existence only if the ForceOnuDiscIndProcessing is disabled.
+	if !dh.cfg.ForceOnuDiscIndProcessing {
+		tpInstExists, error = dh.checkForResourceExistance(ctx, onuDiscInd, sn)
+		if error != nil {
+			return error
+		}
+		if tpInstExists {
+			// ignore the discovery if tpinstance is present.
+			logger.Debugw(ctx, "ignoring-onu-indication-as-tp-already-exists", log.Fields{"sn": sn})
+			return nil
+		}
 	}
 	inProcess, existing := dh.discOnus.LoadOrStore(sn, true)
 
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index c1372eb..0df5140 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -61,6 +61,7 @@
 	enableONUStats                     bool
 	enableGemStats                     bool
 	CheckOnuDevExistenceAtOnuDiscovery bool
+	ForceOnuDiscIndProcessing          bool
 }
 
 // NewOpenOLT returns a new instance of OpenOLT
@@ -85,6 +86,7 @@
 	openOLT.enableGemStats = cfg.EnableGEMStats
 	openOLT.rpcTimeout = cfg.RPCTimeout
 	openOLT.CheckOnuDevExistenceAtOnuDiscovery = cfg.CheckOnuDevExistenceAtOnuDiscovery
+	openOLT.ForceOnuDiscIndProcessing = cfg.ForceOnuDiscIndProcessing
 	return &openOLT
 }
 
