Skip to main content
Version: 5.13

Cisco UQ

3rd Party Host System Requirements

For third-party host system requirements for all involved Cisco components, as well as information regarding hardware and software requirements of CCE/CCX, refer to the Hardware and System Software Specification (Bill of Materials): Cisco ICM/IPCC Enterprise & Hosted Edition which is accessible from:

https://www.cisco.com/c/en/us/support/customer-collaboration/packaged-contact-center-enterprise/products-installation-guides-list.html

https://www.cisco.com/c/en/us/support/customer-collaboration/unified-contact-center-enterprise/products-implementation-design-guides-list.html

Host System Performance Requirements for Case Routing Add-on (CCE only)

The Case Routing Add-on Components of Connects for Salesforce – CCE Edition can be deployed on an Operating System that runs either directly on the server hardware or on a bare-metal virtualization solution.

Host System Deployment Options

Host System Deployment Options

General Host System Classification

b+s classifies host systems for its software solutions regardless of whether they are deployed on a virtualized or non-virtualized operating system as followed:

Host System ClassCPU CoresRAMDisk Space requirements for b+s product
Small24GB40GB
Medium44GB40GB
Large48GB40GB
info

The numbers above give the requirements for a b+s product and not the overall host system (requirements for the operating system are not included).

General Virtualization Requirements

b+s provides predefined OVA-Templates for all host system classes listed in the table above. The templates contain essential hardware specifications which are required for quick deployment of a virtualized host system (i.e. number of CPU sockets, number of CPU cores, memory size etc.). Be aware that additional configuration options like network adapter settings will still have to be configured manually by a system administrator. The same applies for the installation and configuration of the host system operating system.

If b+s software is deployed on a virtualized Windows Server operating system, the following restrictions apply:

  • Only VMware ESX or ESXi bare-metal virtualization (type 1 hypervisor) software is supported. For co-residency of b+s software components with Cisco Unified Communications (UC) software refer to the official Cisco co-residency policy and the general Cisco UC virtualization guidelines.
  • In case of a non-co-resident deployment of Cisco UC and b+s software, it is permissible to deploy 3rd party software on a separate VMware instance on the same server (blade server or normal rack server) as long as the VMware instance where b+s software is installed receives the required hardware resources from the host system at all times.

Product Deployment and Scalability Considerations

The following table shows which host system class is suited to which deployment of b+s Connects for Salesforce – CCE/CCX Edition:

Host System Class: Medium

Purpose: Normal Deployments

Maximum incoming tasks/sec across all Channels: 5

Maximum incoming tasks/hour across all Channels: 15000

Comments: For normal production deployments

Important notes

The numbers “Maximum tasks limits” above only apply to the b+s RoutingAdapter Ext-MRI. For Cisco CCE/PCCE and the Salesforce Edition, additional limits may apply.

For the maximum number of agents supported for Cisco Universal Queue, the Cisco CCE and Cisco Finesse limits apply.

For CCE and PCCE Sizing and Configuration Limits, please consult the Cisco CCE/PCCE Solution Design Guide which corresponds to your CCE/PCCE version.

Cisco Packaged Contact Center Enterprise Product Specifications document.

On Salesforce, the max number of tasks that can be routed per day depends on our Salesforce Edition

-> The maximum number of delivered event notifications within a 24-hour period, shared by all CometD clients (Cisco Universal Queue consumes 4 events / routed task in average)

Please consult Salesforce Features and Edition Allocations.

PushTopic Streaming Allocations

The dimensioning guidelines above were tested in a lab testing environment that included a test Salesforce CRM system setup. The actual quality of service (delays, responsiveness, etc.) experienced by the agents might vary from the above dimensioning guidelines. These variations include structure and size of the Salesforce CRM database, message payload, transferred Salesforce CRM attached data, intensity of the contact processing workflow(s), as well as other Salesforce CRM configuration and topology variables outside of the scope of the product.

Cisco Contact Center Configuration

The configuration steps for CCE and PCCE are slightly different.

After configuring CCE or PCCE, continue with section Multi Agent PG Configuration.

CCE configuration

For the configuration in CCE the following are needed

  • Unified CCE Web Administration (web application) at https://\<FQDN>/cceadmin
  • Configuration Manager on Unified CCE AW-HDS-DDS
  • Script Editor on Unified CCE AW-HDS-DDS or Internet Script Editor
  • Peripheral Gateway Setup on the Cisco Unified CCE PG server

The following configuration steps are required

  • Configure Network VRU for Media Routing
  • Configure Media Routing PG and Pim
  • Set up the Media Routing PG and Pim
  • Add Media Classes
  • Media Routing Domains
  • Define Application Path and add Application Path Members
  • Configure Call Type
  • Configure Dialed Number / Script Selector
  • Configure Skill Group
  • Labels
  • CCE Script for Media Routing

Configure Network VRU for Media Routing

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Network VRU Explorer

Add new Network VRU

  • Name: MR_VRU
  • Type: Type 2
  • Description: Network VRU for b+s Connects Media Routing Universal Queue

Configure Media Routing PG and Pim

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | PG Explorer

Create a media routing Pim and routing client for the b+s Routing Adapter.

  1. Add PG
  • Name: Connects_UQ
  • Client type: MediaRouting
  1. Add Peripheral

On the Peripheral tab

  • Name: Connects_RA_MRI
  • Client type: MediaRouting
  • Check the Enable post routing check box.

On the Advanced tab

  • Network VRU: select Network VRU configured in the previous step

On the Routing Client tab

  • Routing Type: NONE
info

Write down the Logical Controller ID and the Peripheral ID. These will be used when to set up the PG.

Set up the Media Routing PG and Pim

