diff --git a/apps/files/lib/Command/TransferOwnership.php b/apps/files/lib/Command/TransferOwnership.php
index 96281b5226cf75ad7df29cb5238d6f0bb05d5384..aa07cf9de91a4c833ec41a21f17ce39ea6b04b14 100644
--- a/apps/files/lib/Command/TransferOwnership.php
+++ b/apps/files/lib/Command/TransferOwnership.php
@@ -34,6 +34,7 @@ use OCP\IUserManager;
 use OCP\Share\IManager;
 use OCP\Share\IShare;
 use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Helper\ProgressBar;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
@@ -65,6 +66,9 @@ class TransferOwnership extends Command {
 	/** @var string */
 	private $destinationUser;
 
+	/** @var string */
+	private $sourcePath;
+
 	/** @var string */
 	private $finalTarget;
 
@@ -88,6 +92,13 @@ class TransferOwnership extends Command {
 				'destination-user',
 				InputArgument::REQUIRED,
 				'user who will be the new owner of the files'
+			)
+			->addOption(
+				'path',
+				null,
+				InputOption::VALUE_REQUIRED,
+				'selectively provide the path to transfer. For example --path="folder_name"',
+				''
 			);
 	}
 
@@ -107,6 +118,8 @@ class TransferOwnership extends Command {
 
 		$this->sourceUser = $sourceUserObject->getUID();
 		$this->destinationUser = $destinationUserObject->getUID();
+		$sourcePathOption = ltrim($input->getOption('path'), '/');
+		$this->sourcePath = rtrim($this->sourceUser . '/files/' . $sourcePathOption, '/');
 
 		// target user has to be ready
 		if (!\OC::$server->getEncryptionManager()->isReadyForUser($this->destinationUser)) {
@@ -121,6 +134,12 @@ class TransferOwnership extends Command {
 		Filesystem::initMountPoints($this->sourceUser);
 		Filesystem::initMountPoints($this->destinationUser);
 
+		$view = new View();
+		if (!$view->is_dir($this->sourcePath)) {
+			$output->writeln("<error>Unknown path provided: $sourcePathOption</error>");
+			return 1;
+		}
+
 		// analyse source folder
 		$this->analyse($output);
 
@@ -155,7 +174,8 @@ class TransferOwnership extends Command {
 		$progress = new ProgressBar($output);
 		$progress->start();
 		$self = $this;
-		$this->walkFiles($view, "$this->sourceUser/files",
+
+		$this->walkFiles($view, $this->sourcePath,
 				function (FileInfo $fileInfo) use ($progress, $self) {
 					if ($fileInfo->getType() === FileInfo::TYPE_FOLDER) {
 						// only analyze into folders from main storage,
@@ -216,9 +236,18 @@ class TransferOwnership extends Command {
 	protected function transfer(OutputInterface $output) {
 		$view = new View();
 		$output->writeln("Transferring files to $this->finalTarget ...");
-		$view->rename("$this->sourceUser/files", $this->finalTarget);
-		// because the files folder is moved away we need to recreate it
-		$view->mkdir("$this->sourceUser/files");
+
+		// This change will help user to transfer the folder specified using --path option.
+		// Else only the content inside folder is transferred which is not correct.
+		if($this->sourcePath !== "$this->sourceUser/files") {
+			$view->mkdir($this->finalTarget);
+			$this->finalTarget = $this->finalTarget . '/' . basename($this->sourcePath);
+		}
+		$view->rename($this->sourcePath, $this->finalTarget);
+		if (!is_dir("$this->sourceUser/files")) {
+			// because the files folder is moved away we need to recreate it
+			$view->mkdir("$this->sourceUser/files");
+		}
 	}
 
 	/**
diff --git a/build/integration/features/bootstrap/CommandLineContext.php b/build/integration/features/bootstrap/CommandLineContext.php
index 95f492a62dbef60d530492ab1f171b9a1fe51dc2..c8253966cdb740b408f8d75e004795f02d8f2e3c 100644
--- a/build/integration/features/bootstrap/CommandLineContext.php
+++ b/build/integration/features/bootstrap/CommandLineContext.php
@@ -88,6 +88,20 @@ class CommandLineContext implements \Behat\Behat\Context\Context {
 		}
 	}
 
+	/**
+	 * @When /^transfering ownership of path "([^"]+)" from "([^"]+)" to "([^"]+)"/
+	 */
+	public function transferingOwnershipPath($path, $user1, $user2) {
+		$path = '--path=' . $path;
+		if($this->runOcc(['files:transfer-ownership', $path, $user1, $user2]) === 0) {
+			$this->lastTransferPath = $this->findLastTransferFolderForUser($user1, $user2);
+		} else {
+			// failure
+			$this->lastTransferPath = null;
+		}
+	}
+
+
 	/**
 	 * @When /^using received transfer folder of "([^"]+)" as dav path$/
 	 */
diff --git a/build/integration/features/transfer-ownership.feature b/build/integration/features/transfer-ownership.feature
index 92361f7090090f474e32716e6936041d2b0a2e44..7990eac3280d520004c15c6bc5e97d462ee058ed 100644
--- a/build/integration/features/transfer-ownership.feature
+++ b/build/integration/features/transfer-ownership.feature
@@ -117,3 +117,110 @@ Feature: transfer-ownership
 		Then the command error output contains the text "Unknown target user"
 		And the command failed with exit code 1
 
+	Scenario: transfering ownership of a folder
+		Given user "user0" exists
+		And user "user1" exists
+		And User "user0" created a folder "/test"
+		And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
+		When transfering ownership of path "test" from "user0" to "user1"
+		And the command was successful
+		And As an "user1"
+		And using received transfer folder of "user1" as dav path
+		Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
+
+	Scenario: transfering ownership of file shares
+		Given user "user0" exists
+		And user "user1" exists
+		And user "user2" exists
+		And User "user0" created a folder "/test"
+		And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
+		And file "/test/somefile.txt" of user "user0" is shared with user "user2" with permissions 19
+		When transfering ownership of path "test" from "user0" to "user1"
+		And the command was successful
+		And As an "user2"
+		Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is"
+
+	Scenario: transfering ownership of folder shared with third user
+		Given user "user0" exists
+		And user "user1" exists
+		And user "user2" exists
+		And User "user0" created a folder "/test"
+		And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
+		And folder "/test" of user "user0" is shared with user "user2" with permissions 31
+		When transfering ownership of path "test" from "user0" to "user1"
+		And the command was successful
+		And As an "user2"
+		Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
+
+	Scenario: transfering ownership of folder shared with transfer recipient
+		Given user "user0" exists
+		And user "user1" exists
+		And User "user0" created a folder "/test"
+		And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
+		And folder "/test" of user "user0" is shared with user "user1" with permissions 31
+		When transfering ownership of path "test" from "user0" to "user1"
+		And the command was successful
+		And As an "user1"
+		Then as "user1" the folder "/test" does not exist
+		And using received transfer folder of "user1" as dav path
+		And Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
+
+	Scenario: transfering ownership of folder doubly shared with third user
+		Given group "group1" exists
+		And user "user0" exists
+		And user "user1" exists
+		And user "user2" exists
+		And user "user2" belongs to group "group1"
+		And User "user0" created a folder "/test"
+		And User "user0" uploads file "data/textfile.txt" to "/test/somefile.txt"
+		And folder "/test" of user "user0" is shared with group "group1" with permissions 31
+		And folder "/test" of user "user0" is shared with user "user2" with permissions 31
+		When transfering ownership of path "test" from "user0" to "user1"
+		And the command was successful
+		And As an "user2"
+		Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
+
+	Scenario: transfering ownership does not transfer received shares
+		Given user "user0" exists
+		And user "user1" exists
+		And user "user2" exists
+		And User "user2" created a folder "/test"
+		And User "user0" created a folder "/sub"
+		And folder "/test" of user "user2" is shared with user "user0" with permissions 31
+		And User "user0" moved folder "/test" to "/sub/test"
+		When transfering ownership of path "sub" from "user0" to "user1"
+		And the command was successful
+		And As an "user1"
+		And using received transfer folder of "user1" as dav path
+		Then as "user1" the folder "/sub/test" does not exist
+
+	Scenario: transfering ownership does not transfer external storage
+		Given user "user0" exists
+		And user "user1" exists
+		And User "user0" created a folder "/sub"
+		When transfering ownership of path "sub" from "user0" to "user1"
+		And the command was successful
+		And As an "user1"
+		And using received transfer folder of "user1" as dav path
+		Then as "user1" the folder "/local_storage" does not exist
+
+	Scenario: transfering ownership fails with invalid source user
+		Given user "user0" exists
+		And User "user0" created a folder "/sub"
+		When transfering ownership of path "sub" from "invalid_user" to "user0"
+		Then the command error output contains the text "Unknown source user"
+		And the command failed with exit code 1
+
+	Scenario: transfering ownership fails with invalid target user
+		Given user "user0" exists
+		And User "user0" created a folder "/sub"
+		When transfering ownership of path "sub" from "user0" to "invalid_user"
+		Then the command error output contains the text "Unknown target user"
+		And the command failed with exit code 1
+
+	Scenario: transfering ownership fails with invalid path
+		Given user "user0" exists
+		And user "user1" exists
+		When transfering ownership of path "test" from "user0" to "user1"
+		Then the command error output contains the text "Unknown target user"
+		And the command failed with exit code 1