diff --git a/.golangci.yml b/.golangci.yml
index 9825b10e2b981e97dbad928e5578b84c9c9cdf25..f0965a4cb10dc8c28837e08c05e4a2038dbded19 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -25,18 +25,10 @@ output:
     uniq-by-line: true
     path-prefix: ""
 
-# custom settings for linters
-linters-settings:
-    gocyclo:
-        min-complexity: 15
-    golint:
-        min-confidence: 0.8
-    errcheck:
-        # Report about not checking of errors in type assertions: `a := b.(MyStruct)`.
-        # Such cases aren't reported by default.
-        # Default: false
-        check-type-assertions: true
-
+issues:
+    exclude-use-default: false
+    max-issues-per-linter: 0
+    max-same-issues: 0
 
 linters:
     # enable the specific needed linters
@@ -53,7 +45,15 @@ linters:
         - whitespace
         - deadcode
         - errcheck
-issues:
-    exclude-use-default: false
-    max-issues-per-linter: 0
-    max-same-issues: 0
+
+# custom settings for linters
+linters-settings:
+    gocyclo:
+        min-complexity: 15
+    golint:
+        min-confidence: 0.8
+    errcheck:
+        # Report about not checking of errors in type assertions: `a := b.(MyStruct)`.
+        # Such cases aren't reported by default.
+        # Default: false
+        check-type-assertions: false
diff --git a/controller/api/initialise_test.go b/controller/api/initialise_test.go
index a2df244b30185ec7d0c74a37b63cfaaf4412ba42..c70086f10e7db630e5f2f1f77eba2704c62fa50e 100644
--- a/controller/api/initialise_test.go
+++ b/controller/api/initialise_test.go
@@ -93,7 +93,9 @@ func bootstrapUnitTest() {
 	sbiStore = nucleus.NewMemorySbiStore()
 	userService = rbacImpl.NewUserService(rbacImpl.NewMemoryUserStore(), eventService)
 	roleService = rbacImpl.NewRoleService(rbacImpl.NewMemoryRoleStore(), eventService)
-	clearAndCreateAuthTestSetup()
+	if err := clearAndCreateAuthTestSetup(); err != nil {
+		log.Fatal(err)
+	}
 
 	previousHostname := "previousHostname"
 	intendedHostname := "intendedHostname"
diff --git a/controller/api/role_test.go b/controller/api/role_test.go
index 785ae3128e3c36d770bd67208492d27cb8aaccb4..64fb7caef9c67d071fde3109a616895c6fc7c1c5 100644
--- a/controller/api/role_test.go
+++ b/controller/api/role_test.go
@@ -7,6 +7,7 @@ import (
 
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	"github.com/google/uuid"
+	log "github.com/sirupsen/logrus"
 )
 
 func TestCreateRoles(t *testing.T) {
@@ -264,7 +265,10 @@ func TestUpdateRoles(t *testing.T) {
 }
 
 func TestDeletePermissionForRole(t *testing.T) {
-	clearAndCreateAuthTestSetup()
+	if err := clearAndCreateAuthTestSetup(); err != nil {
+		log.Error(err)
+		t.Fail()
+	}
 
 	type args struct {
 		ctx                 context.Context
@@ -365,7 +369,10 @@ func TestDeleteRoles(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			clearAndCreateAuthTestSetup()
+			if err := clearAndCreateAuthTestSetup(); err != nil {
+				log.Error(err)
+				t.Fail()
+			}
 
 			got, err := DeleteRoles(tt.args.ctx, tt.args.addr, tt.args.roleName)
 			if (err != nil) != tt.wantErr {
diff --git a/controller/nucleus/pndFilesystemStore.go b/controller/nucleus/pndFilesystemStore.go
index 867d654395359fb7d58a8f3f6c901e93d5cc2524..8720714fbb0a422603bb3a8400bac7e3be7edac2 100644
--- a/controller/nucleus/pndFilesystemStore.go
+++ b/controller/nucleus/pndFilesystemStore.go
@@ -27,7 +27,10 @@ type FilesystemPndStore struct {
 
 // NewFilesystemPndStore returns a filesystem implementation for a pnd store.
 func NewFilesystemPndStore() FilesystemPndStore {
-	store.EnsureFilesystemStorePathExists(store.PndFilename)
+	if err := store.EnsureFilesystemStorePathExists(store.PndFilename); err != nil {
+		log.Error(err)
+	}
+
 	return FilesystemPndStore{
 		pendingChannels: make(map[uuid.UUID]chan device.Details),
 		pathToPndFile:   store.GetCompletePathToFileStore(store.PndFilename),
diff --git a/controller/nucleus/pndFilesystemStore_test.go b/controller/nucleus/pndFilesystemStore_test.go
index 29119f9f343710cf91d6500b2393686d65c68734..abc08fa16eb53e29d105ea06329823f136e6926a 100644
--- a/controller/nucleus/pndFilesystemStore_test.go
+++ b/controller/nucleus/pndFilesystemStore_test.go
@@ -11,7 +11,10 @@ import (
 )
 
 func ensurePndFileForTestIsRemoved() {
-	store.EnsureFilesystemStorePathExists(store.PndFilename)
+	if err := store.EnsureFilesystemStorePathExists(store.PndFilename); err != nil {
+		log.Println(err)
+	}
+
 	path := store.GetCompletePathToFileStore(store.PndFilename)
 
 	err := os.Remove(path)
diff --git a/controller/nucleus/principalNetworkDomain_test.go b/controller/nucleus/principalNetworkDomain_test.go
index f62903bd4a5871bf837be80783ed9f148f39c9cc..c6def936b80bf9c0994b957157f8157ec5c78243 100644
--- a/controller/nucleus/principalNetworkDomain_test.go
+++ b/controller/nucleus/principalNetworkDomain_test.go
@@ -980,7 +980,11 @@ func Test_pndImplementation_Confirm(t *testing.T) {
 			}
 
 			d := mockDevice()
-			tr := d.Transport().(*mocks.Transport)
+			tr, ok := d.Transport().(*mocks.Transport)
+			if !ok {
+				log.Errorf("Confirm(), failed type conversion: %v", ok)
+			}
+
 			tr.On("Set", mockContext, mock.Anything, mock.Anything, mock.Anything).Return(nil)
 			_, err := pnd.addDevice(d)
 			if err != nil {
diff --git a/controller/nucleus/sbiFilesystemStore.go b/controller/nucleus/sbiFilesystemStore.go
index d9a2dcda474bd0e79ccdd12cbadf323d1ce2f47a..7f8a4e95eacf6c2aba65a17ec497134a7e39da00 100644
--- a/controller/nucleus/sbiFilesystemStore.go
+++ b/controller/nucleus/sbiFilesystemStore.go
@@ -10,6 +10,7 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"github.com/google/uuid"
+	log "github.com/sirupsen/logrus"
 )
 
 // FilesystemSbiStore is used to store SouthboundInterfaces
@@ -23,7 +24,10 @@ type FilesystemSbiStore struct {
 func NewFilesystemSbiStore(pndUUID uuid.UUID) southbound.Store {
 	sbiFilenameForUUID := store.GetStoreFilenameForUUID(pndUUID, store.SbiFilenameSuffix)
 
-	store.EnsureFilesystemStorePathExists(sbiFilenameForUUID)
+	if err := store.EnsureFilesystemStorePathExists(sbiFilenameForUUID); err != nil {
+		log.Error(err)
+	}
+
 	return &FilesystemSbiStore{
 		pathToSbiFile: store.GetCompletePathToFileStore(sbiFilenameForUUID),
 		fileMutex:     sync.Mutex{},
diff --git a/controller/nucleus/sbiFilesystemStore_test.go b/controller/nucleus/sbiFilesystemStore_test.go
index 4ec3de489742d87d2fabef6b02e4ec3fcbb25615..179fe2b870da740626de9ba628312e5f8ce6ec2c 100644
--- a/controller/nucleus/sbiFilesystemStore_test.go
+++ b/controller/nucleus/sbiFilesystemStore_test.go
@@ -13,7 +13,10 @@ import (
 )
 
 func ensureSbiFilesForTestAreRemoved() {
-	store.EnsureFilesystemStorePathExists(store.SbiFilenameSuffix)
+	if err := store.EnsureFilesystemStorePathExists(store.SbiFilenameSuffix); err != nil {
+		log.Println(err)
+	}
+
 	wildcartFilename := "*-" + store.SbiFilenameSuffix
 	path := store.GetCompletePathToFileStore(wildcartFilename)
 
diff --git a/controller/topology/nodes/nodeStore.go b/controller/topology/nodes/nodeStore.go
index a4f6f3123d7aab5e27f1a880e00d0a8c77073ffb..0c0093b20ce84474025a7c1174809b9f8ec72e0c 100644
--- a/controller/topology/nodes/nodeStore.go
+++ b/controller/topology/nodes/nodeStore.go
@@ -55,12 +55,14 @@ func (s *DatabaseNodeStore) Get(query query.Query) (Node, error) {
 	return loadedNode, nil
 }
 
-func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (Node, error) {
-	var loadedNode Node
-
+func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (loadedNode Node, err error) {
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	idAsByteArray, _ := idOfNode.MarshalBinary()
 
@@ -71,7 +73,7 @@ func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (Node, error) {
 		return loadedNode, errors.ErrCouldNotFind{ID: idOfNode}
 	}
 
-	err := result.Decode(&loadedNode)
+	err = result.Decode(&loadedNode)
 	if err != nil {
 		return loadedNode, errors.ErrCouldNotMarshall{Identifier: idOfNode, Type: loadedNode, Err: err}
 	}
@@ -79,12 +81,14 @@ func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (Node, error) {
 	return loadedNode, nil
 }
 
-func (s *DatabaseNodeStore) getByName(nameOfNode string) (Node, error) {
-	var loadedNode Node
-
+func (s *DatabaseNodeStore) getByName(nameOfNode string) (loadedNode Node, err error) {
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	db := client.Database(database.DatabaseName)
 	collection := db.Collection(s.storeName)
@@ -93,7 +97,7 @@ func (s *DatabaseNodeStore) getByName(nameOfNode string) (Node, error) {
 		return loadedNode, errors.ErrCouldNotFind{Name: nameOfNode}
 	}
 
-	err := result.Decode(&loadedNode)
+	err = result.Decode(&loadedNode)
 	if err != nil {
 		return loadedNode, errors.ErrCouldNotMarshall{Identifier: nameOfNode, Type: loadedNode, Err: err}
 	}
@@ -102,12 +106,14 @@ func (s *DatabaseNodeStore) getByName(nameOfNode string) (Node, error) {
 }
 
 // GetAll returns all stored nodes.
-func (s *DatabaseNodeStore) GetAll() ([]Node, error) {
-	var loadedNode []Node
-
+func (s *DatabaseNodeStore) GetAll() (loadedNode []Node, err error) {
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 	db := client.Database(database.DatabaseName)
 	collection := db.Collection(s.storeName)
 
@@ -115,7 +121,11 @@ func (s *DatabaseNodeStore) GetAll() ([]Node, error) {
 	if err != nil {
 		return []Node{}, err
 	}
-	defer cursor.Close(ctx)
+	defer func() {
+		if ferr := cursor.Close(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	err = cursor.All(ctx, &loadedNode)
 	if err != nil {
@@ -126,12 +136,16 @@ func (s *DatabaseNodeStore) GetAll() ([]Node, error) {
 }
 
 // Add adds a node to the node store.
-func (s *DatabaseNodeStore) Add(node Node) error {
+func (s *DatabaseNodeStore) Add(node Node) (err error) {
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
-	_, err := client.Database(database.DatabaseName).
+	_, err = client.Database(database.DatabaseName).
 		Collection(s.storeName).
 		InsertOne(ctx, node)
 	if err != nil {
@@ -142,12 +156,16 @@ func (s *DatabaseNodeStore) Add(node Node) error {
 }
 
 // Update updates a existing node.
-func (s *DatabaseNodeStore) Update(node Node) error {
+func (s *DatabaseNodeStore) Update(node Node) (err error) {
 	var updatedLoadedNodes Node
 
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	update := bson.D{primitive.E{Key: "$set", Value: node}}
 
@@ -158,7 +176,7 @@ func (s *DatabaseNodeStore) Update(node Node) error {
 		ReturnDocument: &after,
 	}
 
-	err := client.Database(database.DatabaseName).
+	err = client.Database(database.DatabaseName).
 		Collection(s.storeName).
 		FindOneAndUpdate(
 			ctx, bson.M{"_id": node.ID.String()}, update, &opt).
@@ -171,14 +189,18 @@ func (s *DatabaseNodeStore) Update(node Node) error {
 }
 
 // Delete deletes a node from the node store.
-func (s *DatabaseNodeStore) Delete(node Node) error {
+func (s *DatabaseNodeStore) Delete(node Node) (err error) {
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
-	defer client.Disconnect(ctx)
+	defer func() {
+		if ferr := client.Disconnect(ctx); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	db := client.Database(database.DatabaseName)
 	collection := db.Collection(s.storeName)
-	_, err := collection.DeleteOne(ctx, bson.D{primitive.E{Key: node.ID.String()}})
+	_, err = collection.DeleteOne(ctx, bson.D{primitive.E{Key: node.ID.String()}})
 	if err != nil {
 		return err
 	}
diff --git a/csbi/build.go b/csbi/build.go
index 82c091e5964eac8ced2e1a5079a70b8b3e0afb16..019b21be0c16ef85f17d1e6788d3f3a8fab5e9da 100644
--- a/csbi/build.go
+++ b/csbi/build.go
@@ -16,6 +16,7 @@ import (
 	"github.com/docker/docker/client"
 	"github.com/docker/docker/pkg/archive"
 	"github.com/prometheus/client_golang/prometheus"
+	log "github.com/sirupsen/logrus"
 )
 
 // nolint
@@ -29,7 +30,7 @@ type ErrorDetail struct {
 	Message string `json:"message"`
 }
 
-func buildImage(d Deployment, dockerClient *client.Client) error {
+func buildImage(d Deployment, dockerClient *client.Client) (err error) {
 	labels := prometheus.Labels{"type": spb.Type_TYPE_CONTAINERISED.String()}
 	start := promStartHook(labels, buildsTotal)
 
@@ -51,7 +52,11 @@ func buildImage(d Deployment, dockerClient *client.Client) error {
 	if err != nil {
 		return err
 	}
-	defer res.Body.Close()
+	defer func() {
+		if ferr := res.Body.Close(); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	err = print(res.Body)
 	if err != nil {
@@ -71,9 +76,11 @@ func print(rd io.Reader) error {
 	}
 
 	errLine := &ErrorLine{}
-	json.Unmarshal([]byte(lastLine), errLine)
+	err := json.Unmarshal([]byte(lastLine), errLine)
 	if errLine.Error != "" {
 		return errors.New(errLine.Error)
+	} else if err != nil {
+		log.Error(err)
 	}
 
 	return scanner.Err()
diff --git a/csbi/deployment_test.go b/csbi/deployment_test.go
index 246c826f21dbbe6ce035822675d360a24f0fbbaa..670e7ad339086635e249c689ccc9d15f5c0370e8 100644
--- a/csbi/deployment_test.go
+++ b/csbi/deployment_test.go
@@ -12,6 +12,7 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
 	"code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"github.com/google/uuid"
+	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc/peer"
 )
 
@@ -144,7 +145,9 @@ func Test_garbageCollector(t *testing.T) {
 				rval := rand.Float32()
 				if tt.name == "inconsistent" {
 					d.State = csbi.State_STATE_DECOMMISSIONED
-					os.RemoveAll(d.ID.String())
+					if err := os.RemoveAll(d.ID.String()); err != nil {
+						log.Error(err)
+					}
 				} else {
 					if rval < tt.args.quota {
 						d.State = csbi.State_STATE_DECOMMISSIONED
diff --git a/csbi/generate.go b/csbi/generate.go
index b3d1e8dc6a573daf31db351f6decf6ec14049eda..d299aa53ecdabecb2beb4232f0768cce92bdc58a 100644
--- a/csbi/generate.go
+++ b/csbi/generate.go
@@ -101,11 +101,13 @@ func Generate(ctx context.Context, models []*gpb.ModelData, repository Repositor
 	lock.Unlock()
 
 	if len(errs) != 0 {
+		var handledErrs []error
 		n := len(errs)
 		log.Errorf("%v errors during code generation", n)
 		for _, err := range errs {
-			promHandleError(labels, err, codeGenerationErrorsTotal)
+			handledErrs = append(handledErrs, promHandleError(labels, err, codeGenerationErrorsTotal))
 		}
+		log.Errorf("error details after handling: \n%v\n", handledErrs)
 	}
 
 	if code == nil {
diff --git a/csbi/grpc.go b/csbi/grpc.go
index 32fe2587173b39fe3ec135776515f6e19b9e8a01..438cc5ca85218574fe4433d3bcabcfad0a61b2b0 100644
--- a/csbi/grpc.go
+++ b/csbi/grpc.go
@@ -98,15 +98,18 @@ func (s server) Create(ctx context.Context, req *pb.CreateRequest) (*pb.CreateRe
 // GetFile sends files based on the requested file name. Currently only
 // `gostructs.go`, `plugin.yml` and `csbiAdditions.go` are allowed to be
 // requested.
-func (s server) GetFile(req *pb.GetPayloadRequest, stream pb.CsbiService_GetFileServer) error {
+func (s server) GetFile(req *pb.GetPayloadRequest, stream pb.CsbiService_GetFileServer) (err error) {
 	log.Info("started GetGoStruct")
 	labels := prometheus.Labels{"rpc": "get_go_struct"}
 	start := promStartHook(labels, grpcRequestsTotal)
 	defer promEndHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
 
 	var file *os.File
-	var err error
-	defer file.Close()
+	defer func() {
+		if ferr := file.Close(); ferr != nil {
+			err = ferr
+		}
+	}()
 
 	switch fn := req.GetFile(); {
 	case fn == util.GoStructName:
diff --git a/csbi/orchestrator.go b/csbi/orchestrator.go
index c489a086d9701a03e4aa8dd487dca687bd785efe..df556937acdbcc2f0241276c400fe220e02da725 100644
--- a/csbi/orchestrator.go
+++ b/csbi/orchestrator.go
@@ -168,7 +168,13 @@ func (o *dockerOrchestrator) attachLogger(ctx context.Context, containerID strin
 			if err != nil {
 				log.Error(err)
 			}
-			defer logStream.Close()
+
+			defer func() {
+				if err := logStream.Close(); err != nil {
+					log.Error(err)
+				}
+			}()
+
 			stdlogger := log.StandardLogger()
 			stdlogger.Trace("detached logger")
 			stdout := stdlogger.Writer()