Release Notes
What's new
Data Model
- Webex-User licensing
- Inbound (current) measure group (EA feature)
- SLT scenarios measures
- Bucket measures
- Auto CSAT measures
- Agent State Activity measures for Agent and ChannelType
- Auto Attendant measures
- Phone number integration
- Hunt Group & Auto Attendant dimension import
Webex Contact Center Reports
- New Task Real Time report (EA feature)
- New Active Inbound Tasks report
- New Distribution by Bucket report
- New Auto CSAT report
- New Agent State Details report
Webex Calling Reports
- New Auto Attendant report
- Add Transfer Name in Transfer Destination report
- Add Place name from Webex numbers
- Add Hunt Group name in Hunt Group report
- Automated PhoneNumber mapping based on known Webex numbers
System
- Real Time EA: InboundTasks
- Intraday performance boost
- Model storage optimization
- Several bug fixes
Important notes
None
New Features
This section lists new features or functionality for this version.
#291 - Add Transfer Name in Transfer Destination report
Description: Currently, only transfer numbers are used in Transfer Destination report
Requirements: With having now all known numbers in Transfer Number dimension, we should also add the name for transfer destinations.
Proposed solution: Add the Transfer name as additional slicer and as additional hierarchy level
#290 - Add Place name from Webex numbers
Description: There is no name available for places (workspace devices)
Requirements: We should include the device name
Proposed solution: Take the name of place devices from the Webex number table.
#289 - New Agent State Details report for Data Analyst
Description: By removing the All fields reports and facts, there is no detail data for agent states available anymore.
Requirements: We must create a new agent state detail report for data analyst including the detail fields from facts
Proposed solution: Create a new report showing the details per channel, the measures by channel type and the measures by agent.
#288 - Agent State Activity measures for Agent and ChannelType
Description: Currently, we have some measures per agent and some per channel type. This results in having correct total data for each but if both are used in the same table, either the rows or the total are not correct.
Requirements: We should have all measures for both and they should work in the same table report.
Proposed solution: We must consolidate channel data to channel type and then consolidate channel type data to agent.
#284 - Integrate Auto Attendants from API
Description: We need to have the Auto Attendant names, number and parameters as a dimension.
Requirements: See description. We need this for Auto Attendant Analytics.
Proposed solution: Integrate Auto Attendants from the Read the List of Auto Attendants API and add it as a new dimension table. There are lots of other APIs to get the configuration parameters but we try to get info what happened from the CDR first.
#283 - Optimize Power BI data storage size
Description: Data in Power BI can get large very quick in larger systems
Requirements: We should reduce the data in the model as much as we can
Proposed solution:
Remove unused fields and add separate all fields dataset containing last 90 days only
-> implement new measures/features before separating datasets!
Remove unused fields from the PBI semantic model in data explorer.
Keep the fields that are useful for filter purposes or to get insights in detail reports.
Remove all fields reports from main reports.
Create All fields dataset only with dataset report (todays master) and apply filter to facts for -90 days in data explorer.
#282 - Active Inbound Tasks report
Description: Create a new report showing active inbound tasks only.
Requirements: The report can be used to track incompleted tasks in the historical data.
Proposed solution: Example created in internal development workspace
#277 - Create Auto CSAT Measures & Report
Description:
Fields in TASKDETAILS:
- csatScore (int) Represents the customer satisfaction score.
- autoCsat (string) The autoCsat is a score assigned to a contact centre interaction based on operational metrics and the customer agent sentiments associated with thatinteraction
But there are no measures.
Requirements:
Create Inbound Measures when we see data about Auto CSAT.
Analyzer has:
- Avg Auto CSAT Score
- Min Auto CSAT Score
- Max Auto CSAT Score
Proposed solution: Create a specific Auto CSAT Score report if this makes sense
#276 - Create Task RealTime Reporting as EA feature
Description: Create a near real time integration to poll active tasks into the datamart every 10 seconds and create a report in Power BI. The report can be refreshed manually or with a page refresh of 10 seconds with premium licenses.
Requirements: Tasks in queue including the wait time should be available in Power BI.
Proposed solution: We should start with polling the Search API and handout the solution to customers as EA.
#272 - Create "Inbound SLT Range" Measure group and measures
Description:
Create a new measure group and measures to simulate different Service Level Thresholds and Service Level calculations as available in "CCBI for CCE": https://docs.bucher-suter.com/ccbi/docs/measures_inbound_slt_range
But use a different naming to have a better sort order, to align with buckets and to scale for the future.
Requirements: Same measures and Report as available for CCE.
Proposed solution: Same integration for default SL only.
#267 - Create automated PhoneNumber mapping based on webex numbers
Description: Webex Phone Numbers are available / displayed but not used in the PhoneNumber mapping.
Requirements: Webex Phone Numbers should be automatically added to the PhoneNumber Mapping table if not existing there.
Proposed solution: Include the Webex phone number table dim_number in View vDIM_PHONE_NUMBER, if the number does not exist in the imported file.
#266 - Integrate Phone Numbers from API
Description: Currently, the PhoneNumber mapping table has to be filled by the customer without any input. All Webex internal numbers could be loaded from the "Get Phone Numbers" API and used for display purposes and for an automated configuration of the PhoneNumber mapping.
Requirements: Make the phone numbers available as a dimension in CCBI.
Proposed solution: Insert the numbers including all details from the API into a dimension table. Store and join the location table based on the surrogate key.
#264 - Create Bucket Interval measures and report
Description: Create bucket measures without bucket configuration. Using configured values makes it more complex to implement and won't support different requirements within the same system. Scaling the buckets is a better option and easy to start!
Requirements: There should be a bucket report that shows answered and abandoned tasks by bucket intervals.
Proposed solution: Create bucket interval measures based on this rule to have correct sort order and to create additional buckets later on.
#261 - Add Auto Attendant analytics to Calling reporting
Description: Add Auto Attendants analytics
Requirements: There should be a report about Auto Attendants available (same as in Control Hub)
Proposed solution: Add the Auto Attendant dimension from the Read the List of Auto Attendants API including its parameters and create a new report based on aggregation flags for Auto Attendant calls.
#259 - Add Webex license information
Description:
Extract licenses from List Licenses API into dim_License table.
Extract user license assignments from Get License Details API into con_LicenseAssignment table.
Add two new fields "CallingLicense" and "ContactCenterLicense" into view vDIM_USER with a check against the license assignment and set to 1 if the user has a license assigned and to 0 if not.
Add a filter in all user slicers and filter the corresponding users for the dataset by default.
Requirements: We need to see the user type based on the licenses that are assigned
Proposed solution: Extract all licenses including the consumption parameters and user assignments and include the flag for Calling and Contact Center licenses into the user dimension. Also create a new license snapshot report including the consumption and assigned users.
#236 - Optimize performance of Intraday reports
Description: Optimize performance of Intraday reports and verify CPU performance if Intraday is refreshed frequently
Requirements: Intraday reports should open instantly and there should be the smallest possible impact for the CPU
Proposed solution: Reduce the load time of all visuals by reducing the amount of data that needs to be joined. This might be achieved by reducing the fact dimensions or by changing the dimensions to direct query as well. Investigate where the most of the time is coming from and maybe reduce the semantic model.
Reduce the data model too if needed to what is really needed. Eventually remove the task details completely.
Update webdoc with a simple explanation what is available in the intraday data model.
Bug Fixes
This section lists bug fixes for this version.
#279 - Error 429 in procedure staging_detailedCallHistory
Symptom: ETL job fails as the procedure staging_detailedCallHistory throws an error
Conditions: More than 5'000 records to be fetched in the staging process
Workaround: None
Further Problem Description: Each minute a maximum of 10 requests can be sent to the API, on the 11th request it will return the error "429 Too Many Requests". The error will be thrown until the start of the next minute (example: error 429 occurs at 09:54:15, next possible request at 09:55:00). Each request fetches 500 records, so the maximum number of records is 5'000 per execution.
#275 - Change lastActivityTime from unix to datetime
Symptom: The field lastActivityTime is displayed in unix time
Conditions: None
Workaround: None
Further Problem Description: The field was not used before and will automatically update in Power BI model. The change only applies to all views where the field is used.
#269 - Verify the length of all varchar fields incl. object ids
Symptom: ETL Load job produces an error
Conditions: Sometimes, Webex logs impossible values that are finally longer than our field length in our datamart. So we have to verify the length of all fields, including ids.
Workaround: None
Further Problem Description: This issue happened for the taskDetails when the lastAgentSessionId was '1b50ebdc-400c-42ae-9975-027b5775199f-e7d7c389-cf5f-4c9e-adf3-341933cec861'
#215 - Pagination callling_People API
Symptom: Only up to 1000 users can be fetched by the calling people API today.
Conditions: If there are more than 1000 users configured for Calling, some users are missing.
Workaround: None
Further Problem Description: New CLR required because the people API handles the pagination differently.
Issues fixed in Service Release 1.4.1
#303 - Intraday load can create PK violation
Symptom: Violation of PRIMARY KEY constraint for agent activities
Conditions: Same event for same agent and state one millisecond later can't be filled in intraday table because the precision of the datetime field does not handle this detail and results in the same timestamp.
Workaround: None
Further Problem Description: We need to store the data in a bigint field and convert to datetime in the view (same as for the normal historical load)
#301 - Improve performance on view vFACT_TASKLEGDETAILS
Description: It takes very long time until the view vFACT_TASKLEGDETAILS starts delivering data
Requirements: The fact views should instantly start to deliver data
Proposed solution: The reason for the delay are the additional joins with the dimension tables (variables, wrapupcode and channel type) based on varchar fields.
Apply indexes in table fact_TaskLegDetails on all those fields that are used to join dimension tables.
#300 - Filter slicers based on available fact data
Description: All dimensions are shown, even if users have RLS filter on facts
Requirements: Only objects should be displayed in slicers, where facts are available for the user
Proposed solution: All slicers should have a measure filter configured from the corresponding fact table.
CCBI_WxCC Reports
Add filter "Total Inbound Tasks is greater than 0" to the following Slicers:
- Dial Number
- Entry Point
- Queue
- Site
- Wrapup Code Name
Add filter "Channel Logged-on Time (s) is greater than 0" to the following Slicers:
- Team
- User
CCBI_WxC Reports
Add filter "Total Calls is greater than 0" to the following slicers:
- Location
- User Name
- Department
- Place Name
- Auto Attendant
- Hunt Group
#299 - Create an alarm if the token refresh does not work
Description: We should get an alarm if the token refresh does not work. The procedure only runs every 360 minutes and we are only getting alarms if 3 errors happens during one hour.
Add a check after the refresh to verify if the token was refreshed. This could be verified with the expiry date or the outcome of the API call. If the token was not refreshed, raise an error 3 times to trigger the alarm.
#296 - Database disappeared from SQL MI Monitoring
Symptom: One datamart disappeared from SQL MI Monitoring Dashboard after the ETL job was not running for more than 30 days
Conditions: None
Workaround: None
Further Problem Description: The view SYS_DATA_FRESHNESS was empty, when there was no data loaded and where the freshness was measured from. As a result, the whole monitoring summary was empty as well. This view must always deliver a result with a freshness of 0.
#295 - Log error on SQL database if token expired
Symptom: No data is loaded by the ETL job without any error
Conditions: If a token expired, because the token refresh did not work, the ETL job should not quit successfully and should raise an error. The error should alarm the operations team with a specific message about the issue.
Add a check in SP sys_refresh_token at the beginning so that the check is executed every 15 min.
Workaround: None
Further Problem Description: -
Issues fixed in Service Release 1.4.2
#319 - Answered measure not correct in case of consultative transfers
Symptom: Inbound Answered counts consultative calls to agents also for the initial queue.
Conditions: Transferring inbound calls to other agents directly counts twice
Workaround: None
Further Problem Description: Cisco creates separate incoming and handled call legs for the consultation call for the same agent and the same queue but those legs do not count for the queue. To fix this problem, we need to add an additional filter for answered calls to only include queue count calls.
This fix must be applied to the CCBI_WxCC_v1-4-2_Dataset and CCBI_WxCC_v1-4-2_Dataset_Intraday
#313 - ETL job fails because of too many requests in a given time
Symptom: Many of the ETL jobs fail with the message of too many requests in a given time and we do not get any alert.
Conditions: Normal execution of the ETL job
Workaround: None
Further Problem Description: There is no rate limit pause in the dim API calls and we raise an error if the limit is reached. We should wait in every API call for 20 seconds if the limit is reached and not raise any error.
#308 - Cannot include users for the given license
Symptom: ETL job fails with following message:
Error while accessing the URL: 400 (BadRequest): Cannot include users for the given license [SQLSTATE 42000] (Error 50000)
Conditions: Adding new scope spark-admin:licenses_read and executing procedure "staging_calling_LicenseAssignment"
Workaround: Excluding SP from ETL job
Further Problem Description: -