On the Cisco Unified CCE PG server: from Cisco Unified CCE Tools, select Peripheral Gateway Setup.

  • On the Components Setup screen, in the Instance Components panel, select the PG Instance component, click Edit
  • In the Peripheral Gateways Properties screen, click Media Routing, click Next
  • Click Yes at the prompt to stop the service
  • From the Peripheral Gateway Component Properties screen, click Add, select the next Pim, and configure with the Client Type of Media Routing as follows
    • Check Enabled
    • In the Peripheral Name field, enter Media Routing
    • In the Peripheral ID field, enter the Peripheral ID for the unused Multichannel peripheral that you identified in previous step
    • For Application Hostname (1), enter the hostname of the b+s Routing Adapter server A
    • By default, the b+s Routing Adapter accepts the MR connection on Port 7021. The Application Connection Port (1) setting must match the port setting on the b+s Routing Adapter
    • Configure Application Hostname (2) and Application Connection Port (2) for the b+s Routing Adapter server B, click OK
  • Accept defaults and click Next until the Setup Complete screen opens

Add Media Classes

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Media Class List

  1. Add new Media Class
  • Name: MC_Connects_Ticket
  • Description: Ticket routing integration for Connects
  • Life: 300 seconds
  • Start timeout: 5 seconds
  • Max duration: 432000 seconds (This entry describes the lifetime of the ticket on the PG)
  1. Add new Media Class
  • Name: MC_Connects_Chat
  • Description: Chat routing integration for Connects
  • Life: 300 seconds
  • Start timeout: 5 seconds
  • Max duration: 432000 seconds (This entry describes the lifetime of the chat on the PG)

Media Routing Domains

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Media Routing Domain List

  1. Add new Media Routing Domain
  • Name: MRD_Connects_MRI_Ticket
  • Media routing domain ID: is assigned by the system
  • Media class: MC_Connects_Ticket
  • Task Life: (already filled with default from media class)
  • Task Start timeout: (already filled with default from media class)
  • Task Max duration: (already filled with default from media class)
  • Calls in Queue Max: 10000
  • Calls in Queue Max per call type: 10000
  • Calls in Queue Max time in queue: 431000 (This entry describes the lifetime on the Rogger)
  • Service level threshold: 30 (default)
  • Service level type: Ignore Abandoned Calls
  • Interruptible: <selected>
  • Description: <empty>
  1. Add new Media Routing Domain
  • Name: MRD_Connects_MRI_Chat
  • Media routing domain ID: is assigned by the system
  • Media class: MC_Connects_Chat
  • Task Life: (already filled with default from media class)
  • Task Start timeout: (already filled with default from media class)
  • Task Max duration: (already filled with default from media class)
  • Calls in Queue Max: 10000
  • Calls in Queue Max per call type: 10000
  • Calls in Queue Max time in queue: 431000 (This entry describes the lifetime on the Rogger)
  • Service level threshold: 30 (default)
  • Service level type: Ignore Abandoned Calls
  • Interruptible: <not selected>
  • Description: <empty>
info

Please take a note of the configured Media Routing Domain ID's. These IDs will later be used in software installation.

Add Application Path Members

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Application Path List

Select Application Path xxxx.UQ.Desktop which represents the Finesse desktop. xxxx is the “Logical Controller ID” or the voice PG. Example:

  • Application Instance: UQ.Desktop
  • Peripheral gateway: CUCM_PG
  • Name: 5000.UQ.Desktop
  • Add Application Path Members (for all Media Routing Domains configured in the previous steps)
    • Peripheral: \<select your voice Peripheral>
    • Media routing domain: MRD_Connects_MRI_Ticket
  • Add Application Path Members (for all Media Routing Domains configured in the previous steps)
    • Peripheral: \<select the voice Peripheral>
    • Media routing domain: MRD_Connects_MRI_Chat

Configure Call Type

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Call Type List. Click Add to create a new Call Type

Configure Dialed Number / Script Selector

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Dialed Number / Script Selector List. Click Add to create a new Script Selector

  1. Script selector for Ticket:
  • Routing Client: Connects_RA_MRI (Routing client configured in previous step)
  • Media Routing Domain: MRD_Connects_MRI_Ticket (media routing domain configured in previous step)
  • Dialed Number String: <dialed number string configured in RoutingAdapter.ini>
  1. Script selector for Chat:
  • Routing Client: Connects_RA_MRI (Routing client configured in previous step)
  • Media Routing Domain: MRD_Connects_MRI_Chat (media routing domain configured in previous step)
  • Dialed Number String: <dialed number string configured in RoutingAdapter.ini>

Configure Skill Group / Precision Queues

Configure either skill groups or precision queues.

a) Skill groups:

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Skill Group Explorer.

Click Add Skill group to create a new Skill Group.

  • Then for the Media Routing Domain, select one of the Task Routing MRDs you created.
    • Proceed to assign Agents to the skill group.

b) Precision queues:

Navigate to Unified CCE Administration | Manage | Attributes. Click New to create the required Attributes.

Navigate to Unified CCE Administration | Manage | Precision Queues. Click New to create a new Precision Queue.

  • Then for the Media Routing Domain, select one of the Task Routing MRDs you created.
    • Proceed to assign Attributes to your agents

PCCE configuration

For the configuration in PCCE the following are required

  • Unified CCE Web Administration (web application) at https://\<FQDN>/cceadmin
  • Configuration Manager on Unified CCE AW-HDS-DDS
  • Script Editor on Unified CCE AW-HDS-DDS or Internet Script Editor
  • Peripheral Gateway Setup on the Cisco Unified CCE PG server

