diff --git a/VERSION b/VERSION
index 166a50f..393ccdb 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.12.9
+1.12.10
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 4d83018..a556256 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -108,6 +108,7 @@
 	GemPortIDsLock   sync.RWMutex
 	GemPortIDs       map[uint32]map[uint32]map[uint32]map[int32]map[uint64]bool // map[ponPortId]map[OnuId]map[PortNo]map[GemPortIDs]map[FlowId]bool
 	OmciResponseRate uint8
+	signature        uint32
 }
 
 var olt OltDevice
@@ -152,6 +153,7 @@
 		AllocIDs:            make(map[uint32]map[uint32]map[uint32]map[int32]map[uint64]bool),
 		GemPortIDs:          make(map[uint32]map[uint32]map[uint32]map[int32]map[uint64]bool),
 		OmciResponseRate:    options.Olt.OmciResponseRate,
+		signature:           uint32(time.Now().Unix()),
 	}
 
 	if val, ok := ControlledActivationModes[options.BBSim.ControlledActivation]; ok {
@@ -312,6 +314,7 @@
 
 	if softReboot {
 		for _, pon := range o.Pons {
+			/* No need to send pon events on olt soft reboot
 			if pon.InternalState.Current() == "enabled" {
 				// disable PONs
 				msg := types.Message{
@@ -323,7 +326,7 @@
 				}
 				o.channel <- msg
 			}
-
+			*/
 			for _, onu := range pon.Onus {
 				err := onu.InternalState.Event(OnuTxDisable)
 				oltLogger.WithFields(log.Fields{
@@ -363,6 +366,7 @@
 	o.enableContextCancel()
 	time.Sleep(time.Duration(rebootDelay) * time.Second)
 	o.Unlock()
+	o.signature = uint32(time.Now().Unix())
 
 	if err := o.InternalState.Event(OltInternalTxInitialize); err != nil {
 		oltLogger.WithFields(log.Fields{
@@ -497,6 +501,7 @@
 			}
 			// when the enableContext was canceled the ONUs stopped listening on the channel
 			for _, onu := range pon.Onus {
+				onu.ReDiscoverOnu(true)
 				go onu.ProcessOnuMessages(o.enableContext, stream, nil)
 
 				// update the stream on all the services
@@ -961,17 +966,19 @@
 		}).Error("Can't find Onu")
 	}
 
-	if err := _onu.InternalState.Event(OnuTxDisable); err != nil {
-		oltLogger.WithFields(log.Fields{
-			"IntfId": _onu.PonPortID,
-			"OnuSn":  _onu.Sn(),
-			"OnuId":  _onu.ID,
-		}).Infof("Failed to transition ONU to %s state: %s", OnuStateDisabled, err.Error())
+	if _onu.InternalState.Current() != OnuStateDisabled {
+		if err := _onu.InternalState.Event(OnuTxDisable); err != nil {
+			oltLogger.WithFields(log.Fields{
+				"IntfId": _onu.PonPortID,
+				"OnuSn":  _onu.Sn(),
+				"OnuId":  _onu.ID,
+			}).Infof("Failed to transition ONU to %s state: %s", OnuStateDisabled, err.Error())
+		}
 	}
 
 	// ONU Re-Discovery
 	if o.InternalState.Current() == OltInternalStateEnabled && pon.InternalState.Current() == "enabled" {
-		go _onu.ReDiscoverOnu()
+		go _onu.ReDiscoverOnu(false)
 	}
 
 	return new(openolt.Empty), nil
@@ -1281,7 +1288,7 @@
 }
 
 func (o *OltDevice) HeartbeatCheck(context.Context, *openolt.Empty) (*openolt.Heartbeat, error) {
-	res := openolt.Heartbeat{HeartbeatSignature: uint32(time.Now().Unix())}
+	res := openolt.Heartbeat{HeartbeatSignature: o.signature}
 	oltLogger.WithFields(log.Fields{
 		"signature": res.HeartbeatSignature,
 	}).Trace("HeartbeatCheck")
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index 1e7169c..4d913b6 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -1803,9 +1803,14 @@
 	}
 }
 
-func (onu *Onu) ReDiscoverOnu() {
+/* when ReDiscoverOnu is called during reboot, true is passed so that there is no delay in onu discoveries
+   It is assumed that all onu resources are cleared and no sleep is required
+*/
+func (onu *Onu) ReDiscoverOnu(isReboot bool) {
 	// Wait for few seconds to be sure of the cleanup
-	time.Sleep(5 * time.Second)
+	if !isReboot {
+		time.Sleep(5 * time.Second)
+	}
 
 	onuLogger.WithFields(log.Fields{
 		"IntfId": onu.PonPortID,
