Script: Get Lync/Skype4B users which reported having Poor Calls

Recently I’ve been asked by a customer to check if there is a way to get a list of users which been reported as having poor calls within the last week or so. The request came from their management as they want to try and be proactive with those users and approach the user before those users contacting the help desk and try to identify why they are having poor calls (network, devices, clients etc.).

At first, I thought there must be an existing report for that already, after all the User Diagnostic report show all the calls for a user and it contains all the parameters identifies a call as a Poor Call. Unfortunately, there wasn’t, so I find myself digging into the existing CQM queries and modifying some parameters in order to get the query that will be able to pull all the users that reported having Poor Calls within a given time range.

With the help of Yoav Barzilay we also created a script out of that that can generated that report and also send an email if needed.


  • This script will query the reporting services database for users that were reported having poor calls within the last week (more than one instance)
  • The script automatically pulls the QoEMetrics instance name from the topology and query the database for all reported calls within the last week.
  • The script can also be used as a scheduled tasks and send an email with the results instead of creating a temp html file
  • The script is automatically pulls the last week, but that’s can be modified via the Script/Query
  • The script filter automatically all users that have more than 1 poor call


TechNet Gallery | OneDrive

Poor Call Definition by Microsoft:

  • PacketLossRate > 0.1
  • DegradationAvg > 1.0
  • RoundTrip > 500
  • JitterInterArrival > 30
  • RatioConcealedSamplesAvg > 0.07


  • Reporting Services Database
  • User with access to the QoEMetrics Database (Read Permissions)
  • PowerShell 3.0 and above


Running from a Lync / Skype for Business Server:

  • ./UsersReportedWithPoorCalls-v0.5

Running from a Lync / Skype for Business Server and sending email with the results:

  • ./UsersReportedWithPoorCalls-v0.5 -From -To -SmtpServer

Running from any client and connect remotely to the Front End Services:

  • ./UsersReportedWithPoorCalls-v0.5 -RemoteConnection

Example Report:

The Queries:

Query 1: The Query that pulls the SQL information and group it into # of poor calls per user

Query 2: This query pulls detailed report per each poor call per user on a given date. that will help determine the reasons for defining this call as poor as well as information on the machine, user agent and additional devices.


  1. Pingback: Script: Get Lync/Skype4B users which reported having Poor Calls | Just a Lync Guy | JC's Blog-O-Gibberish

  2. CP

    The PS script doesn’t have query2 as part of it.

    1. Guy Bachar (Post author)

      Yeah, we will include it in the next version as the query return different type of data and we thinking how to integrate it

  3. Pramod Dixit

    i went to given technet link to download the scripts but could not find •./UsersReportedWithPoorCalls-v0.5 -From -To -SmtpServer script over there, may i know from where i can get this script in order to schedule this report on weekly basis and send the output in emails.

    1. Guy Bachar (Post author)

      It’s a parameter within the existing script, not a separate script.
      Just use the tab key when you type the name of the script and it will autocomplete.

  4. LDuffield

    Hi,trying to get the script to work with Lync 2010, but no luck, comes up with New-poorcallReport cannot bind argument to parameter “poorcallentry” because it is null.

    I did change Line 306 to read $moninstances = Get-Csservice -Monitordatabase as getMonitoringdatabase wasnt recognised in lync 2010. I am runing the script remotely

    1. Guy Bachar (Post author)

      In that case you can try and run the SQL query directly against the SQL database of the monitoring using the SQL Management Studio.
      Unfortunately i didn’t had a chance to test it with Lync 2010.


Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.