diff --git a/controller/app/Store.go b/controller/app/Store.go
index 0852c57fc2b72071c22b44911600ab8c489d92d1..158fb75e8bcaa61d04c398618c7e4e1aab3ff574 100644
--- a/controller/app/Store.go
+++ b/controller/app/Store.go
@@ -57,7 +57,10 @@ func (s *Store) Get(query store.Query) (App, error) {
 }
 
 func (s *Store) getByID(appID uuid.UUID) (loadedApp App, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedApp, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -83,7 +86,10 @@ func (s *Store) getByID(appID uuid.UUID) (loadedApp App, err error) {
 }
 
 func (s *Store) getByName(appName string) (loadedApp App, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedApp, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -110,7 +116,10 @@ func (s *Store) getByName(appName string) (loadedApp App, err error) {
 
 // GetAll returns all stored apps.
 func (s *Store) GetAll() (loadedApps []App, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -139,7 +148,10 @@ func (s *Store) GetAll() (loadedApps []App, err error) {
 
 // Add adds a app to the app store.
 func (s *Store) Add(app App) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -163,7 +175,10 @@ func (s *Store) Add(app App) (err error) {
 func (s *Store) Update(app App) (err error) {
 	var updatedApp App
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -197,7 +212,10 @@ func (s *Store) Update(app App) (err error) {
 
 // Delete deletes a app from the app store.
 func (s *Store) Delete(app App) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/nucleus/database/mongo-connection.go b/controller/nucleus/database/mongo-connection.go
index 8e4bde62074e5f8e6217982fa49abdcdba487d35..b26cac5fc5f0312c123e8b8bc3700368eb1c021f 100644
--- a/controller/nucleus/database/mongo-connection.go
+++ b/controller/nucleus/database/mongo-connection.go
@@ -18,20 +18,22 @@ const (
 )
 
 // GetMongoConnection Retrieves a client to the MongoDB.
-func GetMongoConnection() (*mongo.Client, context.Context, context.CancelFunc) {
+func GetMongoConnection() (*mongo.Client, context.Context, context.CancelFunc, error) {
 	mongoConnection := config.DatabaseConnection
 	ctx, cancel := context.WithTimeout(context.Background(), connectTimeout*time.Second)
 
 	client, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoConnection))
 	if err != nil {
 		log.Printf("Failed to create client: %v", err)
+		return nil, ctx, cancel, err
 	}
 
 	// Force a connection to verify our connection string
 	err = client.Ping(ctx, nil)
 	if err != nil {
 		log.Printf("Failed to connect to database: %v\n", err)
+		return nil, ctx, cancel, err
 	}
 
-	return client, ctx, cancel
+	return client, ctx, cancel, nil
 }
diff --git a/controller/nucleus/databaseNetworkElementStore.go b/controller/nucleus/databaseNetworkElementStore.go
index be64919a65454fda609a157ca81895bf7d6c861d..d2e63e0c4780645e83135e1075461e53b6b617aa 100644
--- a/controller/nucleus/databaseNetworkElementStore.go
+++ b/controller/nucleus/databaseNetworkElementStore.go
@@ -51,7 +51,10 @@ func (s *DatabaseNetworkElementStore) Get(query store.Query) (networkelement.Loa
 }
 
 func (s *DatabaseNetworkElementStore) getByID(idOfNetworkElement uuid.UUID) (loadedNetworkElement networkelement.LoadedNetworkElement, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedNetworkElement, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -76,7 +79,10 @@ func (s *DatabaseNetworkElementStore) getByID(idOfNetworkElement uuid.UUID) (loa
 }
 
 func (s *DatabaseNetworkElementStore) getByName(nameOfNetworkElement string) (loadedNetworkElement networkelement.LoadedNetworkElement, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedNetworkElement, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -102,7 +108,10 @@ func (s *DatabaseNetworkElementStore) getByName(nameOfNetworkElement string) (lo
 
 // GetAll returns all stored network elements.
 func (s *DatabaseNetworkElementStore) GetAll() (loadedNetworkElements []networkelement.LoadedNetworkElement, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -137,7 +146,10 @@ func (s *DatabaseNetworkElementStore) GetAll() (loadedNetworkElements []networke
 
 // Add adds a network element to the network element store.
 func (s *DatabaseNetworkElementStore) Add(networkElementToAdd networkelement.NetworkElement) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -161,7 +173,10 @@ func (s *DatabaseNetworkElementStore) Add(networkElementToAdd networkelement.Net
 func (s *DatabaseNetworkElementStore) Update(networkElementToUpdate networkelement.NetworkElement) (err error) {
 	var updatedLoadedNetworkElement networkelement.LoadedNetworkElement
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -241,7 +256,10 @@ func (s *DatabaseNetworkElementStore) Update(networkElementToUpdate networkeleme
 
 // Delete deletes a network element from the network element store.
 func (s *DatabaseNetworkElementStore) Delete(networkElementToDelete networkelement.NetworkElement) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/nucleus/databasePluginStore.go b/controller/nucleus/databasePluginStore.go
index 8c98e5a15e2750852815b2f0ae4d3527d0ebfeda..af61945b00601a43373c6afc7c409e18bb8c8c0b 100644
--- a/controller/nucleus/databasePluginStore.go
+++ b/controller/nucleus/databasePluginStore.go
@@ -22,7 +22,10 @@ type DatabasePluginStore struct {
 
 // Add adds a plugin.
 func (s *DatabasePluginStore) Add(pluginToAdd plugin.Plugin) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -49,7 +52,10 @@ func (s *DatabasePluginStore) Add(pluginToAdd plugin.Plugin) (err error) {
 func (s *DatabasePluginStore) Update(pluginToUpdate plugin.Plugin) (err error) {
 	var updatedLoadedPlugin plugin.LoadedPlugin
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -83,7 +89,10 @@ func (s *DatabasePluginStore) Update(pluginToUpdate plugin.Plugin) (err error) {
 
 // Delete deletes an plugin.
 func (s *DatabasePluginStore) Delete(pluginToDelete plugin.Plugin) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -105,7 +114,10 @@ func (s *DatabasePluginStore) Delete(pluginToDelete plugin.Plugin) (err error) {
 // Get takes a SouthboundInterface's UUID or name and returns the SouthboundInterface. If the requested
 // SouthboundInterface does not exist an error is returned.
 func (s *DatabasePluginStore) Get(query store.Query) (loadedPlugin plugin.LoadedPlugin, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedPlugin, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -135,7 +147,10 @@ func (s *DatabasePluginStore) Get(query store.Query) (loadedPlugin plugin.Loaded
 
 // GetAll returns all plugin.
 func (s *DatabasePluginStore) GetAll() (loadedPlugins []plugin.LoadedPlugin, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/nucleus/databasePndStore.go b/controller/nucleus/databasePndStore.go
index c5497a000e130713c4b1cc20ce7103ed5d259081..bdd68ead376447d68e60668e2276872ca6f3a5a1 100644
--- a/controller/nucleus/databasePndStore.go
+++ b/controller/nucleus/databasePndStore.go
@@ -58,7 +58,10 @@ func (s *DatabasePndStore) Get(query store.Query) (newPnd networkdomain.LoadedPn
 }
 
 func (s *DatabasePndStore) getByID(idOfPnd uuid.UUID) (loadedPnd networkdomain.LoadedPnd, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedPnd, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -84,7 +87,10 @@ func (s *DatabasePndStore) getByID(idOfPnd uuid.UUID) (loadedPnd networkdomain.L
 }
 
 func (s *DatabasePndStore) getByName(nameOfPnd string) (loadedPnd networkdomain.LoadedPnd, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedPnd, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -113,7 +119,10 @@ func (s *DatabasePndStore) getByName(nameOfPnd string) (loadedPnd networkdomain.
 func (s *DatabasePndStore) GetAll() (pnds []networkdomain.LoadedPnd, err error) {
 	var loadedPnds []networkdomain.LoadedPnd
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -169,7 +178,10 @@ func (s *DatabasePndStore) GetAll() (pnds []networkdomain.LoadedPnd, err error)
 
 // Add adds a pnd to the pnd store.
 func (s *DatabasePndStore) Add(pndToAdd networkdomain.NetworkDomain) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -191,7 +203,10 @@ func (s *DatabasePndStore) Add(pndToAdd networkdomain.NetworkDomain) (err error)
 // Delete deletes a pnd.
 // It also deletes all assosicated devices and sbis.
 func (s *DatabasePndStore) Delete(pndToDelete networkdomain.NetworkDomain) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/rbac/databaseRoleStore.go b/controller/rbac/databaseRoleStore.go
index a28fd8251968a2f9aeff6c90d943b15ccc13a5a5..4066d97b2580778c1b5401e17dc8cba2774ee2ce 100644
--- a/controller/rbac/databaseRoleStore.go
+++ b/controller/rbac/databaseRoleStore.go
@@ -22,7 +22,10 @@ type DatabaseRoleStore struct {
 
 // Add adds a Role.
 func (s *DatabaseRoleStore) Add(roleToAdd rbac.Role) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -47,7 +50,10 @@ func (s *DatabaseRoleStore) Add(roleToAdd rbac.Role) (err error) {
 
 // Delete deletes a Role.
 func (s *DatabaseRoleStore) Delete(roleToDelete rbac.Role) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -89,7 +95,10 @@ func (s *DatabaseRoleStore) Get(query store.Query) (rbac.LoadedRole, error) {
 }
 
 func (s *DatabaseRoleStore) getByID(idOfRole uuid.UUID) (loadedRole rbac.LoadedRole, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedRole, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -115,7 +124,10 @@ func (s *DatabaseRoleStore) getByID(idOfRole uuid.UUID) (loadedRole rbac.LoadedR
 }
 
 func (s *DatabaseRoleStore) getByName(nameOfRole string) (loadedRole rbac.LoadedRole, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedRole, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -142,7 +154,10 @@ func (s *DatabaseRoleStore) getByName(nameOfRole string) (loadedRole rbac.Loaded
 
 // GetAll returns all Roles.
 func (s *DatabaseRoleStore) GetAll() (loadedRoles []rbac.LoadedRole, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -178,7 +193,10 @@ func (s *DatabaseRoleStore) GetAll() (loadedRoles []rbac.LoadedRole, err error)
 func (s *DatabaseRoleStore) Update(roleToUpdate rbac.Role) (err error) {
 	var updatedLoadedRole rbac.LoadedRole
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/rbac/databaseUserStore.go b/controller/rbac/databaseUserStore.go
index 42451c64674a3def7a936513b33a6169a4bd5f5a..0c8242b0618d09b1a44e24aa6e185bcece2bdbfe 100644
--- a/controller/rbac/databaseUserStore.go
+++ b/controller/rbac/databaseUserStore.go
@@ -23,7 +23,10 @@ type DatabaseUserStore struct {
 
 // Add adds an User.
 func (s *DatabaseUserStore) Add(userToAdd rbac.User) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -48,7 +51,10 @@ func (s *DatabaseUserStore) Add(userToAdd rbac.User) (err error) {
 
 // Delete deletes an User.
 func (s *DatabaseUserStore) Delete(userToDelete rbac.User) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -90,7 +96,10 @@ func (s *DatabaseUserStore) Get(query store.Query) (rbac.LoadedUser, error) {
 }
 
 func (s *DatabaseUserStore) getByID(idOfUser uuid.UUID) (loadedUser rbac.LoadedUser, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedUser, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -116,7 +125,10 @@ func (s *DatabaseUserStore) getByID(idOfUser uuid.UUID) (loadedUser rbac.LoadedU
 }
 
 func (s *DatabaseUserStore) getByName(nameOfUser string) (loadedUser rbac.LoadedUser, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedUser, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -143,7 +155,10 @@ func (s *DatabaseUserStore) getByName(nameOfUser string) (loadedUser rbac.Loaded
 
 // GetAll returns all Users.
 func (s *DatabaseUserStore) GetAll() (loadedUsers []rbac.LoadedUser, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -179,7 +194,10 @@ func (s *DatabaseUserStore) GetAll() (loadedUsers []rbac.LoadedUser, err error)
 func (s *DatabaseUserStore) Update(userToUpdate rbac.User) (err error) {
 	var updatedLoadedUser rbac.LoadedUser
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/topology/nodes/nodeStore.go b/controller/topology/nodes/nodeStore.go
index f6f637e940bf257b7504886f068f0d7c297d94ab..ce9af485f6e20d05f362de4d56ff4d679f0aeb5b 100644
--- a/controller/topology/nodes/nodeStore.go
+++ b/controller/topology/nodes/nodeStore.go
@@ -59,7 +59,10 @@ func (s *DatabaseNodeStore) Get(query query.Query) (Node, error) {
 }
 
 func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (loadedNode Node, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedNode, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -86,7 +89,10 @@ func (s *DatabaseNodeStore) getByID(idOfNode uuid.UUID) (loadedNode Node, err er
 }
 
 func (s *DatabaseNodeStore) getByName(nameOfNode string) (loadedNode Node, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedNode, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -112,7 +118,10 @@ func (s *DatabaseNodeStore) getByName(nameOfNode string) (loadedNode Node, err e
 
 // GetAll returns all stored nodes.
 func (s *DatabaseNodeStore) GetAll() (loadedNode []Node, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedNode, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -144,7 +153,10 @@ func (s *DatabaseNodeStore) GetAll() (loadedNode []Node, err error) {
 
 // Add adds a node to the node store.
 func (s *DatabaseNodeStore) Add(node Node) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -171,7 +183,10 @@ func (s *DatabaseNodeStore) Add(node Node) (err error) {
 func (s *DatabaseNodeStore) Update(node Node) (err error) {
 	var updatedLoadedNodes Node
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -244,7 +259,10 @@ func (s *DatabaseNodeStore) Update(node Node) (err error) {
 
 // Delete deletes a node from the node store.
 func (s *DatabaseNodeStore) Delete(node Node) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/topology/ports/portStore.go b/controller/topology/ports/portStore.go
index 024c0f9114f2d2c297a433df163f8b00d97b22e6..7045f2423e8c234c13aa388d21adf2846b6c3bba 100644
--- a/controller/topology/ports/portStore.go
+++ b/controller/topology/ports/portStore.go
@@ -57,7 +57,10 @@ func (s *DatabasePortStore) Get(query query.Query) (Port, error) {
 }
 
 func (s *DatabasePortStore) getByID(idOfPort uuid.UUID) (loadedPort Port, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedPort, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -84,7 +87,10 @@ func (s *DatabasePortStore) getByID(idOfPort uuid.UUID) (loadedPort Port, err er
 }
 
 func (s *DatabasePortStore) getByName(nameOfPort string) (loadedPort Port, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedPort, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -110,7 +116,10 @@ func (s *DatabasePortStore) getByName(nameOfPort string) (loadedPort Port, err e
 
 // GetAll returns all stored ports.
 func (s *DatabasePortStore) GetAll() (loadedPorts []Port, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -143,7 +152,10 @@ func (s *DatabasePortStore) GetAll() (loadedPorts []Port, err error) {
 
 // Add adds a port to the port store.
 func (s *DatabasePortStore) Add(port Port) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -166,7 +178,10 @@ func (s *DatabasePortStore) Add(port Port) (err error) {
 func (s *DatabasePortStore) Update(port Port) (err error) {
 	var updatedLoadedNetworkElement networkelement.LoadedNetworkElement
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -198,7 +213,10 @@ func (s *DatabasePortStore) Update(port Port) (err error) {
 
 // Delete deletes a port from the port store.
 func (s *DatabasePortStore) Delete(port Port) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/topology/routing-tables/routingTableStore.go b/controller/topology/routing-tables/routingTableStore.go
index 1c70c68a1d2965f5daa6877cf7056854fbfecc93..d61299916c032efd6b5dc05b96f5e0813998e707 100644
--- a/controller/topology/routing-tables/routingTableStore.go
+++ b/controller/topology/routing-tables/routingTableStore.go
@@ -56,7 +56,10 @@ func (s *DatabaseRoutingTableStore) Get(query query.Query) (RoutingTable, error)
 }
 
 func (s *DatabaseRoutingTableStore) getByID(idOfRoutingTable uuid.UUID) (routingTable RoutingTable, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return routingTable, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -81,7 +84,10 @@ func (s *DatabaseRoutingTableStore) getByID(idOfRoutingTable uuid.UUID) (routing
 }
 
 func (s *DatabaseRoutingTableStore) getByName(nameOfRoutingTable string) (loadedRoutingTable RoutingTable, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedRoutingTable, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -107,7 +113,10 @@ func (s *DatabaseRoutingTableStore) getByName(nameOfRoutingTable string) (loaded
 
 // GetAll returns all stored routingTables.
 func (s *DatabaseRoutingTableStore) GetAll() (loadedRoutingTable []RoutingTable, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -140,7 +149,10 @@ func (s *DatabaseRoutingTableStore) GetAll() (loadedRoutingTable []RoutingTable,
 
 // Add adds a RoutingTable to the store.
 func (s *DatabaseRoutingTableStore) Add(routingTable RoutingTable) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -163,7 +175,10 @@ func (s *DatabaseRoutingTableStore) Add(routingTable RoutingTable) (err error) {
 func (s *DatabaseRoutingTableStore) Update(routingTable RoutingTable) (err error) {
 	var updatedLoadedRoutingTable RoutingTable
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -195,7 +210,10 @@ func (s *DatabaseRoutingTableStore) Update(routingTable RoutingTable) (err error
 
 // Delete deletes a node from the node store.
 func (s *DatabaseRoutingTableStore) Delete(routingTable RoutingTable) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
diff --git a/controller/topology/topologyStore.go b/controller/topology/topologyStore.go
index e8118388eb96b6ce504e29b3cb942c9a18d861b1..399d71af724db415fa362e1b58999b5551e0f540 100644
--- a/controller/topology/topologyStore.go
+++ b/controller/topology/topologyStore.go
@@ -57,7 +57,10 @@ func (s *DatabaseTopologyStore) Get(query query.Query) (links.Link, error) {
 }
 
 func (s *DatabaseTopologyStore) getByID(idOfTopology uuid.UUID) (loadedTopology links.Link, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedTopology, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -82,7 +85,10 @@ func (s *DatabaseTopologyStore) getByID(idOfTopology uuid.UUID) (loadedTopology
 }
 
 func (s *DatabaseTopologyStore) getByName(nameOfTopology string) (loadedTopology links.Link, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return loadedTopology, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -108,7 +114,10 @@ func (s *DatabaseTopologyStore) getByName(nameOfTopology string) (loadedTopology
 
 // GetAll returns all stored links.
 func (s *DatabaseTopologyStore) GetAll() (loadedTopology []links.Link, err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return nil, err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -141,7 +150,10 @@ func (s *DatabaseTopologyStore) GetAll() (loadedTopology []links.Link, err error
 
 // Add adds a link to the link store.
 func (s *DatabaseTopologyStore) Add(link links.Link) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -164,7 +176,10 @@ func (s *DatabaseTopologyStore) Add(link links.Link) (err error) {
 func (s *DatabaseTopologyStore) Update(linkToUpdate links.Link) (err error) {
 	var updatedLink links.Link
 
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {
@@ -196,7 +211,10 @@ func (s *DatabaseTopologyStore) Update(linkToUpdate links.Link) (err error) {
 
 // Delete deletes a link from the link store.
 func (s *DatabaseTopologyStore) Delete(linkToDelete links.Link) (err error) {
-	client, ctx, cancel := database.GetMongoConnection()
+	client, ctx, cancel, err := database.GetMongoConnection()
+	if err != nil {
+		return err
+	}
 	defer cancel()
 	defer func() {
 		if ferr := client.Disconnect(ctx); ferr != nil {