Call Quality Dashboard Tips and Tricks

In this post I'll share some tips and tricks I've learned by working with the Call Quality Dashboard (CQD). I'll update it as I learn more. The TechNet documentation for CQD is here.

First versus Second

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.

The User Agent Types are defined in the table QoEMetrics.dbo.UserAgentDef by the column UAType.

Let me give you some examples to help you understand the concept.

Endpoint 1 UAType

Endpoint 2 UAType




4 (Skype for Business)

Endpoint 1

Endpoint 2


1 (MediationServer)

Endpoint 2

Endpoint 1

4 (Skype for Business)

4 (Skype for Business)

The Caller in MediaLine

The Callee in MediaLine


Is Server Agent

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.

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.

CQD defines all other known User Agent Types as Client.

QoEMetrics to QoEArchive copy process

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.

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're in a test environment remember always to make two test calls to ensure that CQD picks up the data.

Cube update process

Due to implementation technicalities the Cube will not pick up data corresponding to the last MediaLine row from QoEArchive. As above it's not an issue in a production environment, but could be in a test environment. Just make sure to do some extra test calls.


When you add Measurements in the QueryEditor you should think about these as being logically AND'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'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'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.

I then added the Video Streams Count measurement, but since I don't have any video streams for that day, I don't get any results returned at all.