Genesys Administrator Extension (GAX) – Change Date Format

In past few week, I received multiple requests to change date format in Genesys Administrator Extension (GAX).

What is GAX?


Genesys Administrator Extension (GAX) is an application that provides admin capabilities in an easy to use format and support plug-in resources like Pulse reporting etc. In effect,

GAX = CME + SCI + CCPulse + OCM

In my opinion, GAX will be single application that customer need to get trained to manage Genesys environment.

Solution for Date Format


Here are the steps to change date time format in GAX

1. Click on your username in the header bar and select ‘User Preferences’. Note: User Preferences takes precedence over System Preferences.

User Preferences Menu

User Preferences Menu

2. In User Preferences window, select ‘Locale’ from Category drop down list

User Preferences Window

3.Change Date Format here

Change Date Format

CCPulse – Contrasting Color Functionality

CCPulse – Contrasting Color


One of our blog subscriber Ted Lizotte asked this question

We have a window that used to look like this:

And since our CCPulse upgrade to 8.1.000.19 looks like this:

CCPulse Current

Simply making the background Action Black solved the problem before.  I was wondering if another Action that set the font color to black would work? We’ve basically put two different Service Level thresholds in the same window to save space and blacked out the one that didn’t apply.  But now it since it now turns the font white, it’s defeating the purpose.

Solution


From version 8.1.000.17, CCPulse uses contrasting color for text and below is actual snippet from CCPulse release notes

 Now CCPulse+ uses a contrasting color (Black or White) of the text in the Objects Pane, Tree View, and Table View for items with explicitly set background.

I achieved the same functionality using formula and details are as below

Scenario : Show background color as black if agent logged out.

Agent View

Step 1: Formula to set agent state as empty string if agent is logged out.

Scripting Expression

Step 2: Create Threshold to check for empty string.

Threshold

Step 3: Create action to set color as black

Action Script

Action Script

Step 4 : Apply this threshold to the statistic and you will find background color as black when agent logged out

 

Handling the leap second

Leap Second – What is it?


From wiki

A leap second is a one-second adjustment that is occasionally applied to Coordinated Universal Time (UTC) in order to keep its time of day close to the mean solar time, or UT1. Without such a correction, time reckoned by Earth’s rotation drifts away from atomic time because of irregularities in the Earth’s rate of rotation.

Leap Time

Leap Time Jun 30 2015

We will have leap second on Jun 30th this year and it means that this year the last minute of June 30th will be one second longer and “June 30, 2015 23:59:60″ will be a valid and correct time. There may be few issues caused by leap second and below is the summary of my findings

Genesys


There will be minor issues on reporting products and can be fixed by adjusting time through NTP. I suggest to synchronize time on server on 01 July 2015 01:00 hours on all Genesys Servers.

Operating System (Windows, IBM AIX and Redhat LInux)