The following configuration steps are required

  • Determine the Peripheral ID for a Multichannel peripheral
  • Set up the Media Routing PG and Pim
  • Add the b+s RoutingAdapter server(s) as External Machine(s)
  • Add Media Routing Domain
  • Define Application Path
  • Configure Call Type
  • Configure Dialed Number / Script Selector
  • Configure Skill Group
  • Labels
  • CCE Script for Media Routing

Determine the Peripheral ID for a Multichannel peripheral

Navigate to Unified CCE Administration | System | Peripheral Gateways. Determine the Peripheral ID for a Multichannel peripheral that is unused.

Note

PCCE has three pre-defined MR Pims

  • Multichannel -> pre-defined for ECE
  • Multichannel 2 -> pre-defined for Social Miner
  • Multichannel 3 -> pre-defined for 3rd party integration

For example, for b+s Media Routing, use Multichannel 3

PCCE Peripheral Gateways

Set up the Media Routing PG and Pim

On the Cisco Unified CCE PG server: from Cisco Unified CCE Tools, select Peripheral Gateway Setup.

  • On the Components Setup screen, in the Instance Components panel, select the PG Instance component | Edit
  • In the Peripheral Gateways Properties screen, click Media Routing | Next
  • Click Yes at the prompt to stop the service
  • From the Peripheral Gateway Component Properties screen, click Add, select the next Pim, and configure with the Client Type of Media Routing as follows:
    • Check Enabled
    • In the Peripheral Name field, enter Media Routing
    • In the Peripheral ID field, enter the Peripheral ID for the unused Multichannel peripheral identified in the previous step
    • For Application Hostname (1), enter the hostname of the b+s Routing Adapter server A
    • By default, b+s Routing Adapter accepts the MR connection on Port 7021. The Application Connection Port (1) setting must match the port setting on the b+s Routing Adapter
    • Configure Application Hostname (2) and Application Connection Port (2) for b+s Routing Adapter server B
    • Click Ok
  • Accept defaults and click Next until the Setup Complete screen opens.

Add b+s RoutingAdapter server(s) as External Machine(s)

Navigate to Unified CCE Administration | System | Deployment and add b+s Routing Adapter servers as External Machines (3rd Party Multichannel)

Add Media Routing Domain

Navigate to Unified CCE Administration | Manage | Media Routing Domains and click New.

Configure Name, for example “Case”, and select Interruptible if required.

  1. Add a new Media Routing Domain:
  • Name: MRD_Connects_MRI_Ticket
  • Media routing domain ID: is assigned by the system
  • Media class: MC_Connects_Ticket
  • Task Life: 1200 seconds
  • Task Start timeout: 5 seconds
  • Task Max duration: 432000 seconds
  • Max in Queue: 10000
  • Max Time in Queue: 431000
  • Service level threshold: 30 (default)
  • Service level type: Ignore Abandoned Calls
  • Interruptible: <selected>
  • Description: <empty>
  1. Add new Media Routing Domain:
  • Name: MRD_Connects_MRI_Chat
  • Media routing domain ID: is assigned by the system
  • Media class: MC_Connects_Chat
  • Task Life: 1200 seconds
  • Task Start timeout: 5 seconds
  • Task Max duration: 342000 seconds
  • Max in Queue: 10000
  • Max Time in Queue: 431000
  • Service level threshold: 30 (default)
  • Service level type: Ignore Abandoned Calls
  • Interruptible: <not selected>
  • Description: <empty>
info

Make a note of the configured Media Routing Domain ID's. These IDs will be used during software installation.

Add Application Path Members

On Unified CCE AW-HDS-DDS open CCE Configuration Manager | Application Path List

Select Application Path xxxx.UQ.Desktop which represents your Finesse desktop. xxxx is the Logical Controller ID or your voice PG. For example:

  • Application Instance: UQ.Desktop
  • Peripheral gateway: CUCM_PG
  • Name: 5000.UQ.Desktop
  • Add Application Path Members (for all Media Routing Domains configured in the previous steps)
    • Peripheral: CUCM_PG_1
    • Media routing domain: MRD_Connects_MRI_Ticket
  • Add Application Path Members (for all Media Routing Domains configured in the previous steps)
    • Peripheral: CUCM_PG_1
    • Media routing domain: MRD_Connects_MRI_Chat

Configure Call Type

Navigate to Unified CCE Administration | Manage | Call Types. Click New to create the new Call Type

Configure Dialed Number / Script Selector

Navigate to Unified CCE Administration | Manage | Dialed Number. Click New to create a new Script Selector

  • Dialed Number String: <dialed number string configured in RoutingAdapter.ini>
  • Routing Type: 3rd Party Multichannel
  • Media Routing Domain: media routing domain configured in previous step
  • Call Type: Call Type configured in previous step

Configure Skill Group / Precision Queues

Configure either skill groups or precision queues.

a) Skill groups:

Navigate to Unified CCE Administration | Manage | Skill Groups. Click New to create a Skill Group for Media Routing

  • Name: <Name of Skill Group>
  • Media Routing Domain: For the media routing domain configured in the previous step
    • Proceed to assign Agents to the skill group.

b) Precision queues:

  • Navigate to Unified CCE Administration | Manage | Attributes. Click New to create required Attributes.
  • Navigate to Unified CCE Administration | Manage | Precision Queues. Click New to create a new Precision Queue.
    • For the Media Routing Domain, select one of the Task Routing MRDs you previously created.
    • Proceed to assign attributes to your agents

Multi Agent PG Configuration

In some scenarios, it is required to configure media environment to work with multiple Agent PGs. In order to configure, you will need to follow the next steps:

Configure the new Agent PG.

Follow the instructions in Cisco guide in order to configure the new Agent PG.

Configure new SkillGroup for the new Agent PG agents.

Follow the steps described in section Configure Skill Group / Precision Queues (CCE) or Configure Skill Group / Precision Queues (PCCE) depending on your CCE or PCCE installation.

