This is probably the first of a few blog posts regarding a problem we are facing with our Lync 2013 environment. In short, we have 2 corrupt routing groups right now. Users assigned to those routing groups are unable to add a contact to their buddy list and they cannot change their status.
This tip isn't anything too special and a lot of you may already know this but I'm putting it out there in case someone else runs into this situation.
Our initial thought was to move the users to a different pool which will remove them from one of the bad routing groups. However, we cannot move the users to a different pool. When doing so, we get the errors seen below.
PS C:\Users\flinchbot> Move-CsUser "user@flinchbot.com" -Target pool.flinchbot.com
Confirm
Move-CsUser
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
Move-CsUser : Distributed Component Object Model (DCOM) operation begin move
away failed.
At line:1 char:1
+ Move-CsUser "user@flinchbot.com" -Target pool.flinchbot.com
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Move-CsUser], MoveUserExcept
ion
+ FullyQualifiedErrorId : FAILED::MoveRetry,Microsoft.Rtc.Management.AD.Cm
dlets.MoveOcsUserCmdlet
Move-CsUser : Distributed Component Object Model (DCOM) operation
RollbackMoveAway failed "-1007781356".
At line:1 char:1
+ Move-CsUser "user@flinchbot.com" -Target pool.flinchbot.com
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Move-CsUser], MoveUserExcept
ion
+ FullyQualifiedErrorId : FAILED::MoveRetry,Microsoft.Rtc.Management.AD.Cm
dlets.MoveOcsUserCmdlet
Move-CsUser : Distributed Component Object Model (DCOM) operation begin move
away failed.
At line:1 char:1
+ Move-CsUser "user@flinchbot.com" -Target pool.flinchbot.com
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (CN=Uk,lre poc..flinchbot,DC
=com:OCSADUser) [Move-CsUser], MoveUserException
+ FullyQualifiedErrorId : MoveError,Microsoft.Rtc.Management.AD.Cmdlets.Mo
veOcsUserCmdlet
So that wasn't going to work. So we decided to try a force-move of the users. In general a force-move is to be avoided as this process will move the user but it will throw away, among other things, any contact list entries.
So we did an Export-CsUserData of the users information first:
PS C:\Users\flinchbot> Export-CsUserData -UserFilter "user@flinchbot.com" -Poolfqdn pool.flinchbot.com -filename "e:\tempuser.zip"
We verified that the data was correct by extracting the .zip file and looking at the .xml file. In there we could see the contact list entries that the user already had.
Next we did the force-move.
PS C:\Users\flinchbot> Move-CsUser "user@flinchbot.com" -Target pool.flinchbot.com -force
Confirm Move-CsUser [Using Force will cause data loss!] [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
This moved the user. Finally we restored the data using the Update-CsUserData cmdlet:
PS C:Usersflinchbot> Update-CsUserData -UserFilter "user@flinchbot.com" -FileName "e:\tempuser.zip" -verbose
VERBOSE: Processing input file e:tempuser.zip.
VERBOSE: Opening file
C:UsersflinchbotAppDataLocalImportUserDataTemp.Xml.
VERBOSE: Opening file e:tempuser.zip.
VERBOSE: Processed 1 users so far.
VERBOSE: User user@flinchot.com specified in User Filter processed.
VERBOSE: Output file C:UsersflinchbotAppDataLocalImportUserDataTemp.Xml
generated successfully.
VERBOSE: Processing user t-user@flinchbot.com.
VERBOSE: Processed 1 users so far.
Confirm Are you sure you want to perform this action? Performing operation "Update-CsUserData" on Target "user@flinchbot.com". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
After signing out of the user account and signing back in we saw the contacts had been restored. We were also now able to add new users to the contact list as well as update the Lync status.
Moving the user back to their original pool gave the same errors as in the first example above. We need to figure that issue out but at least our users can have full Lync client functionality again even if they are now in the wrong pool.
2 pings
[…] while trying to move users from one pool to another. It’s generally well-documented: Anthony, Michael, Paul, Michael or others might have shown you the light. It’s usually a permissions thing. […]
[…] VIII. This is a perfect little process if Force works. So the commands are restated below. Thanks FlinchBot: […]