diff --git a/controller/api/initialise_test.go b/controller/api/initialise_test.go
index f5623392d679c39e9b4ae136535b2e159a8c13c3..51fd84aa3a7230ee06e0993c6afb5ad6ba20a763 100644
--- a/controller/api/initialise_test.go
+++ b/controller/api/initialise_test.go
@@ -206,6 +206,8 @@ func bootstrapUnitTest() {
 		conflict.Metadata{ResourceVersion: 0})
 	_ = networkElementService.Add(mne)
 
+	networkElementWatcher := nucleus.NewNetworkElementWatcher(networkElementService, eventService)
+
 	pndService := &mocks.PndService{}
 	pndService.On("GetAll").Return([]networkdomain.NetworkDomain{}, nil)
 	pndService.On("Add", mock.Anything).Return(nil)
@@ -234,6 +236,7 @@ func bootstrapUnitTest() {
 		rpb.NewPluginRegistryServiceClient(&grpc.ClientConn{}),
 		csbi.NewCsbiServiceClient(&grpc.ClientConn{}),
 		func(u uuid.UUID, c chan networkelement.Details) {},
+		networkElementWatcher,
 	)
 
 	ppb.RegisterPndServiceServer(s, northbound.Pnd)
diff --git a/controller/controller.go b/controller/controller.go
index f830c20dff3a6324373d182b1ff61b0b16c718d9..d9118331755a1a9d3d51391218c1c35347cdfad3 100644
--- a/controller/controller.go
+++ b/controller/controller.go
@@ -213,6 +213,7 @@ func startGrpc() error {
 		c.pluginRegistryClient,
 		c.csbiClient,
 		callback,
+		c.networkElementWatcher,
 	)
 
 	ppb.RegisterPndServiceServer(c.grpcServer, c.nbi.Pnd)
diff --git a/controller/northbound/server/nbi.go b/controller/northbound/server/nbi.go
index 2120c9287b2d590ed3991bedb2c92ee418a31509..fdd067beabb047c4b6dca9dcc084a1a84a7ced44 100644
--- a/controller/northbound/server/nbi.go
+++ b/controller/northbound/server/nbi.go
@@ -8,6 +8,7 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology"
@@ -58,6 +59,7 @@ func NewNBI(
 	pluginRegistryClient rpb.PluginRegistryServiceClient,
 	csbiClient cpb.CsbiServiceClient,
 	pndCallbackFn func(uuid.UUID, chan networkelement.Details),
+	networkElementWatchter *nucleus.NetworkElementWatcher,
 ) *NorthboundInterface {
 	protoValidator, err := protovalidate.New()
 	if err != nil {
@@ -73,7 +75,7 @@ func NewNBI(
 		Role:                    NewRoleServer(&jwt, roles, protoValidator),
 		Topology:                NewTopologyServer(topologyService, nodeService, portService, protoValidator),
 		App:                     NewAppServer(apps, protoValidator),
-		NetworkElement:          NewNetworkElementServer(mneService, pndService, pluginService, changeStore, protoValidator),
+		NetworkElement:          NewNetworkElementServer(mneService, pndService, pluginService, changeStore, protoValidator, networkElementWatchter),
 		Routes:                  NewRoutingTableServiceServer(routeService, nodeService, portService, protoValidator),
 		ConfigurationManagement: NewConfigurationManagementServer(pndService, mneService, topologyService, nodeService, portService, pluginService, protoValidator),
 	}
diff --git a/controller/northbound/server/networkElement.go b/controller/northbound/server/networkElement.go
index 78d956a9a386854ad1c4cd23f1693d2c6b36855f..1528f7514638f0cad0540205ef70fc1044f61e9e 100644
--- a/controller/northbound/server/networkElement.go
+++ b/controller/northbound/server/networkElement.go
@@ -9,6 +9,7 @@ import (
 	mnepb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/networkelement"
 	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
+	"code.fbi.h-da.de/danet/gosdn/controller/config"
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
@@ -36,11 +37,12 @@ import (
 // NetworkElementServer represents a NetworkElementServer.
 type NetworkElementServer struct {
 	mnepb.UnimplementedNetworkElementServiceServer
-	mneService     networkelement.Service
-	pndService     networkdomain.Service
-	pluginService  plugin.Service
-	changeStore    store.ChangeStore
-	protoValidator *protovalidate.Validator
+	mneService             networkelement.Service
+	pndService             networkdomain.Service
+	pluginService          plugin.Service
+	changeStore            store.ChangeStore
+	protoValidator         *protovalidate.Validator
+	networkElementWatchter *nucleus.NetworkElementWatcher
 }
 
 // NewNetworkElementServer returns a new NetWorkElementServer.
@@ -50,13 +52,15 @@ func NewNetworkElementServer(
 	pluginService plugin.Service,
 	changeStore store.ChangeStore,
 	protoValidator *protovalidate.Validator,
+	networkElementWatchter *nucleus.NetworkElementWatcher,
 ) *NetworkElementServer {
 	return &NetworkElementServer{
-		mneService:     mneService,
-		pndService:     pndService,
-		pluginService:  pluginService,
-		changeStore:    changeStore,
-		protoValidator: protoValidator,
+		mneService:             mneService,
+		pndService:             pndService,
+		pluginService:          pluginService,
+		changeStore:            changeStore,
+		protoValidator:         protoValidator,
+		networkElementWatchter: networkElementWatchter,
 	}
 }
 
@@ -756,6 +760,8 @@ func (n *NetworkElementServer) addMne(ctx context.Context, name string, opt *tpb
 		if err != nil {
 			return uuid.Nil, err
 		}
+
+		n.networkElementWatchter.SubscribeToNetworkElement(mne, config.GetGnmiSubscriptionPaths(), nil)
 	} else {
 		return uuid.Nil, status.Errorf(codes.InvalidArgument, "invalid transport data provided")
 	}
diff --git a/controller/nucleus/networkElementWatcher.go b/controller/nucleus/networkElementWatcher.go
index 3c88f4f1bb64ccb2fa4e07f5a1fa2fc03d24cb46..2102a969b9c8eafd681348dff5b6c48607e115dc 100644
--- a/controller/nucleus/networkElementWatcher.go
+++ b/controller/nucleus/networkElementWatcher.go
@@ -74,6 +74,21 @@ func (n *NetworkElementWatcher) SubscribeToNetworkElements(paths [][]string, opt
 	}
 }
 
+// SubscribeToNetworkElement subscribes to the provided network element according to provided SubscribeOptions.
+// Paths should be provided in the following format [][]string{{"system", "config", "hostname"}}
+// SubscribeOptions can be nil. Use nil for a fixed, pre-defined set of gNMI subscription options (streaming in sample mode each second).
+func (n *NetworkElementWatcher) SubscribeToNetworkElement(mne networkelement.NetworkElement, paths [][]string, opts *gnmi.SubscribeOptions) {
+	if opts == nil {
+		opts = &gnmi.SubscribeOptions{
+			Mode:           gNMISubscribeMode,
+			StreamMode:     gNMIStreamMode,
+			Paths:          paths,
+			SampleInterval: subscribeSampleInterval,
+		}
+	}
+	n.subscribeToNetworkElement(mne, opts)
+}
+
 func (n *NetworkElementWatcher) subscribeToNetworkElement(mne networkelement.NetworkElement, opts *gnmi.SubscribeOptions) {
 	subID := uuid.New()