info

Make sure you use the same Media Routing Domain in the new SkillGroup.

Add the Application Path member to the Application Path configuration for the new Finesse Server.

Follow the steps described in section Add Application Path Members (CCE) or Add Application Path Members (PCCE) depending your CCE or PCCE installation.

CCE Script (CCE and PCCE)

Labels

With CCE it is possible to configure global predefined labels that can be used in the different CCE routing scripts. Alternatively, use Dynamic Labels in the CCE routing script.

With PCCE it is not possible to configure global predefined labels that can be used in the different PCCE routing scripts. For each routing script the labels must be configured directly in the script editor as a Dynamic Label.

PCCE Dynamic Label

The RoutingAdapter is able to handle labels received from the CCE routing script.

Overflow

Too many tasks in queue – tasks will be rerouted after n seconds (configurable with the OverflowDefaultTimeInSec-parameter)

Overflow_<WaitTimeMin>

Too many tasks in queue – tasks will be rerouted after \<WaitTimeMin\>-minutes (e.g. OVERFLOW_90 initiates re-route after 90 minutes)

\<WaitTimeMin\> is decimal

Error

Routing error, cannot be recovered. This task will not be rerouted by the Routing Adapter. The Routing Adapter tries to change the case to the configured failure queue

Timeout

No agent found – task is rerouted immediately

Reroute Reasons

When rerouting a task, Routing Adapter UQ sets a reroute reason into a variable (Peripheral Variable or ECC variable) as configured in the field RoutingReasonVariable. See RoutingReasonVariable for configuration details.

Reroute reasons are case-sensitive. Possible values of the reroute reason:

  • Rona: This reason is assigned when Salesforce Omni Push Timeout Timer has elapsed. See section RONA and Reject for details.
  • Reject: Is assigned when the agent declined a task.
  • Reroute: Is assigned if it is not clear why the task was re-routed.
  • Restart: Is assigned if the tasks are recovered after a connection interruption or a restart of the Routing Adapter.
  • Transfer: Is assigned if the chat was transferred to a chat button.
  • Overflow: CCE routing script returned with the label Overflow.
  • Timeout: CCE routing script returned with the label Timeout.

CCE Script

Script Editor on Unified CCE AW-HDS-DDS or Internet Script Editor

Sample Script to route media tasks:

CCE Script for Media Routing

Time in Queue / CCE Script Wait node

After the task is queued, a Wait node is called with a time lower than the system limit (MaxTimeInQueue)

MaxTimeInQueue

The maximum duration of queued tasks of both Routers have to be increased from the default 3600 seconds up to 431,000 seconds (5 days) in the registry (HLM\SW\cisco...\<instance>\RouterA\Router\CurrentVersion\Configuration\Queuing\MaxTimeInQueue)

The registry settings on the PGs are not relevant for this case and can be left as they are.

The Wait within the script before the task timeout has to be shorter than the MaxTimeInQueue and should be set to a maximum value of 430,000 to ensure the script returns with the Timeout label and is not terminated by the MaxTimeInQueue value.

MaxCalls & MaxCallsPerCallType

The maximum amount of calls and tasks summarized for all queues (MaxCalls) and the allowed amount of calls or tasks per CallType (MaxCallsPerCallType) may be easily exceeded with MediaRouting (default = 10,000) and cause overflows. To provide a fallback, these two settings can also be changed in the registry here:

HLMSW\cisco...\<instance>\RouterA\Router\CurrentVersion\Configuration\Queuing\....

Finesse User Signout Channel

A new Administrator CLI to address Media channels sign-out functionality has been introduced with the Finesse 11.5(1)ES06 and 11.6(1) ES04 releases.

The CLI utils finesse user_signout channel is used by the Administrator to configure the media channels from which the users will be signed out.

admin: utils finesse user_signout_channel type

1: signout user from voice channel.
2: signout user from voice and non-voice media channels configured for finesse.
a: signout from all media channels configured for the user.
q: quit.

It is recommended to use the option a: signout from all media channels configured for the user, or option 2: signout user from voice and non-voice media channels configured for Finesse. When the supervisor signs out the agent, the login mask will be displayed in the gadget.

When selecting option 1, the media channels will remain connected after the supervisor forces the agent logout.

Agent Desk Settings

Agents that are configured to use the MediaRouting Ext-MRI need to have their Logout inactivity time setting set to blank.

If the Logout inactivity time setting is not blank and agents exceed the Logout inactivity time in the voice MRD, they are logged out of the voice channel even if they are actively working on tasks from non-voice MRDs. To resume working on the voice channel, agents need first to log out and back in.

RONA and Reject

This chapter describes how RONA and reject works with the Routing Adapter UQ

Limitations

  • If the agent gets a task and the gadget becomes inaccessible before the agent starts working on it, the agent state does not automatically switch to NOT_READY.

Timers

In order to support a robust environment this RONA Implementation contains three different timers. One for each involved system.

The following chapter requires a deeper, technical understanding of Salesforce and the CCE environment.

Finesse Start Timer

Defines the time span in which the gadget must receive the item. The timer starts after the CCE routing engine selects an agent. It stops after the b+s Connects for Salesforce Integration accepted the incoming Cisco item.

If the timer elapses, the agent changes to NOT_READY and every unaccepted item is removed. This is a system timer. This ensures that the agent doesn’t receive the rerouted task.

info

Must be smaller than the Routing Adapter Timer

Routing Adapter Timer

Defines the time span the gadget has to display a task to the agent. The timer starts after the routing engine selects an agent. The timer stops after the b+s Connects for Salesforce Integration created an Omni Channel AgentWork and Salesforce sends an update Event to the b+s Routing Adapter.

