diff --git a/controller/nucleus/databaseDeviceStore.go b/controller/nucleus/databaseDeviceStore.go
index cb6af812ef2c0050b98f3f8c2d74ccffb7a050f2..fecf9f09ee1ba433518a77d2628dddf8aaa2115c 100644
--- a/controller/nucleus/databaseDeviceStore.go
+++ b/controller/nucleus/databaseDeviceStore.go
@@ -36,6 +36,37 @@ func NewDatabaseDeviceStore(pndUUID uuid.UUID, sbiStore southbound.SbiStore) dev
 // Get takes a Device's UUID or name and returns the Device.
 func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
 	var loadedDevice LoadedDevice
+	var err error
+
+	if query.ID.String() != "" {
+		loadedDevice, err = s.getByID(query.ID)
+		if err != nil {
+			return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
+		}
+
+		device, err := s.createDeviceFromStore(loadedDevice)
+		if err != nil {
+			return nil, err
+		}
+
+		return device, nil
+	}
+
+	loadedDevice, err = s.getByName(query.Name)
+	if err != nil {
+		return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
+	}
+
+	device, err := s.createDeviceFromStore(loadedDevice)
+	if err != nil {
+		return nil, err
+	}
+
+	return device, nil
+}
+
+func (s *DatabaseDeviceStore) getByID(idOfDevice uuid.UUID) (LoadedDevice, error) {
+	var loadedDevice LoadedDevice
 
 	client, ctx, cancel := database.GetMongoConnection()
 	defer cancel()
@@ -43,33 +74,41 @@ func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
 
 	db := client.Database(database.DatabaseName)
 	collection := db.Collection(s.storeName)
-	result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: query.ID}})
+	result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: idOfDevice.String()}})
 	if result == nil {
-		return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
+		return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
 	}
 
 	err := result.Decode(&loadedDevice)
 	if err != nil {
-		db := client.Database(database.DatabaseName)
-		collection := db.Collection(s.storeName)
-		result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: query.Name}})
-		if result == nil {
-			return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
-		}
+		log.Printf("Failed marshalling %v", err)
+		return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
+	}
 
-		err := result.Decode(&loadedDevice)
-		if err != nil {
-			log.Printf("Failed marshalling %v", err)
-			return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
-		}
+	return loadedDevice, nil
+}
+
+func (s *DatabaseDeviceStore) getByName(nameOfDevice string) (LoadedDevice, error) {
+	var loadedDevice LoadedDevice
+
+	client, ctx, cancel := database.GetMongoConnection()
+	defer cancel()
+	defer client.Disconnect(ctx)
+
+	db := client.Database(database.DatabaseName)
+	collection := db.Collection(s.storeName)
+	result := collection.FindOne(ctx, bson.D{primitive.E{Key: "name", Value: nameOfDevice}})
+	if result == nil {
+		return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
 	}
 
-	device, err := s.createDeviceFromStore(loadedDevice)
+	err := result.Decode(&loadedDevice)
 	if err != nil {
-		return nil, err
+		log.Printf("Failed marshalling %v", err)
+		return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
 	}
 
-	return device, nil
+	return loadedDevice, nil
 }
 
 // GetAll returns all stored devices.