diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 9acee9f..955d2ad 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -33,7 +33,7 @@
 	"github.com/opencord/bbsim/internal/common"
 	omcisim "github.com/opencord/omci-sim"
 	"github.com/opencord/voltha-protos/v2/go/openolt"
-	"github.com/opencord/voltha-protos/v2/go/tech_profile"
+	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/reflection"
@@ -69,6 +69,7 @@
 	enableContextCancel context.CancelFunc
 
 	OpenoltStream *openolt.Openolt_EnableIndicationServer
+	enablePerf    bool
 }
 
 var olt OltDevice
@@ -78,7 +79,7 @@
 	return &olt
 }
 
-func CreateOLT(oltId int, nni int, pon int, onuPerPon int, sTag int, cTagInit int, auth bool, dhcp bool, delay int, ca string, isMock bool) *OltDevice {
+func CreateOLT(oltId int, nni int, pon int, onuPerPon int, sTag int, cTagInit int, auth bool, dhcp bool, delay int, ca string, enablePerf bool, isMock bool) *OltDevice {
 	oltLogger.WithFields(log.Fields{
 		"ID":           oltId,
 		"NumNni":       nni,
@@ -98,6 +99,7 @@
 		Pons:         []*PonPort{},
 		Nnis:         []*NniPort{},
 		Delay:        delay,
+		enablePerf:   enablePerf,
 	}
 
 	if val, ok := ControlledActivationModes[ca]; ok {
@@ -1069,13 +1071,49 @@
 	return new(openolt.Empty), nil
 }
 
-func (s OltDevice) CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
-	oltLogger.Info("received CreateTrafficSchedulers")
+func (s OltDevice) CreateTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"OnuId":     trafficSchedulers.OnuId,
+		"IntfId":    trafficSchedulers.IntfId,
+		"OnuPortNo": trafficSchedulers.PortNo,
+	}).Info("received CreateTrafficSchedulers")
+
+	if !s.enablePerf {
+		pon, err := s.GetPonById(trafficSchedulers.IntfId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving PON by IntfId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu, err := pon.GetOnuById(trafficSchedulers.OnuId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving ONU from pon by OnuId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu.TrafficSchedulers = trafficSchedulers
+	}
 	return new(openolt.Empty), nil
 }
 
-func (s OltDevice) RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
-	oltLogger.Info("received RemoveTrafficSchedulers")
+func (s OltDevice) RemoveTrafficSchedulers(context context.Context, trafficSchedulers *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"OnuId":     trafficSchedulers.OnuId,
+		"IntfId":    trafficSchedulers.IntfId,
+		"OnuPortNo": trafficSchedulers.PortNo,
+	}).Info("received RemoveTrafficSchedulers")
+	if !s.enablePerf {
+		pon, err := s.GetPonById(trafficSchedulers.IntfId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving PON by IntfId: %v", err)
+			return new(openolt.Empty), err
+		}
+		onu, err := pon.GetOnuById(trafficSchedulers.OnuId)
+		if err != nil {
+			oltLogger.Errorf("Error retrieving ONU from pon by OnuId: %v", err)
+			return new(openolt.Empty), err
+		}
+
+		onu.TrafficSchedulers = nil
+	}
 	return new(openolt.Empty), nil
 }
 