This timer is necessary to ensure that no task is lost if the gadget becomes inaccessible, and therefore no Omni Channel AgentWork can be created. If the timer elapses, the task gets rerouted.

The Routing Adapter Timer is set by the RerouteTimeInSec setting inside the Routing Adapter Configuration.

info

Must be greater than the Finesse Start Timer

Omni Push Timeout Timer

Defines the actual RONA time span. If the agent does not take an action on the task in the configured amount of time, their state changes to NOT_READY and the task gets removed.

Behavior of the RONA timers if the agent starts a task

Behavior of the RONA timers of the agent does not start the task

Behavior of the RONA timers if the agent rejects a task

Installation of Routing Adapter UQ

info

There is currently no installation wizard available so the installation of the Routing Adapter component has to be done manually.

Pre-requisites

Microsoft .NET Frameworks

To install and run Routing Adapter Ext-MRI 2.*, Microsoft .NET framework version 4.7.2 is required and can be downloaded from this page.
To install and run Routing Adapter Ext-MRI 3.*, Microsoft .NET framework version 8 is required and can be downloaded from this page.

info

Make sure to download the .NET Runtime and not .NET SDK or Dev-Pack.

Installation

  1. Copy the self-extracting ZIP file BucherSuter_SFDCRoutingAdapterExternalMRI_V-x-x-x-x-SFX.exe to the server
  2. Extract the ZIP file to:

C:\Program Files\BucherSuter\SFDCRoutingAdapterExternalMRI

  1. Move the following files:
SFDCRoutingAdapter_orig.ini (and rename to SFDCRoutingAdapter.ini)
install_service.bat
uninstall_service.bat
start_console.bat

To (create the folder if it does not exists already):

%PROGRAMDATA%\BucherSuter\SFDCRoutingAdapterExternalMRI

Routing Adapter installation

info

The self-extractable replaces the files in the selected destination folder with the new files in the self-extractable. This operation is performed without notification to the user.

Configuration

Edit the configuration directly in the SFDCRoutingAdapter.ini file (see Configuration of Routing Adapter UQ)

  • [Gate_mri]: Change TcpPortNumber, MediaUrlVariable
  • [Gate_sfdc]: Change SfdcOauthClientSecret, SfdcOauthClientId and StreamingApiChannel

Service Setup

Edit the existing batch files install_service.bat and uninstall_service.bat to change the service name to something other than default.

set serviceName=SFDCRoutingAdapter_v_3_0_0 set serviceName="your service name"

info

Administrator privileges are required to execute the batch files.

Install the service by executing install_service.bat

Routing Adapter service installation result

Uninstall the service by executing uninstall_service.bat

Routing Adapter service uninstallation result

Run SFDCRoutingAdapter in console by executing start_console.bat.

Routing Adapter console window

Configuration of Routing Adapter UQ

Configuration file SFDCRoutingAdapter.ini

Core section

Please refer to the section Troubleshooting Routing Adapter | Logging for more information about the log file settings.

HttpServerPort: Port for HTTP-Server offering status info
Default: 9081

TelnetServerPort: Port for remote console telnet interface
Default: 9011

AutoStartHttpServer: Automatically start Http interface
Default: 0

AutoStartTelnetServer: Automatically start Telnet interface
Default: 1

HttpAllowedHosts (*): Hosts allowed accessing the http interface
Default: 127.0.0.1

TelnetAllowedHosts (*): Hosts allowed accessing the telnet console
Default: 127.0.0.1

LogFile: Log file path
Default: C:\ProgramData\BucherSuter\logfiles\SFDCRoutingAdapterExternalMRI.log

LogMask: Trace level of log files
Default: 0x00000004

The last 4 bits are used for the log level: 1 Fatal, 2 Error, 3 Warn, 4 Info, 5 Debug

tip

It is recommended to avoid using debug level in production. Using debug level under heavy load will reduce performance.

MaxLogFileSize (*): Specifies the maximum size of a log file
Default: 10000KB

MaxLogFileCount (*): Specifies the number of roll files that are used by the file logger
Default: 10

CertificateThumbprint: Provide a thumbprint of a valid certificate
Default: Empty

info

Mandatory for an encrypted MRI connection (PIM <-> Routing Adapter)

MRIGate section

ProtocolVersion: Specifies the MRI protocol version used to communicate with the MR PIM
Default: 1

RouteMessageSendRate: The maximum number of tasks sent per second. The maximum is 5
Default: 5

TcpPortNumber: Port number which is used to establish a TCP connection with MR PIM
Default: 7021

MaxQueuedTasks: The maximum number of tasks that can be queued in the Routing Adapter
Default: 5000

MaxQueuedTasksPrioReservation: The maximum number of queue positions which are reserved for priority tasks. The configured amount will be allocated from the MaxQueuedTasks setting
Default: 100

MediaUrlVariable: Call variable or ECC that is used for saving the task identifier

Range: PV1-PV10
Example: PV5
Example: ECC.user.VarName (Must always be prefixed with ECC.)

If you are using an ECC Variable for the Media URL, it must have a minimum length of 25 characters.

info

This setting has to match with the “Work Item Id Variable” setting in the b+s Configuration.

RoutingReasonVariable: Call variable or ECC that is used for saving the routing reason. This value can then be used to make decisions in the ICM Script. See section Reroute Reasons for a list of possible reasons.

Range: PV1-PV10
Example: PV5
Example: ECC.user.VarName (Must always be prefixed with ECC.)

If you are using an ECC Variable for the Routing Reason, it must have a minimum length of 10 characters.

OverflowDefaultTimeInSec (*): Defines the reroute timeout in seconds after an overflow
Default: 600

IsEncrypted: A true enables link encryption. Additional provide a certificate thumbprint
Default: false

