Thursday, April 10, 2014

Response Group with Lync Mobile

The Response Group in Lync is not supported by the Lync mobile client.
http://technet.microsoft.com/en-us/library/gg398674.aspx
But I do remember a blog on Nexthop which said Response Group do work with Lync mobile clients.
http://blogs.technet.com/b/nexthop/archive/2013/03/13/lync-2013-mobile-clients-release-faq.aspx#52754
And there is also a statement that Response Group do not follow your forwarding settings.

Last year I did not work often with Response Group in combination with Lync Mobile. This week a customer asked me to test possible solution to replace his current DECT system. I know Lync mobile couldn't replace a DECT phone but it's worth trying to build someting.
I did some test with VoIP on WIFI but it seems that this is not supported and it will not work. You can answer a incoming call but it will not connect.
If it would connect you are not able to walk through the building because WIFI needs to support roaming between access points.
But the strange thing here is when you configure Lync mobile to allow VoIP calls only with WIFI connection and you also disable WIFI on your SmartPhone Lync will forward incoming calls over GSM network. This also works for calls coming in from a Response Group.

To get this working you need to set:
  • Turn off call forwarding in your Lync client;
  • Disable WIFI on your SmartPhone;
  • Increase alerting time to 30 seconds in Response Group Agent Group;
It's not the best solution but it will cover all problems. Response Group will call your Smartphone after a littele delay. And you don't have to worry about roaming because this is already supported with GSM networks.

Also when using Lync Mobile you don't have to use simultaneously ringing with your SmartPhone.

###Update### 21 June 2014

Yesterday I did some test with Lync 2013 mobile on Windows Phone 8.1.
I can now confirm that Lync Response Group Service will work with Lync 2013 mobile client when it runs on the Windows Phone 8.1 platform.
I tested with wifi and 3G and also tested inside or outside the corporate firewall.
Both configurations will work and seems that Windows Phone 8.1 will do the trick.

-Frederik- 


Sunday, November 17, 2013

Move Lync Server 2013 Backend Databases

Today I had to move the Lync Server 2013 backend databases from one SQL server to another SQL server. There is a procedure on Nexthop for Lync Server 2010 which is very useful but it is not complete for Lync Server 2013. I did use the procedure below in a production environment with success :-)

The first part is to move the Central Management Store (CMS) to a temporary server. Just install a Lync server Standard Edition and move the CMS to it. Before moving do check if CMS replication is healthy!
When the CMS is running on the new temporary server and CMS replication is healthy you can start with the procedure to move the Lync pool backend databases.
Step 1: Prepare databases for backup
Stop Lync services on all frontend servers in the pool. (Stop-CsWindowsServices)
Remember in which order the Lync services on the frontend servers are stopped. (third server, second server, first server)
Start Microsoft SQL Server Management Studio and connect to the current SQL Lync instance.
Run the SQL script on the Lync databases:

ALTER DATABASE cpsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE cpsdyn SET SINGLE_USER
ALTER DATABASE cpsdyn SET ONLINE

ALTER DATABASE rgsconfig SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsconfig SET SINGLE_USER
ALTER DATABASE rgsconfig SET ONLINE

ALTER DATABASE rgsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsdyn SET SINGLE_USER
ALTER DATABASE rgsdyn SET ONLINE

ALTER DATABASE rtcab SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcab SET SINGLE_USER
ALTER DATABASE rtcab SET ONLINE

ALTER DATABASE rtcshared SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcshared SET SINGLE_USER
ALTER DATABASE rtcshared SET ONLINE

ALTER DATABASE rtcxds SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcxds SET SINGLE_USER
ALTER DATABASE rtcxds SET ONLINE

Step 2: Backup databases
USE Master;
GO
BACKUP DATABASE cpsdyn
TO DISK = ‘C:\CSBackup\cpsdyn.bak’

GO
BACKUP DATABASE rgsconfig
TO DISK = ‘C:\CSBackup\rgsconfig.bak’

GO
BACKUP DATABASE rgsdyn
TO DISK = ‘C:\CSBackup\rgsdyn.bak’

GO
BACKUP DATABASE rtcab
TO DISK = ‘C:\CSBackup\rtcab.bak’

GO
BACKUP DATABASE rtcshared
TO DISK = ‘C:\CSBackup\rtcshared.bak’

