diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 6aa58c55e9be96ddb2bee24a6107fa5db439c141..bdf1811c5f9d6d5a8244d3f441daa5ba56f89f9d 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -315,6 +315,9 @@ class Storage {
 			if (self::copyFileContents($users_view, 'files_versions' . $filename . '.v' . $revision, 'files' . $filename)) {
 				$files_view->touch($file, $revision);
 				Storage::scheduleExpire($uid, $file);
+				\OC_Hook::emit('\OCP\Versions', 'rollback', array(
+					'path' => $filename,
+				));
 				return true;
 			} else if ($versionCreated) {
 				self::deleteVersion($users_view, $version);
diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php
index da214ead60a025f26b0157d1ede06657070ec912..d4a85c8bffeb227aa34a22c3b5fe81ed67b3a4bf 100644
--- a/apps/files_versions/tests/versions.php
+++ b/apps/files_versions/tests/versions.php
@@ -580,6 +580,35 @@ class Test_Files_Versioning extends \Test\TestCase {
 		$this->doTestRestore();
 	}
 
+	/**
+	 * @param string $hookName name of hook called
+	 * @param string $params variable to recieve parameters provided by hook
+	 */
+	private function connectMockHooks($hookName, &$params) {
+		if ($hookName === null) {
+			return;
+		}
+
+		$eventHandler = $this->getMockBuilder('\stdclass')
+			->setMethods(['callback'])
+			->getMock();
+
+		$eventHandler->expects($this->any())
+			->method('callback')
+			->will($this->returnCallback(
+				function($p) use (&$params) {
+					$params = $p;
+				}
+			));
+
+		\OCP\Util::connectHook(
+			'\OCP\Versions',
+			$hookName,
+			$eventHandler,
+			'callback'
+		);
+	}
+
 	private function doTestRestore() {
 		$filePath = self::TEST_VERSIONS_USER . '/files/sub/test.txt';
 		$this->rootView->file_put_contents($filePath, 'test file');
@@ -608,7 +637,15 @@ class Test_Files_Versioning extends \Test\TestCase {
 		$this->assertEquals('test file', $this->rootView->file_get_contents($filePath));
 		$info1 = $this->rootView->getFileInfo($filePath);
 
+		$params = array();
+		$this->connectMockHooks('rollback', $params);
+
 		\OCA\Files_Versions\Storage::rollback('sub/test.txt', $t2);
+		$expectedParams = array(
+			'path' => '/sub/test.txt',
+		);
+
+		$this->assertEquals($expectedParams, $params);
 
 		$this->assertEquals('version2', $this->rootView->file_get_contents($filePath));
 		$info2 = $this->rootView->getFileInfo($filePath);
diff --git a/lib/base.php b/lib/base.php
index 3624a3fbaf989f1c90c08b61b034a85a3a3b8577..f99acaaa80a80c2069c4d212525061fc167710de 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -803,8 +803,9 @@ class OC {
 		OC_Hook::connect('\OCP\Versions', 'preDelete', 'OC\Preview', 'prepare_delete');
 		OC_Hook::connect('\OCP\Trashbin', 'preDelete', 'OC\Preview', 'prepare_delete');
 		OC_Hook::connect('OC_Filesystem', 'post_delete', 'OC\Preview', 'post_delete_files');
-		OC_Hook::connect('\OCP\Versions', 'delete', 'OC\Preview', 'post_delete');
+		OC_Hook::connect('\OCP\Versions', 'delete', 'OC\Preview', 'post_delete_versions');
 		OC_Hook::connect('\OCP\Trashbin', 'delete', 'OC\Preview', 'post_delete');
+		OC_Hook::connect('\OCP\Versions', 'rollback', 'OC\Preview', 'post_delete_versions');
 	}
 
 	/**
diff --git a/lib/private/preview.php b/lib/private/preview.php
index 978da1161c23a452f1c04744748f347bcfaab4be..de964b72df2d9faa74b54d2fa01c956c14f16055 100644
--- a/lib/private/preview.php
+++ b/lib/private/preview.php
@@ -1294,6 +1294,13 @@ class Preview {
 		self::post_delete($args, 'files/');
 	}
 
+	/**
+	 * @param array $args
+	 */
+	public static function post_delete_versions($args) {
+		self::post_delete($args, 'files/');
+	}
+
 	/**
 	 * @param array $args
 	 * @param string $prefix