diff --git a/apps/dav/lib/CardDAV/Converter.php b/apps/dav/lib/CardDAV/Converter.php
index 59e5401d058a8ff3888972320b6abd94a2b4d27b..95ac43aba3649e8b4eb480c94fe8027c2d105fa7 100644
--- a/apps/dav/lib/CardDAV/Converter.php
+++ b/apps/dav/lib/CardDAV/Converter.php
@@ -71,8 +71,8 @@ class Converter {
 
 		foreach ($userData as $property => $value) {
 			$shareWithTrustedServers =
-				$value['scope'] === AccountManager::VISIBILITY_CONTACTS_ONLY ||
-				$value['scope'] === AccountManager::VISIBILITY_PUBLIC;
+				$value['scope'] === AccountManager::SCOPE_FEDERATED ||
+				$value['scope'] === AccountManager::SCOPE_PUBLISHED;
 
 			$emptyValue = !isset($value['value']) || $value['value'] === '';
 
diff --git a/apps/dav/tests/unit/CardDAV/ConverterTest.php b/apps/dav/tests/unit/CardDAV/ConverterTest.php
index aef5cf8ef1c429ec168a10c9aebe41852f2c228e..43344451437c1caf0d6fc77feadc22de9a135a31 100644
--- a/apps/dav/tests/unit/CardDAV/ConverterTest.php
+++ b/apps/dav/tests/unit/CardDAV/ConverterTest.php
@@ -53,36 +53,36 @@ class ConverterTest extends TestCase {
 				IAccountManager::PROPERTY_DISPLAYNAME =>
 					[
 						'value' => $user->getDisplayName(),
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+						'scope' => AccountManager::SCOPE_FEDERATED,
 					],
 				IAccountManager::PROPERTY_ADDRESS =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_WEBSITE =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_EMAIL =>
 					[
 						'value' => $user->getEMailAddress(),
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+						'scope' => AccountManager::SCOPE_FEDERATED,
 					],
 				IAccountManager::PROPERTY_AVATAR =>
 					[
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+						'scope' => AccountManager::SCOPE_FEDERATED
 					],
 				IAccountManager::PROPERTY_PHONE =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_TWITTER =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 			]
 		);
diff --git a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
index eb8186807c68bc6e699e2b2d092cba7110ba985d..724670bc986875711650f1fb2093061c59332d1f 100644
--- a/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/SyncServiceTest.php
@@ -136,36 +136,36 @@ class SyncServiceTest extends TestCase {
 				IAccountManager::PROPERTY_DISPLAYNAME =>
 					[
 						'value' => $user->getDisplayName(),
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+						'scope' => AccountManager::SCOPE_FEDERATED,
 					],
 				IAccountManager::PROPERTY_ADDRESS =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_WEBSITE =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_EMAIL =>
 					[
 						'value' => $user->getEMailAddress(),
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+						'scope' => AccountManager::SCOPE_FEDERATED,
 					],
 				IAccountManager::PROPERTY_AVATAR =>
 					[
-						'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+						'scope' => AccountManager::SCOPE_FEDERATED
 					],
 				IAccountManager::PROPERTY_PHONE =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 				IAccountManager::PROPERTY_TWITTER =>
 					[
 						'value' => '',
-						'scope' => AccountManager::VISIBILITY_PRIVATE,
+						'scope' => AccountManager::SCOPE_LOCAL,
 					],
 			]
 			);
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 31f13ee275692fe6c81dbcc582946e4b73156c14..7e83ffaa7dc97ba66bdc516dbd40531359209cd9 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -343,7 +343,7 @@ class ShareController extends AuthPublicShareController {
 			$ownerAccount = $this->accountManager->getAccount($owner);
 
 			$ownerName = $ownerAccount->getProperty(IAccountManager::PROPERTY_DISPLAYNAME);
-			if ($ownerName->getScope() === IAccountManager::VISIBILITY_PUBLIC) {
+			if ($ownerName->getScope() === IAccountManager::SCOPE_PUBLISHED) {
 				$shareTmpl['owner'] = $owner->getUID();
 				$shareTmpl['shareOwner'] = $owner->getDisplayName();
 			}
diff --git a/apps/files_sharing/tests/Controller/ShareControllerTest.php b/apps/files_sharing/tests/Controller/ShareControllerTest.php
index 270f38a1148993f4d3581ad6928babc002f0a4bf..e00d6bc8c662e59f0a060464c2c4a4d606d47af9 100644
--- a/apps/files_sharing/tests/Controller/ShareControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareControllerTest.php
@@ -234,7 +234,7 @@ class ShareControllerTest extends \Test\TestCase {
 
 		$accountName = $this->createMock(IAccountProperty::class);
 		$accountName->method('getScope')
-			->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+			->willReturn(IAccountManager::SCOPE_PUBLISHED);
 		$account = $this->createMock(IAccount::class);
 		$account->method('getProperty')
 			->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -381,7 +381,7 @@ class ShareControllerTest extends \Test\TestCase {
 
 		$accountName = $this->createMock(IAccountProperty::class);
 		$accountName->method('getScope')
-			->willReturn(IAccountManager::VISIBILITY_PRIVATE);
+			->willReturn(IAccountManager::SCOPE_LOCAL);
 		$account = $this->createMock(IAccount::class);
 		$account->method('getProperty')
 			->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -528,7 +528,7 @@ class ShareControllerTest extends \Test\TestCase {
 
 		$accountName = $this->createMock(IAccountProperty::class);
 		$accountName->method('getScope')
-			->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+			->willReturn(IAccountManager::SCOPE_PUBLISHED);
 		$account = $this->createMock(IAccount::class);
 		$account->method('getProperty')
 			->with(IAccountManager::PROPERTY_DISPLAYNAME)
@@ -688,7 +688,7 @@ class ShareControllerTest extends \Test\TestCase {
 
 		$accountName = $this->createMock(IAccountProperty::class);
 		$accountName->method('getScope')
-			->willReturn(IAccountManager::VISIBILITY_PUBLIC);
+			->willReturn(IAccountManager::SCOPE_PUBLISHED);
 		$account = $this->createMock(IAccount::class);
 		$account->method('getProperty')
 			->with(IAccountManager::PROPERTY_DISPLAYNAME)
diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
index 889fcfd62779370cac26c045c019344335f79eaa..c462eeedb430aa991f35ebbdb94c761bbdeb7349 100644
--- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
+++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php
@@ -193,7 +193,7 @@ class RetryJob extends Job {
 
 		$publicData = [];
 		foreach ($account->getProperties() as $property) {
-			if ($property->getScope() === IAccountManager::VISIBILITY_PUBLIC) {
+			if ($property->getScope() === IAccountManager::SCOPE_PUBLISHED) {
 				$publicData[$property->getName()] = $property->getValue();
 			}
 		}
diff --git a/apps/settings/js/federationscopemenu.js b/apps/settings/js/federationscopemenu.js
index b94e1686a4e8ba68c58740d69be74b956cd2d6a0..617a8e3d4121e8adb2e2e1eb49f5319933bb4c28 100644
--- a/apps/settings/js/federationscopemenu.js
+++ b/apps/settings/js/federationscopemenu.js
@@ -35,21 +35,21 @@
 					active: false
 				},
 				{
-					name: 'private',
+					name: 'v2-local',
 					displayName: t('settings', 'Local'),
 					tooltip: t('settings', "Don't synchronize to servers"),
 					iconClass: 'icon-password',
 					active: false
 				},
 				{
-					name: 'contacts',
-					displayName: t('settings', 'Trusted'),
+					name: 'v2-federated',
+					displayName: t('settings', 'Federated'),
 					tooltip: t('settings', 'Only synchronize to trusted servers'),
 					iconClass: 'icon-contacts-dark',
 					active: false
 				},
 				{
-					name: 'public',
+					name: 'v2-published',
 					displayName: t('settings', 'Published'),
 					tooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),
 					iconClass: 'icon-link',
diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js
index 759bf85c3e1b827f9538786c426957da437a3561..cf7f4648905fee58ed4858cf26d1e3c978820ba3 100644
--- a/apps/settings/js/federationsettingsview.js
+++ b/apps/settings/js/federationsettingsview.js
@@ -86,8 +86,8 @@
 				}
 
 				if (!self.showFederationScopes) {
-					excludedScopes.push('contacts');
-					excludedScopes.push('public');
+					excludedScopes.push('v2-federated');
+					excludedScopes.push('v2-published');
 				}
 
 				var scopeMenu = new OC.Settings.FederationScopeMenu({
@@ -237,16 +237,16 @@
 			$icon.addClass('hidden');
 
 			switch (scope) {
-				case 'private':
 				case 'v2-private':
+				case 'v2-local':
 					$icon.addClass('icon-password');
 					$icon.removeClass('hidden');
 					break;
-				case 'contacts':
+				case 'v2-federated':
 					$icon.addClass('icon-contacts-dark');
 					$icon.removeClass('hidden');
 					break;
-				case 'public':
+				case 'v2-published':
 					$icon.addClass('icon-link');
 					$icon.removeClass('hidden');
 					break;
diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php
index a853846fadd2ed3ac94af91563baa3fe969483f7..7a0253d2be48191b091c7a10aaaba4ac963947b5 100644
--- a/apps/settings/lib/Settings/Personal/PersonalInfo.php
+++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php
@@ -37,6 +37,7 @@ namespace OCA\Settings\Settings\Personal;
 
 use OC\Accounts\AccountManager;
 use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCP\Accounts\IAccount;
 use OCP\Accounts\IAccountManager;
 use OCP\App\IAppManager;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -96,7 +97,7 @@ class PersonalInfo implements ISettings {
 
 		$uid = \OC_User::getUser();
 		$user = $this->userManager->get($uid);
-		$userData = $this->accountManager->getUser($user);
+		$account = $this->accountManager->getAccount($user);
 
 		// make sure FS is setup before querying storage related stuff...
 		\OC_Util::setupFS($user->getUID());
@@ -110,7 +111,7 @@ class PersonalInfo implements ISettings {
 
 		$languageParameters = $this->getLanguages($user);
 		$localeParameters = $this->getLocales($user);
-		$messageParameters = $this->getMessageParameters($userData);
+		$messageParameters = $this->getMessageParameters($account);
 
 		$parameters = [
 			'total_space' => $totalSpace,
@@ -119,23 +120,23 @@ class PersonalInfo implements ISettings {
 			'quota' => $storageInfo['quota'],
 			'avatarChangeSupported' => $user->canChangeAvatar(),
 			'lookupServerUploadEnabled' => $lookupServerUploadEnabled,
-			'avatarScope' => $userData[IAccountManager::PROPERTY_AVATAR]['scope'],
+			'avatarScope' => $account->getProperty(IAccountManager::PROPERTY_AVATAR)->getScope(),
 			'displayNameChangeSupported' => $user->canChangeDisplayName(),
-			'displayName' => $userData[IAccountManager::PROPERTY_DISPLAYNAME]['value'],
-			'displayNameScope' => $userData[IAccountManager::PROPERTY_DISPLAYNAME]['scope'],
-			'email' => $userData[IAccountManager::PROPERTY_EMAIL]['value'],
-			'emailScope' => $userData[IAccountManager::PROPERTY_EMAIL]['scope'],
-			'emailVerification' => $userData[IAccountManager::PROPERTY_EMAIL]['verified'],
-			'phone' => $userData[IAccountManager::PROPERTY_PHONE]['value'],
-			'phoneScope' => $userData[IAccountManager::PROPERTY_PHONE]['scope'],
-			'address' => $userData[IAccountManager::PROPERTY_ADDRESS]['value'],
-			'addressScope' => $userData[IAccountManager::PROPERTY_ADDRESS]['scope'],
-			'website' => $userData[IAccountManager::PROPERTY_WEBSITE]['value'],
-			'websiteScope' => $userData[IAccountManager::PROPERTY_WEBSITE]['scope'],
-			'websiteVerification' => $userData[IAccountManager::PROPERTY_WEBSITE]['verified'],
-			'twitter' => $userData[IAccountManager::PROPERTY_TWITTER]['value'],
-			'twitterScope' => $userData[IAccountManager::PROPERTY_TWITTER]['scope'],
-			'twitterVerification' => $userData[IAccountManager::PROPERTY_TWITTER]['verified'],
+			'displayName' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getValue(),
+			'displayNameScope' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getScope(),
+			'email' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getValue(),
+			'emailScope' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getScope(),
+			'emailVerification' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getVerified(),
+			'phone' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getValue(),
+			'phoneScope' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getScope(),
+			'address' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getValue(),
+			'addressScope' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getScope(),
+			'website' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getValue(),
+			'websiteScope' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getScope(),
+			'websiteVerification' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getVerified(),
+			'twitter' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getValue(),
+			'twitterScope' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getScope(),
+			'twitterVerification' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getVerified(),
 			'groups' => $this->getGroups($user),
 		] + $messageParameters + $languageParameters + $localeParameters;
 
@@ -263,14 +264,14 @@ class PersonalInfo implements ISettings {
 	}
 
 	/**
-	 * @param array $userData
+	 * @param IAccount $account
 	 * @return array
 	 */
-	private function getMessageParameters(array $userData): array {
+	private function getMessageParameters(IAccount $account): array {
 		$needVerifyMessage = [IAccountManager::PROPERTY_EMAIL, IAccountManager::PROPERTY_WEBSITE, IAccountManager::PROPERTY_TWITTER];
 		$messageParameters = [];
 		foreach ($needVerifyMessage as $property) {
-			switch ($userData[$property]['verified']) {
+			switch ($account->getProperty($property)->getVerified()) {
 				case AccountManager::VERIFIED:
 					$message = $this->l->t('Verifying');
 					break;
diff --git a/apps/settings/tests/Controller/UsersControllerTest.php b/apps/settings/tests/Controller/UsersControllerTest.php
index b14e8d00d60bd2397da67dc16c1fe7fb752bbef9..2daf383410eba05dfb8c179e639604c382154e4b 100644
--- a/apps/settings/tests/Controller/UsersControllerTest.php
+++ b/apps/settings/tests/Controller/UsersControllerTest.php
@@ -208,41 +208,41 @@ class UsersControllerTest extends \Test\TestCase {
 					IAccountManager::PROPERTY_DISPLAYNAME =>
 						[
 							'value' => 'Display name',
-							'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+							'scope' => AccountManager::SCOPE_FEDERATED,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 					IAccountManager::PROPERTY_ADDRESS =>
 						[
 							'value' => '',
-							'scope' => AccountManager::VISIBILITY_PRIVATE,
+							'scope' => AccountManager::SCOPE_LOCAL,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 					IAccountManager::PROPERTY_WEBSITE =>
 						[
 							'value' => '',
-							'scope' => AccountManager::VISIBILITY_PRIVATE,
+							'scope' => AccountManager::SCOPE_LOCAL,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 					IAccountManager::PROPERTY_EMAIL =>
 						[
 							'value' => '',
-							'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY,
+							'scope' => AccountManager::SCOPE_FEDERATED,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 					IAccountManager::PROPERTY_AVATAR =>
 						[
-							'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY
+							'scope' => AccountManager::SCOPE_FEDERATED
 						],
 					IAccountManager::PROPERTY_PHONE =>
 						[
 							'value' => '',
-							'scope' => AccountManager::VISIBILITY_PRIVATE,
+							'scope' => AccountManager::SCOPE_LOCAL,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 					IAccountManager::PROPERTY_TWITTER =>
 						[
 							'value' => '',
-							'scope' => AccountManager::VISIBILITY_PRIVATE,
+							'scope' => AccountManager::SCOPE_LOCAL,
 							'verified' => AccountManager::NOT_VERIFIED,
 						],
 				]);
@@ -255,19 +255,19 @@ class UsersControllerTest extends \Test\TestCase {
 		}
 
 		$result = $controller->setUserSettings(//
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			'displayName',
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			'47658468',
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			$email,
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			'nextcloud.com',
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			'street and city',
-			AccountManager::VISIBILITY_CONTACTS_ONLY,
+			AccountManager::SCOPE_FEDERATED,
 			'@nextclouders',
-			AccountManager::VISIBILITY_CONTACTS_ONLY
+			AccountManager::SCOPE_FEDERATED
 		);
 
 		$this->assertSame($expectedStatus, $result->getStatus());
diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php
index c5a0f21319e89b5b755183de68bbdedebe967168..ff3b04d83955c8e1de711abf5660217a1ce8a597 100644
--- a/lib/private/Accounts/AccountManager.php
+++ b/lib/private/Accounts/AccountManager.php
@@ -421,41 +421,41 @@ class AccountManager implements IAccountManager {
 			self::PROPERTY_DISPLAYNAME =>
 				[
 					'value' => $user->getDisplayName(),
-					'scope' => self::VISIBILITY_CONTACTS_ONLY,
+					'scope' => self::SCOPE_FEDERATED,
 					'verified' => self::NOT_VERIFIED,
 				],
 			self::PROPERTY_ADDRESS =>
 				[
 					'value' => '',
-					'scope' => self::VISIBILITY_PRIVATE,
+					'scope' => self::SCOPE_LOCAL,
 					'verified' => self::NOT_VERIFIED,
 				],
 			self::PROPERTY_WEBSITE =>
 				[
 					'value' => '',
-					'scope' => self::VISIBILITY_PRIVATE,
+					'scope' => self::SCOPE_LOCAL,
 					'verified' => self::NOT_VERIFIED,
 				],
 			self::PROPERTY_EMAIL =>
 				[
 					'value' => $user->getEMailAddress(),
-					'scope' => self::VISIBILITY_CONTACTS_ONLY,
+					'scope' => self::SCOPE_FEDERATED,
 					'verified' => self::NOT_VERIFIED,
 				],
 			self::PROPERTY_AVATAR =>
 				[
-					'scope' => self::VISIBILITY_CONTACTS_ONLY
+					'scope' => self::SCOPE_FEDERATED
 				],
 			self::PROPERTY_PHONE =>
 				[
 					'value' => '',
-					'scope' => self::VISIBILITY_PRIVATE,
+					'scope' => self::SCOPE_LOCAL,
 					'verified' => self::NOT_VERIFIED,
 				],
 			self::PROPERTY_TWITTER =>
 				[
 					'value' => '',
-					'scope' => self::VISIBILITY_PRIVATE,
+					'scope' => self::SCOPE_LOCAL,
 					'verified' => self::NOT_VERIFIED,
 				],
 		];
@@ -464,7 +464,7 @@ class AccountManager implements IAccountManager {
 	private function parseAccountData(IUser $user, $data): Account {
 		$account = new Account($user);
 		foreach ($data as $property => $accountData) {
-			$account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'] ?? self::VISIBILITY_PRIVATE, $accountData['verified'] ?? self::NOT_VERIFIED);
+			$account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'] ?? self::SCOPE_LOCAL, $accountData['verified'] ?? self::NOT_VERIFIED);
 		}
 		return $account;
 	}
diff --git a/lib/private/Accounts/AccountProperty.php b/lib/private/Accounts/AccountProperty.php
index 97f9b1c356f17c39402cf68942cfa740d8942e7c..4c75ad85414a587d70297c1daea5c2ad38deb0a2 100644
--- a/lib/private/Accounts/AccountProperty.php
+++ b/lib/private/Accounts/AccountProperty.php
@@ -26,6 +26,7 @@ declare(strict_types=1);
 
 namespace OC\Accounts;
 
+use OCP\Accounts\IAccountManager;
 use OCP\Accounts\IAccountProperty;
 
 class AccountProperty implements IAccountProperty {
@@ -42,7 +43,7 @@ class AccountProperty implements IAccountProperty {
 	public function __construct(string $name, string $value, string $scope, string $verified) {
 		$this->name = $name;
 		$this->value = $value;
-		$this->scope = $scope;
+		$this->scope = $this->mapScopeToV2($scope);
 		$this->verified = $verified;
 	}
 
@@ -77,7 +78,7 @@ class AccountProperty implements IAccountProperty {
 	 * @return IAccountProperty
 	 */
 	public function setScope(string $scope): IAccountProperty {
-		$this->scope = $scope;
+		$this->scope = $this->mapScopeToV2($scope);
 		return $this;
 	}
 
@@ -127,6 +128,23 @@ class AccountProperty implements IAccountProperty {
 		return $this->scope;
 	}
 
+	private function mapScopeToV2($scope) {
+		if (strpos($scope, 'v2-') === 0) {
+			return $scope;
+		}
+
+		switch ($scope) {
+		case IAccountManager::VISIBILITY_PRIVATE:
+			return IAccountManager::SCOPE_LOCAL;
+		case IAccountManager::VISIBILITY_CONTACTS_ONLY:
+			return IAccountManager::SCOPE_FEDERATED;
+		case IAccountManager::VISIBILITY_PUBLIC:
+			return IAccountManager::SCOPE_PUBLISHED;
+		}
+
+		return IAccountManager::SCOPE_LOCAL;
+	}
+
 	/**
 	 * Get the verification status of a property
 	 *
diff --git a/lib/public/Accounts/IAccountManager.php b/lib/public/Accounts/IAccountManager.php
index 9d720ba9e5061da0b72a74cd41b66b80471fe75a..e88fd32f6741e54568f99236633c67574d35cfab 100644
--- a/lib/public/Accounts/IAccountManager.php
+++ b/lib/public/Accounts/IAccountManager.php
@@ -50,14 +50,14 @@ interface IAccountManager {
 	 *
 	 * @since 21.0.1
 	 */
-	public const SCOPE_LOCAL = 'private';
+	public const SCOPE_LOCAL = 'v2-local';
 
 	/**
 	 * Contact details visible locally, through public link access and on trusted federated servers.
 	 *
 	 * @since 21.0.1
 	 */
-	public const SCOPE_FEDERATED = 'federated';
+	public const SCOPE_FEDERATED = 'v2-federated';
 
 	/**
 	 * Contact details visible locally, through public link access, on trusted federated servers
@@ -65,7 +65,7 @@ interface IAccountManager {
 	 *
 	 * @since 21.0.1
 	 */
-	public const SCOPE_PUBLISHED = 'public';
+	public const SCOPE_PUBLISHED = 'v2-published';
 
 	/**
 	 * Contact details only visible locally
diff --git a/tests/lib/Accounts/AccountManagerTest.php b/tests/lib/Accounts/AccountManagerTest.php
index fcd1a78add71ac29579967b35664cff4d974c980..62da1cbc1daae9232886386bbd3a687a7f6474cf 100644
--- a/tests/lib/Accounts/AccountManagerTest.php
+++ b/tests/lib/Accounts/AccountManagerTest.php
@@ -278,26 +278,26 @@ class AccountManagerTest extends TestCase {
 			IAccountManager::PROPERTY_TWITTER =>
 				[
 					'value' => '@twitterhandle',
-					'scope' => IAccountManager::VISIBILITY_PRIVATE,
+					'scope' => IAccountManager::SCOPE_LOCAL,
 					'verified' => IAccountManager::NOT_VERIFIED,
 				],
 			IAccountManager::PROPERTY_EMAIL =>
 				[
 					'value' => 'test@example.com',
-					'scope' => IAccountManager::VISIBILITY_PUBLIC,
+					'scope' => IAccountManager::SCOPE_PUBLISHED,
 					'verified' => IAccountManager::VERIFICATION_IN_PROGRESS,
 				],
 			IAccountManager::PROPERTY_WEBSITE =>
 				[
 					'value' => 'https://example.com',
-					'scope' => IAccountManager::VISIBILITY_CONTACTS_ONLY,
+					'scope' => IAccountManager::SCOPE_FEDERATED,
 					'verified' => IAccountManager::VERIFIED,
 				],
 		];
 		$expected = new Account($user);
-		$expected->setProperty(IAccountManager::PROPERTY_TWITTER, '@twitterhandle', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::NOT_VERIFIED);
-		$expected->setProperty(IAccountManager::PROPERTY_EMAIL, 'test@example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFICATION_IN_PROGRESS);
-		$expected->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_CONTACTS_ONLY, IAccountManager::VERIFIED);
+		$expected->setProperty(IAccountManager::PROPERTY_TWITTER, '@twitterhandle', IAccountManager::SCOPE_LOCAL, IAccountManager::NOT_VERIFIED);
+		$expected->setProperty(IAccountManager::PROPERTY_EMAIL, 'test@example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFICATION_IN_PROGRESS);
+		$expected->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_FEDERATED, IAccountManager::VERIFIED);
 
 		$accountManager->expects($this->once())
 			->method('getUser')
diff --git a/tests/lib/Accounts/AccountPropertyTest.php b/tests/lib/Accounts/AccountPropertyTest.php
index afd807a44b4995fc98772bdf744d0ebaa912e94b..f99abc21f833a483ddd5bbcd2dde5640fcd4fdca 100644
--- a/tests/lib/Accounts/AccountPropertyTest.php
+++ b/tests/lib/Accounts/AccountPropertyTest.php
@@ -37,12 +37,12 @@ class AccountPropertyTest extends TestCase {
 		$accountProperty = new AccountProperty(
 			IAccountManager::PROPERTY_WEBSITE,
 			'https://example.com',
-			IAccountManager::VISIBILITY_PUBLIC,
+			IAccountManager::SCOPE_PUBLISHED,
 			IAccountManager::VERIFIED
 		);
 		$this->assertEquals(IAccountManager::PROPERTY_WEBSITE, $accountProperty->getName());
 		$this->assertEquals('https://example.com', $accountProperty->getValue());
-		$this->assertEquals(IAccountManager::VISIBILITY_PUBLIC, $accountProperty->getScope());
+		$this->assertEquals(IAccountManager::SCOPE_PUBLISHED, $accountProperty->getScope());
 		$this->assertEquals(IAccountManager::VERIFIED, $accountProperty->getVerified());
 	}
 
@@ -50,7 +50,7 @@ class AccountPropertyTest extends TestCase {
 		$accountProperty = new AccountProperty(
 			IAccountManager::PROPERTY_WEBSITE,
 			'https://example.com',
-			IAccountManager::VISIBILITY_PUBLIC,
+			IAccountManager::SCOPE_PUBLISHED,
 			IAccountManager::VERIFIED
 		);
 		$actualReturn = $accountProperty->setValue('https://example.org');
@@ -62,19 +62,48 @@ class AccountPropertyTest extends TestCase {
 		$accountProperty = new AccountProperty(
 			IAccountManager::PROPERTY_WEBSITE,
 			'https://example.com',
-			IAccountManager::VISIBILITY_PUBLIC,
+			IAccountManager::SCOPE_PUBLISHED,
 			IAccountManager::VERIFIED
 		);
-		$actualReturn = $accountProperty->setScope(IAccountManager::VISIBILITY_PRIVATE);
-		$this->assertEquals(IAccountManager::VISIBILITY_PRIVATE, $accountProperty->getScope());
-		$this->assertEquals(IAccountManager::VISIBILITY_PRIVATE, $actualReturn->getScope());
+		$actualReturn = $accountProperty->setScope(IAccountManager::SCOPE_LOCAL);
+		$this->assertEquals(IAccountManager::SCOPE_LOCAL, $accountProperty->getScope());
+		$this->assertEquals(IAccountManager::SCOPE_LOCAL, $actualReturn->getScope());
+	}
+
+	public function scopesProvider() {
+		return [
+			// current values
+			[IAccountManager::SCOPE_PRIVATE, IAccountManager::SCOPE_PRIVATE],
+			[IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_LOCAL],
+			[IAccountManager::SCOPE_PUBLISHED, IAccountManager::SCOPE_PUBLISHED],
+			// legacy values
+			[IAccountManager::VISIBILITY_PRIVATE, IAccountManager::SCOPE_LOCAL],
+			[IAccountManager::VISIBILITY_CONTACTS_ONLY, IAccountManager::SCOPE_FEDERATED],
+			[IAccountManager::VISIBILITY_PUBLIC, IAccountManager::SCOPE_PUBLISHED],
+			// fallback
+			['', IAccountManager::SCOPE_LOCAL],
+			['unknown', IAccountManager::SCOPE_LOCAL],
+		];
+	}
+
+	/**
+	 * @dataProvider scopesProvider
+	 */
+	public function testSetScopeMapping($storedScope, $returnedScope) {
+		$accountProperty = new AccountProperty(
+			IAccountManager::PROPERTY_WEBSITE,
+			'https://example.com',
+			$storedScope,
+			IAccountManager::VERIFIED
+		);
+		$this->assertEquals($returnedScope, $accountProperty->getScope());
 	}
 
 	public function testSetVerified() {
 		$accountProperty = new AccountProperty(
 			IAccountManager::PROPERTY_WEBSITE,
 			'https://example.com',
-			IAccountManager::VISIBILITY_PUBLIC,
+			IAccountManager::SCOPE_PUBLISHED,
 			IAccountManager::VERIFIED
 		);
 		$actualReturn = $accountProperty->setVerified(IAccountManager::NOT_VERIFIED);
@@ -86,13 +115,13 @@ class AccountPropertyTest extends TestCase {
 		$accountProperty = new AccountProperty(
 			IAccountManager::PROPERTY_WEBSITE,
 			'https://example.com',
-			IAccountManager::VISIBILITY_PUBLIC,
+			IAccountManager::SCOPE_PUBLISHED,
 			IAccountManager::VERIFIED
 		);
 		$this->assertEquals([
 			'name' => IAccountManager::PROPERTY_WEBSITE,
 			'value' => 'https://example.com',
-			'scope' => IAccountManager::VISIBILITY_PUBLIC,
+			'scope' => IAccountManager::SCOPE_PUBLISHED,
 			'verified' => IAccountManager::VERIFIED
 		], $accountProperty->jsonSerialize());
 	}
diff --git a/tests/lib/Accounts/AccountTest.php b/tests/lib/Accounts/AccountTest.php
index 11b13637bd0578847c927bd7e410ed7aa51e8700..8afcc44afd198f99b08d06d7a25d7b9e3f23be35 100644
--- a/tests/lib/Accounts/AccountTest.php
+++ b/tests/lib/Accounts/AccountTest.php
@@ -43,21 +43,21 @@ class AccountTest extends TestCase {
 
 	public function testSetProperty() {
 		$user = $this->createMock(IUser::class);
-		$property = new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
+		$property = new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
 		$account = new Account($user);
-		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
 		$this->assertEquals($property, $account->getProperty(IAccountManager::PROPERTY_WEBSITE));
 	}
 
 	public function testGetProperties() {
 		$user = $this->createMock(IUser::class);
 		$properties = [
-			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED)
+			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED)
 		];
 		$account = new Account($user);
-		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
 
 		$this->assertEquals($properties, $account->getProperties());
 	}
@@ -65,14 +65,14 @@ class AccountTest extends TestCase {
 	public function testGetFilteredProperties() {
 		$user = $this->createMock(IUser::class);
 		$properties = [
-			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED),
-			IAccountManager::PROPERTY_PHONE => new AccountProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED),
+			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED),
+			IAccountManager::PROPERTY_PHONE => new AccountProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED),
 		];
 		$account = new Account($user);
-		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
-		$account->setProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_PHONE, '123456', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED);
 
 
 		$this->assertEquals(
@@ -80,7 +80,7 @@ class AccountTest extends TestCase {
 				IAccountManager::PROPERTY_WEBSITE => $properties[IAccountManager::PROPERTY_WEBSITE],
 				IAccountManager::PROPERTY_PHONE => $properties[IAccountManager::PROPERTY_PHONE],
 			],
-			$account->getFilteredProperties(IAccountManager::VISIBILITY_PUBLIC)
+			$account->getFilteredProperties(IAccountManager::SCOPE_PUBLISHED)
 		);
 		$this->assertEquals(
 			[
@@ -91,19 +91,19 @@ class AccountTest extends TestCase {
 		);
 		$this->assertEquals(
 			[IAccountManager::PROPERTY_PHONE => $properties[IAccountManager::PROPERTY_PHONE]],
-			$account->getFilteredProperties(IAccountManager::VISIBILITY_PUBLIC, IAccountManager::VERIFIED)
+			$account->getFilteredProperties(IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFIED)
 		);
 	}
 
 	public function testJsonSerialize() {
 		$user = $this->createMock(IUser::class);
 		$properties = [
-			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED),
-			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED)
+			IAccountManager::PROPERTY_WEBSITE => new AccountProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED),
+			IAccountManager::PROPERTY_EMAIL => new AccountProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED)
 		];
 		$account = new Account($user);
-		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::VISIBILITY_PUBLIC, IAccountManager::NOT_VERIFIED);
-		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::VISIBILITY_PRIVATE, IAccountManager::VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::NOT_VERIFIED);
+		$account->setProperty(IAccountManager::PROPERTY_EMAIL, 'user@example.com', IAccountManager::SCOPE_LOCAL, IAccountManager::VERIFIED);
 
 		$this->assertEquals($properties, $account->jsonSerialize());
 	}