diff --git a/lib/private/repair.php b/lib/private/repair.php
index d40c6464e1469ebb3e2f6c2867f15436de139af5..779f09d42ec338d70c093e82fc54a13dfa01d75e 100644
--- a/lib/private/repair.php
+++ b/lib/private/repair.php
@@ -36,6 +36,7 @@ use OC\Repair\Collation;
 use OC\Repair\DropOldJobs;
 use OC\Repair\OldGroupMembershipShares;
 use OC\Repair\RemoveGetETagEntries;
+use OC\Repair\SharePropagation;
 use OC\Repair\SqliteAutoincrement;
 use OC\Repair\DropOldTables;
 use OC\Repair\FillETags;
@@ -114,6 +115,7 @@ class Repair extends BasicEmitter {
 			new RemoveGetETagEntries(\OC::$server->getDatabaseConnection()),
 			new UpdateOutdatedOcsIds(\OC::$server->getConfig()),
 			new RepairInvalidShares(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
+			new SharePropagation(\OC::$server->getConfig()),
 		];
 	}
 
diff --git a/lib/private/repair/sharepropagation.php b/lib/private/repair/sharepropagation.php
new file mode 100644
index 0000000000000000000000000000000000000000..26d7a9e128c32ab83aba027600bf9606caaefcd5
--- /dev/null
+++ b/lib/private/repair/sharepropagation.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @author Georg Ehrke <georg@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+namespace OC\Repair;
+
+use OC\Hooks\BasicEmitter;
+use OCP\IConfig;
+
+class SharePropagation extends BasicEmitter implements \OC\RepairStep {
+	/** @var  IConfig */
+	private $config;
+
+	/**
+	 * SharePropagation constructor.
+	 *
+	 * @param IConfig $config
+	 */
+	public function __construct(IConfig $config) {
+		$this->config = $config;
+	}
+
+	public function getName() {
+		return 'Remove old share propagation app entries';
+	}
+
+	public function run() {
+		$keys = $this->config->getAppKeys('files_sharing');
+
+		foreach ($keys as $key) {
+			if (is_numeric($key)) {
+				$this->config->deleteAppValue('files_sharing', $key);
+			}
+		}
+	}
+}
diff --git a/tests/lib/repair/repairsharepropagation.php b/tests/lib/repair/repairsharepropagation.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ec8b98ec56db22be78e767982af4ed8b2b5e73a
--- /dev/null
+++ b/tests/lib/repair/repairsharepropagation.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Repair;
+
+use OC\Repair\SharePropagation;
+
+class RepairSharePropagation extends \Test\TestCase {
+	public function keyProvider() {
+		return [
+			[['1', '2'], ['1', '2']],
+			[['1', '2', 'foo'], ['1', '2']],
+			[['foo'], []],
+		];
+	}
+
+	/**
+	 * @dataProvider keyProvider
+	 * @param array $startKeys
+	 * @param array $expectedRemovedKeys
+	 */
+	public function testRemovePropagationEntries(array $startKeys, array $expectedRemovedKeys) {
+		/** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\IConfig $config */
+		$config = $this->getMock('\OCP\IConfig');
+		$config->expects($this->once())
+			->method('getAppKeys')
+			->with('files_sharing')
+			->will($this->returnValue($startKeys));
+
+		$removedKeys = [];
+
+		$config->expects($this->any())
+			->method('deleteAppValue')
+			->will($this->returnCallback(function ($app, $key) use (&$removedKeys) {
+				$removedKeys[] = $key;
+			}));
+
+		$step = new SharePropagation($config);
+		$step->run();
+
+		sort($expectedRemovedKeys);
+		sort($removedKeys);
+
+		$this->assertEquals($expectedRemovedKeys, $removedKeys);
+	}
+}