Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

Environment: SharePoint Server 2010

Web Application: Claims Authentication - Windows NTLM

User claim token: i:0#.w

User Profile Sync: Configured to retrieve user info from ActiveDirectory. Full and incremental running

Issue: When usernames and email addresses change, I need to manually run Get-SPUser ... | Move-SPUser and Set-SPUser via the SP Management Console to get the user's profile on the web application to change. The Set-SPUser command updates the email and display name of the user. In the User Profile Service Application I can see that the user profile sync has the correct information but it's not flowing down to the web app.

According to: http://www.wictorwilen.se/Post/How-Claims-encoding-works-in-SharePoint-2010.aspx our token is using User Logon Name as the claim identifier. I set the Claim User Identifier (SPS-ClaimId) to sAMAccountName and ran a full profile sync. I watched the MIIS ops update the MOSS profiles with the new attribute yet the changes still did not propagate (even after the user logged onto the site again).

This is using the Windows claim provider. This is not a custom identity provider.

UPDATE - See properties below. AccountName is not updating as expected. enter image description here

UPDATE #2 - Ran a full sync and the AccountName attribute on FIM finally updated. However, after the user logs onto the SP site they still see their old information in "My Settings".

share|improve this question

2 Answers 2

Try resetting the Sync Information using

Stsadm.exe –o sync –listolddatabases 0
Stsadm.exe –o sync –deleteolddatabases 0

See “User Profile Sync” doesn’t show update data even after multiple Full Profile Import

share|improve this answer
    
I ran the commands above to clear the sync records for these content dbs and verified they cleared. Ran an incremental sync. AD MA picked up the changes, MOSS MA Exported the changes with the exception of "AccountName". This still has the original username. On SP's UPA Manage User Profiles page I see the correct AccountName, however. Image in my original question shows the MIIS details for MOSS MA. –  mwilkes Aug 27 '13 at 12:31
    
Ran a full sync. The AccountName property was finally updated correctly. Sync logs for content dbs are clear. When user logs on their information is still the old values. –  mwilkes Aug 27 '13 at 13:14
up vote 0 down vote accepted

As it turns out none of the profile sync options corrected this issue. The User Information in the RootWeb of the Web App still reflected old data. To workaround this issue I followed most of what is posted here: http://blog.falchionconsulting.com/index.php/2011/12/updating-sharepoint-2010-user-information/

The only real exception to the Sync-SPUser script was that I needed to add a Move-SPUser command because the Account Name on the User Information list never matched the User Profile Store and therefore the -SyncFromAD switch raised an error. After running this all data was updated. Thanks Gary!

This is the final version of the script:

function Sync-SPUser([string]$origUserName, [string]$newUserName) {

  Get-SPSite -Limit All | foreach {
    $web = $_.RootWeb

    if ($_.WebApplication.UseClaimsAuthentication){
        $origClaim = New-SPClaimsPrincipal $origUserName -IdentityType WindowsSamAccountName
        $origUser = $web | Get-SPUser -Identity $origClaim -ErrorAction SilentlyContinue

        $newClaim = New-SPClaimsPrincipal $newUserName -IdentityType WindowsSamAccountName
        $newUser = $web | Get-SPUser -Identity $newClaim -ErrorAction SilentlyContinue
    } else {
        $origUser = $web | Get-SPUser -Identity $origUserName -ErrorAction SilentlyContinue
        $newUser = $web | Get-SPUser -Identity $newUserName -ErrorAction SilentlyContinue
    }

    if ($origUser -ne $null -and $newUser -ne $null){

        Get-SPUser -Identity $origUser -Web $web | Move-SPUser -NewAlias $newUser -ignoresid -confirm:$false
        echo "Updating $newUser on web $web"
        $web | Set-SPUser -Identity $newUser -SyncFromAD

    }

    $web.Dispose()
    $_.Dispose()
  }
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.