This is an old revision of the document!


UCCE

https://<server>/unifiedconfig/config/activedirectorydomain
https://<server>/unifiedconfig/config/deployment
https://<server>/unifiedconfig/config/deploymenttypeinfo
https://<server>/unifiedconfig/config/machineinventory
https://<server>/unifiedconfig/config/version
https://<server>/unifiedconfig/config/routingtype
https://<server>/unifiedconfig/config/registry
https://<server>/unifiedconfig/config/status
TCD PeripheralCallKey = (globalCallID_callManagerId * (2 to the 24th)) +  globalCallID_callId
TCD PeripheralCallKey = (globalCallID_callManagerId * (16777216)) +  globalCallID_callId

example:
TCD PeripheralCallKey = (4 * (16777216)) +  70002)
  • CAD Supervisor & Client download from
    • http://<CAD base services IP address>:8088/TUP/CAD/Install.htm
  • CAD Admin from here:
    • http://<CAD base services IP address>:8088/TUP/CAD/Admin.htm
  • CAD SR from here:
    • http://<CAD base services IP address>:8088/TUP/CAD/SR.htm
  • CAD browser edition
    • https://CAD-server/cadbe/CAD-BE.jsp
    • http://CAD-server:8088/cadbe/CAD-BE.jsp
  • On a test environment, to understand better how the Cisco CAD LDAP server is setup you can use the following method
    • Download and install the free LDAP client from http://jxplorer.org/
    • This is a Java based program, so requires you install the Java Run Time on your PC
    • Run JExplorer and connect to the CAD server using the following details:
  Version: LDAPv2
  Host: IP address of the Server
  Port: 38983
  Base DN: o=Spanlink Communications
  Security: Anonymous

This example has a “:” as the separator.

Call.PeripheralVariable8 == Variable1:Variable2"

Variable1 == left(Call.PeripheralVariable8,((find(":", Call.PeripheralVariable8))-1))
Variable2 == right(Call.PeripheralVariable8,((len(Call.PeripheralVariable8)-(find(":", Call.PeripheralVariable8)))))
  • Finesse
  • CVP
  • GW
  • CUIC
  • CCE
  • CM

Small Agent / Generic PG: Max of 5 (excluding CTIOS)
Large Agent / Generic PG: Max of 20 (excluding CTIOS)


Reference: Page 326 of UCCE 11 SRND Extract below:
All-Event clients (CTI Server)
Max of 5: For 2 vCPU VMs built from the Small Agent PG OVA. These clients are in addition to the 2 CTI OS connections. You can reduce the number of All-Event clients to support more monitor mode connections.
Max of 20: For 4 vCPU VMs built from the Large Agent PG OVA. These clients are in addition to the 2 CTI OS connections. You can reduce the number of All-Event clients to support more monitor mode connections.

Reason Code Reason Description
-1 Agent reinitialized due to peripheral restart
-2 PG reset the agent - PG Failure
999 A Finesse supervisor forced an agent state change.
-3 Administrator modified the agents extension while the agent was logged in
32767 The agent's state was changed to Not Ready because the agent did not answer a call and the call was redirected to a different agent or skill group.
50002 CTIOS Failure - Agent Logged Out Incorrectly?
50003 The agent was logged out because CUCM reported the agents device as out of service
50004 The agent was logged out due to agent inactivity as configured in agent desk settings
50010 Not Ready - The agent did not receive multiple consecutive calls routed to him/her. The system makes the agent Not Ready automatically so that additional calls are not routed to the agent. By default, the number of consecutive calls missed before the agent is made Not Ready is 2.
50020 Logged Out Due to been Reskilled
50040 The mobile agent was logged out because the call failed.
50041 Not Ready - The agent's state was changed to Not Ready because the call fails when the agent's phone line rings busy.
50042 The mobile agent was logged out because the phone line disconnected when using nailed connection mode.
51004 Not Ready - This reason codes applies if an agent logs onto an extension which already has a call or if the agent is on a call when the PG restarts.

Concatenate can handle up to 8 arguments - as per below - any more and it will give a “too many arguments” error If you need to concatenate more - put your 8 arguments to one VariableX and another 8 to another variableY and then concatenate variables X and Y.

concatenate("a=a1","b=2","c=3","d=4","e=5","f=6","g=7","h=8")

VMware Deployment Checklist

Disable on all VMs the following:

  • TCP Chimney (netsh int tcp set global chimney=disabled)
  • TCP Offload Engine (TOE) - NIC interface - any IPv4 Checksum Offload
  • NetDMA (Regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableTCPA = 0)
  • RSS (netsh int tcp set global rss=disabled)
  • IPv6

