Unified Service Desk for Microsoft Dynamics CRM contains an audit feature which is supposed to help organizations analyze agent productivity. Although I suspect the standard audit has more uses when trying to debug an application than reporting on agent productivity. I will describe this feature in this post.
There are two types of audit, standard and custom. I will cover the standard audit in this time. Later I will review the custom audit especially as I feel custom audit records might give a more tailored and therefore useful result.
When you enable auditing records are written to an entity called “UII Audit”. You can then use advanced find (etc) to query the content of the audit.
To enable the standard audit you need to create option flags. Details of the various options are shown below.
|AuditCacheMaxSize||When set to 10, the number of audit records cached before saving to the server is 10 records.
This option works only if the AuditNoCache is False.
|AuditFlagAction||When this flag value is set to 1, audit records are created when an action is fired.|
|AuditFlagAgentState||When this flag value is set to 1, audit files are created when the status of the agent changes.|
|AuditFlagHostedApplication||When this flag value is set to 1, audit files are created when a hosted application is started or gets focus.|
|AuditFlagLogin||When this flag value is set to 1, audit records are created when an agent logs in.|
|AuditFlagSession||When this flag value is set to 1, audit records are created when a session is created or there is a session switch.|
|AuditFlagWorkflow||When this flag value is set to 1, audit records are created when a UII workflow is started or closed.|
I set all the flags to “1”, to log as much information as possible. My USD application is reasonably complicated but I imagine some people’s will be much more complex than mine. But even so, I created 30 audit records just loading USD. You might want to think about the implications of this on system performance! J Next I will look at each flag in turn and show examples generated from my application.
AuditCacheMaxSize and AuditNoCache.
Before looking at the results of the audit it is worth considering these two options. If AuditNoCache is set to False, the audit records are cached and written in blocks. The AuditCacheMaxSize controls the size of that cache. These two parameters must have an impact on system performance but I haven’t managed to create any meaningful statistics to show how. I imagine the impact will differ from environment to environment.
For my testing I set the AuditNoCache to TRUE, so that I could see audit records instantly. I imagine running USD like this might be useful whilst debugging but probably has an adverse impact on performance.
When this flag is set to “1” an audit record will be created each time an action is fired. Meaning, depending on your application setting this flag could generate a high volume of audit records. Which might be very useful when debugging the application.
Just loading my USD application generated more than 10 audits per user. Below is an example of an action call which maximizes the window as my application loads.
If set to “1” an audit record is created each time the agent state changes. In my application the only record I saw created happened when a user logged in.
Audit files are created when a hosted application is started or gets focus, when this option is set to”1″
If set to “1” then an audit record will be created each time a user logs in (or out) of USD. An example of a log out is shown below. Interestingly the audit record created on “Log in” had a blank agent state! But the audit record created by AuditFlagAgentState did show a state of Logged In.
My login audit record looked like this, the login audit generated by AuditFlagAgentState gave me a more meaningful result!
When this flag value is set to 1, audit records are created when a session is created or there is a session switch. This open generated more audit events than I expected!
I did get a record of “New Session” when I opened the session, with the customer ID set to the GUID of the contact I opened. Although disappointingly I can’t see the type of session loaded, so I can’t look at the GUID and know it refers to a contact, account, lead etc.
However, audit events are also triggered as I move from session to session. These seemed to provide slightly more meaningful / useful information.
AuditFlagWorkflow, audit records are created when a UII workflow is started or closed. For me setting this option to 1 didn’t generate any results, which to be honest was as expected. (As I don’t have any UII workflow.)