After installing MS14-082 (part of December 2014 Public Updates for Office) you might get the error run-time error '438': Object doesn't support this property or method, when clicking on the enable content button. If you click Debug you will see the reference shown below:
The root cause of this appears to be related to problems mentioned in KB3025036 and here and performing the steps in the Resolution 1 section of the KB has fixed the issue..
This post is authored by Henrik Jørgensen from Microsoft Services in Denmark.
The following is based upon real life experience with the CQM framework from a Microsoft Consulting Services project.
One of our customers reported bad experiences with Lync. Specifically the customer reported, that their end-users complained about problems with Audio and Video. The problems reported could be divided into 2 scenarios:
The customer is a major global player in their specific area. They host several Lync pools globally and are represented in countries around the globe.
An approach to analyze the above problems is to use the Call Quality Methodology (CQM) framework as introduced by the Microsoft Lync product group.
The approach was to establish a baseline, in order to understand the level of the problems but also have a benchmark to compare with after implementation of changes to the Lync environment and related IT infrastructure components.
We divided the work into the following areas:
The work involved several IT teams at the customer. A key learning was, that the operation of a complex IT-infrastructure as Lync calls for co-operation and communication between the IT teams involved in operations and maintenance of the Lync infrastructure.
The analysis work revealed several findings:
The KHI, CQM and Network Analysis revealed other findings. These are presented in more detail in the following.
Server Key Health Indicators
We used the KHI collection PowerShell script from the networking guide. We collected data for 5 working days. Afterwards, the data was imported to Microsoft Excel.Among other critical findings, we observed packet loss on some of the front-end servers. This called for further analysis of the server problems. A firmware upgrade was part of the solution.
CQM Analysis
The CQM SQL queries are divided in 3 areas
We used the queries in the Networking guide. A summary of the findings are provided below:
Endpoints
The CQM queries revealed that a majority of end-users at given locations did not use Lync certified devices. The customer initiated a process to
Server traffic
The CQM queries documented packet loss between the AVMCU and the Mediation Server and from the Mediation Server to the gateway at some sites. Further analysis looked at
Network traffic
We identified several issues
All above findings called for additional analysis and work in order to solve the problems.
Network Analysis
Together with the customer, we defined three persona profiles. These where defined in the bandwidth calculator. The customers HR department provided us with a number for each of the persona profiles at the specific locations where the customer is represented.
The calculations in the bandwidth calculator revealed:
Furthermore, the customer initiated a network assessment of the WAN. The assessment documented the predictions from the bandwidth calculator.
Customer initiated actions to improve the Lync experience
The customer initiated several actions to improve the Lync experience of their end-users. In summary these are
Key learnings
With the CQM approach, we helped our customer to not only troubleshoot and fix problems with their Lync infrastructure. We also established a methodology that is used pro-actively in their environment to prevent problems in Lync communications internally as well as with external parties.
A key learning is that CQM is a very good framework, but the value from it can be very limited, if the processes at a customer are not aligned to CQM and a proper Lync service mapping is not in place. Furthermore, the different IT teams at the customer needs to communicate very close about operation and maintenance of the IT infrastructure.
[Updated August 8, 2014]
In this post, I will show some of the common problems people run into when using the CQM Scorecard and how to fix them.
Microsoft Visual Basic for Applications – Compile error: Method or data member not found
You might see the error message shown below.
The reason you see this message is most likely that you are using a version of Microsoft Excel prior to 2013. The CQM Scorecard require Microsoft Excel 2013. To solve the problem open the CQM Scorecard in Microsoft Excel 2013.
Microsoft Visual Basic for Applications – Rune-time error '13': Type mismatch
The most likely reason for seeing this error is that you have loaded the CQM results using the wrong decimal separator. The Scorecard needs to use the same decimal separator as in the CQM result CSV files. If it is not the same, Excel will load the PoorStreamsRatio as text and not as a number, and that causes the above error.
You can check if this is the reason for the error by looking at one of the Trend sheets and the PoorStreamsRatio column. If you see formatting being a mixture of left and right aligned values as shown in the figure below, the CQM results were loaded with the wrong decimal separator.
To discover which decimal separator to use open one of the Trend CQM result CSV files in Notepad and look at one of the lines. An example is shown below.
"1/23/2014","18874","2380","12.6","Trend_3_Wired"
The bolded yellow value shows you that the decimal separator is a dot. Therefore, you need to use Dot as the decimal separator, when loading the CSV results.
You can also get this error when all the devices listed in Endpoint_0_Device sheet has AvgSendListenMOS below the target value set in the Scorecard. There is a bug in logic in this scenario, which will be fixed in the next release. Possible work-arounds are either to add one device with AvgSendListenMOS above target or lower the target.
Different formats for date labels on trend charts
You might see different format for date labels on charts. An example of this is shown below. You can see that the date format changes from 1/31/2014 to 02-02-2014.
This happens if the CQM results are loaded with the wrong date format. This leads Excel to load the dates incorrect and that makes the charting incorrect.
You can see if this is the case by looking in one of the Trend sheets. If you see the dates in the ReportDate column formatted as shown in the figure below the results were loaded with the wrong date format.
To discover which date format to use open one of the Trend CQM result CSV files in Notepad and look at one of the lines. An example is shown below.
The bolded yellow value shows you that the date format is MDY, because the date is shown as 1/23/2014. Therefore, you need to use MDY as the date format, when loading the CSV results.
Yesterday we made version 2.2 of the Networking Guide available and it now includes the Microsoft Call Quality Methodology Scorecard for Lync Server. The Scorecard is used to implement Call Quality Methodology (CQM) as discussed in Appendix C of the Networking Guide.
The new features in this version of CQM includes:
You can read much more about the Scorecard and how to use it in the Microsoft Call Quality Methodology Scorecard for Lync Server document included in the ZIP file located here. Enjoy!
At the Lync Conference 2014, Andrew and I did two sessions on Call Quality Methodology (CQM):
At TechEd North America 2014 Andrew and Kent did a session on CQM. It includes a deep discussion on how to troubleshoot packet loss reported by CQM and demonstrates the scorecard we are working on.
Enjoy! J
At the Lync Conference 2014 in Las Vegas Andrew and I talked about Call Quality Methodology (CQM) in two sessions. In the session on the CQM queries I used 2 SQL Queries to show streams coming from a subnet and from a given user. I've attached the queries to this post. The queries are based on the 2013 QoE schema.
Demo9.1 - Individual Streams from a Subnet
Change the time period and the subnet you are interested using the x.x.x.x notation.
Demo9.2 - Individual Streams From a URI
Change the time period. Set the variable @lyncUser1 to the SIP address of the user you are interested in with sip: prefixed. The query use @lyncUser1 as the caller. I've kep the variable @lyncUser2 to hold the SIP address of a second user in case you want to look at streams between two users. If so add and CalleeUser.URI = (@lyncUser2) to the query.
When Lync 2013 shipped we did not provide the user interface to allow the user to configure his/her picture to be available on a web site (sometimes referred as photo url). With the November 7, 2013 update to Lync 2013 we have added this capability to Lync 2013. We have also changed the layout a little bit in the My Picture options page.
The ability to configure the picture from a web address is controlled by a new ClientPolicy entry called EnablePresencePhotoOptions. It can only be set via the Lync Server Management Shell (see below for an example on how to do it).
When the entry is set to True Lync 2013 will display a 3rd radio button in the My Pictures options page, as shown below.
The user can then select the radio button and enter the Url to the picture. The maximum size of the picture is controlled by the ClientPolicy parameter MaxPhotoSizeKB. In the screenshot below I've set this value to 1000 and that is reflected in the user interface. The picture at the Url needs to be publically available without requiring a password for accessing it.
In the first screenshot you can also see the change in the layout of the page. We are no longer showing 2 different sizes of the picture in use, just one. We will show a 200x200 pixels version of the picture, either scaled up or down as needed.
Here is an example of how to set the policy entry using Lync Server Management Shell
The MediaLine table in the Lync 2013 QoE database contains a column called MediaLineLabel. The label specifies the media type related to the MediaLine. In Lync 2010 you have been used to seeing the values 0, 1 and 2 in the column. However in Lync 2013 you might find the additional values 3, 4, 5, 6, 7 and 8. What does these values specify?
I have shown it in the table below. The new additions are 3 for application sharing and 4 – 8 for gallery view video. The Lync 2013 client supports up to 5 video streams in the gallery view and that is why we have the values 4 – 8.
MediaLineLabel value
Media type
0
Audio
1
Video
2
Panoramic video
3
Application sharing
4
Gallery view video
5
6
7
8
During the last 6 months my colleagues Andrew, Brandon, Kent and I have been busy documenting the Call Quality Methodology or CQM as we call it.
CQM is a holistic way to systematically define and assert call quality. CQM divides a Lync implementation into ten discrete areas that impact quality, defining targets and a remediation plan for each one. CQM is a framework to tackle call quality problems – you can modify or extend it to address the particular conditions on your network. It is based on Key Health Indicators (KHI) for server health and on QoE data reported by Lync clients and servers.
We have published it as version 2 of the Networking Guide. The download is a ZIP file containing the updated Networking Guide, the Lync 2010 KHI and the SQL queries for Lync 2010 and Lync 2013 QoE schemas. We are working on Lync 2013 KHI's and will make them available at a later time. Enjoy!
In Microsoft Lync 2013 for Mobile release 5.2 we are introducing support for passive authentication via Active Directory Federation Services (AD FS). It enables customers to sign in using other authentication methods than Active Directory including support for users, who don't know their Active Directory password. Kaushal gives a great overview about the feature in his post here. In this post I will describe the sign-in experience for passive authentication user on Microsoft Lync 2013 for Mobile and how to configure your environment to support passive authentication.
Kaushal shows the sign experience on the mobile device using AD FS forms based authentication in his Figure 3. In this section I'll describe when the user has to sign in using passive authentication and when it is not necessary based on different scenarios.
There are 3 elements relevant for the sign in experience:
The Save Password setting is not used when using Passive Authentication. Table 1 lists the passive authentication sign in experience behavior in different scenarios.
Scenario
Passive Authentication needed
Initial sign in
Yes
Sign in after previous sign out
User is signed out by server failure or other event
Administrator revokes the Lync client certificate or it expires, while the user is signed out of the mobile app
Administrator revokes the Lync client certificate or it expires, while the user is signed in on the mobile app. Web ticket is still valid
No
Administrator revokes the Lync client certificate or it expires, while the user is signed in on the mobile app. Web ticket is expired or not valid
Yes. This is needed to authenticate to get a new valid web ticket
The user is signed in to the mobile app and the web ticket expires. Lync client certificate is valid
No. The web ticket is renewed by using the Lync client certificate without the user having to do passive authentication
WP8: The user is signed in to the mobile app, press Home button and selects the mobile app in the jump list or starts it from the program list. Web ticket is valid
WP8: The user is signed in to the mobile app, press Back button and starts the app again from the program list. Web ticket is valid
WP8: The user is signed in to the mobile app and reboots the device. Mobile app is auto-started
iOS: The user is signed in to the mobile app, press Home button and selects the mobile app in the multi-tasking list or starts it from the program list
iOS: The user is signed in to the mobile app, press Home button and remove the mobile app from the multi-tasking list and starts it from the program list
iOS: The user is signed in to the mobile app and reboots the device. Mobile app is auto-started
WP8 and iOS: The user is signed in to the mobile app and it is in the foreground, the device goes to lock screen and the user unlocks the device
Table 1 Sign in experience
The following versions of the device operating systems are recommended for use with passive authentication
In order to implement passive authentication for Microsoft Lync 2013 for Mobile users it is necessary to disable some of the other authentication methods supported by Lync 2013 Server. Lync 2013 Server offers a list of authentication methods to clients, and others methods take precedence over passive authentication. If you are not disabling these other methods they will be used to authenticate instead of passive authentication.
Table 2 shows the service type, server role and the authentication methods, which needs to be enabled and disabled for passive authentication for mobile users. Please note that these settings are NOT on a per user basis, but rather on a per pool basis. That means all users homed on a specific pool will use the settings.
Service Type
Server Role
Disabled Authentication Methods
Enabled Authentication Methods
Configuration cmdlet
WebServer
Lync Autodiscover
Kerberos and NTLM
Certificate and Passive Auth
Set-CsWebServiceConfiguration -Identity WebServer:<FQDN> -UseWindowsAuth None -UseCertificateAuth $true -UseWsFedPassiveAuth $true
Front End
Registrar
Certificate
Set-ProxyConfiguration -Identity Registrar:<FQDN> -UseKerberosForClientToProxyAuth $false -UseNtlmForClientToProxyAuth $false -UseCertificateForClientToProxyAuth $true
Table 2 Authentication Methods
Note1: The pool running the Lync Autodiscover service, i.e. the pool pointed to by lyncdiscover.<SIP domain> and lyncdiscoverinternal.<SIP domain>, authenticates the users based on its own authentication settings and not those of the users home pool. If there is a discrepancy between the authentication methods supported on the Lync Autodiscover pool and the user home pool, the sign in experience might be non-optimal and might not work. In such scenarios it is recommended to use manual discovery configuration for either the passive authentication users or for the default authentication users.
Note2: Table 2 does not list configuration of Registrar for Edge servers. This needed for passive authentication for Microsoft Lync 2013 desktop clients, but Edge is not used by the Microsoft Lync 2013 for Mobile clients.
The Microsoft Lync 2013 for Mobile clients contains the following functionality dependent on Microsoft Exchange:
The Microsoft Lync 2013 for Mobile clients does not support passive authentication against Microsoft Exchange, and therefore the device is not able to use Exchange Web Services (EWS) to connect to Microsoft Exchange and get information about meetings and voice mails. Unified Contact Store (UCS) continues to work, since the connection to Microsoft Exchange is happening via the Lync server.
It is recommend to set the AllowExchangeConnectivity parameter to $false in the CsMobilityPolicy for the passive authentication users. This will make sure that the meetings and voice mail environments are not shown on the device and that errors related to the failed communication to Microsoft Exchange are not shown on the device.
Haven discussed the sign in experience, topology requirements and Microsoft Exchange related features it is now time to explain how to configure passive authentication end-to-end. To illustrate this I will use a fictitious environment and in it I am using AD FS as the passive authentication provider.
For the purpose of explaining the configuration of passive authentication assume the lab configuration shown in Table 3.
Role
Internal FQDN
External FQDN
Reverse Proxy using ARR
rp-int.contoso.dk
rp-ext.contoso.dk
AD FS
sts2012r2-int.contoso.dk
sts2012r2-ext.contoso.dk (same IP address as rp-ext.contoso.dk)
Lync 2013 July 2013 or later CU pool
lync-int.contoso.dk
lync-ext.contoso.dk (Web Services FQDN – same IP address as rp-ext.contoso.dk)
Lync Discover running on Lync 2013 July 2013 or later CU pool
lync2-int.contoso.dk
lyncdiscover.contoso.dk (same IP address as rp-ext.contoso.dk)
Table 3 Servers in the environment
All users on lync-int.contoso.dk will be configured to use passive authentication.
For configuration of ARR as a reverse proxy for Lync Server 2013 please see this http://blogs.technet.com/b/nexthop/archive/2013/02/19/using-iis-arr-as-a-reverse-proxy-for-lync-server-2013.aspx. Remember to change port numbers before you click Add for the server.
Table 4 shows the Server Farms and Servers defined in ARR.
Server Farm
Servers
sts2012r2-ext.contoso.dk
lync-ext.contoso.dk
lyncdiscover.contoso.dk
Table 4 ARR Server Farms and Servers
Table 5 shows the DNS records in the internal and external DNS servers that has been configured in the environment.
FQDN
Internal DNS
External DNS
Contains the external IP address of Reverse Proxy
Contains the internal IP address of Reverse Proxy
N/A
Contains the internal IP address of lync-int.contoso.dk
lyncdiscoverinternal.contoso.dk
Contains the internal IP address of lync2-int.contoso.dk
Table 5 DNS records
The environment supports hair pinning, that is the ability of internal computers to access external available resources via the reverse proxy. As an example internal Lync servers can connect to the AD FS server using its external DNS record.
The environment has been configured with mutually trusted certificates containing the appropriate FQDN's as subject alternate names (SAN). The certificate used on the reverse proxy is from a public trusted root CA.
The AD FS server has been configured for base functionality and forms based authentication has been enabled. We need to configure AD FS to have a trust relationship with Lync Server 2013. This is done by creating a Relaying Party Trust and appropriate Issuance Authorization and Transform rules. Information about the trust partner is contained in the federation metadata document.
The trust relationship means that Lync will trust credentials coming from AD FS. AD FS could have obtained them from a number of authentication providers, but in this environment we use Active Directory as authentication provider via the AD FS forms authentication.
The following section describes how to configure Active Directory Federation Services to support passive authentication with Lync Server 2013.
$IssuanceAuthorizationRules = '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");'
$IssuanceTransformRules = '@RuleTemplate = "PassThroughClaims" @RuleName = "Sid" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]=> issue(claim = c);'
Add-ADFSRelyingPartyTrust -Name Lync-PassiveAuth -MetadataURL https://lync-int.contoso.dk/passiveauth/federationmetadata/2007-06/federationmetadata.xml
Set-ADFSRelyingPartyTrust -TargetName Lync-PassiveAuth -IssuanceAuthorizationRules $IssuanceAuthorizationRules
Set-ADFSRelyingPartyTrust -TargetName Lync-PassiveAuth -IssuanceTransformRules $IssuanceTransformRules
Add-ADFSRelyingPartyTrust -Name Lync-Ext-PassiveAuth -MetadataURL https://lync-ext.contoso.dk/passiveauth/federationmetadata/2007-06/federationmetadata.xml
Set-ADFSRelyingPartyTrust -TargetName Lync-Ext-PassiveAuth -IssuanceAuthorizationRules $IssuanceAuthorizationRules
Set-ADFSRelyingPartyTrust -TargetName Lync-Ext-PassiveAuth -IssuanceTransformRules $IssuanceTransformRules
The trust between AD FS and Lync has been created on the AD FS side. We now need to create it on the Lync side. This is done by using the following command:
New-CsWebServiceConfiguration -Identity webserver:lync-int.contoso.dk -WsFedPassiveMetadataUri https://sts2012r2-ext.contoso.dk/federationmetadata/2007-06/federationmetadata.xml
After the trust now has been established from both sides we need to set the required authentication methods as shown in Table 2. From the Lync Management Shell command-line interface issue the following commands:
Set-CsWebServiceConfiguration -Identity webserver:lync-int.contoso.dk -UseWsFedPassiveAuth $true -UseWindowsAuth none –UseCertificateAuth $true
New-CsProxyConfiguration -Identity registrar:lync-int.contoso.dk -UseKerberosForClientToProxyAuth $false -UseNtlmForClientToProxyAuth $false
Final server configuration element is to create the Mobility Policy disabling Exchange connectivity. From the Lync Management Shell command-line interface issue the following command:
New-CsMobilityPolicy -Identity PassiveAuthUsers -AllowExchangeConnectivity $false
Make sure your users are homed on lync-int.contoso.dk and then grant them the PassiveAuthUsers mobility policy. From the Lync Management Shell command-line interface issue the following command for all the relevant users:
Grant-CsMobilityPolicy -PolicyName PassiveAuthUsers -Identity <user>
The environment is now setup to support passive authentication. However since Lync Autodiscover points to a Lync pool, which has not been configured to support passive authentication, the users on lync-int.contoso.dk needs to manual configure the discovery address on the mobile device. The settings will be:
These addresses needs to be set in the Microsoft Lync 2013 for Mobile clients by clicking on more details on the home screen, setting auto-detect server to Off and entering the relevant addresses. The relevant fields are in Figure 1.
Figure 1 Manual Discovery configuration
In order to troubleshoot the passive authentication between Microsoft Lync 2013 for Mobile, AD FS and Lync Server 2013 the best starting point is looking at the https communication between the client and the servers.
You can use the Fiddler tool for this. The tool does not run on the mobile device, but by running it on a desktop or laptop in the network, you can look at the communication. You can use similar steps as the ones here for Windows Phone 7 to do it. Please understand that the only way to remove that certificate on Windows Phone 8 is to reset the mobile device.
You can also use the Lync 2013 desktop client and Fiddler on a desktop/laptop. You start Fiddler and the Lync client, enter the SIP URI of a passive authentication user and make sure to click 'Delete my sign-in info' before clicking 'Sign in'. Based on your environment you might need to manually configure the internal and external server names (to overcome the Lync Autodiscover issue mentioned earlier).
Some things to look at in the Fiddler trace related to sign in:
On the Lync server side the relevant trace component is WebInfrastructure.
In Lync 2013 we changed how we classify poor calls in QoE. The flag is called ClassifiedPoorCall and it is now available in the MediaLine table. It is moved here, because we now support classifying poor calls for audio, video and application sharing.
The conditions we use to classify poor calls are shown in the 3 tables below. The poor call flag is set if one or more the conditions are met. Please note that a record in the MediaLine table can cover multiple media streams. The flagging occurs on the MediaLine level, so if you want to understand specifically which stream was the reason for the classification you need to look at the individual streams and use the columns in the tables below.
Column in AudioStream Table
Condition
Explanation
DegradationAvg
> 1.0
Network MOS Degradation for the whole call. This metric shows the amount the Network MOS was reduced because of jitter and packet loss
RoundTrip
> 500
Round trip time
PacketLossRate
> 0.1
The packet loss rate
JitterInterArrival
> 30
Average network jitter
RatioConcealedSamplesAvg
> 0.07
Average ratio of concealed samples generated by audio healing to typical samples
Column in VideoStream Table
VideoPostFECPLR
The packet loss rate after forward error correction has been applied
VideoLocalFrameLossPercentageAvg
> 10
The percentage of total video frames that are lost
RecvFrameRateAverage
< 7
Average video frame rate used by the receiver
LowFrameRateCallPercent
Percentage of the call below the low frame rate threshold
VideoPacketLossRate
InboundVideoFrameRateAvg
The average video frame rate received during the call
OutboundVideoFrameRateAvg
The average video frame rate sent during the call
DynamicCapabilityPercent
Percentage of the call where the client experienced high CPU load when processing video
Column in AppSharingStream Table
SpoiledTilePercentTotal
> 36
This value is the percentage of the content from the sharer that did not reach the viewer. Content may be discarded (or spoiled) when the sharer discards tiles from the graphics source or the ASMCU tiles discards tiles from Sharer respectively.
RDPTileProcessingLatencyAverage
> 400
Acceptable value of the average RDP tile processing latency in the AS Conferencing Server over the duration of the viewing session
RelativeOneWayAverage
> 1.75
Optimal value for the relative one-way delay between the two media endpoints involved in the application sharing. This is a single-hop latency measure
In many scenarios you are interested in knowing how a given caller or callee was connected to the network, i.e. was it a wired or wireless connection. The information is contained in the columns CallerNetworkConnectionType and CalleeNetworkConnectionType in the MediaLine table. It is then easy to use those columns in your SQL queries. However you need to understand what values you can see in those columns and what they mean. To make it a bit more complex there are differences between the Lync 2010 and Lync 2013 QoE schemas on this point.
The Lync 2010 QoE Schema use NetworkConnectionType directly (I'll use this term to refer to both CallerNetworkConnectionType and CalleeNetworkConnectionType) and it can have the integer values 0 for wired and 1 for wireless. You can use those values directly in your SQL queries. For instance if you want to see all audio streams, where both caller and callee were connected via a wired connection, you can use a query like below:
SELECT
*
FROM [Session] s WITH (NOLOCK)
INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON
m.ConferenceDateTime = s.ConferenceDateTime
AND m.SessionSeq = s.SessionSeq
INNER JOIN [AudioStream] AS a WITH (NOLOCK) ON
a.MediaLineLabel = m.MediaLineLabel
and a.ConferenceDateTime = m.ConferenceDateTime
and a.SessionSeq = m.SessionSeq
WHERE
(m.CallerNetworkConnectionType = 0 and m.CalleeNetworkConnectionType = 0)
The Lync 2013 QoE Schema introduces a new table call NetworkConnectionDetail to store information about network connection type and the MediaLine columns for NetworkConnectionType are now indexes into this table. The actual network connection type values are stored as strings in the NetworkConnectionDetail column in the new table. Values you'll most likely see are 'wired', 'wifi' and 'Ethernet'. The 'Ethernet' string was introduced with Lync 2013. If you want to get the same list of wired audio streams in Lync 2013, you can use a query like below:
INNER JOIN [NetworkConnectionDetail] AS CallerNcd WITH (NOLOCK) ON
CallerNcd.NetworkConnectionDetailKey = m.CallerNetworkConnectionType
INNER JOIN [NetworkConnectionDetail] AS CalleeNcd WITH (NOLOCK) ON
CalleeNcd.NetworkConnectionDetailKey = m.CalleeNetworkConnectionType
CallerNcd.NetworkConnectionDetail in ('wired','Ethernet')
and CalleeNcd.NetworkConnectionDetail in ('wired','Ethernet')
So now alarm bells should be going off, when you read the above, because you'll ask yourself: will all my existing queries using the filter directly on the MediaLine columns (as above) have to be changed? Yes and No is the answer J
No, because if you are only testing on 0 and 1, the NetworkConnectionDetail table is pre-populated with two rows: index 0 = 'wired' and index 1 = 'wifi'. This is done for backwards compability reasons.
Yes, you'll have to change your queries, because the 'Ethernet' strings was introduced in Lync 2013 and many components use that to specify a wired connection. For portability between deployments it is also more correct to use the string comparison filter than filtering directly on index values.
In QoE we store information about sessions and different type of media streams, but how many of these do we store for a conference scenario?
Let me answer that question by using the following scenario:
How many sessions do this scenario generate in the QoE database? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:
SELECT s.ConferenceDateTime
,s.ConferenceKey
,CallerUser.URI as Caller
,CalleeUser.URI as Callee
FROM [QoEMetrics].[dbo].[Session] s WITH (NOLOCK)
INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON
CallerUser.UserKey = s.CallerURI
INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON
CalleeUser.UserKey = s.CalleeURI
WHERE s.ConferenceDateTime > '2013-07-11'
The select statement joins information from the Session and User tables. The result of this query is shown below. It shows 6 sessions: 1 session from each three participants to the AV MCU (conferencing server for audio and video) and 1 session from each three participants to the AS MCU (conferencing server for application sharing).
ConferenceDateTime
ConferenceKey
Caller
Callee
2013-07-11 07:49:25.387
1041
sip:tu26@contoso.dk
sip:tu14@contoso.dk;gruu;opaque=app:conf:audio-video:id:CYSNJBWB
2013-07-11 07:49:29.440
1042
sip:tu14@contoso.dk;gruu;opaque=app:conf:applicationsharing:id:CYSNJBWB
2013-07-11 07:49:37.437
sip:tu29@contoso.dk
2013-07-11 07:49:38.207
2013-07-11 07:49:40.640
sip:tu14@contoso.dk
2013-07-11 07:49:52.553
So how many audio streams do we have? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:
,a.SenderIsCallerPAI
The select statement joins information from the Session, MediaLine and AudioStream tables to give me the result shown below. It shows 6 audio streams. Two audio streams between each participant and the AV MCU: one from the user to the AV MCU and one from the AV MCU to the user (SendIsCallerPAI shows the direction).
SenderIsCallerPAI
How many application sharing streams do we have? To answer the question I use the following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store:
,ap.SenderIsCallerPAI
INNER JOIN [AppSharingStream] AS ap WITH (NOLOCK) ON
ap.MediaLineLabel = m.MediaLineLabel
and ap.ConferenceDateTime = m.ConferenceDateTime
and ap.SessionSeq = m.SessionSeq
The select statement joins information from the Session, MediaLine and AppSharingStream tables to give me the result shown below. It shows 6 app sharing streams. Two app sharing streams between each participant and the AS MCU: one from the user to the AS MCU and one from the AS MCU to the user (SendIsCallerPAI shows the direction).
How many video streams do we see? To answer the question I use following SQL query in SQL Management Studio connected to the QoEMetrics database in the Lync 2013 Monitoring Store would show it:
,v.SenderIsCallerPAI
�� AND m.SessionSeq = s.SessionSeq
INNER JOIN [VideoStream] AS v WITH (NOLOCK) ON
v.MediaLineLabel = m.MediaLineLabel
and v.ConferenceDateTime = m.ConferenceDateTime
and v.SessionSeq = m.SessionSeq
The select statement joins information from the Session, MediaLine and VideoStream tables to give me the result shown below. It shows 9 video streams. Three video streams between each participant and the AV MCU: one from the user to the AV MCU and one per conference attendee in the gallery view from the AV MCU to the user. In my case there was 2 attendees in the gallery view.
2013-07-11 07:50:25.387
2013-07-11 07:50:48.207
2013-07-11 07:50:50.640
Conclusion
In a conference there is a session from each participant to each media conferencing server being used (IM is not a real media conferencing server and therefore it is not generating a session). For each session there will be two or more media streams. For audio and application sharing you will always have two, but for video you can have more due to gallery view in Lync 2013 with up to five video streams and the panorama view video stream (for more information about the video streams see this post by Jeff Schertz).
We released the update yesterday and it is found here. Until now it has not been easy for an administrator to see if a given user had been migrated to UCS, but with the update we introduced the cmdlet Debug-CsUnifiedContactStore!
The cmdlet will show the UCS status for a given user or for all users on a pool. The user needs to be homed on a pool running the July update for the cmdlet to work, since it is using a new server based interface to get the status. An example of running the cmdlet is below:
Debug-CsUnifiedContactStore -Identity tu34@contoso.dk
UcsMigrationAttemptCount LastUcsMigrationAttempt SipUri UcsMode
------------------------ ----------------------- ------ -------
2 3/20/2013 1:00:00 PM tu34@contoso.dk Migrated
The cmdlet shows how many attempts have been made to migrate the user, when the last attempt was made, the SIP URI of the user and the UcsMode of the user. UcsMode can have the values:
You can also use it to see the general UCS status for all users on a given pool. An example of this is shown below:
Debug-CsUnifiedContactStore -PoolFqdn pool.contoso.dk
FrontEnd : pool.contoso.dk
UcsDisabledCount : 8
UcsAllowedCount : 0
UcsMigratingCount : 0
UcsMigratedCount : 2
FailedUserData :
You can also use the cmdlet to export the UCS contacts for a migrated user by using –ContactDataExportFileName. The cmdlet will read the UCS contacts from Exchange 2013 and save them in the ZIP file used as parameter.
PS C:\> Debug-CsUnifiedContactStore -Identity tu34@contoso.dk –ContactDataExportFileName c:\ucs1.zip
The ZIP file contains two files as shown in the picture below. The actual contacts are stored in an XML format in the file DocItemSet.xml.
Sasa and I presented this session at TechEd 2013 in Madrid. In the deck we show the results of running 3 custom SQL queries against the QoE data. The query from slide 44 (Individual Poor Streams Wired to MS and AVMCU per Subnet v13.txt) and the query from slide 49 (Individual Poor Streams Wireless to MS and AVMCU per Subnet v13.txt) are attached to this post in the queries.zip file. The trending query from slide 48 is discussed in this post.
The queries are sample queries, comes "as-is" and I'm not providing any support for them.
Each query is its own text file. You run one of the queries by copying all the text from the query text file into a New Query window inside SQL Management Studio connected to your QoE database. You then change the @beginTime and @endTime to suit your requirements and execute the query.
Please consider the impact running these queries might have in your environment depending on your amount of QoE data and the date range you select.
The queries are developed based on the Lync 2013 QoE Schema.
(Queries updated Sep 11, 2013 to be in line with http://blogs.technet.com/b/jenstr/archive/2013/09/11/how-to-determine-network-connection-type-in-qoe-queries.aspx)
When you start working with device information in QoE you might find that there is an issue around the naming of devices.
The different Lync client reports the name of the device used for capture and rendering in the QoE report sent to the Monitoring Server. However the name is based on the device name in the operating system. That name might contain localized text and different ordinals based on which USB port the device was connected to on the device. This means that you might end up having a number of different devices seen in QoE, but they are actually all the same type of device.
To illustrate the issue let us assume that you would like to know the AvgSendListenMOS value for all devices over all audio streams in a period of time. You create the necessary SQL query against QoE data and it output something like the sample shown in Table 1.
CaptureDeviceName
AvgSendListenMOS
NumStreams
Auscultadores com Microfone (4- GN 2000 USB OC)
4,475555
36
GN 2000 USB OC
4,03525
40
Headset Microphone (12- GN 2000 USB OC)
3,661666
Headset Microphone (2- GN 2000 USB OC)
3,896413
92
Headset Microphone (3- GN 2000 USB OC)
3,815769
26
Headset Microphone (4- GN 2000 USB OC)
4,063571
14
Headset Microphone (5- GN 2000 USB OC)
3,9172
50
Headset Microphone (6- GN 2000 USB OC)
3,9996
25
Headset Microphone (GN 2000 USB OC)
3,974421
95
Headset Microphone(GN 2000 USB OC)
3,83
Kopfhörermikrofon (2- GN 2000 USB OC)
4,253333
9
Kopfhörermikrofon (GN 2000 USB OC)
1,695862
58
Microphone sur casque (14- GN 2000 USB OC)
4,02
Microphone sur casque (4- GN 2000 USB OC)
4,45
Microphone sur casque (8- GN 2000 USB OC)
4,26
Microphone sur casque (9- GN 2000 USB OC)
4,445
Table 1. Example of different device names in QoE data
You can see that all these streams actually used the same device, GN 2000 USB OC, but viewed from QoE they are different because of the naming. So how can this be changed to report on just the specific devices?
In this post I'm suggesting a solution based on a PowerShell script to extract the specific device names from the QoE data and store them in a SQL table called TrimDeviceNames in a database called QoEMetricsUtil. You can then use the TrimDeviceNames SQL table in your queries.
The solution use a database called QoEMetricsUtil. You have to create that database before running the PowerShell script.
The attached DeviceQuality.ZIP file contains the TrimDeviceNamesV10.ps1 PowerShell script and it does the following:
As new devices are being used in your deployment you will have to re-run the script to pick-up the new specific device names.
The script has the following mandatory parameters:
An example of running the script is: TrimDeviceNamesV10.ps1 -SqlServerForQoE sql1 -SqlServerInstanceForQoE rtc -SqlServerForQoEMetricsUtil sql1 -SqlServerInstanceForQoEMetricsUtil rtc
You need to run it with an account having appropriate permissions to the Lync monitoring database and to the QoEMetricsUtil database.
In your device related queries against QoE data you can now use the TrimDeviceNames table. The way the specific device name is extracted assumes that the resulting device name is a sub-string of the original device name. Based on this assumption you can use sub-string matches to join TrimDeviceNames on CallerCaptureDeviceName and CalleeCaptureDeviceName.
The output shown in Table 1 was generated by a query reporting AvgSendListenMOS value for all devices over all audio streams in a period of time. I have changed that query to use the TrimDeviceName table. An example of the output of running this changed query is shown Table 2
3,728042
470
Table 2. Example of output from DeviceQualityNormalizedV13.txt using TrimDeviceNames table
You can see that there is now just one device name row for GN 2000 USB OC and it covers all audio streams using that type of device.
The full query is attached in the DeviceQuality.zip file in the file DeviceQualityNormalizedV13.txt. You run the query by copying all the text from the file into a New Query window inside SQL Management Studio connected to your QoE database. You then change the @beginTime and @endTime to suit your requirements and execute the query.
This is not solution, which will cover all device names out there. The string extraction logic in the PowerShell script is built around the assumption that the specific device name is contained within parentheses in the device name (as shown in Table 1 for GN 2000 USB OC). The logic will most likely need to be changed based on the actual devices used in your Lync deployment. I have only tested with a limited set of device names and there are other string combinations out there. My recommendation is to run the PowerShell script once, and then examine all the resulting rows in the TrimDeviceNames table. If any of them look odd then you have to change the logic in the script to handle that kind of string as well.
The query expects the QoEMetricsUtil database to be in the same SQL instance as the monitoring server database.
The use of sub-string matches might not cover all device names used in your deployment. If the sub-string match does not work for a device name any streams using that device will not appear in the query output.
The PowerShell script has no built-in error handling.
Please consider the impact, running the script and query, might have in your environment depending on your amount of QoE data and the date range you select.
The query is developed against the Lync 2013 QoE schema.
The script and query are sample, comes "as-is" and I'm not providing any support for them.
Thanks to Henk.
In this I discussed how to view network health trends using QoE data. In this post I'll describe some queries you can use to help you diagnose where you might have network health issues in your Lync deployment.
The first query is the Streams Statistics query. The query will tell you the maximum, standard deviation and average for PacketLossRate and PacketLossRateMax across all your audio streams. This will give you an idea where the health is compared to the poor streams definition of packet loss rate over 1 percent and a maximum packet loss rate over 5 percent. An example of the output of the query is shown in Table 1.
NumberOf
Streams
Numberof
PoorStreams
ClassifiedPoorCalls
Max
Std
Avg
PacketLossRateMax
134
52
0.3421
0,050488
0.027311
0.9988
0,340357
0.236500
Table 1. Sample output from Streams Statistics query
Next you'll probably want to dive into the different media paths to investigate where the poor streams are coming from. I'll use the media path between conferencing and mediation servers in the following examples.
To understand more about the streams between conferencing and mediation servers you can use the Poor Streams between Conferencing and Mediation Servers query. The query will tell you per day the number of streams, number of poor streams and the poor streams ratio for all streams between conferencing and mediation servers. An example of the output of the query is shown in Table 2.
ReportDate
AVMCU
MS
AllStreams
PoorStreamsRatio
08-05-2013
FE1
234
22
9.4
09-05-2013
FE2
FE3
386
158
40.9
10-05-2013
FE5
MS3
428
80
18.7
11-05-2013
FE4
MS2
784
56
7.1
Table 2. Sample output from Poor Streams between Conferencing and Mediation Servers query.
Having seen the different pairs of servers you might want to dive into the individual streams between two specific conferencing and mediation server, i.e. between FE2 and FE3 in the example on Table 2. To do that you can use the Individual Poor Streams between Two Servers query. The query will list a number of media related values from all streams between the two servers you specify in the query.
Conference
DateTime
Duration
InSeconds
Server
PacketLoss
Rate
RateMax
JitterInter
Arrival
ArrivalMax
Round
Trip
TripMax
Degradation
RatioConcealed
SamplesAvg
Packet
Utilization
Burst
Density
IsPoor
Stream
Classified
PoorCall
17-05-2013
12
0.0538
0.6453
19
0.07
0.00
187
0.0000
0.0040
0.0045
17
NULL
53
Table 3. Sample output from Individual Poor Streams between Two Servers
I hope that you based on these sample queries can develop your own diagnostics queries to gain further understanding of potential causes of poor network health.
The queries are located in the attached DiagnosticsQueries.Zip file. The queries are sample queries, comes "as-is" and I'm not providing any support for them.
Each query is in its own text file. You run one of the queries by copying all the text from the query text file into a New Query window inside SQL Management Studio connected to your QoE database. You then change the @beginTime and @endTime to suit your requirements and execute the query. For the query between two servers you need to replace the placeholder server name with the real names from your deployment in capital letters.
It is not possible to run multiple of the queries in the same Query window in SQL Management Studio.
Queries are developed using the Lync 2013 QoE schema.
(Updated queries Sep 11, 2013 to be in line with http://blogs.technet.com/b/jenstr/archive/2013/09/11/how-to-determine-network-connection-type-in-qoe-queries.aspx)
In the newly published Networking Guide the authors, in Appendix B, discuss using custom queries against QoE data to manage audio call quality. They introduce the concepts of server-server reports, which present the network health of network paths between various types of Lync media servers, and subnet reports, which present the network health of network paths between Lync desktop clients and various types of Lync media servers.
The network health is expressed by the number of poor audio streams, where a poor stream is defined as having a packet loss rate over 1 percent and a maximum packet loss rate over 5 percent. For a discussion on why to use these values (and not the ClassifiedPoorCall values) please see the section B.4.4 in the Networking Guide.
In this blog post I'm reusing the reports (or queries) they introduce, but have modified them a bit. I wanted to have queries, which would allow me to show how the network health is trending day-over-day for media paths between additional types of end-points. The idea is to run these queries regularly while any network health problems are remediated and then hopefully see the resulting downward trend for poor streams.
The media paths from the Network Guide are:
I wanted to include these additional media paths:
Having described which media paths are interesting let us look at the queries themselves.
The queries are built in the same way as in the Networking Guide, i.e. with INNER JOIN's, temporary views and audio streams from Caller and Callee.
The queries all display the same type of information: date, number of streams, the number of poor streams and the ratio of poor streams to total streams. An example is shown in Table 1 below.
QueryType
100.0
Trending Poor Streams between AVMCU and Mediation Server
0.0
Table 1. Sample output
The elements that varies from query to query is the type of media end-point, how the end-point is connected to the network and the location of these end-points. I'm varying over 3 variables:
As an example let us look at the scenario where users are dialing in to audio conferences from PSTN or the audio conference dials out to PSTN users. This scenario involves conferencing servers talking to mediation servers. How can that be expressed using the 3 variables above?
The UAType for conferencing servers is 2 and for mediation servers it is 1. I assume that all conferencing and mediation servers are connected to the network using a wired connection, and that they are all placed inside on the corporate network. This gives us a query using the 3 variables which would look the following way in pseudo-code
Having described the different media paths, the UAType, network connection type and location it is now time to combine these into queries. When I created the queries I wanted to separate inside and outside streams, since typically outside or external streams would be using networks outside the control of the company. I also wanted to separate wired from wireless streams, because typically wireless streams provides worse quality than wired streams. I wanted to separate person-to-person calls, but have combined several of the streams to other server type media end-points into the same query.
Table 2 shows the different queries and the media path, end-point, network connection and location they cover for both Caller and Callee.
Query
Media path
From
To
UAType
Network Connection
Location
Between conferencing servers and mediation servers
2 (AVMCU)
Wired
Inside
1 (MS)
Trending Poor Streams between Mediation Server and Gateway
Between mediation servers and IP PSTN gateways
32769 (GWY)
Trending Poor Streams External
External users talking to internal or external end-points
External Client UA Types
Outside
Trending Poor Streams Wired Subnets
Between internal Lync desktop users and conferencing and mediation servers using a wired connection
Wired Client UA Types
1 (MS), 2 (AVMCU)
Trending Poor Streams Wireless Subnets
Between internal users using a wireless connection talking to conferencing and mediation servers
Wireless Client UA Types
Wireless
Trending Poor Streams Wired P2P
Internal users talking to each other both using a wired connection
Trending Poor Streams Wireless P2P
Internal users talking to each other both using a wireless connection
Trending Poor Streams Wired Other
Wired users talking to wireless users + other wired streams
Other Server UA Types
2 (AVMCU), 1 (MS)
NULL UA Types
Trending Poor Streams Wireless Other
Wireless users talking to wired users + other wireless streams
Total
All
Wired or Wireless
Inside or Outside
Table 2. Query definitions
The UAType groups I am using above are defined in Table 3 below.
UAType Group
UACategory
OC, OCPHONE, LMC, Mac Messenger, ATTENDANT, LYNCIMM, LWA, UCWA
4, 8, 16, 64, 128, 16403, 16405, 16411
OC, LMC, Mac Messenger, ATTENDANT, WPLync, iPhoneLync, AndroidLync, iPadLync, NokiaLync, LYNCIMM, LWA, UCWA
4, 16, 64, 128, 16398, 16399, 16400, 16401, 16402, 16403, 16405, 16411
OC, OCPHONE, LMC, Mac Messenger, ATTENDANT, WPLync, iPhoneLync, AndroidLync, iPadLync, NokiaLync, LYNCIMM,LWA, UCWA
4, 8, 16, 64, 128, 16398, 16399, 16400, 16401, 16402, 16403, 16405, 16411
VPN Client UA Types
OC, LMC, ATTENDANT, LYNCIMM, LWA, UCWA
4, 16, 128, 16403, 16405, 16411
CAS, CAA, RGS, CPS, RGS AS, ExUM
256, 512, 1024, 1032, 1040, 16393
NULL UA Types (examples seen at customer sites)
LifeSize Room, Polycom HDX, Polycom RMX, MCX Service, ATS, CAS/CAA Non English, WLM, Lync Meeting Room
Table 3. UAType groups
The queries are located in the attached TrendQueries.Zip file. The queries are sample queries, comes "as-is" and I'm not providing any support for them.
I hope you can use the queries to get an understanding of your network health expressed by the packet loss rate and max packet loss rate experienced during Lync audio calls.
As can be seen from Table 2 above the queries all utilize the location and connection type. For some audio streams these columns can contain NULL values. In order to make sure that the Total query is the actual sum of the other queries, it only reports streams, where these columns have the values used by the other queries. That means streams with NULL values for location and connection type are not surfaced by the queries.
The queries are not handling streams over VPN separately.
The queries are developed using the Lync 2013 QoE Schema.
(Updated Sep 11, 2013 to be in line with http://blogs.technet.com/b/jenstr/archive/2013/09/11/how-to-determine-network-connection-type-in-qoe-queries.aspx)
In this post we announced the Skype-Lync connectivity. One of the screenshots in the post shows adding the Skype contact in the Lync 2013 client using Add a Contact Not in My Organization .
In the fly-out Skype is listed with the Skype logo. The Lync client get the list via in-band provisioning from the server based on the enabled public providers. To add Skype to the list issue the following commands on the Lync server in Lync 2013 Lync Server Management Shell:
Wait for CMS replication and sign out and in again in the Lync client. Skype should now be in the list.
Update 9-AUG-2013: Lync 2013 clients connecting to Lync 2010 servers will not show Skype in the add contact drop-down list. This is caused by Lync 2010 server not supporting the in-band provisioning group sending the list of public providers to the client.
When you are participating in a Lync meeting with 75 and more participants the experience will change to optimize the experience. The client will remove the participant list (roster), the gallery view will not be available and IM errors will not be displayed. The client will display the notification shown below.
In the title line of the conference window we will show the number of participants in the meeting. The presenters in the meeting will still get the participant list, such that they can take actions on the attendees.
We will not re-instate the normal user experience, even if the number of participants drops below 75. The experience will stay the same until the conference has ended.
The above change in user experience is not directly related to large meeting support in Lync 2013. It happens regardless of large meeting being enabled in the conferencing policy.
When I participate in Lync Meetings, I often hear the above sentence, when someone is presenting a PPT deck, the whiteboard, their desktop or a program. However, there is really no need for this, since the presenter (and the rest of the people in the meeting) can see from the roster or participant list, who can see the content. The color of the icon represents the modality status of the participant:
In Figure 1 below the first participant is currently sending both audio and content, but has not started video. The second participant is connected to audio and content, but has muted the microphone. The third and fourth participant are connected to both audio and content. However the fifth participant is connected to audio, but is not connected to the content.
Figure 1 Modality Status
You might have the situation that you are receiving Lync Meeting invites from federated partners using Exchange 2013 and Lync 2013, but when Outlook 2013 or OWA 2013 CU1 brings up the reminder dialog for the meeting, the Join button is missing. Outlook and OWA will show the Join button based on the existence of the MAPI property OnlineMeetingExternalLink on the calendar item representing the meeting in the attendee's mailbox.
It is the Lync Meeting Outlook add-in used by the organizer of the meeting, which sets the property on the meeting invite, before it is sent. However the MAPI property might be stripped from the message, when it is sent from the organizers Exchange 2013 environment to your, i.e. the meeting attendee, Exchange 2013 environment. You need to ensure that in the organizer's Exchange 2013 environment, the remote domain matching your Exchange 2013 environment, has the parameter TNEFEnabled set to True (http://technet.microsoft.com/en-us/library/bb232174.aspx#External). When TNEFEnabled is set to true Exchange 2013 does not strip MAPI properties including OnlineMeetingExternalLink and the Join button will be shown on the reminder.
Let us assume that the SMTP domain of the attendee is contoso.com. In the organizer's Exchange 2013 environment it is necessary to create a remote domain with TNEFEnabled = True representing contoso.com. One way of doing it is by using the following commands in Exchange Management Shell:
One of the new features in Exchange 2013 CU1 is support for creation of Online Meetings in Outlook Web App (OWA). When you create a new event in OWA you can click on Online meeting, and the meeting is created as an Online meeting. You can also update an existing event to be an Online meeting. See Figure 1 for a screenshot showing the Online meeting button.
Figure 1 Creating an Online Meeting
In order for this feature to work, the following needs to be in place:
OWA use the Unified Communications Web API (UCWA) interface to create the Online Meeting. When OWA boots, and whenever you create a new event in Calendar tab, OWA checks, if UCWA is enabled for the user. OWA uses the Lync Autodiscover service to find the user's pool and the UCWA Url. If UCWA is enabled (happens automatically if the user is homed on a Lync 2013 pool) OWA shows the Online meeting button.
The communication between OWA and Lync happens via Server to Server OAuth (S2SOAuth).
When the Online meeting button is clicked, OWA is creating the Online Meeting. It sets the parameters used for the meeting based on the relevant CsMeetingConfiguration setting (Global, Site or Service scope) in Lync 2013. The parameters used are:
In addition to these parameters, it creates the meeting with the options that all company employees joins as presenters and bypass the lobby.
You are able to join the Online Meeting from the OWA calendar peek via the Join button (see Figure 2). You can also join from the Calendar read form (see Figure 3).
Figure 2 Calendar peek with Join button
Figure 3 Calendar read form with the Join button
Let me show how to configure the integration. I will use the following sample environment to illustrate the configuration:
Configure the Exchange 2013 Autodiscover service to be available on the FQDN autodiscover.contoso.com. Use the following Exchange Management Shell command on e15fe.contoso.com.
Get-ClientAccessServer | Set-ClientAccessServer -AutoDiscoverServiceInternalUri https://autodiscover.contoso.com/autodiscover/autodiscover.xml
We now need to configure the Exchange 2013 side of things. Use the following Exchange Management Shell commands:
We now configure the Lync side of things. Use the following Lync Server Management Shell commands:
We now configure the Lync meeting configuration for the pool. Use the following Lync Server Management Shell commands:
In situations, where the Online meeting button does not appear or the creation of the Online meeting fails, the administrator will have to enable logging in OWA to get diagnostic information about the potential issues. Logging is enabled by editing the web.config file in C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa on the Exchange 2013 CU1 mailbox server and changing the line <add key="OWAIsLoggingEnabled" value="false" /> to <add key="OWAIsLoggingEnabled" value="true" />. After saving the changed web.config, recycle the MSEXchangeOWAAppPool in IIS Manager for OWA to pick up the change. OWA will now log information to log files in the directory C:\Program Files\Microsoft\Exchange Server\V15\Logging\OWA\server\.
Ask the user to repro the problem and examine the log file in the directory above. Look for lines with the keywords GetUcwaUserConfiguration and CreateOnlineMeeting and timestamps matching the repro. Hopefully he information in the log file can point to the root cause of the issue.
Office Web Apps Server 2013 provides the ability to create a farm with one or more machines in it. Recently I had to create a farm with two machines, and it took a little bit to get my head around how to do it. Here is how I ended up doing it
I had the following environment:
On wac1.contoso.dk
I did the following steps:
On wac2.contoso.dk
The tricky part to get right was the last command. You have to run it on the machine you wish to join to the farm, and you have to reference an existing machine in the farm. It needs the reference to be able to read the farm settings.
We have made an update available for the Office Web Apps Server 2013 (used by Lync 2013 for PowerPoint presentations). The update is from March 12, 2013, and is available at http://support.microsoft.com/kb/2760445. It is important that you follow our guidance on how to install the update. The guidance is available at http://technet.microsoft.com/en-us/library/jj966220.aspx.