How to check:

  • netsh int tcp show global (shows if RSS and Chimney is disabled)
  • netsh int ip show offload (shows if all offload features has been disabled (not visible) for the 2 physical interfaces)
disable-rss.cmd
@echo off
: Gerard O'Rourke
cls
set confirm=N
set /P confirm=Do you want to proceed and disable RSS?
 
IF "%confirm%" == "Y" goto continue
IF "%confirm%" == "y" goto continue
goto end
 
:continue
@echo on
netsh int tcp set global rss=disabled
netsh int tcp show global
pause
exit
 
:end
echo Script Aborted!
pause
  • 0: Calendar Schedule
  • 1: Force Close
  • 2: Force Open
  • 0 Calendar Closed
  • 1 Calendar Open
  • 2 Forced Closed
  • 3 Forced Open

Open when 1 or 3, Closed when 0 or 2

<configuredStatus><status>0</status></configuredStatus>
<runTimeStatus>1</runTimeStatus>

Calender Closed

<configuredStatus><status>0</status></configuredStatus>
<runTimeStatus>0</runTimeStatus>

Forced Open

<configuredStatus><status>2</status></configuredStatus>
<runTimeStatus>3</runTimeStatus>

Forced Closed

<configuredStatus><status>1</status></configuredStatus>
<runTimeStatus>2</runTimeStatus>
<businessHour>
	<department>
		<refURL>/unifiedconfig/config/department/5000</refURL>
		<name>Department1</name>
	</department>
	<refURL>/unifiedconfig/config/businesshour/5001</refURL>
	<changeStamp>3</changeStamp>
	<configuredStatus>
		<status>2</status>
		<statusReason>
			<refURL>/unifiedconfig/config/businesshourstatusreason/5003</refURL>
			<reasonText>Unknown Reason</reasonText>
		</statusReason>
	</configuredStatus>
	<name>ForceOpenExample</name>
	<runTimeStatus>3</runTimeStatus>
	<runTimeStatusReason>Unknown Reason</runTimeStatusReason>
	<specialDaySchedules/>
	<timezone>
		<refURL>/unifiedconfig/config/timezone/v2/5038</refURL>
		<displayName>(UTC) Dublin, Edinburgh, Lisbon, London</displayName>
	</timezone>
	<type>0</type>
	<weekDaySchedules/>
</businessHour>
<businessHour>
	<department>
		<refURL>/unifiedconfig/config/department/5000</refURL>
		<name>Department1</name>
	</department>
	<refURL>/unifiedconfig/config/businesshour/5002</refURL>
	<changeStamp>1</changeStamp>
	<configuredStatus>
		<status>1</status>
		<statusReason>
			<refURL>/unifiedconfig/config/businesshourstatusreason/5003</refURL>
			<reasonText>Unknown Reason</reasonText>
		</statusReason>
	</configuredStatus>
	<name>ForceClosedExample</name>
	<runTimeStatus>2</runTimeStatus>
	<runTimeStatusReason>Unknown Reason</runTimeStatusReason>
	<specialDaySchedules/>
	<timezone>
		<refURL>/unifiedconfig/config/timezone/v2/5038</refURL>
		<displayName>(UTC) Dublin, Edinburgh, Lisbon, London</displayName>
	</timezone>
	<type>0</type>
	<weekDaySchedules/>
</businessHour>
<businessHour>
	<refURL>/unifiedconfig/config/businesshour/5003</refURL>
	<changeStamp>1</changeStamp>
	<configuredStatus>
		<status>0</status>
	</configuredStatus>
	<name>OpenHours_247</name>
	<runTimeStatus>1</runTimeStatus>
	<runTimeStatusReason>Week Day open reason</runTimeStatusReason>
	<specialDaySchedules/>
	<timezone>
		<refURL>/unifiedconfig/config/timezone/v2/5038</refURL>
		<displayName>(UTC) Dublin, Edinburgh, Lisbon, London</displayName>
	</timezone>
	<type>0</type>
	<weekDaySchedules/>
