diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php
index 76f7052c4ed8e21869bdd7c54841edfa3ed7c955..810a57963f88e257e4deb62dc0c451f238ad9f7a 100644
--- a/apps/files_external/service/dbconfigservice.php
+++ b/apps/files_external/service/dbconfigservice.php
@@ -212,6 +212,34 @@ class DBConfigService {
 		$query->execute();
 	}
 
+	/**
+	 * @param int $mountId
+	 * @param string $newMountPoint
+	 */
+	public function setMountPoint($mountId, $newMountPoint) {
+		$builder = $this->connection->getQueryBuilder();
+
+		$query = $builder->update('external_mounts')
+			->set('mount_point', $builder->createNamedParameter($newMountPoint))
+			->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+
+		$query->execute();
+	}
+
+	/**
+	 * @param int $mountId
+	 * @param string $newAuthBackend
+	 */
+	public function setAuthBackend($mountId, $newAuthBackend) {
+		$builder = $this->connection->getQueryBuilder();
+
+		$query = $builder->update('external_mounts')
+			->set('auth_backend', $builder->createNamedParameter($newAuthBackend))
+			->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+
+		$query->execute();
+	}
+
 	/**
 	 * @param int $mountId
 	 * @param string $key
diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php
index 97f79c133243817edc849ce517dd73c6beabb27e..dd28c415cea20f402673fb72af3d1f07af5d9bd9 100644
--- a/apps/files_external/service/storagesservice.php
+++ b/apps/files_external/service/storagesservice.php
@@ -392,6 +392,14 @@ abstract class StoragesService {
 			$this->dbConfig->setOption($id, $key, $value);
 		}
 
+		if ($updatedStorage->getMountPoint() !== $oldStorage->getMountPoint()) {
+			$this->dbConfig->setMountPoint($id, $updatedStorage->getMountPoint());
+		}
+
+		if ($updatedStorage->getAuthMechanism()->getIdentifier() !== $oldStorage->getAuthMechanism()->getIdentifier()) {
+			$this->dbConfig->setAuthBackend($id, $updatedStorage->getAuthMechanism()->getIdentifier());
+		}
+
 		$this->triggerChangeHooks($oldStorage, $updatedStorage);
 
 		return $this->getStorage($id);
diff --git a/apps/files_external/service/userstoragesservice.php b/apps/files_external/service/userstoragesservice.php
index 5cf04578caf222cd50970870dfa6c40ef263dac1..9b622f9b470b927767b951ac1ea62133e1a4a9a0 100644
--- a/apps/files_external/service/userstoragesservice.php
+++ b/apps/files_external/service/userstoragesservice.php
@@ -104,11 +104,24 @@ class UserStoragesService extends StoragesService {
 	 * @return StorageConfig storage config, with added id
 	 */
 	public function addStorage(StorageConfig $newStorage) {
+		$newStorage->setApplicableUsers([$this->getUser()->getUID()]);
 		$config = parent::addStorage($newStorage);
-		$this->dbConfig->addApplicable($config->getId(), DBConfigService::APPLICABLE_TYPE_USER, $this->getUser()->getUID());
 		return $config;
 	}
 
