<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jens Trier Rasmussen</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jenstr/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jenstr/feed.xml</link>
    <description>The odd bit of information about Skype for Business Server 2015, Lync Server 2013, Lync 2010, Exchange 2016, Exchange 2013, SharePoint Server 2013, Exchange 2010 SP1, OCS 2007 R2, Exchange 2010 and OC 2007 R2</description>
    <lastBuildDate>Tue, 27 Jun 2017 19:17:01 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Displaying Network and Building Information in Call Quality Dashboard (CQD) Online</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/displaying-network-and-building-information-in-call-quality-dashboard-cqd-online</link>
      <pubDate>Mon, 15 Feb 2016 05:53:00 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2016/02/15/displaying-network-and-building-information-in-call-quality-dashboard-cqd-online/</guid>
      <description><![CDATA[In this link we describe the schema for network and building information and how to upload it to CQD...]]></description>
      <content:encoded><![CDATA[<p>In <a title="this" href="https://support.office.com/en-us/article/Turning-on-and-using-Call-Quality-Dashboard-in-Skype-for-Business-Online-553fa13c-92d2-4d5c-a3d5-41a073cb047c?ui=en-US&amp;rs=en-US&amp;ad=USthis">this </a>link we describe the schema for network and building information and how to upload it to CQD Online. In this post I wanted to include a file with some sample information and add some additional information.</p>
<p>In an on-premises Lync/Skype for Business deployment, the clients can be internal or external depending on whether they connect via the Edge or not. The location is written to the quality report sent by the clients and can be used when querying QoEMetrics and CQD. However in an Skype for Business Online deployments all clients are by definition external, since they all connect via the Edge. That has the implication that all clients by default are seen as Outside in CQD Online, no matter if the client was actually connected on an internal corporate network.</p>
<p>When you work with call quality you are interested in knowing the location of a client and whether it was using a network you can manage or a network you can&#39;t manage. The assumption being that you can only improve networks you can manage. By uploading network and building information to CQD Online you can enable CQD to determine, if the client was connect to an internal corporate/managed network or to an external/unmanaged network.</p>
<p>CQD use the Network and the NetworkRange to correlate the Lync/Skype for Business clients IP address to a network. When the clients sends it quality report (VQReport) to the server, it contains the actual IP address and subnet mask in use. CQD takes these two, calculates the subnet&nbsp;and correlates it to networks by using Network and the NetworkRange. The NetworkRange is expressed using CIDR. For example if the clients IP address is 10.1.1.15, CQD will be able to correlate that to the&nbsp;Lyngby Office&nbsp;network given the sample attached. You would also be able to see that this would fall in the Inside bucket, since the Lyngby Office network has InsideCorp = 1. Please note that&nbsp;if you use supernetting, you will have to specify Network and NetworkRange as your clients are configured, i.e. if you use 10.1.0.0/16 as a supernet, but your clients see 10.1.1.0/24 you need to have a record for 10.1.1.0/24 in your building information.</p>
<p>The file format is a tab separated text file (TSV) as described in the link above. The easiest way to generate the file is to use Excel. You can add a header line with the fields from the schema and then just add rows with the information. When you&#39;re done, save the information as &quot;Text (tab delimited)&quot; and using the extension *.tsv from within Excel. Remember to remove the header line from the resulting file before you upload it to CQD.</p>
<p>When you upload the network information you specify a date range. You can look at the&nbsp;date range as the validity period of the network information.</p>
<p>CQD will start processing the information as soon as the upload happens. You can monitor the progress by using the Tenant Health option on the gear icon. This will show you how far CQD has come in the processing. An example is shown below</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Tenant%20Health.GIF" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Tenant-Health.GIF"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Tenant%20Health.GIF" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Tenant-Health.GIF" border="0" /></a></p>
<p>To validate that CQD has used the uploaded information, look at the Server-Client Summary Report. You should now see information in the Wired Inside and/or Wifi Inside categories, as shown in the example below:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Inside%20Wired.GIF" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Inside-Wired.GIF"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Inside%20Wired.GIF" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Inside-Wired.GIF" border="0" /></a>&nbsp;</p>
<p>Thanks to Sasa and the CQD team for&nbsp;background information.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/6041/00/00/03/66/04/11/Building_and_Network_Sample.tsv" original-url="http://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-6041-00-00-03-66-04-11/Building_5F00_and_5F00_Network_5F00_Sample.tsv">Building_and_Network_Sample.tsv</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Looking at VbSS video streams in QoE</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/looking-at-vbss-video-streams-in-qoe</link>
      <pubDate>Wed, 06 Jan 2016 06:12:09 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2016/01/06/looking-at-vbss-video-streams-in-qoe/</guid>
      <description><![CDATA[In Skype for Business 2016 we introduced Video based Screen Sharing (VbSS) for peer-to-peer calls....]]></description>
      <content:encoded><![CDATA[<p>In Skype for Business 2016 we introduced Video based Screen Sharing (VbSS) for peer-to-peer calls. MVP Jeff Schertz has a good post on the technical details <a title="here" href="http://blog.schertz.name/2015/10/video-based-screen-sharing-in-skype-for-business/" target="_blank">here</a>.</p>
<p>As implied by the name, the screen sharing flows via video streams, but how is it possible to distinguish these streams from &quot;normal&quot; video streams, when analyzing quality in QoE? It&#39;s easy. In Skype for Business Server 2015 we have introduced the MediaLineLabel = 16 to specify that this&nbsp;is a VbSS stream. In Lync Server 2013 these streams will have MediaLineLabel = 3 and be found in AppSharingStreams.</p>
<p>An example&nbsp;of looking at these streams&nbsp;using an SQL query&nbsp;against Skype for Business Server 2015 QoEMetrics database is below:</p>
<p><span style="font-family:courier new,courier;">USE QoEMetrics;</span></p>
<p><span style="font-family:courier new,courier;">DECLARE @beginTime AS DateTime = &#39;1/1/2015&#39;;</span><br /><span style="font-family:courier new,courier;">DECLARE @endTime&nbsp;&nbsp; AS DateTime = &#39;12/31/2015&#39;; </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="font-family:courier new,courier;">&nbsp;SELECT </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;s.StartTime as StartTime</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,CallerUser.URI as Caller</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,CalleeUser.URI as Callee</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.PacketUtilization</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.VideoAllocateBWAvg </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.InboundVideoFrameRateAvg</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.OutboundVideoFrameRateAvg</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.SendBitRateAverage </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.SendBitRateMaximum</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.RecvBitRateAverage </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.RecvBitRateMaximum </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.VideoPacketLossRate</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,vs.SenderIsCallerPAI</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,m.ClassifiedPoorCall</span></p>
<p><span style="font-family:courier new,courier;">&nbsp;FROM [Session] s WITH (NOLOCK)</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;INNER JOIN [MediaLine] AS m WITH (NOLOCK) ON </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;m.ConferenceDateTime = s.ConferenceDateTime</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;AND m.SessionSeq = s.SessionSeq&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;INNER JOIN [VideoStream] AS vs WITH (NOLOCK) ON</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;vs.MediaLineLabel = m.MediaLineLabel&nbsp;&nbsp;&nbsp; </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;and vs.ConferenceDateTime = m.ConferenceDateTime </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;and vs.SessionSeq = m.SessionSeq</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;INNER JOIN [User] AS CallerUser WITH (NOLOCK) ON</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;CallerUser.UserKey = s.CallerURI </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;INNER JOIN [User] AS CalleeUser WITH (NOLOCK) ON</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;CalleeUser.UserKey = s.CalleeURI&nbsp;</span><br /><span style="font-family:courier new,courier;">&nbsp;WHERE</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;s.StartTime &gt;= (@beginTime) and s.StartTime &lt; (@endTime) </span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;and m.MediaLineLabel = &#39;16&#39;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange 2016 OWA IM Integration to Skype for Business &amp; Lync</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/exchange-2016-owa-im-integration-to-skype-for-business-lync</link>
      <pubDate>Tue, 27 Oct 2015 01:48:50 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/10/27/exchange-2016-owa-im-integration-to-skype-for-business-lync/</guid>
      <description><![CDATA[In Exchange 2013 you have to edit the OWA web.config file to add the IM server and certificate that...]]></description>
      <content:encoded><![CDATA[<p>In Exchange 2013 you have to edit the OWA web.config file to add the IM server and certificate that Exchange should use to connect to Skype for Business 2013 or Lync 2013. Exchange 2016 has changed how this is&nbsp;configured. Now you have to configure override settings for it and they are now stored in Active Directory. The advantage is that you don&#39;t have to go to each Exchange server to edit the OWA web.config and the settings are preserved over upgrades/updates.</p>
<p>You use the <span style="font-family:courier new,courier;">New-SettingOverride</span> cmdlet and specify one for IMServerName and one for IMCertificateThumbprint. When you have multiple Exchange servers using different certificates to talk to Skype for Business/Lync you need a pair for each server. Below you&#39;ll find an example for 2 Exchange servers called mbx1 and mbx2. They both connect to the Skype for Business 2015 pool sfbpool1.contoso.dk.</p>
<p><span style="font-family:courier new,courier;">New-SettingOverride SetIMServerNameMbx1 -Server mbx1 -Component OwaServer -Section IMSettings -Parameters @(&#39;IMServerName=sfbpool1.contoso.dk&#39;) -Reason &quot;OWA IM config&quot;</span><br /><span style="font-family:courier new,courier;">New-SettingOverride SetIMCertificateThumbprintMbx1 -Server mbx1 -Component OwaServer -Section IMSettings -Parameters @(&#39;IMCertificateThumbprint=F61D1F3922260B58C2AD779B7C6DDCAA69ECEC0F&#39;) -Reason &quot;OWA IM Config&quot;</span><br /><span style="font-family:courier new,courier;">New-SettingOverride SetIMServerNameMbx2 -Component OwaServer -Section IMSettings -Parameters @(&#39;IMServerName=sfbpool1.contoso.dk&#39;) -Reason &quot;OWA IM config&quot;</span><br /><span style="font-family:courier new,courier;">New-SettingOverride SetIMCertificateThumbprintMbx2 -Component OwaServer -Section IMSettings -Parameters @(&#39;IMCertificateThumbprint=A3B4AD7A6E5A21D05EFB1710A2788312C5BD2223&#39;) -Reason &quot;OWA IM config&quot;</span></p>
<p>Please note that it is only the use of OWA web.config that has changed in Exchange 2016. You still need to configure OWAMailboxPolicy and OWAVirtualDirectory as in Exchange 2013.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Call Quality Methodology Scorecard for Skype for Business Server V1.5</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/microsoft-call-quality-methodology-scorecard-for-skype-for-business-server-v1-5</link>
      <pubDate>Mon, 01 Jun 2015 00:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/06/01/microsoft-call-quality-methodology-scorecard-for-skype-for-business-server-v1-5/</guid>
      <description><![CDATA[Last week we released the new version of Call Quality Methodology (CQM). It is available here....]]></description>
      <content:encoded><![CDATA[<p>Last week we released the new version of Call Quality Methodology (CQM). It is available <a href="http://download.microsoft.com/download/4/3/2/43252959-AA20-4C3C-819D-55A64F49EFB3/Microsoft%20Call%20Quality%20Methodology.zip">here</a>. Please give it a try!</p>
<p>We have updated both the Call Quality Methodology and the Scorecard. The updated methodology and the documentation for the Scorecard have been combined into a single Word document (Microsoft Call Quality Methodology.docx in the Documentation folder) and the complete package of PS scripts, SQL queries, Microsoft Excel Macro-Enabled Workbook and Documentation is shipping as single ZIP file.</p>
<p>The methodology has been updated:</p>
<ul style="margin-left:56pt;">
<li>New poor stream condition</li>
<li>New suggested targets</li>
</ul>
<p>In the CQM Scorecard we have fixed a few bugs and added a number of new features including:</p>
<ul style="margin-left:54pt;">
<li>
<div>Added support for Skype for Business Server 2015</div>
<ul>
<li>We support the Skype for Business Server LcsCDR and QoEMetrics schemas</li>
</ul>
</li>
<li>
<div>Added dial-tone and completed session Reliability charts and Scorecard elements</div>
<ul>
<li>This enables customers not only to look at audio quality, but also to see how reliable their Lync/Skype for Business deployment is</li>
<li>The data is coming from call detail records in LcsCDR</li>
</ul>
</li>
<li>
<div>Changed the default poor stream condition to be ClassifiedPoorCall</div>
<ul>
<li>This is the same definition used by Lync 2013/Skype for Business 2015 and <a href="http://www.microsoft.com/en-us/download/details.aspx?id=46916">Call Quality Dashboard</a></li>
<li>Using the same default definition allows for better comparison between the different tools and limits potential confusion over different results</li>
<li>We continue to offer the option to use the CQM V1.4 poor stream definition and to use a complete custom definition</li>
</ul>
</li>
<li>
<div>Displaying the Rate My Call chart for a given scenario next to the poor stream ratio chart</div>
<ul>
<li>This allows the administrator to correlate the poor stream ratio numbers to the subjective user feedback</li>
<li>It enables the administrator to take the user feedback into consideration, when deciding on which areas to focus on for troubleshooting</li>
</ul>
</li>
<li>Decreased the Scorecard suggested targets to reflect what Microsoft has been able to achieve via the MSIT Get 2 Green project</li>
<li>Added the possibility to filter out streams generated by Synthetic Transaction</li>
<li>
<div>Added a number of Reliability and Audio diagnostics SQL queries for common scenarios &amp; questions</div>
<ul>
<li>This provide the administrator an additional level of detail for a given scenario</li>
<li>We have added a diagnostic query to surface the new detailed Wifi information being sent by Skype for Business 2015 clients</li>
</ul>
</li>
</ul>
<p>Samples of the new Rate My Call charts and Reliability info in the Scorecard are shown below.&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQM1.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQM1.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQM1.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQM1.png" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQM2.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQM2.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQM2.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQM2.png" border="0" /></a></p>
<p>Please download the ZIP file above and open the Microsoft Call Quality Methodology Word document. It has more details about the changes and new features and detailed information about how to use the PS scripts and the CQM Scorecard itself.</p>]]></content:encoded>
    </item>
    <item>
      <title>Sample Call Quality Methodology Scorecard based on data from Call Quality Dashboard</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/sample-call-quality-methodology-scorecard-based-on-data-from-call-quality-dashboard</link>
      <pubDate>Wed, 27 May 2015 05:40:00 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/05/27/sample-call-quality-methodology-scorecard-based-on-data-from-call-quality-dashboard/</guid>
      <description><![CDATA[Call Quality Dashboard (CQD) provides a Web API for access to the report Structure and Analysis Cube...]]></description>
      <content:encoded><![CDATA[<p>Call Quality Dashboard (CQD) provides a Web API for access to the report Structure and Analysis Cube Data. The Portal element of CQD is built using this API. At the Ignite 2015 conference in our <a href="https://channel9.msdn.com/Events/Ignite/2015/BRK4108">Skype for Business: Server Vital Signs session</a> I showed how I had implemented a sample Call Quality Methodology (CQM) Scorecard using this Web API. This post provides the sample and some explanation on how to install, configure and use it.<span style="color:#333333;">Skype for Business: Server Vital&nbsp;SignsSkype for Business: Server Vital&nbsp;Signs </span></p>
<p>We are currently finishing the documentation of the Web API and it will be available soon. I&#39;ll update this post with the link, when it becomes available.</p>
<p>The sample is shown below.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/7282.CQMScorecard.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/7282.CQMScorecard.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/7282.CQMScorecard.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/7282.CQMScorecard.png" border="0" /></a></p>
<h2>Installation of the sample</h2>
<p>The sample is provided in the attached ZIP file. Unzip the file and copy the CQMScorecardSample.html file to a web server in your deployment. I have it located on my CQD Portal server in the c:\inetpub\wwwroot directory.</p>
<p>People, who are already able to access the CQD Portal and see data, should also be able to use the sample.</p>
<h2>Configuration of the sample</h2>
<p>You need to edit the HTML file and replace the two references to CQDSRV1 with the hostname or FQDN of your own CQD Portal server.</p>
<h2>Implementation Details</h2>
<p>It is a sample, so I&#39;ve have not done much to make the code pretty or smart. The HTML file both contains the mark-up to define the CQM Scorecard table and text and the JavaScript code to access the Web API. In production code you would probably separate these components into separate files.</p>
<h3>Target</h3>
<p>The target for the different elements are hard-coded in the definition of the corresponding query.</p>
<h3>Query</h3>
<p>The query is comprised of Dimensions, Filters, Measurements and Trend. The easiest way of writing the query you want is to use the CQD Portal Query Editor. After you have specified your query and seen that it return the results you expect, you can use Fiddler or F12 in IE to see the query the Portal sends via the Web API. Look for url&#39;s ending in QoEDataService/RunQuery and then for the Request Body. That contains the query and you can use that directly in your JavaScript.</p>
<h3>Trending</h3>
<p>In the sample I&#39;m using the API to get data return per day for a number of months. The var numMonthsToShow specifies how many months are wanted.</p>
<p>In order to get the Web API to return data from a date range you need to do the following:</p>
<ul>
<li>You need to have Month added as both a Dimension and a Filter - [StartDate].[Month]</li>
<li>Have a valid month defined in the filter. If you leave it out, you&#39;ll get all data returned</li>
<li>Have enabled Trend in the query. SpanCount will control how many months of data to return</li>
</ul>
<p>In my sample I want to get the data returned by date instead of month and I&#39;ve therefore added the Dimension [StartDate].[Date] to achieve that. An example query, where it asks for 6 months of data, looks like this:</p>
<p style="margin-left:29pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;Dimensions&quot;:[ </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[StartDate].[Month]&quot;}, </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[StartDate].[Date]&quot;} </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">], </span></p>
<p style="margin-left:29pt;"><span style="font-family:Courier New;font-size:x-small;">&quot;Filters&quot;:[ </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[First User Agent].[User Agent Type]&quot;,&quot;Caption&quot;:&quot;MediationServer&quot;,&quot;Value&quot;:&quot;[MediationServer]&quot;,&quot;Operand&quot;:0,&quot;UnionGroup&quot;:&quot;&quot;}, </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[Second User Agent].[User Agent Type]&quot;,&quot;Caption&quot;:&quot;AV-MCU&quot;,&quot;Value&quot;:&quot;[AV-MCU]&quot;,&quot;Operand&quot;:0,&quot;UnionGroup&quot;:&quot;&quot;}, </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[StreamType].[StreamType]&quot;,&quot;Caption&quot;:&quot;Valid&quot;,&quot;Value&quot;:&quot;[False]&quot;,&quot;Operand&quot;:0,&quot;UnionGroup&quot;:&quot;&quot;}, </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[StartDate].[Month]&quot;,&quot;Caption&quot;:&quot;Valid&quot;,&quot;Value&quot;:&quot;2015-4&quot;,&quot;Operand&quot;:0,&quot;UnionGroup&quot;:&quot;&quot;} </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">], </span></p>
<p style="margin-left:29pt;"><span style="font-family:Courier New;font-size:x-small;">&quot;Measurements&quot;:[ </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;DataModelName&quot;:&quot;[Measures].[AudioOnePercentPacketLossPercentage]&quot;} </span></p>
<p style="margin-left:56pt;"><span style="font-family:Courier New;font-size:x-small;">], </span></p>
<p style="margin-left:29pt;"><span style="font-family:Courier New;font-size:x-small;">&quot;Trend&quot;:{&quot;EnableTrend&quot;:true,&quot;SpanCount&quot;:6,&quot;TrendDate&quot;:&quot;2015-4&quot;,&quot;Type&quot;:0}} </span></p>
<p style="margin-left:27pt;">&nbsp; &nbsp;</p>
<h3>Referencing query results</h3>
<p>You need to be able to reference the actual result returned by the query. You do that by looping over the result set. The actual result can be obtained by referencing into the DataResult as an array with base 0. DataResult is constructed as a combination of the dimensions and the measurements you ask for in the query. In the sampel query above I have [StartDate].[Month], [StartDate].[Date], [Measures].[AudioOnePercentPacketLossPercentage]. That is reflected in the DataResult reponse which has month, date and AudioOnePercentPacketLossPercentage:</p>
<p style="margin-left:27pt;"><span style="font-family:Courier New;font-size:x-small;">{&quot;ExecutionTime&quot;:&quot;00:00:00.0508488&quot;,&quot;DataResult&quot;:[[&quot;December 2014&quot;,&quot;Monday, December 15 2014&quot;,0.0]],&quot;ResultIsFromCache&quot;:false,&quot;ErrorType&quot;:0} </span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;I&#39;m only interested in the AudioOnePercentPacketLossPercentage value, so I reference the 3rd element by using index 2 into the array:</p>
<p style="margin-left:30px;"><span style="font-family:Courier New;font-size:x-small;">for (var m = 0; m &lt; data.DataResult.length; m++) { </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:x-small;">sumValue = sumValue + parseFloat(data.DataResult[m][2]); </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:x-small;">}; </span></p>
<h2>Support</h2>
<p>This is a sample and comes with no support what so ever <span style="font-family:Wingdings;">J</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQMScorecardSample.zip" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQMScorecardSample.zip">http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CQMScorecardSample.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Displaying Network and Building Information in the Call Quality Dashboard</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/displaying-network-and-building-information-in-the-call-quality-dashboard</link>
      <pubDate>Tue, 26 May 2015 07:10:06 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/05/26/displaying-network-and-building-information-in-the-call-quality-dashboard/</guid>
      <description><![CDATA[In the Use Call Quality Dashboard TechNet section we describe the schema for additional tables in...]]></description>
      <content:encoded><![CDATA[<p>In the <a href="https://technet.microsoft.com/en-us/library/mt126253.aspx">Use Call Quality Dashboard</a> TechNet section we describe the schema for additional tables in QoEArchive that CQD uses to store Network and Building information. The information can be used in the CQD Portal using the measurements/filters:</p>
<ul>
<li>[First Network Name].[Network Name]</li>
<li>[First Network Name].[Network Type]</li>
<li>[First Building].[Building Key]</li>
<li>[First Building].[Building Name]</li>
<li>[First Building].[Building Office Type]</li>
<li>[First Building].[Building Type]</li>
<li>[First Building].[City Name]</li>
<li>[First Building].[Country]</li>
<li>[First Building].[Inside Corp]</li>
<li>[First Building].[Ownership Type]</li>
<li>[First Building].[Region]</li>
<li>[First Building].[State]</li>
<li>[First Building].[Zip Code]</li>
<li>[Second Network Name].[Network Name]</li>
<li>[Second Network Name].[Network Type]</li>
<li>[Second Building].[Building Key]</li>
<li>[Second Building].[Building Name]</li>
<li>[Second Building].[Building Office Type]</li>
<li>[Second Building].[Building Type]</li>
<li>[Second Building].[City Name]</li>
<li>[Second Building].[Country]</li>
<li>[Second Building].[Inside Corp]</li>
<li>[Second Building].[Ownership Type]</li>
<li>[Second Building].[Region]</li>
<li>[Second Building].[State]</li>
<li>[Second Building].[Zip Code]</li>
</ul>
<p>In my lab I&#39;ve used the SQL statements below to create network and building information. I used the SQL Management Studio to execute them against the QoEArchive database. The information will show up for calls made after the network and building information has been inserted into the QoEArchive.</p>
<p>NOTE: CQD use the Network and the Network Range to correlate the Lync/Skype for Business clients IP address to a network. When the clients sends it quality report (VQReport) to the server it contains the actual IP address in use. CQD takes this IP address and correlates it to networks by using Network and the NetworkRange. For example if the clients IP address is 10.1.1.15, CQD will be able to correlate that to the TR22-Network-1 network given the example below.</p>
<p>&nbsp;</p>
<p><span style="font-family:courier new,courier;">USE [QoEArchive]</span><br /><span style="font-family:courier new,courier;">GO</span></p>
<p><span style="font-family:courier new,courier;">-- Building Type</span><br /><span style="font-family:courier new,courier;">DECLARE @nextBuildingId AS INT;</span><br /><span style="font-family:courier new,courier;">SELECT @nextBuildingId = MAX(BuildingTypeId) FROM [dbo].[CqdBuildingType];</span></p>
<p><span style="font-family:courier new,courier;">INSERT INTO [dbo].[CqdBuildingType] </span><br /><span style="font-family:courier new,courier;">&nbsp;([BuildingTypeId],[BuildingTypeDesc])</span><br /><span style="font-family:courier new,courier;">VALUES </span><br /><span style="font-family:courier new,courier;">&nbsp;(@nextBuildingId+1,&#39;TR22 Hang-Out&#39;);</span></p>
<p><span style="font-family:courier new,courier;">SELECT [BuildingTypeId]</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,[BuildingTypeDesc]</span><br /><span style="font-family:courier new,courier;">FROM [QoEArchive].[dbo].[CqdBuildingType]</span><br /><span style="font-family:courier new,courier;">WHERE BuildingTypeDesc = &#39;TR22 Hang-Out&#39;;</span></p>
<p><span style="font-family:courier new,courier;">-- Building Ownership Type</span><br /><span style="font-family:courier new,courier;">DECLARE @nextOwnerShipId AS INT;</span><br /><span style="font-family:courier new,courier;">SELECT @nextOwnerShipId = MAX(OwnershipTypeId) FROM [dbo].[CqdBuildingOwnershipType];</span></p>
<p><span style="font-family:courier new,courier;">INSERT INTO [dbo].[CqdBuildingOwnershipType] </span><br /><span style="font-family:courier new,courier;">&nbsp;([OwnershipTypeId],[OwnershipTypeDesc],[LeaseInd],[Owner])</span><br /><span style="font-family:courier new,courier;">VALUES </span><br /><span style="font-family:courier new,courier;">&nbsp;(@nextOwnerShipId+1,&#39;State Owned&#39;,2,&#39;Washington State&#39;);</span></p>
<p><span style="font-family:courier new,courier;">SELECT * FROM [QoEArchive].[dbo].[CqdBuildingOwnershipType]</span><br /><span style="font-family:courier new,courier;">WHERE [Owner] = &#39;Washington State&#39;;</span></p>
<p><span style="font-family:courier new,courier;">-- Network Name and Type</span><br /><span style="font-family:courier new,courier;">INSERT INTO [dbo].[CqdNetworkName] </span><br /><span style="font-family:courier new,courier;">&nbsp;([NetworkName],[NetworkType])</span><br /><span style="font-family:courier new,courier;">VALUES </span><br /><span style="font-family:courier new,courier;">&nbsp;(&#39;TR22-Network-1&#39;,&#39;EventNet&#39;);</span></p>
<p><span style="font-family:courier new,courier;">SELECT * FROM [QoEArchive].[dbo].[CqdNetworkName]</span><br /><span style="font-family:courier new,courier;">WHERE [NetworkName] = &#39;TR22-Network-1&#39;;</span></p>
<p><span style="font-family:courier new,courier;">-- Building</span><br /><span style="font-family:courier new,courier;">DECLARE @ownerShipTypeId AS INT;</span><br /><span style="font-family:courier new,courier;">DECLARE @buildingTypeId AS INT;</span></p>
<p><span style="font-family:courier new,courier;">SELECT @nextBuildingId = MAX(BuildingKey) FROM [dbo].[CqdBuilding];</span><br /><span style="font-family:courier new,courier;">SELECT @ownerShipTypeId = OwnershipTypeId FROM [dbo].[CqdBuildingOwnershipType]</span><br /><span style="font-family:courier new,courier;">WHERE [Owner] = &#39;Washington State&#39;;</span><br /><span style="font-family:courier new,courier;">SELECT @buildingTypeId = BuildingTypeId FROM [QoEArchive].[dbo].[CqdBuildingType] </span><br /><span style="font-family:courier new,courier;">WHERE BuildingTypeDesc = &#39;TR22 Hang-Out&#39;;</span></p>
<p><span style="font-family:courier new,courier;">INSERT INTO [dbo].[CqdBuilding]</span><br /><span style="font-family:courier new,courier;">&nbsp;([BuildingKey],[BuildingName],[BuildingShortName],[OwnershipTypeId],[BuildingTypeId]</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,[CityName],[ZipCode],[CountryShortCode],[StateProvinceCode],[InsideCorp]</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,[BuildingOfficeType],[Region])</span><br /><span style="font-family:courier new,courier;">VALUES</span><br /><span style="font-family:courier new,courier;">&nbsp;(@nextBuildingId+1,&#39;Washington State Convention Center&#39;,&#39;WSCC&#39;,@ownerShipTypeId,@buildingTypeId</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,&#39;Seattle&#39;,&#39;98101&#39;,&#39;US&#39;,&#39;WA&#39;,0</span><br /><span style="font-family:courier new,courier;">&nbsp;&nbsp;,&#39;Events&#39;,&#39;PUGET SOUND&#39;);</span></p>
<p><span style="font-family:courier new,courier;">SELECT * FROM [dbo].[CqdBuilding] WHERE BuildingShortName = &#39;WSCC&#39;;</span></p>
<p><span style="font-family:courier new,courier;">-- Subnet</span><br /><span style="font-family:courier new,courier;">DECLARE @buildingKey AS INT;</span><br /><span style="font-family:courier new,courier;">DECLARE @networkNameId AS INT;</span></p>
<p><span style="font-family:courier new,courier;">SELECT @buildingKey = BuildingKey FROM [dbo].[CqdBuilding] WHERE BuildingShortName = &#39;WSCC&#39;;</span><br /><span style="font-family:courier new,courier;">SELECT @networkNameId = NetworkNameId FROM [dbo].[CqdNetworkName] WHERE NetworkName = &#39;TR22-Network-1&#39;;</span></p>
<p><span style="font-family:courier new,courier;">INSERT INTO [dbo].[CqdNetwork] </span><br /><span style="font-family:courier new,courier;">&nbsp;([Network],[NetworkRange],[NetworkNameID],[BuildingKey],[UpdatedDate]) </span><br /><span style="font-family:courier new,courier;">VALUES</span><br /><span style="font-family:courier new,courier;">&nbsp;(&#39;10.1.1.0&#39;,&#39;24&#39;,@networkNameId,@buildingKey,&#39;2016-02-1&#39;);</span></p>
<p><span style="font-family:courier new,courier;">SELECT * FROM [dbo].[CqdNetwork] WHERE Network = &#39;10.1.1.0&#39;;</span></p>
<p></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Call Quality Dashboard Tips and Tricks</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/call-quality-dashboard-tips-and-tricks</link>
      <pubDate>Fri, 22 May 2015 00:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/05/22/call-quality-dashboard-tips-and-tricks/</guid>
      <description><![CDATA[In this post I&#39;ll share some tips and tricks I&#39;ve learned by working with the Call Quality...]]></description>
      <content:encoded><![CDATA[<p>In this post I&#39;ll share some tips and tricks I&#39;ve learned by working with the Call Quality Dashboard (<a href="http://www.microsoft.com/en-us/download/details.aspx?id=46916">CQD</a>). I&#39;ll update it as I learn more. The TechNet documentation for CQD is <a href="https://technet.microsoft.com/en-us/library/mt126223.aspx">here</a>.</p>
<h2>First versus Second</h2>
<p>CQD has introduced the concepts of First and Second and you can use these in Dimensions and Filters. First will always be the server endpoint of a stream and Second will be the client endpoint. If a stream involves two servers or two client endpoints CQD will make the endpoint with the lowest User Agent Type First. If both endpoints are of the same type, i.e. two desktop clients, CQD will make the Caller in the corresponding QoEMetric.dbo.MediaLine table entry First and the Callee will become Second.</p>
<p>The User Agent Types are defined in the table QoEMetrics.dbo.UserAgentDef by the column UAType.</p>
<p>Let me give you some examples to help you understand the concept.</p>
<div>
<table style="border-collapse:collapse;" border="0"><colgroup><col style="width:166px;" /><col style="width:166px;" /><col style="width:166px;" /><col style="width:166px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;border:solid 0.5pt;">
<p>Endpoint 1 UAType</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid 0.5pt;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Endpoint 2 UAType</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid 0.5pt;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>First</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid 0.5pt;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Second</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid 0.5pt;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>2 (AVMCU)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>4 (Skype for Business)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Endpoint 1</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Endpoint 2</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid 0.5pt;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>2 (AVMCU)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>1 (MediationServer)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Endpoint 2</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>Endpoint 1</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid 0.5pt;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>4 (Skype for Business)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>4 (Skype for Business)</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>The Caller in MediaLine</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid 0.5pt;border-right:solid 0.5pt;">
<p>The Callee in MediaLine</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<h2>Is Server Agent</h2>
<p>CQD has a filter and a dimension called [First Is Server].[Agent] and [Second Is Server].[Agent]. The filter/dimension can be used to differentiate the User Agent at a broad server/client level, i.e. is this a server side component like the AVMCU or is it a client like Skype for Business 2015.</p>
<p>CQD defines these User Agent Types as Servers: 1, 2, 256, 512, 1024, 1032, 1040, 16393, 16397, 16410, 32769 and 32770. They correspond to MediationServer, AVMCU, CAS, CAA, RGS, CPS, RGS AS, ExUM, ASMCU, XMPPGateway, Gateway and GatewayMediationServerPair.</p>
<p>CQD defines all other known User Agent Types as Client.</p>
<h2>QoEMetrics to QoEArchive copy process</h2>
<p>CQD uses a SQL Agent job to copy data from the QoEMetrics database into the QoEArchive database. The job runs on a 15-minute schedule. When it run it will copy all new data from QoEMetrics, since last time it ran.</p>
<p>Due to implementation technicalities it is not copying data corresponding to the last MediaLine row from QoEMetrics. In a production environment it is not an issue, since that row will just be picked up on the next run. However, in a test environment it can be an issue, since you might perform a test call, see the data in QoEMetrics and then not see the data in CQD. So if you&#39;re in a test environment remember always to make two test calls to ensure that CQD picks up the data.</p>
<h2>Cube update process</h2>
<p>Due to implementation technicalities the Cube will not pick up data corresponding to the last MediaLine row from QoEArchive. As above it&#39;s not an issue in a production environment, but could be in a test environment. Just make sure to do some extra test calls.</p>
<h2>Measurements</h2>
<p>When you add Measurements in the QueryEditor you should think about these as being logically AND&#39;ed together. For instance, if you ask for say 3 measurements and one or more of these measurements does not produce any results, you won&#39;t see any results at all. As an example in my lab I only had audio streams and app sharing streams for May 21, 2015, because I hadn&#39;t done any tests with video yet. As you can see from the screenshot below I got 8 Audio Streams and 4 App Sharing Streams shown, when I have just those 2 measurements.</p>
<p><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/metablogapi/052215_0713_CallQuality1.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41-metablogapi/052215_5F00_0713_5F00_CallQuality1.png" /></p>
<p>I then added the Video Streams Count measurement, but since I don&#39;t have any video streams for that day, I don&#39;t get any results returned at all.</p>
<p><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/metablogapi/052215_0713_CallQuality2.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41-metablogapi/052215_5F00_0713_5F00_CallQuality2.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Call Monitor in Skype for Business 2015</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/call-monitor-in-skype-for-business-2015</link>
      <pubDate>Tue, 05 May 2015 16:43:41 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/05/05/call-monitor-in-skype-for-business-2015/</guid>
      <description><![CDATA[In Skype for Business 2015 we have introduced the Call Monitor, which is a window that will be...]]></description>
      <content:encoded><![CDATA[<p>In Skype for Business 2015 we have introduced the Call Monitor, which is a window that will be shown, if the main conversation window becomes hidden by other windows. From the Call Monitor you can mute or end the call and in a video call&nbsp;it will also show the video stream. This is a cool feature in itself, but often you need to get back to the conversation window for instance to check an IM or something similar. This is where it get&#39;s extra cool with the call monitor. If you double click in the area right to the photo and with the name and call timer, you will automatically get the conversation window shown. I&#39;ve circled the area to double click in green in the picture below.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CallMonitor.JPG" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CallMonitor.JPG"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CallMonitor.JPG" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/CallMonitor.JPG" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Rate My Call in Skype for Business 2015</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/rate-my-call-in-skype-for-business-2015</link>
      <pubDate>Tue, 05 May 2015 07:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2015/05/05/rate-my-call-in-skype-for-business-2015/</guid>
      <description><![CDATA[[Updated April 5, 2016 to include information related to Skype for Business Online]

Skype for...]]></description>
      <content:encoded><![CDATA[[Updated April 5, 2016 to include information related to Skype for Business Online]

Skype for Business Server 2015 and Skype for Business 2015 implements the ability for users to rate their audio or video call experience. The user is presented with a form, which allow to give a 5-star quality rating from Really Bad (1 star) to Excellent (5 stars). In addition there is the option to select between 5 different issues per modality. If the administrator allows it the form will also include a free-text input field.

The screenshot below shows the form after a call, which included both audio and video.

<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/metablogapi/041715_1421_RateMyCalli1.jpg" alt=" " />
<h2>When is the form shown</h2>
There are a number of prerequisites for the form to be show.
<ul>
	<li>The user needs to be using Skype for Business 2015 (version 15.0.4711.1002 or later)</li>
	<li>The user needs to be homed on a Skype for Business Server 2015 pool or homed in Skype for Business Online</li>
	<li>The user has been granted a Client Policy, where the parameter RateMyCallDisplayPercentage is larger than 0</li>
	<li>The form will be shown in both Lync and Skype for Business UI</li>
</ul>
The RateMyCallDisplayPercentage parameter controls how often the form is shown. You should interpret it as each X times, i.e. if the RateMyCallDisplayPercentage is set to 10 the form will be shown each 10<sup>th</sup> call. It is controlled entirely by the client it is running on. There are a number of scenarios, where the form will not be shown no matter the RateMyCallDisplayPercentage, including if the user is in Do Not Disturb presence state or the call was an emergency call.

The user can dismiss the form by closing it. If the user does not interact with the form it will close automatically after 20 seconds.
<h2>How and what can it be controlled</h2>
<span style="text-decoration: underline">On-Premises</span>

The administrator can control how often the form is shown and the ability to submit free-format feedback via CsClientPolicy parameters. The two parameters are:
<ul>
	<li>RateMyCallAllowCustomUserFeedback</li>
	<li>RateMyCallDisplayPercentage</li>
</ul>
Since these are in a client policy different user communities can get different settings.

<span style="text-decoration: underline">Skype for Business Online</span>

In Skype for Business Online all the available client policies have the RateMyCallDisplayPercentage parameter set 10 and RateMyCallAllowCustomUserFeedback set to False, except one (Tag:CPCPstnPreviewRateMyCallClientPolicy), which has RateMyCallDisplayPercentage parameter set 100 and RateMyCallAllowCustomUserFeedback set to True.

It is not possible to customize other areas of the form, i.e. you can't change the audio or video issues and you can't control if they are shown or not.
<h2>How is the data sent to server</h2>
The data is sent to Skype for Business Server 2015 via a SIP SERVICE request with content-type application/ms-cqf+xml and the data is encoded in an XML blob. If the user is hosted on an earlier version of Lync the report will just be discarded, since the server does not understand it.
<h2>How the data is stored</h2>
The Rate My Call data is stored in the QoEMetrics database. This is done to allow the correlation between media quality information in the QoEMetrics database and the users subjective opinion about the calls from the Rate My Call data.

The QoEMetrics database needs to be updated to the schema shipping with Skype for Business Server 2015 (62.93.8 or later). This new schema includes 3 new tables that stores the feedback:
<ul>
	<li>dbo.CallQualityFeedback</li>
	<li>dbo.CallQualityFeedbackToken</li>
	<li>dbo.CallQualityFeedbackTokenDef</li>
</ul>
The CallQualityFeedback table has the rating and the feedback text. CallQualityFeedbackToken has the values for each issue. CallQualityFeedbackTokenDef has the definition of the issues.
<h2>How to use the data</h2>
<span style="text-decoration: underline">On-Premises</span>

The Monitoring Reports in Skype for Business Server 2015 does not surface the Rate My Call data. The <a title="Call Quality Dashboard (CQD)" href="http://www.microsoft.com/en-us/download/details.aspx?id=46916">Call Quality Dashboard (CQD)</a> is able to show the Rate My Call data. Version 1.5 of the Call Quality Methodology Scorecard shows the data. An example of seeing the data in CQD is shown below.

<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQDRMC.JPG"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/CQDRMC.JPG" alt=" " border="0" /></a>

In addition the administrator can use the data via SQL queries against the QoEMetrics database. I created the SQL queries <a title="here" href="https://technet.microsoft.com/en-us/library/dn951407.aspx">here</a>. As an example the query for audio will show this based on the earlier form shown above.

<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/metablogapi/041715_1421_RateMyCalli2.jpg" alt=" " />

<span style="text-decoration: underline">Skype for Business Online</span>

Skype for Business Online customers can use <a title="Call Quality Dashboard Online" href="https://support.office.com/en-us/article/Turning-on-and-using-Call-Quality-Dashboard-in-Skype-for-Business-Online-553fa13c-92d2-4d5c-a3d5-41a073cb047c?ui=en-US&amp;rs=en-US&amp;ad=US">Call Quality Dashboard Online </a>to see the Rate My Call data. The default reports don't include it, but you can add to the individual reports in the Detailed Reports area. You edit the report and can add Measurements like First/Second Feedback Rating Count and First/Second Feedback Rating Avg. Unfortunately it is not possible to see the actual feedback text submitted in CQD Online.

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Run-time error: '438': Object doesn't support this property or method in Microsoft Call Quality Methodology Scorecard for Lync Server (CQM)</title>
      <link>https://docs.microsoft.com/archive/blogs/jenstr/run-time-error-438-object-doesnt-support-this-property-or-method-in-microsoft-call-quality-methodology-scorecard-for-lync-server-cqm</link>
      <pubDate>Mon, 15 Dec 2014 04:41:02 GMT</pubDate>
      <dc:creator><![CDATA[Jens Trier Rasmussen [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jenstr/2014/12/15/run-time-error-438-object-doesnt-support-this-property-or-method-in-microsoft-call-quality-methodology-scorecard-for-lync-server-cqm/</guid>
      <description><![CDATA[After installing MS14-082 (part of December 2014 Public Updates for Office) you might get the...]]></description>
      <content:encoded><![CDATA[<p>After installing <a href="https://technet.microsoft.com/library/security/ms14-082">MS14-082</a> (part of December 2014 Public Updates for Office) you might get the error&nbsp;<strong>run-time error &#39;438&#39;: Object doesn&#39;t support this property or method</strong>, when&nbsp;clicking on the enable content button. If you click Debug you will see the reference shown below:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Debug.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Debug.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/60/41/Debug.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-41/Debug.png" border="0" /></a></p>
<p>The root cause of this appears to be&nbsp;related to problems mentioned in <a href="http://support.microsoft.com/kb/3025036">KB3025036</a>&nbsp;and <a href="/b/the_microsoft_excel_support_team_blog/archive/2014/12/11/forms-controls-stop-working-after-december-2014-updates-.aspx">here</a>&nbsp;and performing the steps in the Resolution 1 section of the KB has fixed the issue..&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>