diff --git a/controller/northbound/server/nbi.go b/controller/northbound/server/nbi.go
index 1d7274120aae01cd13bfaa6c5276b42cb810e0f3..a9901650c0544fbf6e26e2dd04e770d0088aae97 100644
--- a/controller/northbound/server/nbi.go
+++ b/controller/northbound/server/nbi.go
@@ -52,7 +52,7 @@ func NewNBI(
 	networkDomain networkdomain.NetworkDomain,
 ) *NorthboundInterface {
 	return &NorthboundInterface{
-		Pnd:            NewPndServer(pndService),
+		Pnd:            NewPndServer(pndService, sbiService),
 		Core:           NewCoreServer(pndService),
 		Csbi:           NewCsbiServer(pnds),
 		Sbi:            NewSbiServer(pndService),
diff --git a/controller/northbound/server/pnd.go b/controller/northbound/server/pnd.go
index 0ad3c2b986e015dacf894c81253c30c6c308a54d..7802d97d5b2189e505525d8e7ba992f13d31fedf 100644
--- a/controller/northbound/server/pnd.go
+++ b/controller/northbound/server/pnd.go
@@ -7,6 +7,7 @@ import (
 	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain"
+	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
@@ -21,12 +22,14 @@ import (
 type PndServer struct {
 	ppb.UnimplementedPndServiceServer
 	pndService networkdomain.Service
+	sbiService southbound.Service
 }
 
 // NewPndServer receives a pndStore and returns a new pndServer.
-func NewPndServer(pndService networkdomain.Service) *PndServer {
+func NewPndServer(pndService networkdomain.Service, sbiService southbound.Service) *PndServer {
 	return &PndServer{
 		pndService: pndService,
+		sbiService: sbiService,
 	}
 }
 
@@ -51,7 +54,7 @@ func (p PndServer) GetSbi(ctx context.Context, request *ppb.GetSbiRequest) (*ppb
 		return nil, err
 	}
 
-	sbi, err := pnd.GetSBI(sbiID)
+	sbi, err := p.sbiService.Get(store.Query{ID: sbiID})
 	if err != nil {
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
@@ -85,7 +88,7 @@ func (p PndServer) GetSbiList(ctx context.Context, request *ppb.GetSbiListReques
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
-	sbis, err := fillSbis(pnd)
+	sbis, err := p.fillSbis()
 	if err != nil {
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
@@ -101,8 +104,8 @@ func (p PndServer) GetSbiList(ctx context.Context, request *ppb.GetSbiListReques
 	}, nil
 }
 
-func fillSbis(pnd networkdomain.NetworkDomain) ([]*spb.SouthboundInterface, error) {
-	sbis, err := pnd.GetSBIs()
+func (p PndServer) fillSbis() ([]*spb.SouthboundInterface, error) {
+	sbis, err := p.sbiService.GetAll()
 	if err != nil {
 		return nil, err
 	}
@@ -123,15 +126,6 @@ func (p PndServer) SetSbiList(ctx context.Context, request *ppb.SetSbiListReques
 	labels := prometheus.Labels{"service": "pnd", "rpc": "set"}
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
-	pid, err := uuid.Parse(request.Pid)
-	if err != nil {
-		return nil, handleRPCError(labels, err)
-	}
-
-	pnd, err := p.pndService.Get(store.Query{ID: pid})
-	if err != nil {
-		return nil, handleRPCError(labels, err)
-	}
 
 	for _, r := range request.Sbi {
 		sbiType := filterSbiType(r.SbiType)
@@ -140,7 +134,7 @@ func (p PndServer) SetSbiList(ctx context.Context, request *ppb.SetSbiListReques
 			return nil, handleRPCError(labels, err)
 		}
 
-		err = pnd.AddSbi(sbi)
+		err = p.sbiService.Add(sbi)
 		if err != nil {
 			return nil, handleRPCError(labels, err)
 		}
diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go
index 5f23ab5cd215834dae5b5ad2540b50af70e88b1a..7fc18011e51b7bca040c4e5614279096a0d475c2 100644
--- a/controller/northbound/server/pnd_test.go
+++ b/controller/northbound/server/pnd_test.go
@@ -7,6 +7,7 @@ import (
 
 	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
+	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
 	"code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
@@ -94,8 +95,11 @@ func getTestPndServer(t *testing.T) *PndServer {
 	}
 
 	pndService := nucleus.NewPndService(pndStore)
+	eventService := eventservice.NewMockEventService()
 
-	c := NewPndServer(pndService)
+	sbiService := nucleus.NewSbiService(sbiStore, eventService)
+
+	c := NewPndServer(pndService, sbiService)
 
 	return c
 }