+	/**
+	 * Update storage to the configuration
+	 *
+	 * @param StorageConfig $updatedStorage storage attributes
+	 *
+	 * @return StorageConfig storage config
+	 * @throws NotFoundException if the given storage does not exist in the config
+	 */
+	public function updateStorage(StorageConfig $updatedStorage) {
+		$updatedStorage->setApplicableUsers([$this->getUser()->getUID()]);
+		return parent::updateStorage($updatedStorage);
+	}
+
 	/**
 	 * Get the visibility type for this controller, used in validation
 	 *
diff --git a/apps/files_external/tests/service/dbconfigservicetest.php b/apps/files_external/tests/service/dbconfigservicetest.php
index d5b4ff1585dfdac70b83d45af3276e5080caccd2..bfb564c666373af34e32a7cdcfeed7987519d09d 100644
--- a/apps/files_external/tests/service/dbconfigservicetest.php
+++ b/apps/files_external/tests/service/dbconfigservicetest.php
@@ -230,4 +230,32 @@ class DBConfigServiceTest extends TestCase {
 		$this->assertEquals($id1, $mounts[0]['mount_id']);
 		$this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_GLOBAL, 'value' => null, 'mount_id' => $id1]], $mounts[0]['applicable']);
 	}
+
+	public function testSetMountPoint() {
+		$id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+		$id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+
+		$this->dbConfig->setMountPoint($id1, '/asd');
+
+		$mount = $this->dbConfig->getMountById($id1);
+		$this->assertEquals('/asd', $mount['mount_point']);
+
+		// remains unchanged
+		$mount = $this->dbConfig->getMountById($id2);
+		$this->assertEquals('/foo', $mount['mount_point']);
+	}
+
+	public function testSetAuthBackend() {
+		$id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+		$id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+
+		$this->dbConfig->setAuthBackend($id1, 'none');
+
+		$mount = $this->dbConfig->getMountById($id1);
+		$this->assertEquals('none', $mount['auth_backend']);
+
+		// remains unchanged
+		$mount = $this->dbConfig->getMountById($id2);
+		$this->assertEquals('bar', $mount['auth_backend']);
+	}
 }
diff --git a/apps/files_external/tests/service/storagesservicetest.php b/apps/files_external/tests/service/storagesservicetest.php
index 7847bd45d4aaea5276cf895563d0eb8214cd5ad2..d543098289951de62e35a01c05f89d0b61d08485 100644
--- a/apps/files_external/tests/service/storagesservicetest.php
+++ b/apps/files_external/tests/service/storagesservicetest.php
@@ -465,4 +465,33 @@ abstract class StoragesServiceTest extends \Test\TestCase {
 			$params[Filesystem::signal_param_users]
 		);
 	}
+
+	public function testUpdateStorageMountPoint() {
+		$backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB');
+		$authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism');
+
+		$storage = new StorageConfig();
+		$storage->setMountPoint('mountpoint');
+		$storage->setBackend($backend);
+		$storage->setAuthMechanism($authMechanism);
+		$storage->setBackendOptions(['password' => 'testPassword']);
+
+		$savedStorage = $this->service->addStorage($storage);
+
+		$newAuthMechanism = $this->backendService->getAuthMechanism('identifier:\Other\Auth\Mechanism');
+
+		$updatedStorage = new StorageConfig($savedStorage->getId());
+		$updatedStorage->setMountPoint('mountpoint2');
+		$updatedStorage->setBackend($backend);
+		$updatedStorage->setAuthMechanism($newAuthMechanism);
+		$updatedStorage->setBackendOptions(['password' => 'password2']);
+
+		$this->service->updateStorage($updatedStorage);
+
+		$savedStorage = $this->service->getStorage($updatedStorage->getId());
+
+		$this->assertEquals('/mountpoint2', $savedStorage->getMountPoint());
+		$this->assertEquals($newAuthMechanism, $savedStorage->getAuthMechanism());
+		$this->assertEquals('password2', $savedStorage->getBackendOption('password'));
+	}
 }
diff --git a/apps/files_external/tests/service/userglobalstoragesservicetest.php b/apps/files_external/tests/service/userglobalstoragesservicetest.php
index b8379288d436e9fea38fff5c4d06ab23250f84a9..8057762cb287aa108810207efdd65727b57161e3 100644
--- a/apps/files_external/tests/service/userglobalstoragesservicetest.php
+++ b/apps/files_external/tests/service/userglobalstoragesservicetest.php
@@ -349,4 +349,8 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest {
 		$this->assertTrue(true);
 	}
 
+	public function testUpdateStorageMountPoint() {
+		// we don't test this here
+		$this->assertTrue(true);
+	}
 }
diff --git a/apps/files_external/tests/service/userstoragesservicetest.php b/apps/files_external/tests/service/userstoragesservicetest.php
index 5e984c52bfd192c36a0017647e8724a1449534a8..6b6e6313e7704e9b5a5a29429bf061e7aa5fbfe4 100644
--- a/apps/files_external/tests/service/userstoragesservicetest.php
+++ b/apps/files_external/tests/service/userstoragesservicetest.php
@@ -122,8 +122,8 @@ class UserStoragesServiceTest extends StoragesServiceTest {
 		$newStorage = $this->service->updateStorage($newStorage);
 
 		$this->assertEquals('anotherPassword', $newStorage->getBackendOptions()['password']);
+		$this->assertEquals([$this->userId], $newStorage->getApplicableUsers());
 		// these attributes are unused for user storages
-		$this->assertEmpty($newStorage->getApplicableUsers());
 		$this->assertEmpty($newStorage->getApplicableGroups());
 		$this->assertEquals(0, $newStorage->getStatus());