diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml
index 84f616335b3ba288722ae8608e659f72fc120529..e1e6107d56fe9a6a1f14491641da3bfd9a72f83a 100644
--- a/build/ci/.build-container.yml
+++ b/build/ci/.build-container.yml
@@ -40,4 +40,4 @@ build-docker:
    - docker tag $DOCKER_IMAGE_SHA $TAG
    - docker push $TAG
    - docker build --target installer --build-arg GITLAB_USER=$GO_MODULES_USER --build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN --build-arg BUILDARGS=$BUILDARGS -t ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} .
-   - docker push ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID}
\ No newline at end of file
+   - docker push ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID}
diff --git a/build/ci/.code-quality-ci.yml b/build/ci/.code-quality-ci.yml
index eacbfe4b6495fe32fc80002a5c53b432084b3893..a608dd15e896e417aa25e19ee8657c037aa3e75e 100644
--- a/build/ci/.code-quality-ci.yml
+++ b/build/ci/.code-quality-ci.yml
@@ -12,4 +12,4 @@ code-quality:
     reports:
       codequality: gl-code-quality-report.json
     paths:
-      - gl-code-quality-report.json
\ No newline at end of file
+      - gl-code-quality-report.json
diff --git a/build/ci/.containerlab-ci.yml b/build/ci/.containerlab-ci.yml
index f968e0a136f22c954d7d0077fafe1cee99924a86..9a06ec3b3aaf9e63b8f9f153126bb46e67b428c4 100644
--- a/build/ci/.containerlab-ci.yml
+++ b/build/ci/.containerlab-ci.yml
@@ -1,4 +1,3 @@
-
 variables:
   CEOS_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE/ceos:latest"
   CLAB_INT1_TEMPLATE: "${CI_PROJECT_DIR}/test/containerlab/int01.clab.yml"
@@ -13,17 +12,6 @@ variables:
     - if: $CI_NIGHTLY
 
 
-.containerlab_template: &containerlab_template
-  tags:
-    - shell
-  before_script:
-    - cd ${CLAB_DIR}
-    - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
-    - echo $DOCKER_IMAGE_SHA
-    - docker pull $DOCKER_IMAGE_SHA
-    - docker pull ${CEOS_CONTAINER_IMAGE}
-
-
 containerlab:template:
   extends: .containerlab_rules
   image: alpine:latest
@@ -50,10 +38,17 @@ containerlab:template:
 
 containerlab:deploy:
   extends:
-    - .containerlab_template
     - .containerlab_rules
   stage: apply
   needs: ["containerlab:template", "build-docker"]
+  tags:
+    - shell
+  before_script:
+    - cd ${CLAB_DIR}
+    - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
+    - echo $DOCKER_IMAGE_SHA
+    - docker pull $DOCKER_IMAGE_SHA
+    - docker pull ${CEOS_CONTAINER_IMAGE}
   script:
     - sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure
     - echo "GOSDN_HTTP_PORT=$(docker inspect -f '{{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}' clab-${CLAB_NAME}-gosdn)" >> ${CI_PROJECT_DIR}/build.env
@@ -66,6 +61,13 @@ containerlab:deploy:
       dotenv: ${CI_PROJECT_DIR}/build.env
 
 containerlab:destroy:
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop')
+      when: always
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+      when: always
+    - if: $CI_NIGHTLY
+      when: always
   stage: .post
   tags:
     - shell
@@ -78,4 +80,3 @@ containerlab:destroy:
   allow_failure: true
   dependencies:
     - containerlab:template
-  when: always
diff --git a/northbound/server/pnd.go b/northbound/server/pnd.go
index 887ded7dccc5ef9adfb069b403cf109c4e34f092..897102483d8e6fce670caba84f2bdd93c59b4a7e 100644
--- a/northbound/server/pnd.go
+++ b/northbound/server/pnd.go
@@ -8,8 +8,6 @@ import (
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 
-	"code.fbi.h-da.de/cocsn/gosdn/interfaces/device"
-
 	ppb "code.fbi.h-da.de/cocsn/api/go/gosdn/pnd"
 	spb "code.fbi.h-da.de/cocsn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/cocsn/gosdn/interfaces/networkdomain"
@@ -211,44 +209,46 @@ func fillSbis(pnd networkdomain.NetworkDomain, all bool, sid ...string) ([]*spb.
 
 func fillOnds(pnd networkdomain.NetworkDomain, all bool, did ...string) ([]*ppb.OrchestratedNetworkingDevice, error) {
 	var ondList []uuid.UUID
+	var onds []*ppb.OrchestratedNetworkingDevice
 
+	// all decides if a client wants all devices or only a single one
 	switch all {
 	case true:
 		ondList = pnd.Devices()
+		onds = make([]*ppb.OrchestratedNetworkingDevice, len(ondList))
 	default:
-		var err error
 		if len(did) == 0 {
-			return nil, &errors.ErrInvalidParameters{
+			err := &errors.ErrInvalidParameters{
 				Func:  fillOnds,
 				Param: "length of 'did' cannot be '0' when 'all' is set to 'false'",
 			}
-		}
-		ondList, err = stringToUUID(did)
-		if err != nil {
 			log.Error(err)
-			return nil, status.Errorf(codes.Aborted, "%v", err)
+
+			return nil, err
 		}
+
+		onds = make([]*ppb.OrchestratedNetworkingDevice, 1)
 	}
 
-	onds := make([]*ppb.OrchestratedNetworkingDevice, len(ondList))
-	for i, id := range ondList {
-		d, err := pnd.GetDevice(id.String())
+	for i, id := range did {
+		d, err := pnd.GetDevice(id)
 		if err != nil {
 			log.Error(err)
 			return nil, status.Errorf(codes.Aborted, "%v", err)
 		}
 		cfg := ygot.GNMINotificationsConfig{}
-		dev, err := ygot.TogNMINotifications(d.(device.Device).Model(), time.Now().UnixNano(), cfg)
+		dev, err := ygot.TogNMINotifications(d.Model(), time.Now().UnixNano(), cfg)
 		if err != nil {
 			log.Error(err)
 			return nil, status.Errorf(codes.Aborted, "%v", err)
 		}
 		onds[i] = &ppb.OrchestratedNetworkingDevice{
-			Id:     id.String(),
-			Name:   "",
+			Id:     id,
+			Name:   d.Name(),
 			Device: dev,
 		}
 	}
+
 	return onds, nil
 }
 
diff --git a/nucleus/store.go b/nucleus/store.go
index 631da74785b9a381530f485ee47f0931b1001e2f..3742c1ea89495a061512b45d0d15498aba4484df 100644
--- a/nucleus/store.go
+++ b/nucleus/store.go
@@ -224,7 +224,7 @@ func (s DeviceStore) GetDevice(id uuid.UUID, parseErrors ...error) (device.Devic
 		}
 	}
 	log.WithFields(log.Fields{
-		"uuid": id,
+		"uuid": foundID,
 		"name": d.Name(),
 	}).Debug("device was accessed")