Pages

Monday, July 29, 2013

Move Lync 2010 CMS to 2013

Moving CMS to 2013 is very straight one and below are the steps to follow. In the article I also follow how to create replication only for the migrated DBs once the migration is done.

Preparing Lync Server 2013 Front End Servers before moving the Central Management Server

Use the procedures in this section to prepare the Lync Server 2013 Front End Servers before you move the Lync Server 2010 Central Management Server.

To prepare an Enterprise Edition Front End pool

1. On the Lync Server 2013 Enterprise Edition Front End pool where you want to relocate the Central Management Server: Log on to the computer where the Lync Server Management Shell is installed as a member of the RTCUniversalServerAdmins group. You must also have SQL Server database sysadmin user rights and permissions on the database where you want to install the Central Management store.

2. Open the Lync Server Management Shell.

3. To create the new Central Management store in the Lync Server 2013 SQL Server database, in the Lync Server Management Shell, type:

Install-CsDatabase -CentralManagementDatabase -SQLServerFQDN <FQDN of your SQL Server> -SQLInstanceName <name of instance>

Please note that if you are using the default instance then you dont have to mention that. In this example i am using default instance.

image

You may see the installation is going-on. Wait for the run to finish

clip_image004

4. Confirm that the status of the Lync Server Front-End service is started.

 

Move the Lync Server 2010 Central Management Server to Lync Server 2013

 

1.On the Lync Server 2013 server that will be the Central Management Server: Log on to the computer where the Lync Server Management Shell is installed as a member of the RTCUniversalServerAdmins group. You must also have the SQL Server database administrator user rights and permissions.

2.Open Lync Server Management Shell.

3.In the Lync Server Management Shell, type:

Enable-CsTopology

image 
And press enter

Warning:

If Enable-CsTopology is not successful, resolve the problem preventing the command from completing before continuing. If Enable-CsTopology is not successful, the move will fail and it may leave your topology in a state where there is no Central Management store.

4.On the Lync Server 2013 Front End Server or Front End pool, in the Lync Server Management Shell, type:

Move-CsManagementServer

clip_image009

5.Lync Server Management Shell displays the servers, file stores, database stores, and the service connection points of the Current State and the Proposed State. Read the information carefully and confirm that this is the intended source and destination. Type Y to continue.

image

6.Review any warnings or errors generated by the Move-CsManagementServer command and resolve them.

7.On the Lync Server 2013 server, open the Lync Server Deployment Wizard.

8.In Lync Server Deployment Wizard, click Install or Update Lync Server System, click Step 2: Setup or Remove Lync Server Components, click Next, review the summary, and then click Finish.

clip_image015
image

9.On the Lync Server FE servers, open the Lync Server Deployment Wizard.

10.In Lync Server Deployment Wizard, click Install or Update Lync Server System, click Step 2: Setup or Remove Lync Server Components, click Next, review the summary, and then click Finish.

11.To confirm that replication with the new Central Management store is occurring, in the Lync Server Management Shell, run ‘Get-CsManagementStoreReplicationStatus’ command and review the result.

Please note that, if you have a implemented mirroring for Lync 2013 databases then the migrated DBs will not be in getting a mirroring. To add the migrated DBs to mirroring you have to run the below command from Lync Management Shell. Please note that in this example ‘\\uclycdb003.ucserver.in\LyncSQLMirror$’ is my SQL share which is created for mirroring and ‘uclycdb001.ucserver.in’ is my primary database server where principle DBs are.

Install-CsMirrorDatabase -ConfiguredDatabases -FileShare "\\uclycdb003.ucserver.in\LyncSQLMirror$" -SqlServerFqdn "uclycdb001.ucserver.in" -ExcludeDatabaseList "cpsdyn","rgsdyn","rgsconfig","qoemetrics","lcscdr","rtcshared","rtcxds","rtcab"

Hope this will help, please let me know if you have any confusion so that i can try to help!

Wednesday, July 17, 2013

How to create a Dynamic Distribution Group with all Lync Users in it.

I am just finishing the migration of Lync 2010 to Lync 2013 for one of my client. While designing Lync 2013 infrastructure I had a question from my client on how to create a Exchange Dynamic DL with all Lync users in it. I was not able to answer this question at that time as customer is having a pure Exchange 2010 environment so I kept the question as parked and finally I could find a answer for  that. Please note that there is no straight way to do it from Exchange tools.

