2014-03-24

Use this script to map AD attribute to SharePoint user profile property for specific synchronization connection in UPA (User Profile Application).
This is useful to remap ‘proxyAdresses’ attribute for WorkEmail property if you changed to ‘mail’ and trying to change it back or other scenario.
If mapping already exists it will be remapped to new value if not – will be added.

Please make sure that you user has rights to access $siteURL and has Full control on UPA. And run the script from elevated SharePoint PowerShell prompt.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")

Start-SPAssignment -global

#change to your SP site URL to get the context from
$siteUrl = "http://intranet.contoso.com"
#This is SP User Property
$PropertyName = "WorkEmail"
#This is AD attribute
$attributeName ="mail" #or proxyAdresses
#This is UPA Synchronization connection name. Change it to yours
$connectionName = "SyncConnectionName";


$site = Get-SPSite $siteUrl

$context = Get-SPServiceContext $site

$upConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context)

$connection = $upConfigManager.ConnectionManager[$connectionName]

#$upConfigManager.ConnectionManager[$connectionName].PropertyMapping.GetEnumerator() > c:\temp\mappings.txt
# Uncomment line above and comment bellow to get all available mappings

$connection.PropertyMapping.AddNewMapping[Microsoft.Office.Server.UserProfiles.ProfileType]::User,$PropertyName,$attributeName)

Stop-SPAssignment -global

Use on your own risk and always test on DEV

About the author 

PauliusKe