GO
BACKUP DATABASE rtcxds
TO DISK = ‘C:\CSBackup\rtcxds.bak’
Step 3: Copy the folder C:\CSBackup to new SQL Server.

Step 4: Update Topology Document
Open the Topology builder on your temporary Lync server where the CMS is hosted
Define a new SQL Store

Update the Frontend pool with the new SQL Store

Publish the topology, the new Lync databases will be created.

Step 5: Prepare databases for restore
Start Microsoft SQL Server Management Studio and connect to the new SQL Lync instance.
Run the SQL script on the Lync databases:


ALTER DATABASE cpsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE cpsdyn SET SINGLE_USER
ALTER DATABASE cpsdyn SET ONLINE

ALTER DATABASE rgsconfig SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsconfig SET SINGLE_USER
ALTER DATABASE rgsconfig SET ONLINE

ALTER DATABASE rgsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsdyn SET SINGLE_USER
ALTER DATABASE rgsdyn SET ONLINE

ALTER DATABASE rtcab SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcab SET SINGLE_USER
ALTER DATABASE rtcab SET ONLINE

ALTER DATABASE rtcshared SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcshared SET SINGLE_USER
ALTER DATABASE rtcshared SET ONLINE

ALTER DATABASE rtcxds SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcxds SET SINGLE_USER
ALTER DATABASE rtcxds SET ONLINE



Step 6: Restore databases
RESTORE DATABASE [cpsdyn] FROM DISK = N’C:\CSBackup\cpsdyn.bak’ WITH FILE = 1,
MOVE N’cpsdyn_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\cpsdyn.mdf’,
MOVE N’cpsdyn_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\CPSDYN.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO

RESTORE DATABASE [rgsconfig] FROM DISK = N’C:\CSBackup\rgsconfig.bak’ WITH FILE = 1,
MOVE N’rgsconfig_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\rgsconfig.mdf’,
MOVE N’rgsconfig_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\RGSCONFIG.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO

RESTORE DATABASE [rgsdyn] FROM DISK = N’C:\CSBackup\rgsdyn.bak’ WITH FILE = 1,
MOVE N’rgsdyn_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\rgsdyn.mdf’,
MOVE N’rgsdyn_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\RGSDYN.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO

RESTORE DATABASE [rtcab] FROM DISK = N’C:\CSBackup\rtcab.bak’ WITH FILE = 1,
MOVE N’rtcab_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\rtcab.mdf’,
MOVE N’rtcab_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\RTCAD.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO

RESTORE DATABASE [rtcshared] FROM DISK = N’C:\CSBackup\rtcshared.bak’ WITH FILE = 1,
MOVE N’rtcshared_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\rtcshared.mdf’,
MOVE N’rtcshared_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\RTCSHARED.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO

RESTORE DATABASE [rtcxds] FROM DISK = N’C:\CSBackup\rtcxds.bak’ WITH FILE = 1,
MOVE N’rtcxds_data’ TO N’E:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\rtcxds.mdf’,
MOVE N’rtcxds_log’ TO N’F:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_LYNC_2013\MSSQL\Data\RTCXDS.LDF’,
NOUNLOAD, REPLACE, STATS = 10
GO


Step 7: Finalizing restore databases

ALTER DATABASE cpsdyn SET multi_USER
ALTER DATABASE rgsconfig SET multi_USER
ALTER DATABASE rgsdyn SET multi_USER
ALTER DATABASE rtcadb SET multi_USER
ALTER DATABASE rtcshared SET multi_USER
ALTER DATABASE rtcxds SET multi_USER

 

After this Enable cross-database ownership chaining on RTCshared database  – Right click RTCShared database –> New Query

sp_dboption rtcshared, ‘db chaining’, TRUE
Step 8: Restart the Lync Services
Restart the Lync Services on the frontend server in reverse order they were stopped. (first server, second server, third server.) Give every server enough time to start all services before starting the next one.
In the Event viewer you should see a message that the new databases store is used.




After this you can move the CMS back to the frontend pool just as you move the CMS to the temporary server.

Tuesday, November 12, 2013

Get rid of Network password is required to connect

When you sign in to Microsoft Lync 2013, a proxy authentication dialog box appears unexpectedly.


This issue usually occurs when Lync 2013 tries to connect to a proxy server to download an external picture for an external contact. This issue may also occur when the external network has a proxy server even though the local network doesn’t have a proxy server.

