The Microsoft Skype for Business Client first tries direct connection for the Session Initiation Protocol (SIP) traffic. After it gets time-out, the client will use a proxy proxy server, id exists. This could causes noticeable delays when you sign in the client, especially if the client tries to connect to Skype for Business Online.

Microsoft published some Updates and a UC Lobby Blog article about that. There is also a Support article about that.

In the UC Lobby Blog article contains a the following:

1
reg add HKCU\Software\Microsoft\UCCPlatform\Lync /v EnableDetectProxyForAllConnections /t REG_DWORD /d 1 /f

That snippet will do the job! But I still like to use PowerShell for all the things:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<#
		.SYNOPSIS
		Skype for Business should use Proxy Server
	
		.DESCRIPTION
		Skype for Business should use Proxy Server to sign in instead of trying a direct connection.
		Works with Skype for Business 2015 and 2016 and should work with Lync 1013 as well.
	
		.EXAMPLE
		PS C:\> .\Set-Skype4BProxyUsage.ps1
	
		.NOTES
		Please note: This is a per user setting!

		SIP is not used between Clients (aka P2P or Cleint to Client).
		It wil be used between Client and Server and/or Server and Server.
		Media Bypass will be used for RTP media between Clients (when possible)

		.LINK
		https://support.microsoft.com/en-us/help/3207112/skype-for-business-should-use-proxy-server-to-sign-in-instead-of-tryin

		.LINK
		https://blogs.technet.microsoft.com/uclobby/2016/12/08/enabling-lyncsfb-client-to-use-proxy-server-for-sip-traffic-instead-of-trying-direct-connection/
#>
[CmdletBinding()]
param ()

$parameters = @{
	Path          = 'HKCU:\Software\Microsoft\UCCPlatform\Lync'
	Name          = 'EnableDetectProxyForAllConnections'
	PropertyType  = 'DWORD'
	Value         = '1'
	Force         = $true
	ErrorAction   = 'Stop'
	WarningAction = 'SilentlyContinue'
}

try
{
	$null = (New-ItemProperty @parameters)
	Write-Verbose -Message 'New value set.'
}
catch
{
	try
	{
		$null = (Set-ItemProperty @parameters)
		Write-Verbose -Message 'Existing value modified.'
	}
	catch
	{
		Write-Warning -Message 'Unable to create/set the value.'
	}
}

There is a Gist for that.

Please note, that this is a per User setting.

I also started a dedicated Directory in my new GitHub Repository. There you will find a signed version of the script above!

In the UC Lobby Blog article you will find the Clients that support that setting!

In short:
Skype for Business 2015 MSI (aka Lync 2013): 15.0.4885.1000, or later (KB3127976)
Skype for Business 2016 MSI: 16.0.4588.1001, or later (KB4011040)
Office 365 ProPlus/Office Professional Plus 2016 Click-to-Run: Version 1611 (Build 7571.2072), or later