</businessHour>
<businessHour>
	<refURL>/unifiedconfig/config/businesshour/5000</refURL>
	<changeStamp>21</changeStamp>
	<configuredStatus>
		<status>0</status>
	</configuredStatus>
	<name>Hours_Sales</name>
	<runTimeStatus>0</runTimeStatus>
	<runTimeStatusReason>Week Day closed reason</runTimeStatusReason>
	<specialDaySchedules/>
	<timezone>
		<refURL>/unifiedconfig/config/timezone/v2/5038</refURL>
		<displayName>(UTC) Dublin, Edinburgh, Lisbon, London</displayName>
	</timezone>
	<type>1</type>
	<weekDaySchedules>
		<weekDaySchedule>
			<refURL>/unifiedconfig/config/businesshour/5000/weekdayschedule/5006</refURL>
			<changeStamp>1</changeStamp>
			<endTime>17:00</endTime>
			<startTime>07:00</startTime>
			<dayOfWeek>1</dayOfWeek>
		</weekDaySchedule>
		<weekDaySchedule>
			<refURL>/unifiedconfig/config/businesshour/5000/weekdayschedule/5007</refURL>
			<changeStamp>7</changeStamp>
			<endTime>17:00</endTime>
			<startTime>07:00</startTime>
			<dayOfWeek>2</dayOfWeek>
		</weekDaySchedule>
		<weekDaySchedule>
			<refURL>/unifiedconfig/config/businesshour/5000/weekdayschedule/5008</refURL>
			<changeStamp>2</changeStamp>
			<endTime>17:00</endTime>
			<startTime>07:00</startTime>
			<dayOfWeek>3</dayOfWeek>
		</weekDaySchedule>
		<weekDaySchedule>
			<refURL>/unifiedconfig/config/businesshour/5000/weekdayschedule/5009</refURL>
			<changeStamp>0</changeStamp>
			<endTime>17:00</endTime>
			<startTime>09:00</startTime>
			<dayOfWeek>4</dayOfWeek>
		</weekDaySchedule>
		<weekDaySchedule>
			<refURL>/unifiedconfig/config/businesshour/5000/weekdayschedule/5010</refURL>
			<changeStamp>0</changeStamp>
			<endTime>17:00</endTime>
			<startTime>09:00</startTime>
			<dayOfWeek>5</dayOfWeek>
		</weekDaySchedule>
	</weekDaySchedules>
</businessHour>

The example formula provided by the Courtesy Call back Script:

ValidValue(((SkillGroup.%1%.RouterCallsQNow+1)
*
(ValidValue(SkillGroup.%1%.AvgHandledCallsTimeTo5,20))
/max(
    SkillGroup.%1%.Ready,
    (SkillGroup.%1%.TalkingIn
         +
     SkillGroup.%1%.TalkingOut
         +
     SkillGroup.%1%.TalkingOther))
),100)

Actual Example with Skillgroup “eirSupport1”

Skill Group Example

ValidValue(((SkillGroup.eirSupportSG1.RouterCallsQNow+1)*(ValidValue(SkillGroup.eirSupportSG1.AvgHandledCallsTimeTo5,100))/max(SkillGroup.eirSupportSG1.Ready,(SkillGroup.eirSupportSG1.TalkingIn+SkillGroup.eirSupportSG1.TalkingOut+SkillGroup.eirSupportSG1.TalkingOther))),100)

Explanation

This returns the EWT in seconds. Effectivity the formula is: Calls in (Queue * Average Handled Time) / Number of agents that logged in and actively taking calls (i.e. exclude agents that are not ready)

The formula uses the ValidValue so if no current value available for the last 5 minutes it returns a 'default' value. These should be set the specific Average Handle Time for this specific Queue (determine this by reviewing the SG / PQ Historical report).

Here is a Precision Queue Example:

ValidValue(((PQ.eirSupport1_PQ.CallsInQ+1)*(ValidValue(PQ.eirSupport1_PQ.AvgHandledCallsTimeTo5,285))/max(PQ.eirSupport1_PQ.Ready,(PQ.eirSupport1_PQ.TalkingIn+PQ.eirSupport1_PQ.TalkingOut+PQ.eirSupport1_PQ.TalkingOther))),285)

If the formula is used prior to routing to the PQ - you should include the +1.
If the formula is used after queuing to the SG / PQ - then this should be excluded.

Example for when same Agents are in 3 different PQs

ValidValue(((PQ.Sales_PQ.CallsInQ+PQ.CustomerService_PQ.CallsInQ+PQ.Accounts.CallsInQ)*trun((ValidValue(PQ.Sales_PQ.AvgHandledCallsTimeTo5,285)+ValidValue(PQ.CustomerService_PQ.AvgHandledCallsTimeTo5,285)+ValidValue(PQ.Accounts.AvgHandledCallsTimeTo5,285))/3)/max(PQ.Sales_PQ.Ready,(PQ.Sales_PQ.TalkingIn+PQ.Sales_PQ.TalkingOther))),285)
  • vendors/cisco/uc/ucce.1573055933.txt.gz
  • Last modified: 2019/11/06 15:58
  • by gerardorourke