http://support.microsoft.com/kb/2825630

Friday, November 1, 2013

A professional Response Group Service

Response Group Service is one of the many great features which Lync has to offer but the buillt-in text to speech is often not enough.
Actually it's more of a good start for testing purposes and when your ready to go you have to replace them with your own voices or with professional voices.
Where to find a good professional voice? Well there are many sites where you can find voices but I have a good experience with premiumvoices.com.

Monday, May 27, 2013

Users are not indexed in the database that should be.

When migration from Lync Server 2010 to Lync Server 2013 you will notice an event error 21054, LS Address Book Server.
The solution should be to run Update-CsAddressBook but this will not solve your problem.

After reading the Lync Server 2013 release notes it is clear that you should run the cmdlet Debug-csAddressBookReplication.
If the cmdlet reports that there are no unindexed or abandoned objects, the error event 20154 can be safely ignored.


Running the Debug-csAddressbookRelication cmdlet shows that are 4 objects not indexed that should be.

This Lync Server 2013 deployment is running in a Exchange Server 2010 environment so we need to set the use of the Unified Contacts Store in the Global User Service policy to false this enabled by default.


To disable the use of UCS run the cmdlet Get-CsUserServicespolicy | Set-CsUserServicespolicy - UcsAllowed $false

Again run the cmdlet Update-Cs|Addressbook
And now check again with Debug-csAddressbookRelication cmdlet


Now there are no Objects not indexed that should be or any Abandoned objects we could safly ignore the error event 20154.

Thursday, April 11, 2013

Move-CsManagementServer failed

During a migration from Lync Server 2010 to Lync Server 2013 there is a point where you need to move the CMS database to a new Lync Server 2013.
In this case all Lync related data was installed on a D:\ drive as a requirement from the customer.
When installing the CMS database you need to use powershell to set the correct location to folder on the D:\ drive. 
After this step I started the Move-CsManagementServer and this failed during the bootstrapper.exe step with an error.

Error: An error occurred: "Microsoft.Rtc.Management.Deployment.DeploymentException" "Cannot find any suitable disks for database files. You must manually specify database paths."

The cause of this error was lack of free disk space on the C:\ drive. You still need 20 GB of free disk space on the system drive. After expanding the system drive lets run the Move-CsManagementServer again.....(no success)...and again with the Force switch.

PS C:\> Move-CsManagementServer -force

Confirm
This cmdlet moves Central Management Server to the pool that contains this
computer.

 Current State:
 Central Management Server Pool: "srvlync2013.contoso.com"
 Central Management File Store: "\\srvlync2013.contoso.com\LyncShare$"
 Central Management Store: "srvlync2013.contoso.com\rtc"
 Central Management Store SCP: "srvlync2010.contoso.com\rtc"

 Proposed State:
 Central Management Server Pool: "srvlync2013.contoso.com"
 Central Management File Store: "\\srvlync2013.contoso.com\LyncShare$"
 Central Management Store: "srvlync2013.contoso.com\rtc"
 Central Management Store SCP: "srvlync2013.contoso.com\rtc"

The last attempt to move the Central Management Server from
"srvlync2010.contoso.com\rtc" to "srvlync2013.contoso.com\rtc" either
failed or is in progress. Ensure that there is no other move operation in
progress and run this cmdlet with the -Force flag to retry the move to
"srvlync2013.contoso.com\rtc".

Note:
As you can read the CMS is correctly moved to the new Lync 2013 server but the SCP is still pointing to the old Lync 2010 server. When the Master Replication service and the File Transfer Agent service are starting they read out the SCP and they stop running because both services try to connect to a server with an incorrect database version.

The move is still failing with an error:

Move-CsManagementServer : Export configuration data failed. Exception Details:
Exception : System.Data.SqlClient.SqlException (0x80131904): Could not find
stored procedure 'dbo.XdsBackupAllItems'.

At this point Lync is still running without any problems. It is even possible to access the Topology Builder and download a configuration. But replication of the config to other servers is not working. To solve this error I created a backup from the XdsConfig and LisConfig database with Export-CsConfiguration and with Export-CsLisConfiguration cmdlets. 

Now again I started to move the CMS with Move-CsManagementServer -ConfigurationFileName "C:\CsConfiguration.zip" -LisConfigurationFileName "C:\CsLisConfiguration.zip" -Force

A Voila ...... a working system is the result!!!