(*) These configuration keys do not exist in the delivered INI-File. They use the described default value and may be added to the file on demand if another value should be used.

SFDCGate section

MediaUrlPrefix: Media URL prefix appended to every routed task in the correlator data field of the route request
Default: sfdc://

Entities: A comma-separated list of Salesforce Objects for which the Routing Adapter listens for Notifications
Supported types: Any Salesforce object type (built-in and custom)

info

If adding custom objects, make sure to use the API name (e.g. append __c to the name)

OauthLoginEndpoint: Endpoint to obtain an access token via the connected app.
Default (Production environments): https://login.salesforce.com/services/oauth2/token
Default (Sandbox environments): https://test.salesforce.com/services/oauth2/token
Default (Hyperforce environments): https://CurrentMyDomainURL/services/oauth2/token
Refer to Salesforce OAuth Endpoints for more information.

SfdcOauthClientId: The Consumer Key of the Salesforce Connected App
Default: Empty

SfdcOauthClientSecret: The Consumer Secret of the Salesforce Connected App
Default: Empty

SfdcSessionTimeoutInMinutes: Holds the session timeout configured within Salesforce, in seconds. This configuration value is used to let the Routing Adapter calculate the interval in which the access token should be renewed
Default: 120

StreamingApiEndpointUri: The Endpoint where Routing Adapter will connect the Streaming API. This value is also used to determine the Streaming API Version to work with.
Default: /cometd/59.0

StreamingApiChannel: The name of the PushTopic entity to which the Routing Adapter will subscribe. All route requests will be received via this PushTopic
Default: /topic/PT_CNX_ExternalRouting

caution

Do not remove the prefix “/topic/“ in front of the PushTopic name.

RestApiVersion: The Version of the Rest API which should be called by the Routing Adapter.
Default: v59.0

caution

Do not remove the letter “v“ in front of the version information.

RestClientMaxQueryQueueSize: Value to determine the maximum size of the Rest API Query Request Queue. This configuration is used to prevent the Routing Adapter from overflowing in case there are too many requests to process.
Default: 2000

RestClientMaxConcurrentQueries: Determines how many Rest API Query Requests can be pending simultaneously.
Default: 20

RequestRerouteReason: If enabled there will be an additional request per re-routed task to the Salesforce REST API. This is done in order to determine if the task was RONA or rejected. The RoutingReasonVariable will either contain ‘Rona’ or ‘Reject’. If disabled the RoutingReasonVariable will always contain ‘Reroute’ on re-routed tasks.
Default: true

caution

Every additional request counts against the Salesforce API limits. See section Rest API under API Limits for more information.

EnableWindowsEventLog: Determines if monitoring events are written into the Windows Event Log. For the log level see the WindowsEventLogLevel setting below.
See section Windows Event Logs for more information about the monitoring messages.
Default: false

WindowsEventLogLevel (*): Determines the log level of messages which are being written into the Windows Event Log. Needs the setting EnableWindowsEventLog to be true in order to work

Possible Values:

  • 5 Fatal
  • 4 Error, Fatal
  • 3 Warning, Error, Fatal
  • 2 Info, Warning, Error, Fatal

Default: 4

(*) These configuration keys do not exist in the delivered INI-File. They use the described default value and may be added to the file on demand if another value should be used.

Remark for parameter SSL Server Certificates

Since the Routing Adapter is a client, and initiates the connection to Salesforce, there is no need to provide an SSL Certificate and configure the Certificate's Thumbprint in it.

Configuring the routed entities

The configuration section of the SFDCGate contains subsections for each entity that is listed in the configuration value “Entity”.

Section: [Gate_sfdc\<Salesforce entity>]

Identifier: This Identifier in the notification is used to identify the Salesforce Object that is sending this Notification. Make sure the Salesforce Outbound Message contains this Field
Default: Id

RecordIdPrefix: This value is needed in order to make the Routing Adapter aware of which Streaming API notification, belongs to which entity. For example, if the Adapter receives a notification that contains a WorkitemID starting with “ABC”, it will know that this notification belongs to the Salesforce Entity that has the RecordIdPrefix “ABC” configured.

A list of the Record ID Prefixes can be found here: Entity Key prefix decoder
Example: 500 (for Case)

Fields (*): A comma-separated list of Salesforce Fields to be fetched. The Fields have to be part of the Salesforce Object and have to be listed exactly the same as they are named in Salesforce.

This field list will be used to build a SOQL request like SELECT Id, <Fields> FROM <notification-item-type> WHERE Id = <notification-identifier-value>

tip

Use the API Name and do not forget to add __c for custom Fields.

Example: casenumber,Contact.email,type,status, priority,ownerid,product__c,owner.name,subject

Sender: Sender of the routed item
Example: ${Contact.Email}

The content of this field will be also used for the data lookup configured in Salesforce Softphone Layout

PreferredAgentId: The agent who should receive the task before others
Example: ${ns_customfieldname__c}

info

Depending on the Queue to Agent Script Node configuration, it is possible to use different values (e.g. AgentID, AgentSkillTargetID etc.)

ScriptSelector: The script selector used for the <Salesforce entity>.
Example: ${ns_customfieldname__c}

Subject: Subject of the routed item
Example: ${subject}

PV01-PV10: Peripheral Variables 1 to 10
You can assign a static or a dynamic value. Peripheral Variables might be already used in an ICM Script. Make sure to pick an empty one.

ECCVars: Comma-separated list of names of ECC variables that you want to use to assign values to. It is possible to assign a static or dynamic value to any ECC variable on a routed item. See the line below for an example of how to configure the values that are to be filled in the individual ECC variables
Example: user.myeccvar1,user.myeccvar2

