diff --git a/VERSION b/VERSION
index 0ea3a94..a5fea60 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.2.0
+0.2.1-dev
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 28ac5a1..4caf5b6 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -918,8 +918,42 @@
 	return new(openolt.Empty), nil
 }
 
-func (o OltDevice) DisablePonIf(context.Context, *openolt.Interface) (*openolt.Empty, error) {
-	oltLogger.Error("DisablePonIf not implemented")
+func (o OltDevice) DisablePonIf(_ context.Context, intf *openolt.Interface) (*openolt.Empty, error) {
+	oltLogger.Errorf("DisablePonIf request received for PON %d", intf.IntfId)
+	ponID := intf.GetIntfId()
+	pon, _ := o.GetPonById(intf.IntfId)
+	errInternalState := pon.InternalState.Event("disable")
+	oltLogger.WithFields(log.Fields{
+		"IntfId": ponID,
+		"err":    errInternalState,
+	}).Error("Can't disable Internal state for PonPort")
+	errOperState := pon.OperState.Event("disable")
+	oltLogger.WithFields(log.Fields{
+		"IntfId": ponID,
+		"err":    errOperState,
+	}).Error("Can't disable Oper state for PonPort")
+
+	msg := Message{
+		Type: PonIndication,
+		Data: PonIndicationMessage{
+			OperState: DOWN,
+			PonPortID: ponID,
+		},
+	}
+	o.channel <- msg
+
+	for _, onu := range pon.Onus {
+
+		onuIndication := OnuIndicationMessage{
+			OperState: DOWN,
+			PonPortID: ponID,
+			OnuID:     onu.ID,
+			OnuSN:     onu.SerialNumber,
+		}
+		onu.sendOnuIndication(onuIndication, *o.OpenoltStream)
+
+	}
+
 	return new(openolt.Empty), nil
 }
 
@@ -933,6 +967,18 @@
 func (o OltDevice) EnablePonIf(_ context.Context, intf *openolt.Interface) (*openolt.Empty, error) {
 	oltLogger.Errorf("EnablePonIf request received for PON %d", intf.IntfId)
 	ponID := intf.GetIntfId()
+	pon, _ := o.GetPonById(intf.IntfId)
+	errInternalState := pon.InternalState.Event("enable")
+	oltLogger.WithFields(log.Fields{
+		"IntfId": ponID,
+		"err":    errInternalState,
+	}).Error("Can't enable Internal state for PonPort")
+	errOperState := pon.OperState.Event("enable")
+	oltLogger.WithFields(log.Fields{
+		"IntfId": ponID,
+		"err":    errOperState,
+	}).Error("Can't enable Oper state for PonPort")
+
 	msg := Message{
 		Type: PonIndication,
 		Data: PonIndicationMessage{
@@ -942,6 +988,18 @@
 	}
 	o.channel <- msg
 
+	for _, onu := range pon.Onus {
+
+		onuIndication := OnuIndicationMessage{
+			OperState: UP,
+			PonPortID: ponID,
+			OnuID:     onu.ID,
+			OnuSN:     onu.SerialNumber,
+		}
+		onu.sendOnuIndication(onuIndication, *o.OpenoltStream)
+
+	}
+
 	return new(openolt.Empty), nil
 }
 
