Friday, March 18, 2016

Move User from a dedicated Pool via Powershell

How to move users to different pool or how to migrate user to another pool.

Simple and often forgotten:

The Get-CsUser command do not offer a -Pool or -SourceFQDN parameter!

Therefor you need to use pipelining and filtering.

Get-CsUser -Filter {RegistrarPool -eq "CurrentPoolFqdn"} | Move-CsUser -Target "TargetPoolFQDN" -MoveConferenceData

The Option CurrentPoolFqdn and TargetPoolFqdn must be specified in the form of: server.domain.local
MoveConferenceData : Please don't forget moving the users conferencing data stored in the File Share.
Note that you should not use the MoveConferenceData parameter if you are moving users as part of a disaster recovery procedure. Instead, you should rely on the backup service for moving conference data as part of a disaster recovery procedure

Care about users conferencing ID is not necessary while moving a user to new pool:

When you move a user to an Skype for Business or Lync Server 2013 pool, the data for the user is moved to the back-end database that is associated with the new pool.

This includes the active meetings created by the user. For example, if a user has configured a my meeting conference, that conference will still be available in the new Skype for Business/ Lync Server 2013 pool after the user has been moved.
The details to access that meeting will still be the same conference URL and conference ID.
The only difference is that the conference is now hosted in the new pool, and not in the source pool.

The Get-CsUser command has the following Properties which can be used for filtering:

Identity                    : CN=USER,CN=Users,DC=ADdom,DC=local
VoicePolicy                 :
VoiceRoutingPolicy          :
ConferencingPolicy          :
PresencePolicy              :
DialPlan                    :
LocationPolicy              :
ClientPolicy                :
ClientVersionPolicy         :
ArchivingPolicy             :
ExchangeArchivingPolicy     : Uninitialized
PinPolicy                   :
ExternalAccessPolicy        :
MobilityPolicy              :
PersistentChatPolicy        :
UserServicesPolicy          :
CallViaWorkPolicy           :
ThirdPartyVideoSystemPolicy :
HostedVoiceMail             :
HostedVoicemailPolicy       :
HostingProvider             : SRV:
RegistrarPool               : Pool or StdServer.ADDomain.local
Enabled                     : True
SipAddress                  : sip:USER@SIPDOM.COM
LineURI                     :
EnterpriseVoiceEnabled      : False
ExUmEnabled                 : False
HomeServer                  : CN=Lc Services,CN=Microsoft,CN=1:1,CN=Pools,CN=RTC
DisplayName                 : USER for TEST
SamAccountName              : USER

I always let the entire process being documented to >C:\User-Move.txt this is for later validation and error correction.

Get-CsUser -Filter {RegistrarPool -eq ""} | Move-CsUser -Target "" -MoveConferenceData > C:\move-user.txt 

Move user in event of a Data Center failure:

Well if a DC is in failover mode, there are two things happen.
  • If the resiliency mode is active, the conferencing focus is still hold on the other side and therefor the conferencing ID stuck there and it will fail!
  • If the DC fail with a proper failover incl. the SQL copy and you have activated the failover manually! Everything is working fine.
If you google about Conferencing Focus Lync you find a lot for my fellow MVP mate writing about this.
Assuming, you move the user to new pool permanently, this conferencing focus will be copied as part of the user setting. So the same ID is valid.
Just last weekend I was migrating an entire pool to new pool and everything got moved and all conferences stood as expected.
and if everything failed:
This is from MVP mate Richard Brynteson, Lync MVP, Microsoft Certified Solutions Master, he work it out very proper, if you like to understand conferencing.

Btw you can also download my Skype for Business and Lync Troubleshooting Guide:


  1. Replies
    1. Hi Babulal,
      thank you, you are very welcome.

  2. Thomas - Is there a way to also move the user's conference profile to the new pool? I believe the only way to do this is to reset their conferenceID. The "MoveConferenceData" switch only moves the shared data in the meetings. If the ConfereceID is not moved to the new pool, this creates an unnecessary dependency on the old pool.


    1. Hi Neeraj
      I have updated the blog with further information in regards to the users Conferencing ID. I hope this helps. Since the ID is stored in the Backend Database and will be move with the user itself automatically to the new pool