Comments

  • Sasi Gudimetta

    Hi Amy,

    I have a question based on the explanation you have provided (BTW a huge thanks for explaining the alerts since I was under the same impression as Pavol).

    If I check for all 15 minute intervals in a work day but my filter is checking for 5+ chats abandoned within a 30 minute time frame, then will the system ignore or consider the chats that were abandoned in the last 15 minute interval.

    For example: between 2:30 PM and 2:45 PM there were 2 chats abandoned, and between 2:45 PM and 3 PM there were 6 chats abandoned. Now when the alert runs at 3 PM it will find that a total of 8 chats were abandoned in the last run of the report and send an alert. Now lets say between 3 PM and 3:15 PM there were NO abandoned chats. But I have a 15 minute schedule that runs at 3:15 looking at the 30 minutes from 2:45 PM to 3:15 PM. So will the system fire an alert again since there were 6 abandoned between 2:45 PM to 3 PM? or does it ignore the alert?

    Thanks,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Rajesh,

    Since custom fields are not captured in audit logs your best bet would be to create a Custom Object with the necessary fields, write a CPM to capture the necessary values and trigger it using a business rule based on when that particular field is edited using the IF condition "modified this edit" so that the CPM is triggered only when the priority field changes.

    You can then report on that custom object transactions to determine when the priority changes were made.

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi JJ,

    You can try and achieve this by using variables and joining the accounts table to 2 incident tables.

    I've attached a sample report definition pdf.

    Hope this helps,

    Regards,

    Sasi K Rao.

    Edit: You can include both variables and the incidents.created filters as docked filters so that agents can enter the values at run-time.

  • Sasi Gudimetta

    Hello Dudu,

    Did you check the Group Results option in the Level tab in the Ribbon?

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hey Dudu,

    I am not sure about Points 1 and 2 but for Point 3, one of the ways you can segregate and check if the response in the thread has been delivered or not is by creating 2 columns in the report and comparing the count mismatch.

    First column could be the Incident Reference Number, in the second column you can use the expression sum(if(threads.entry_type=2,1,0)) and in the third column you can use sum(if(transactions.trans_type = 8,1,0))

    The count from the threads column would be the total Response threads in that incident, but the count from the transactions column would only be those that were sent out as responses. So the transactions column would always be Less than or Equal to  the threads column. And where there is a mismatch those are the incidents that have a response thread but the response never reached the customer.

    Hope this helps. :)

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hey Dudu,

    When you try to measure the same parameter with different variables then you can do this by joining the same table (in this case inc_performance)  to the parent table (incident) twice. Please see the attached report definition. Here I am measuring the Created to Initial Response using inc_performance table and Created to Initial Resolved using inc_performance2 table. Same is in the filter joined by an OR node. In the column I am checking which of the actions had the initial time start and then printing the account ID from the respective table.

    This would keep both the actions independent of each other and hence the comparison as well as computation becomes easier.

    Hope this helps.:)

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi JJ,

    Instead of nvl() function you can try the same with an if().

    As Anuj mentioned, if there is no existing task then the function may not get triggered at all. So alternatively you can try something like

    if(tasks.task_id IS NOT NULL,concat(tasks.status_id, ' / ' , tasks.pct_complete),'-')

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Terry,

    Instead of using max() you can use the last() function on the columns where the data differs and it will give you only 1 row of data. For example, in your current scenario your columns would look like this

    Column 1: incidents.queue_id

    Column 2: incidents.ref_no

    Column 3: incidents.created

    Column 4: last(transactions.created,transactions.created)

    Column 5: last(transactions.id1,transactions.created)

    Column 6: last(<your decode expression>,transactions.created)

    Since the values of the first 3 columns does not change the last() function is not necessary on those columns. For the rest where the values are differing, the required column attribute depending on the last Transaction Created will get pulled. This results in only 1 unique row based on the last transaction created time instead of multiple rows like in your current report. Also you can remove the variable from the report.

    Hope this helps. :)

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hey Hewit,

    You have an Incident to Account inner join as well which is built on the relationship Incidents Created by the said Staff Account. In your report premise is it also the case that the incident edits  by agent that you are looking for are also created by the same agent?

    Because I think that is what may be hampering with your report data. From what I am able to understand from your requirement is that you are looking only for the agent name who performed the action (which is pulled from the Accounts.Display Name column) and hence you need the Accounts table linked in the report as well. So you can join the tables in a different way. (Image attached for reference)

    Incidents -> Incident Performance (Outer Join)

    Incident Performance -> Accounts (Inner Join) [with relationship as Incident Performance Account ID = Accounts Account ID]

    This should do the trick. Hope this helps :)

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hey Steve,

    Instead of doing it from a report in the console you can do it using a query in the end-user dashboard.

    For example: go to <yoursite>.custhelp.com/ci/admin/overview and login to the CP Administration dashboard. Go to Tools > Connect Object Explorer

    There you can write a simple query like select * from Incident and that will give you all the fields data for the incidents (automatically limited to the first 25 rows, which you can alter).

    If you would like to include custom object related fields and custom fields as well then you can change the query to select *, customfields.c.*, customfields.co.* from Incident

    Hope this helps,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Ineke,

    Do you have any nested last() or first() functions in the IF conditions in your expression?

    For some reason service cloud does now allow nesting of those 2 functions in an IF (Just throws the Processing view query failed error instead of pointing out the actual error).

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Julia,

    I have attached an example report definition that controls the time element in the filter.

    You can select the From and To date range as you require and ignore the time element. You will have 2 other filters to select the desired From and To time range between which you would like to return the data from.

    Give it a try and let me know if you have any questions.

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi JJ,

    If the dbstatus-r utility is enabled on your site then the rule base will trigger automatically every 15 minutes.

    If your incident is still in the same state that holds the rule that needs to be hit, then this utility will take care of automatically triggering all the rules and hit the ones which correspond to the defined conditions.

    This answer has a few more details on the utilities that are run.

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Chris,

    In order to achieve what you are looking for you need to use Javascript API. You cannot do a query on objects using Workspace rules.

    Javascript API Documentation

    Regards,

    Sasi K Rao.

  • Sasi Gudimetta

    Hi Sophia,

    There are 2 commas after CO$RegisterProducts.DatePurchased. If that is not a typo then please remove that comma and try the syntax.

    date_format(CO$RegisterProducts.DatePurchased,'DD-MONTH-YYYY')

    Regards,

    Sasi K Rao.