Here is the steps which I followed. Hope this will help someone who is looking for similar answer.

  1. Logon to Exchange server and go to run and type ‘Adsiedit.msc’ and press enter Key
    clip_image001
  2. Right click on ADSIEdit console root and select ‘Connect to..’
    clip_image002
  3. Keep as default and click on next
    clip_image003
  4. Browse through and locate an OU where you want create the DL. Right click on the OU and select New>Object…
    clip_image004
  5. Select ‘msExchDynamicDistributionList’ and click on next.
    clip_image005
  6. Give a name. In this example its #LyncAllUsers and click on Next
    clip_image006
  7. Select ‘More Attributes
    clip_image007
  8. Select ‘displayName’ and enter the name ‘#LyncAllUsers’ and click on set. Please change the name according to your requirement.
    clip_image008
  9. Select ‘Mail’ and enter the mail address ‘ ‘#LyncAllUsers@domain.com’ and click on set. Please change according to your requirement.
    clip_image009
  10. Select ‘MailNickname’ and enter ‘#LyncAllUsers’ and click on set. Please change according to your requirement.
    clip_image010
  11. Select ‘msExchangeDynamicDLFilter’ and enter ‘((objectClass=user) (| (msRTCSIP-UserEnabled=*) ) )’ and click on set. please note that this the most important step :)
    image
  12. Slect ‘ProxyAddresses’ and enter ‘#lyncAllUsers@domain.com’ and click on Add. Please change according to your requirement.
    clip_image012
  13. Finish.
    clip_image013
  14. Open Exchange Management Console and select Distribution group. Create a filter to show only ‘Dynamic Distribution Group’ and make sure that the newly create to DL is visible now.
    clip_image017
  15. Right click on the DL and go to properties.
    clip_image018
  16. You may get below warning, click on OK
    clip_image019
  17. Go to ‘Filter’ tab and use ‘Browse..’ option and select to root of the domain so that the filter will be applied for entire items in the domain and click on ‘Apply’. Click on ‘Preview’ to see the all members.
    clip_image020
    Note;If you get an error stating that there is no primary smtp address then go to e-mail tab and set a primary address.
  18. Open outlook in online mode or open OWA and make sure that the desired DL is visible in GAL.

Tuesday, July 16, 2013

Wow! 4 very interesting features in Lync July Updates

There 4 pretty interesting features announced by  Microsoft with July updates. Bellow are the features,

  • Embedded Images - Add images in-line with text during one-to-one conversations. 
  • Meetings View - View the day’s meetings from Meetings View in the Lync client main window.
  • IM Mute - Presenters may disable use of the conversation window during a scheduled meeting.
  • Q&A Manager - Presenters can review and respond to meeting questions in a structured way.

You can read more about the same from MS blog http://blogs.technet.com/b/lync/archive/2013/07/16/july-2013-updates-for-the-lync-2013-desktop-client.aspx

Tuesday, July 9, 2013

How to implement reporting for a Lync account

I had a strange requirement from one of my client. He wanted to see Lync conferencing policy change on an account!
If the policy is changed then he would like to have mail send to him with the information and the check should happen every one hour. Checking every one hour and reporting it when ever policy change was a nightmare for my Operations team and i thought of automating it by using a powershell script :)
First you have to create a file with current information which can be used for comparing the status of policy.

#import the moudule
Import-Module 'C:\Program Files\Common Files\Microsoft Lync Server 2013\Modules\Lync\Lync.psd1'
#Below line will create a file which can be used for comparing. You have to change the sip address with the username which you are going run it. 
Get-CsUser sip:user@domain.com |select-object Identity, ConferencingPolicy |Export-csv D:\Scripts\AccountMonitoring\Default.csv -NoTypeInformation

Now create a news .ps1 file and schedule the same using schedule task. Here is the code, you have to change the user information with your account and domain.

#Import the Lync module
Import-Module 'C:\Program Files\Common Files\Microsoft Lync Server 2013\Modules\Lync\Lync.psd1'
#Get current policy which is assigned to the user to a file
Get-CsUser sip:user@domain.com |select-object Identity, ConferencingPolicy |Export-csv D:\Scripts\AccountMonitoring\Latest.csv -NoTypeInformation
#give the time to create the file
Sleep 60
#Creating the message which should be send in case there is a change.
$action = "Plase note that Conferencing Policy on account 'account@domain.com' has been changed, so request you to verify the configuration."
#Compare the files
compare-object -referenceobject $(get-content D:\Scripts\AccountMonitoring\default.csv) -differenceobject $(get-content D:\Scripts\LMSAccountMonitoring\latest.csv) |Export-Csv -Path D:\Scripts\AccountMonitoring\Output.csv -NoTypeInformation
$output = Get-Content D:\Scripts\AccountMonitoring\Output.csv
if ($output -eq $null)
    {exit 0}
else
    {
    $smtpServer = "smtp.dmain.com"
    $smtpFrom = "SAccountReporting@domain.com"
    $smtpTo = "prajeesh@domain.com"
    $messageSubject = "Change On Account Policy"
    $message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
    $message.Subject = $messageSubject
    $message.IsBodyHTML = $true

    $message.Body = $message.Body + $action

    $smtp = New-Object Net.Mail.SmtpClient($smtpServer)
    $smtp.Send($message)
    }