Microsoft (http://blogs.msdn.com/b/mthree/archive/2012/07/01/leap-second-070112.aspx) and IBM (http://www-01.ibm.com/support/docview.wss?uid=isg3T1022057) confirmed that there will not be any issues.

Red hat linux is impacted by leap second and fix is available for this. More details can be found at https://access.redhat.com/articles/15145

Databases (Oracle and SQL Server)


  • SQL Server – No impact as it receives time from Windows
  • Oracle – Oracle notes that there may be multiple issues (System Hang, 100% CPU utilization etc) on LInux environment (https://blogs.oracle.com/oem/entry/oracle_support_note_for_leap). Refer to the above link for MOS note to fix this issue in your environment

Genesys CCPulse – TotalTime vs TotalAdjustedTime

Have you ever seen 15 minute interval report in CCPulse or Datamart contains more than 900 seconds like below ?

Datamart Screenshot

In this case above, T_WAIT value is 937 seconds for 15 minute interval report, which is only 900 seconds. Strange isn’t it?

If you analyze configuration details, you will find that ‘T_WAIT’ uses ‘Total_Wait_Time’ statistics in out of box solution – which uses ‘TotalAdjustedTime’ category on subject ‘AgentStatus’ as below

totalwaittime

If you use ‘Total_Ready_Time’ which uses ‘TotalTime’, you will get actual time spent by agent on ‘wait status’ in reporting interval period.

TotalReadyTime

Below is brief explanation how this works..

Scenario : Agent ‘A’ was in Ready state from 14:55 to 15:05 i.e) 10 minutes and across two reporting intervals 14:45 – 15:00 and 15:00 – 15:15

In this case, ‘TotalTime’ and ‘TotalAdjustedTime’ will be calculated as below.

TotalTime

 

For more information about reporting categories, refer to Genesys documentation here

Design Patterns – External Configuration Store Pattern

In my previous post, I discussed about ‘Runtime Reconfiguration Pattern’  and how it can be applied in Genesys environment.It is easy to implement ‘Runtime Reconfiguration Pattern’ in Genesys and realize benefits for server applications. For client applications,  I recommend to use ‘External Configuration Store’ pattern along with ‘Runtime Reconfiguration’ to improve availability and scalability.

Problem


The majority of application runtime environments include configuration information that is held in files deployed with the application, located within the application folders. In some cases it is possible to edit these files to change the behavior of the application after it has been deployed. However, in many cases, changes to the configuration require the application to be redeployed, resulting in unacceptable downtime and additional administrative overhead. For example, if you want to change log folder location for Softphone and you need to make changes in all agent desktops.

Local configuration files also limit the configuration to a single application, whereas in some scenarios it would be useful to share configuration settings across multiple applications. Examples include database connection strings, Phone book, Transfer directory etc and storage used by a related set of applications.

In addition, updates to applications and components may require changes to configuration schemas.

Solution


Most of the problems can be addressed by using Configuration Server to store information. On large contact centers with 2K+ agents,  it overloads configuration server and any load on core servers should be avoided.

Solution #1 : Use Configuration Server Proxy


Straightforward solution. Install Configuration Server Proxy and direct client application traffic to proxy

Solution #2 : Use custom application


Use custom application to store and provide configuration data as below

External Configuration Store

External Configuration Store Pattern

 

My personal preference is to use custom application to store configuration data for the following reasons

  • Flexibility to store different types of data like collections, XML document etc. Particularly useful, if you want to store phone book, personal speed dials etc.
  • Easy to store multiple versions of configuration settings. For example, user may want to use different set of transfer directory numbers for holiday period only
  • Implement business rules – Depending on user, machine, site or IP address range allows you to present different configuration settings
  • Can be used as load balancing solution. In many cases – almost in all scenarios, client applications are configured to use dedicated instance of server applications like CS Proxy or Stat Server. For example, when agent logs in,  custom application can provide CS proxy details from pool instead of dedicated instance, which increases availability and performance

In my next post, I will cover another interesting pattern ‘Cache Aside’ to improve application performance.

Design Patterns – Runtime Reconfiguration Pattern

Currently, I am in the process of design and development of custom server application to generate contact center intraday reports on regular intervals and send it to operations team. As with any other contact center servers, this is critical for business to run their operations. I was working on Microsoft Azure for cloud based services and always want to bring cloud benefits – however small it is – to enterprise customers.

One of the main benefit for cloud based solution is ‘always on’ and ‘Runtime Reconfiguration Pattern’ is used to reduce downtime for this.

Problem


  • Agents can be added or removed from reporting group at any time
  • Queues can be added or removed from reporting group at any time
  • Ability to support new reporting templates
  • Ability to change report name and file format

All these changes to be applied while the application is running and should not impact other application functionalities. ‘Runtime Reconfiguration Pattern’ is the perfect solution here.

Pattern overview


Typically, hosting infrastructure sends notifications for any configuration changes. Application will examine the change and apply them to relevant components. From this point onwards, application will use new configuration value in the application.

More details about this pattern can be found from Microsoft site here

Runtime Reconfiguration Pattern

Implementation


Runtime Reconfiguration Pattern is used heavily by Genesys to support dynamic changes. For example, any changes made by Genesys CME or Administrator are applied dynamically to relevant servers using notifications.

In my application, I used Genesys Platform SDK – Configuration Server to get notifications and handled changes. Here are design implementation details

  • Store only configuration server details locally
  • On startup, connect to configuration server and retrieve details from application options
  • Subscribe for change notifications from Configuration Server
  • Application is running now
  • When application configuration is changed using CME or Genesys Administrator, Configuration Server sends notification to application
  • Changes are examined and applied to relevant modules within the application

When to use this in Genesys environment


I strongly recommend to use this pattern for server applications only as it uses single connection with configuration server. For client applications like Softphone, it is not recommended as it will use one connection for each instance, which will increase load on Configuration server and severely impacts operation when it crosses 2K connection.

If it is absolutely required, I suggest developing custom server application to support this. I will cover the details for this in my next post.

Genesys Workspace Desktop – Custom Screen Pop

In Jan 2015, I attended Genesys Customer Experience demo center in Frimley, UK and was really impressed with new setup & product capabilities especially Conversation Manager. It was best demonstration from Genesys by some distance and recommend you to request or attend demo from your account Manager. Apart from Converstation Manager & Orchestration Server for cross channel capabilities , Genesys workspace desktop and Speech analytics gained good attention from other members.

Few weeks back,  I was asked to assist in showing custom screen pop using Genesys workspace desktop. Finally, I am able to allocate time and worked on this week. As usual with any new projects, there are challenges as below

  • Genesys Documentation can be better
  • Workspace is based on MVVM architecture pattern. Personally, I  prefer MVVM  model for desktop applications but finding an resource with MVVM and Genesys capability is rare

If you understand MVVM and Genesys, it is easy to do customization on Workspace. In this post, I will show workspace customization to populate web page for inbound call

Genesys Workspace

Genesys Workspace

In my case, screen pop is custom view to show web page and is based on user data ‘AppURL’. For testing, I populated it with BBC website URL.

Sample Solution


  • Create view (SampleView), view model (SampleViewModel) and model (ISampleViewModel) class.

In my case, SampleView contains webbrowser control and ‘SampleViewModel’ contains properties and events for databinding.  Problem is that webbrowser.source is not dependency property and have to use workaround as below

 

 

  • Subscribe to Telephony events as below

  •  Populate web browser control on ‘Ringing’ event as below

 

Some useful links for Genesys workspace customization as below

Scheduled Tasks – Result Codes

List of windows scheduled task result codes below

  • 0 or 0x0: The operation completed successfully.
  • 1 or 0x1: Incorrect function called or unknown function called.
  • 2 or 0x2: File not found.
  • 10 or 0xa: The environment is incorrect.
  • 0x41300: Task is ready to run at its next scheduled time.
  • 0x41301: Task is currently running.
  • 0x41302: Task is disabled.
  • 0x41303: Task has not yet run.
  • 0x41304: There are no more runs scheduled for this task.
  • 0x41306: Task is terminated.
  • 0x8004130F: Credentials became corrupted (*)
  • 0x8004131F: An instance of this task is already running.
  • 0x80070002: Basically something like file not available (2147942402)
  • 0x800704DD: The service is not available (is ‘Run only when an user is logged on’ checked?)
  • 0xC000013A: The application terminated as a result of a CTRL+C.
  • 0xC06D007E: Unknown software exception

and useful links to troubleshoot scheduled task issues

Scheduled Tasks – Result Codes

List of windows scheduled task result codes below

  • 0 or 0x0: The operation completed successfully.
  • 1 or 0x1: Incorrect function called or unknown function called.
  • 2 or 0x2: File not found.
  • 10 or 0xa: The environment is incorrect.
  • 0x41300: Task is ready to run at its next scheduled time.
  • 0x41301: Task is currently running.
  • 0x41302: Task is disabled.
  • 0x41303: Task has not yet run.
  • 0x41304: There are no more runs scheduled for this task.
  • 0x41306: Task is terminated.
  • 0x8004130F: Credentials became corrupted (*)
  • 0x8004131F: An instance of this task is already running.
  • 0x80070002: Basically something like file not available (2147942402)
  • 0x800704DD: The service is not available (is ‘Run only when an user is logged on’ checked?)
  • 0xC000013A: The application terminated as a result of a CTRL+C.
  • 0xC06D007E: Unknown software exception

and useful links to troubleshoot scheduled task issues

Genesys Customer Care – Auto follow-up

Recently, Genesys re-designed their auto follow-up process for customer care tickets. As per new process, follow-up process is triggered whenever Genesys proposes a solution or requests information for an open case as below

  • First follow-up – After 2 business days without response
  • Second follow-up – After 5 business days without response
  • After 10 business days, ticket will be closed and notification sent to user.

In many cases, even though I provided response to Genesys & waiting for feedback, I still got auto follow-up messages and tickets were getting closed. As an user, it was frustrating experience and raised it with Genesys about this process

Now I received clarification on how this process works and thought will share it with you

  • We need to provide response by using web interface only. Unlike old ticketing system, replying to emails doesn’t change ticket status
  • I used to update ticket by using ‘Post Update’ button. Genesys confirmed that it doesn’t change ticket status and we should use ‘Provide response’ button from top of the page. Screenshots below for reference.
Add

Use ‘Provide Response’ button

Don't use 'Post Update'

Don’t use ‘Post Update’

 

My opinion – and I shared it with Genesys – it doesn’t help end user/customer. As such, Genesys environment is complex to understand for any new comer and always encourage support engineers to use phone conversation to seek clarifications. Auto follow-up process should be triggered only when the solution is provided & agreed by customer or when support engineer enables it.

Hope Genesys will improve process to help customers 🙂