\<ECC var name>: For each ECC variable configured under the key ECCVars (see row above), create a configuration key with the name of the ECC variable. The value that is to be assigned to the ECC variable is configured after the equals (=) sign
Example: user.myeccvar1=${status}
Example: user.myeccvar2=${subject}

FailureOwnerId: If a task cannot be routed, it gets assigned to this Owner (1). These errors are mostly ICM Script / PG or configuration errors. For example if you configure a non-existing script-selector or if you configure a field on Cases which does not exist.

Connection interruptions or component outages do not change the owner of a task.

The FailureOwnerId can be a 15 or 18 digit ID or empty. If no FailureOwnerId is configured, the routing error is logged and the task removed. However, after a recovery, all failed Tasks get routed again until you delete the PSR or change the Owner manually.

Example: 00G1v000005gTYv

info

This setting does not work for LiveChatTranscript.

(1) To find out the record ID, use Salesforce Workbench (https://workbench.developerforce.com)

SOQL query for queues: SELECT Id,Name FROM Group WHERE Type = 'Queue'

SOQL query for user: SELECT Id, Name FROM User

Priority: Tasks can be prioritized if they are queued in the Routing Adapter
Example: 1

Possible Values:

  • 1 Prioritized
  • 0 Not prioritized

RerouteTimeInSec: If a task does not get routed to an agent after the configured time. The Routing Adapter reroutes the task again. See section RONA and Reject for more information
Example: 10

info

(*) All fetched Fields and also the name of the notification can be assigned to the Fields (Sender,…PV01-PV10) in the Table above by following this syntax: ${FIELDNAME}. E.g: Sender=${Email}

RequestFieldsOnReroute: If enabled there will be an additional request per re-routed task to the Salesforce REST API. This is done in order to get the field values of that task.
Default: false

caution

Every additional request counts against the Salesforce API limits. See section Rest API under API Limits for more information.

Optional: Configure the MessagingSession Salesforce object

Modify the following sample configuration to fit your environment and enable Salesforce Messaging in Routing Adapter UQ. The fields used in the Fields configuration for MessagingSession can be found in Salesforce | Setup | Object Manager | Messaging Session | Fields & Relationships.

Start by adding MessagingSession to the Entities you currently route, and add a new Gate_sfdc\MessagingSession to the configuration file.

Entities=...,MessagingSession

[Gate_sfdc\MessagingSession]
Identifier=Id
RecordIdPrefix=0Mw
Fields=CaseId,ChannelType,LeadId,Name,OpportunityId,Status,OwnerId
Sender=
Destination=
ScriptSelector=
Status=${Status}
Subject=${Name}
PV01=${Id}
PV02=${CaseId}
PV03=${ChannelType}
PV04=${LeadId}
;PV05=${Email__c}
PV06=${OpportunityId}
PV07=${OwnerId}
Priority=
FailureOwnerId=
RonaTimerInSec=

Upgrade Guides

Upgrade Routing Adapter UQ

Preparation

  • Change the name of the current Routing Adapter configuration file to SFDCRoutingAdapter_backup.ini. This prevents the configuration from being overwritten during the installation process.
  • Stop the SFDC RoutingAdapter service.

Upgrade to versions 3.* .NET Runtime 8.* is required and can be downloaded from this page.

Upgrade to versions 2.* .NET Framework 4.7.2 is required and can be downloaded from this page

In both cases, make sure to download the .NET Runtime, not the SDK or Dev Pack.


You do not need to uninstall existing previous versions of the .NET Framework.

Upgrade

  • Proceed with the installation as described in section:
  • Copy the configuration settings from SFDCRoutingAdapter_backup.ini over to SFDCRoutingAdapter.ini.
  • Start the service and test to verify that the upgrade was successful
Important!

As of version 3 of the Routing Adapter Ext-MRI, the connection to Salesforce is handled using OAuth's client credentials grant (RFC6749) and requires the configuration in Salesforce of a Connected App with specific settings as described in the CRM configuration page for Routing Adapter.

Multiple CCE Deployments

In a deployment using multiple CCEs, each one will require its own Routing Adapter.

Multiple Salesforce Organizations

In order to use multiple Salesforce Organizations with multiple CCEs, every Salesforce Organization will need its own Routing Adapter setup. This means every Salesforce Organization must connect to only one CCE.

Single Salesforce Organization

In order to use one Salesforce Organization with multiple CCEs, each CCE must have its own Routing Adapter to connect to the Salesforce Organization. Tasks can only be routed to one CCE at a time, to avoid multiple agents receiving the same task. Therefore each Routing Adapter requires its own unique PushTopic.

Setup in Salesforce:

  1. Create a queue per CCE with an external routing enabled routing configuration.
  2. Get the queue ids.

We recommend using the Salesforce Workbench (https://workbench.developerforce.com/)

SELECT Id, DeveloperName, Name, Type
FROM Group
WHERE Name = '<QUEUE-NAME>'
  1. Create a PushTopic for each queue with a query which filters for the queue id.

See section Create a New PushTopic.

SELECT Id,
Serial,
QueueId,
WorkItemId,
IsPushed,
ServiceChannelId,
LastDeclinedAgentSession,
CreatedDate
FROM PendingServiceRouting
WHERE RoutingModel = 'ExternalRouting'
AND QueueId = '<QUEUE-ID>'
  1. Configure each Routing Adapter to subscribe to the correct Streaming API Channel (PushTopic).
info

If you want to move tasks from one CCE to another, they must first be assigned to a user or a queue without a routing configuration, before assigning them to another external routing queue. Do not assign Salesforce tasks directly from one external routing queue to another. This causes faulty behavior.

Windows Event Log

The Routing Adapter Ext-UQ writes the relevant error and info messages in the Windows Event Log, so the admin is able to monitor the Routing Adapter and can react fast on a system failure.

See configuration option EnableWindowsEventLog for enabling the Windows Event Log.

Information Messages

Waiting for MR PIM Connection

Event ID: 1

Meaning: The Routing Adapter is initially not connected to the MR Pim and is waiting for the Pim to open a connection. It can take up to 2 Minutes for the Pim to establish a connection

Fix:

  • check the MR Pim config
  • check the RA MRI Gate config
  • restart the Routing Adapter

Connected to MR PIM

Event ID: 2

Meaning: The connection to the MR Pim could be established

Fix: n/a

Connecting to Salesforce Streaming API.

Event ID: 3

Meaning: Trying to connect to Salesforce

Fix:

  • check the Salesforce config
  • check the Salesforce Gate config
  • restart the Routing Adapter

Routing Adapter is now active

Event ID: 4

Meaning: The Routing Adapter is online and ready to route

Fix: n/a

Warning Messages

Lost connection to MR PIM

Event ID: 5

Meaning: The Routing Adapter lost the connection to the MR Pim

Fix: n/a

Lost connection to MR PIM. Waiting for MR PIM to reconnect

Event ID: 6

Meaning: The Routing Adapter lost the connection to the MR Pim and is waiting for the Pim to reconnect. It can take up to 2 minutes for the Pim to establish a connection

Fix:

  • check the MR Pim config
  • check the RA MRI Gate config
  • restart the Routing Adapter

Lost connection to Salesforce Streaming API

Event ID: 7

Meaning: Salesforce is unavailable. Trying to reconnect

Fix: n/a

Ping to Salesforce failed x times

Event ID: 8

Meaning: The Routing Adapter tries to reconnect to Salesforce. If the connection cannot be established, check Salesforce and Salesforce Gate config and restart the Routing Adapter

Fix:

  • check the Salesforce config
  • check the Salesforce Gate config
  • restart the Routing Adapter

Error Messages

No valid entity configuration found, shutting down...

Event ID: 0

Meaning: The entity configuration is not correct

Fix:

  • change the entity configuration
  • Restart the Routing Adapter

Unable to get a valid SFDC AccessToken

Event ID: 0

Meaning: The Routing Adapter cannot get a valid SFDC AccessToken. Please check the Salesforce Gate config

Fix:

  • check the Salesforce config
  • check the Salesforce Gate config
  • restart the Routing Adapter

No valid FailureOwnerId configuration found. FailureOwnerId must be 15 or 18 characters long.

Event ID: 0

Meaning: The FailureOwnerId is set but invalid

Fix:

  • check the FailureOwnerId in the config file
  • restart the Routing Adapter

Exception while parsing Query Response.

Event ID: 0

Meaning: The Data received from Salesforce is in an unexpected format. Please contact b+s Support

Fix: Install a newer version of the Routing Adapter

Windows Event Log State Diagram

The diagram below shows the flow of Windows Event Log messages. If the Routing Adapter loses connection to ether the MR PIM or the Streaming API we log a warning message. The other messages are for monitoring purpose. The Ping to Salesforce failed x times message is optional and appears only if the Routing Adapter cannot reconnect instantly

Windows Event Log State Diagram

Securing the connections

The whole deployment of b+s Connects for Salesforce consists of several different components running on several servers.

Since modern browsers all block mixed content, and the Salesforce CRM is running securely, it is also necessary to run the b+s Connects Finesse Gadget securely.

Connections to secure

The following chapters show which configurations are needed to secure the individual connections.

info

Communication between Salesforce and b+s Components uses TLS 1.2. Please make sure it is enabled on the Component Servers. For more information visit Microsoft Technet url https://technet.microsoft.com/en-us/library/dn786418.aspx#BKMK_SchannelTR_TLS12

Securing the b+s Connects Finesse Gadget

To secure the b+s Connects Finesse Gadget, a trusted certificate has to be created (and validated against either an official or a company-wide trusted certification authority) and uploaded to the Cisco Finesse server.

Please refer to section Replace the self-signed Cisco Finesse Server Certificate for more information.

The Salesforce user browser has to trust the CA which has validated the certificate.

Securing the b+s Routing Adapter (MRI connection) – NEW in CCE 12

Not yet implemented: planned for future release.

Proxy Server

This configuration should help administrators configure the server to work behind a proxy.

To configure the proxy configuration for the Routing Adapter Server, here are the two possible approaches: System global via Environment Variables or per Service via Registry.

Before proceeding, Stop the Routing Adapter service.

Configuring the Proxy via Environment Variables

In this method, you set up specific environment variables that dictate how your server software interacts with the proxy. These environment variables can be configured in the system or user-level environment settings.

  1. Open the System Properties dialog:
  • Press Win + X → System → Advanced System Settings → Environment Variables.
  1. Under System variables, click New or Edit to add or modify the environment variables.
  • Variable name: HTTPS_PROXY
  • Variable value: https://proxy-server-address:port
  1. Restart the server to apply the changes.

Proxy server setting Environment Variables

Configuring the Proxy via Windows Registry

This method involves setting up proxy configuration directly in the Windows Registry. This applies to the configured service only.

  1. Open Registry Editor (regedit).
  2. Navigate to:
HKLM\SYSTEM\CurrentControlSet\Services\<Ext-MRI RA Service Name>
  1. Modify or add the following key:
  • Key Type: Multi String Value (REG_MULTI_SZ)
  • Key Name: Environment
  • Key Value: HTTPS_PROXY=https://proxy-server-address:port
  1. Once configured, restart the system to apply the proxy settings.

Proxy server setting Windows Registry

Notes for Both Methods

  • Ensure that the proxy server address is correct and reachable.
  • Test the connection after applying either method to ensure the server interacts properly with the proxy.