diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php
index 34c9729f6f3e5d64520649a43c22bd1227827a17..9c7b26b54ac900ff6202e3829a54bfc30044df25 100644
--- a/apps/user_ldap/ajax/wizard.php
+++ b/apps/user_ldap/ajax/wizard.php
@@ -61,9 +61,10 @@ $userManager = new \OCA\User_LDAP\User\Manager(
 	new \OCA\User_LDAP\LogWrapper(),
 	\OC::$server->getAvatarManager(),
 	new \OCP\Image(),
-	\OC::$server->getDatabaseConnection(),
 	\OC::$server->getUserManager(),
-	\OC::$server->getNotificationManager());
+	\OC::$server->getNotificationManager(),
+	\OC::$server->get(\OCP\Share\IManager::class)
+);
 
 $access = new \OCA\User_LDAP\Access(
 	$con,
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 01818079802c2aa2410d65adac349b4395601f08..2b9383697e5025168cf0046286eb71afc44fe15e 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -52,6 +52,7 @@ use OC\Hooks\PublicEmitter;
 use OC\ServerNotAvailableException;
 use OCA\User_LDAP\Exceptions\ConstraintViolationException;
 use OCA\User_LDAP\Mapping\AbstractMapping;
+use OCA\User_LDAP\Mapping\UserMapping;
 use OCA\User_LDAP\User\Manager;
 use OCA\User_LDAP\User\OfflineUser;
 use OCP\IConfig;
@@ -74,9 +75,7 @@ class Access extends LDAPUtility {
 	protected $pagedSearchedSuccessful;
 
 	/**
-	 * protected $cookies = [];
-	 *
-	 * @var AbstractMapping $userMapper
+	 * @var UserMapping $userMapper
 	 */
 	protected $userMapper;
 
@@ -123,12 +122,9 @@ class Access extends LDAPUtility {
 	}
 
 	/**
-	 * returns the User Mapper
-	 *
-	 * @return AbstractMapping
 	 * @throws \Exception
 	 */
-	public function getUserMapper() {
+	public function getUserMapper(): UserMapping {
 		if (is_null($this->userMapper)) {
 			throw new \Exception('UserMapper was not assigned to this Access instance.');
 		}
diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php
index 6bb44b3e6aed4fc82e4ddb2cd03430b8840ea39d..8470c4793bb6c060463c0aeb841fdd811072d68c 100644
--- a/apps/user_ldap/lib/Jobs/CleanUp.php
+++ b/apps/user_ldap/lib/Jobs/CleanUp.php
@@ -30,7 +30,6 @@ namespace OCA\User_LDAP\Jobs;
 
 use OC\BackgroundJob\TimedJob;
 use OCA\User_LDAP\Helper;
-use OCA\User_LDAP\LDAP;
 use OCA\User_LDAP\Mapping\UserMapping;
 use OCA\User_LDAP\User\DeletedUsersIndex;
 use OCA\User_LDAP\User_LDAP;
@@ -68,11 +67,12 @@ class CleanUp extends TimedJob {
 	/** @var DeletedUsersIndex */
 	protected $dui;
 
-	public function __construct(User_Proxy $userBackend) {
+	public function __construct(User_Proxy $userBackend, DeletedUsersIndex $dui) {
 		$minutes = \OC::$server->getConfig()->getSystemValue(
 			'ldapUserCleanupInterval', (string)$this->defaultIntervalMin);
 		$this->setInterval((int)$minutes * 60);
 		$this->userBackend = $userBackend;
+		$this->dui = $dui;
 	}
 
 	/**
@@ -115,9 +115,6 @@ class CleanUp extends TimedJob {
 
 		if (isset($arguments['deletedUsersIndex'])) {
 			$this->dui = $arguments['deletedUsersIndex'];
-		} else {
-			$this->dui = new DeletedUsersIndex(
-				$this->ocConfig, $this->db, $this->mapping);
 		}
 	}
 
diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php
index 053ca8949028fa1dac692d6d9dc78e664dbcc2e2..483c21386eb582d9bcdb42881aec35483d54ca3e 100644
--- a/apps/user_ldap/lib/Jobs/Sync.php
+++ b/apps/user_ldap/lib/Jobs/Sync.php
@@ -29,16 +29,13 @@ use OC\ServerNotAvailableException;
 use OCA\User_LDAP\AccessFactory;
 use OCA\User_LDAP\Configuration;
 use OCA\User_LDAP\ConnectionFactory;
-use OCA\User_LDAP\FilesystemHelper;
 use OCA\User_LDAP\Helper;
 use OCA\User_LDAP\LDAP;
-use OCA\User_LDAP\LogWrapper;
 use OCA\User_LDAP\Mapping\UserMapping;
 use OCA\User_LDAP\User\Manager;
 use OCP\IAvatarManager;
 use OCP\IConfig;
 use OCP\IDBConnection;
-use OCP\Image;
 use OCP\IUserManager;
 use OCP\Notification\IManager;
 
@@ -68,7 +65,8 @@ class Sync extends TimedJob {
 	/** @var AccessFactory */
 	protected $accessFactory;
 
-	public function __construct() {
+	public function __construct(Manager  $userManager) {
+		$this->userManager = $userManager;
 		$this->setInterval(
 			\OC::$server->getConfig()->getAppValue(
 				'user_ldap',
@@ -345,17 +343,6 @@ class Sync extends TimedJob {
 
 		if (isset($argument['userManager'])) {
 			$this->userManager = $argument['userManager'];
-		} else {
-			$this->userManager = new Manager(
-				$this->config,
-				new FilesystemHelper(),
-				new LogWrapper(),
-				$this->avatarManager,
-				new Image(),
-				$this->dbc,
-				$this->ncUserManager,
-				$this->notificationManager
-			);
 		}
 
 		if (isset($argument['mapper'])) {
@@ -363,7 +350,7 @@ class Sync extends TimedJob {
 		} else {
 			$this->mapper = new UserMapping($this->dbc);
 		}
-		
+
 		if (isset($argument['connectionFactory'])) {
 			$this->connectionFactory = $argument['connectionFactory'];
 		} else {
diff --git a/apps/user_ldap/lib/LDAPProviderFactory.php b/apps/user_ldap/lib/LDAPProviderFactory.php
index d0d9750dce6fa89fdc9689c9438554c07af355cd..5dd33c33316d2c265c16527bc284565fbf0d9d2e 100644
--- a/apps/user_ldap/lib/LDAPProviderFactory.php
+++ b/apps/user_ldap/lib/LDAPProviderFactory.php
@@ -26,38 +26,19 @@
 
 namespace OCA\User_LDAP;
 
-use OCA\User_LDAP\Mapping\UserMapping;
-use OCA\User_LDAP\User\DeletedUsersIndex;
 use OCP\IServerContainer;
+use OCP\LDAP\ILDAPProvider;
 use OCP\LDAP\ILDAPProviderFactory;
 
 class LDAPProviderFactory implements ILDAPProviderFactory {
-	/**
-	 * Server container
-	 *
-	 * @var IServerContainer
-	 */
+	/** * @var IServerContainer */
 	private $serverContainer;
-	
-	/**
-	 * Constructor for the LDAP provider factory
-	 *
-	 * @param IServerContainer $serverContainer server container
-	 */
+
 	public function __construct(IServerContainer $serverContainer) {
 		$this->serverContainer = $serverContainer;
 	}
-	
-	/**
-	 * creates and returns an instance of the ILDAPProvider
-	 *
-	 * @return OCP\LDAP\ILDAPProvider
-	 */
-	public function getLDAPProvider() {
-		$dbConnection = $this->serverContainer->getDatabaseConnection();
-		$userMapping = new UserMapping($dbConnection);
-		return new LDAPProvider($this->serverContainer, new Helper($this->serverContainer->getConfig()),
-					new DeletedUsersIndex($this->serverContainer->getConfig(),
-					$dbConnection, $userMapping));
+
+	public function getLDAPProvider(): ILDAPProvider {
+		return $this->serverContainer->get(LDAPProvider::class);
 	}
 }
diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php
index 7bcbd19ff1c14e38e5fc29911e1d4bffc45ceef9..46cb2e6b9a06c5d636592bc8647da1948e56fc00 100644
--- a/apps/user_ldap/lib/Proxy.php
+++ b/apps/user_ldap/lib/Proxy.php
@@ -36,6 +36,7 @@ namespace OCA\User_LDAP;
 use OCA\User_LDAP\Mapping\GroupMapping;
 use OCA\User_LDAP\Mapping\UserMapping;
 use OCA\User_LDAP\User\Manager;
+use OCP\Share\IManager;
 
 abstract class Proxy {
 	private static $accesses = [];
@@ -67,7 +68,7 @@ abstract class Proxy {
 		static $avatarM;
 		static $userMap;
 		static $groupMap;
-		static $db;
+		static $shareManager;
 		static $coreUserManager;
 		static $coreNotificationManager;
 		if ($fs === null) {
@@ -80,10 +81,11 @@ abstract class Proxy {
 			$groupMap = new GroupMapping($db);
 			$coreUserManager = \OC::$server->getUserManager();
 			$coreNotificationManager = \OC::$server->getNotificationManager();
+			$shareManager = \OC::$server->get(IManager::class);
 		}
 		$userManager =
-			new Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $db,
-				$coreUserManager, $coreNotificationManager);
+			new Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(),
+				$coreUserManager, $coreNotificationManager, $shareManager);
 		$connector = new Connection($this->ldap, $configPrefix);
 		$access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig), $ocConfig, $coreUserManager);
 		$access->setUserMapper($userMap);
diff --git a/apps/user_ldap/lib/User/DeletedUsersIndex.php b/apps/user_ldap/lib/User/DeletedUsersIndex.php
index 5f1a9b6716825de31e819b299907d18e082fd9bb..2591f371fa18a08a595e3b8b6d3c34f6c1eef7ef 100644
--- a/apps/user_ldap/lib/User/DeletedUsersIndex.php
+++ b/apps/user_ldap/lib/User/DeletedUsersIndex.php
@@ -26,6 +26,7 @@
 namespace OCA\User_LDAP\User;
 
 use OCA\User_LDAP\Mapping\UserMapping;
+use OCP\Share\IManager;
 
 /**
  * Class DeletedUsersIndex
@@ -37,11 +38,6 @@ class DeletedUsersIndex {
 	 */
 	protected $config;
 
-	/**
-	 * @var \OCP\IDBConnection $db
-	 */
-	protected $db;
-
 	/**
 	 * @var \OCA\User_LDAP\Mapping\UserMapping $mapping
 	 */
@@ -51,16 +47,13 @@ class DeletedUsersIndex {
 	 * @var array $deletedUsers
 	 */
 	protected $deletedUsers;
+	/** @var IManager */
+	private $shareManager;
 
-	/**
-	 * @param \OCP\IConfig $config
-	 * @param \OCP\IDBConnection $db
-	 * @param \OCA\User_LDAP\Mapping\UserMapping $mapping
-	 */
-	public function __construct(\OCP\IConfig $config, \OCP\IDBConnection $db, UserMapping $mapping) {
+	public function __construct(\OCP\IConfig $config, UserMapping $mapping, IManager $shareManager) {
 		$this->config = $config;
-		$this->db = $db;
 		$this->mapping = $mapping;
+		$this->shareManager = $shareManager;
 	}
 
 	/**
@@ -73,7 +66,7 @@ class DeletedUsersIndex {
 
 		$userObjects = [];
 		foreach ($deletedUsers as $user) {
-			$userObjects[] = new OfflineUser($user, $this->config, $this->db, $this->mapping);
+			$userObjects[] = new OfflineUser($user, $this->config, $this->mapping, $this->shareManager);
 		}
 		$this->deletedUsers = $userObjects;
 
diff --git a/apps/user_ldap/lib/User/Manager.php b/apps/user_ldap/lib/User/Manager.php
index a3d7fd9c2b4692aaf676448da075126b70cf9170..a18c62364dbd09ec0a0469dac8b4cba50df13d5b 100644
--- a/apps/user_ldap/lib/User/Manager.php
+++ b/apps/user_ldap/lib/User/Manager.php
@@ -39,6 +39,7 @@ use OCP\IDBConnection;
 use OCP\Image;
 use OCP\IUserManager;
 use OCP\Notification\IManager as INotificationManager;
+use OCP\Share\IManager;
 
 /**
  * Manager
@@ -82,32 +83,29 @@ class Manager {
 	 * @var CappedMemoryCache $usersByUid
 	 */
 	protected $usersByUid;
+	/** @var IManager */
+	private $shareManager;
 
-	/**
-	 * @param IConfig $ocConfig
-	 * @param \OCA\User_LDAP\FilesystemHelper $ocFilesystem object that
-	 * gives access to necessary functions from the OC filesystem
-	 * @param  \OCA\User_LDAP\LogWrapper $ocLog
-	 * @param IAvatarManager $avatarManager
-	 * @param Image $image an empty image instance
-	 * @param IDBConnection $db
-	 * @throws \Exception when the methods mentioned above do not exist
-	 */
-	public function __construct(IConfig $ocConfig,
-								FilesystemHelper $ocFilesystem, LogWrapper $ocLog,
-								IAvatarManager $avatarManager, Image $image,
-								IDBConnection $db, IUserManager $userManager,
-								INotificationManager $notificationManager) {
+	public function __construct(
+		IConfig $ocConfig,
+		FilesystemHelper $ocFilesystem,
+		LogWrapper $ocLog,
+		IAvatarManager $avatarManager,
+		Image $image,
+		IUserManager $userManager,
+		INotificationManager $notificationManager,
+		IManager $shareManager
+	) {
 		$this->ocConfig = $ocConfig;
 		$this->ocFilesystem = $ocFilesystem;
 		$this->ocLog = $ocLog;
 		$this->avatarManager = $avatarManager;
 		$this->image = $image;
-		$this->db = $db;
 		$this->userManager = $userManager;
 		$this->notificationManager = $notificationManager;
 		$this->usersByDN = new CappedMemoryCache();
 		$this->usersByUid = new CappedMemoryCache();
+		$this->shareManager = $shareManager;
 	}
 
 	/**
@@ -229,8 +227,9 @@ class Manager {
 		return new OfflineUser(
 			$id,
 			$this->ocConfig,
-			$this->db,
-			$this->access->getUserMapper());
+			$this->access->getUserMapper(),
+			$this->shareManager
+		);
 	}
 
 	/**
diff --git a/apps/user_ldap/lib/User/OfflineUser.php b/apps/user_ldap/lib/User/OfflineUser.php
index 1abef86185220e802ad554ec2440e65c2580c76b..e55df4e8c1cb87dd719af1842d593bfa5cdd4246 100644
--- a/apps/user_ldap/lib/User/OfflineUser.php
+++ b/apps/user_ldap/lib/User/OfflineUser.php
@@ -28,6 +28,8 @@ namespace OCA\User_LDAP\User;
 use OCA\User_LDAP\Mapping\UserMapping;
 use OCP\IConfig;
 use OCP\IDBConnection;
+use OCP\Share\IManager;
+use OCP\Share\IShare;
 
 class OfflineUser {
 	/**
@@ -78,19 +80,19 @@ class OfflineUser {
 	 * @var \OCA\User_LDAP\Mapping\UserMapping
 	 */
 	protected $mapping;
+	/** @var IManager */
+	private $shareManager;
 
-	/**
-	 * @param string $ocName
-	 * @param IConfig $config
-	 * @param IDBConnection $db
-	 * @param \OCA\User_LDAP\Mapping\UserMapping $mapping
-	 */
-	public function __construct($ocName, IConfig $config, IDBConnection $db, UserMapping $mapping) {
+	public function __construct(
+		$ocName,
+		IConfig $config,
+		UserMapping $mapping,
+		IManager $shareManager
+	) {
 		$this->ocName = $ocName;
 		$this->config = $config;
-		$this->db = $db;
 		$this->mapping = $mapping;
-		$this->fetchDetails();
+		$this->shareManager = $shareManager;
 	}
 
 	/**
@@ -132,6 +134,9 @@ class OfflineUser {
 	 * @return string
 	 */
 	public function getUID() {
+		if (!isset($this->uid)) {
+			$this->fetchDetails();
+		}
 		return $this->uid;
 	}
 
@@ -140,6 +145,9 @@ class OfflineUser {
 	 * @return string
 	 */
 	public function getDN() {
+		if (!isset($this->dn)) {
+			$this->fetchDetails();
+		}
 		return $this->dn;
 	}
 
@@ -148,6 +156,9 @@ class OfflineUser {
 	 * @return string
 	 */
 	public function getDisplayName() {
+		if (!isset($this->displayName)) {
+			$this->fetchDetails();
+		}
 		return $this->displayName;
 	}
 
@@ -156,6 +167,9 @@ class OfflineUser {
 	 * @return string
 	 */
 	public function getEmail() {
+		if (!isset($this->email)) {
+			$this->fetchDetails();
+		}
 		return $this->email;
 	}
 
@@ -164,6 +178,9 @@ class OfflineUser {
 	 * @return string
 	 */
 	public function getHomePath() {
+		if (!isset($this->homePath)) {
+			$this->fetchDetails();
+		}
 		return $this->homePath;
 	}
 
@@ -172,6 +189,9 @@ class OfflineUser {
 	 * @return int
 	 */
 	public function getLastLogin() {
+		if (!isset($this->lastLogin)) {
+			$this->fetchDetails();
+		}
 		return (int)$this->lastLogin;
 	}
 
@@ -180,6 +200,9 @@ class OfflineUser {
 	 * @return int
 	 */
 	public function getDetectedOn() {
+		if (!isset($this->foundDeleted)) {
+			$this->fetchDetails();
+		}
 		return (int)$this->foundDeleted;
 	}
 
@@ -188,6 +211,9 @@ class OfflineUser {
 	 * @return bool
 	 */
 	public function getHasActiveShares() {
+		if (!isset($this->hasActiveShares)) {
+			$this->fetchDetails();
+		}
 		return $this->hasActiveShares;
 	}
 
@@ -213,34 +239,31 @@ class OfflineUser {
 		$this->determineShares();
 	}
 
-
 	/**
 	 * finds out whether the user has active shares. The result is stored in
 	 * $this->hasActiveShares
 	 */
 	protected function determineShares() {
-		$query = $this->db->prepare('
-			SELECT COUNT(`uid_owner`)
-			FROM `*PREFIX*share`
-			WHERE `uid_owner` = ?
-		', 1);
-		$query->execute([$this->ocName]);
-		$sResult = $query->fetchColumn(0);
-		if ((int)$sResult === 1) {
-			$this->hasActiveShares = true;
-			return;
-		}
+		$shareInterface = new \ReflectionClass(IShare::class);
+		$shareConstants = $shareInterface->getConstants();
 
-		$query = $this->db->prepare('
-			SELECT COUNT(`owner`)
-			FROM `*PREFIX*share_external`
-			WHERE `owner` = ?
-		', 1);
-		$query->execute([$this->ocName]);
-		$sResult = $query->fetchColumn(0);
-		if ((int)$sResult === 1) {
-			$this->hasActiveShares = true;
-			return;
+		foreach ($shareConstants as $constantName => $constantValue) {
+			if (strpos($constantName, 'TYPE_') !== 0
+				|| $constantValue === IShare::TYPE_USERGROUP
+			) {
+				continue;
+			}
+			$shares = $this->shareManager->getSharesBy(
+				$this->ocName,
+				$constantValue,
+				null,
+				false,
+				1
+			);
+			if (!empty($shares)) {
+				$this->hasActiveShares = true;
+				return;
+			}
 		}
 
 		$this->hasActiveShares = false;
diff --git a/apps/user_ldap/tests/AccessTest.php b/apps/user_ldap/tests/AccessTest.php
index d01cd80b3a00292cd1d40f3918a66c52f9708a46..4f89fc51568ef30d8a5b49a71a2c84c706b83ea0 100644
--- a/apps/user_ldap/tests/AccessTest.php
+++ b/apps/user_ldap/tests/AccessTest.php
@@ -48,10 +48,10 @@ use OCA\User_LDAP\User\OfflineUser;
 use OCA\User_LDAP\User\User;
 use OCP\IAvatarManager;
 use OCP\IConfig;
-use OCP\IDBConnection;
 use OCP\Image;
 use OCP\IUserManager;
 use OCP\Notification\IManager as INotificationManager;
+use OCP\Share\IManager;
 use Test\TestCase;
 
 /**
@@ -64,6 +64,8 @@ use Test\TestCase;
 class AccessTest extends TestCase {
 	/** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
 	protected $userMapper;
+	/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
+	protected $shareManager;
 	/** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
 	private $connection;
 	/** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
@@ -87,6 +89,7 @@ class AccessTest extends TestCase {
 		$this->config = $this->createMock(IConfig::class);
 		$this->userMapper = $this->createMock(UserMapping::class);
 		$this->ncUserManager = $this->createMock(IUserManager::class);
+		$this->shareManager = $this->createMock(IManager::class);
 
 		$this->access = new Access(
 			$this->connection,
@@ -111,9 +114,9 @@ class AccessTest extends TestCase {
 				$this->createMock(LogWrapper::class),
 				$this->createMock(IAvatarManager::class),
 				$this->createMock(Image::class),
-				$this->createMock(IDBConnection::class),
 				$this->createMock(IUserManager::class),
-				$this->createMock(INotificationManager::class)])
+				$this->createMock(INotificationManager::class),
+				$this->shareManager])
 			->getMock();
 		$helper = new Helper(\OC::$server->getConfig());
 
diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
index b94016e352daf02181e4b3ab4c1c059805ab0b42..095c61544b0fcecc3584f5a323de699ee5d030be 100644
--- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
+++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php
@@ -37,6 +37,7 @@ use OCA\User_LDAP\LDAP;
 use OCA\User_LDAP\LogWrapper;
 use OCA\User_LDAP\User\Manager;
 use OCA\User_LDAP\UserPluginManager;
+use OCP\Share\IManager;
 
 abstract class AbstractIntegrationTest {
 	/** @var  LDAP */
@@ -126,9 +127,9 @@ abstract class AbstractIntegrationTest {
 			new LogWrapper(),
 			\OC::$server->getAvatarManager(),
 			new \OCP\Image(),
-			\OC::$server->getDatabaseConnection(),
 			\OC::$server->getUserManager(),
-			\OC::$server->getNotificationManager()
+			\OC::$server->getNotificationManager(),
+			\OC::$server->get(IManager::class)
 		);
 	}
 
diff --git a/apps/user_ldap/tests/Jobs/CleanUpTest.php b/apps/user_ldap/tests/Jobs/CleanUpTest.php
index 533bb041f754f7173a996b598173106a951d233f..2e66d1147551b993a90e1b39cf355ea1820642bf 100644
--- a/apps/user_ldap/tests/Jobs/CleanUpTest.php
+++ b/apps/user_ldap/tests/Jobs/CleanUpTest.php
@@ -44,7 +44,7 @@ class CleanUpTest extends TestCase {
 
 	public function setUp(): void {
 		$this->createMocks();
-		$this->bgJob = new CleanUp($this->mocks['userBackend']);
+		$this->bgJob = new CleanUp($this->mocks['userBackend'], $this->mocks['deletedUsersIndex']);
 		$this->bgJob->setArguments($this->mocks);
 	}
 
diff --git a/apps/user_ldap/tests/Jobs/SyncTest.php b/apps/user_ldap/tests/Jobs/SyncTest.php
index a6a7049373918449dbdcd8653320dba1b2ba0c26..6ee186d0da42d88c1d5ea81934e9826a574a06a1 100644
--- a/apps/user_ldap/tests/Jobs/SyncTest.php
+++ b/apps/user_ldap/tests/Jobs/SyncTest.php
@@ -89,7 +89,6 @@ class SyncTest extends TestCase {
 		$this->arguments = [
 			'helper' => $this->helper,
 			'ldapWrapper' => $this->ldapWrapper,
-			'userManager' => $this->userManager,
 			'mapper' => $this->mapper,
 			'config' => $this->config,
 			'avatarManager' => $this->avatarManager,
@@ -100,7 +99,7 @@ class SyncTest extends TestCase {
 			'accessFactory' => $this->accessFactory,
 		];
 
-		$this->sync = new Sync();
+		$this->sync = new Sync($this->userManager);
 	}
 
 	public function intervalDataProvider() {
diff --git a/apps/user_ldap/tests/User/DeletedUsersIndexTest.php b/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
index 77fdd31c173bb8ff831d0af5336eb5eabde43945..8435078051c0600932f31e9ef36d72498344faeb 100644
--- a/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
+++ b/apps/user_ldap/tests/User/DeletedUsersIndexTest.php
@@ -30,6 +30,7 @@ use OCA\User_LDAP\Mapping\UserMapping;
 use OCA\User_LDAP\User\DeletedUsersIndex;
 use OCP\IConfig;
 use OCP\IDBConnection;
+use OCP\Share\IManager;
 
 /**
  * Class DeletedUsersIndexTest
@@ -50,6 +51,8 @@ class DeletedUsersIndexTest extends \Test\TestCase {
 
 	/** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
 	protected $mapping;
+	/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
+	protected $shareManager;
 
 	protected function setUp(): void {
 		parent::setUp();
@@ -62,8 +65,9 @@ class DeletedUsersIndexTest extends \Test\TestCase {
 		$this->config->deleteAppFromAllUsers('user_ldap');
 
 		$this->mapping = $this->createMock(UserMapping::class);
+		$this->shareManager = $this->createMock(IManager::class);
 
-		$this->dui = new DeletedUsersIndex($this->config, $this->db, $this->mapping);
+		$this->dui = new DeletedUsersIndex($this->config, $this->mapping, $this->shareManager);
 	}
 
 	protected function tearDown(): void {
diff --git a/apps/user_ldap/tests/User/ManagerTest.php b/apps/user_ldap/tests/User/ManagerTest.php
index 18499da9a869974a4af160f22adf1bb5242bc48d..9f6d43a9a24cccd5c20c94cc6cac20fb9b437252 100644
--- a/apps/user_ldap/tests/User/ManagerTest.php
+++ b/apps/user_ldap/tests/User/ManagerTest.php
@@ -42,6 +42,7 @@ use OCP\IDBConnection;
 use OCP\Image;
 use OCP\IUserManager;
 use OCP\Notification\IManager as INotificationManager;
+use OCP\Share\IManager;
 
 /**
  * Class Test_User_Manager
@@ -86,6 +87,8 @@ class ManagerTest extends \Test\TestCase {
 
 	/** @var Manager */
 	protected $manager;
+	/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
+	protected $shareManager;
 
 	protected function setUp(): void {
 		parent::setUp();
@@ -96,11 +99,11 @@ class ManagerTest extends \Test\TestCase {
 		$this->log = $this->createMock(LogWrapper::class);
 		$this->avatarManager = $this->createMock(IAvatarManager::class);
 		$this->image = $this->createMock(Image::class);
-		$this->dbc = $this->createMock(IDBConnection::class);
 		$this->ncUserManager = $this->createMock(IUserManager::class);
 		$this->notificationManager = $this->createMock(INotificationManager::class);
-
 		$this->ldapWrapper = $this->createMock(ILDAPWrapper::class);
+		$this->shareManager = $this->createMock(IManager::class);
+
 		$this->connection = new Connection($this->ldapWrapper, '', null);
 
 		$this->access->expects($this->any())
@@ -114,9 +117,9 @@ class ManagerTest extends \Test\TestCase {
 			$this->log,
 			$this->avatarManager,
 			$this->image,
-			$this->dbc,
 			$this->ncUserManager,
-			$this->notificationManager
+			$this->notificationManager,
+			$this->shareManager
 		);
 
 		$this->manager->setLdapAccess($this->access);
diff --git a/apps/user_ldap/tests/User/OfflineUserTest.php b/apps/user_ldap/tests/User/OfflineUserTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5736b2664d948843421cb079eb9449b39c11a579
--- /dev/null
+++ b/apps/user_ldap/tests/User/OfflineUserTest.php
@@ -0,0 +1,89 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Tests\User;
+
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\User\OfflineUser;
+use OCP\IConfig;
+use OCP\Share\IManager;
+use OCP\Share\IShare;
+use Test\TestCase;
+
+class OfflineUserTest extends TestCase {
+
+	/** @var OfflineUser */
+	protected $offlineUser;
+	/** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
+	protected $mapping;
+	/** @var string */
+	protected $uid;
+	/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
+	protected $config;
+	/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
+	protected $shareManager;
+
+	public function setUp(): void {
+		$this->uid = 'deborah';
+		$this->config = $this->createMock(IConfig::class);
+		$this->mapping = $this->createMock(UserMapping::class);
+		$this->shareManager = $this->createMock(IManager::class);
+
+		$this->offlineUser = new OfflineUser(
+			$this->uid,
+			$this->config,
+			$this->mapping,
+			$this->shareManager
+		);
+	}
+
+	public function shareOwnerProvider(): array {
+		return [
+			[[], false],
+			[[IShare::TYPE_USER], true],
+			[[IShare::TYPE_GROUP, IShare::TYPE_LINK], true],
+			[[IShare::TYPE_EMAIL, IShare::TYPE_REMOTE, IShare::TYPE_CIRCLE], true],
+			[[IShare::TYPE_GUEST, IShare::TYPE_REMOTE_GROUP, IShare::TYPE_ROOM], true],
+		];
+	}
+
+	/**
+	 * @dataProvider shareOwnerProvider
+	 */
+	public function testHasActiveShares(array $existingShareTypes, bool $expected) {
+		$shareMock = $this->createMock(IShare::class);
+
+		$this->shareManager->expects($this->atLeastOnce())
+			->method('getSharesBy')
+			->willReturnCallback(function (string $uid, int $shareType) use ($existingShareTypes, $shareMock) {
+				if (in_array($shareType, $existingShareTypes)) {
+					return [$shareMock];
+				}
+				return [];
+			});
+
+		$this->assertSame($expected, $this->offlineUser->getHasActiveShares());
+	}
+}
diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php
index ca9ff841ec0e8148b91870d5a4accced20a6e7b3..6840a4c6daca34c29f22d684e7efcb37f5a55289 100644
--- a/apps/user_ldap/tests/User_LDAPTest.php
+++ b/apps/user_ldap/tests/User_LDAPTest.php
@@ -1410,7 +1410,7 @@ class User_LDAPTest extends TestCase {
 			->with($this->isInstanceOf(AbstractMapping::class), $this->anything(), $uid, $uuid, true);
 		$this->access->expects($this->any())
 			->method('getUserMapper')
-			->willReturn($this->createMock(AbstractMapping::class));
+			->willReturn($this->createMock(UserMapping::class));
 
 		$this->assertEquals($this->backend->createUser($uid, $pwd),true);
 	}