Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vendors:cisco:uc:ucce:finesse [2024/09/30 16:52] – removed - external edit (Unknown date) 127.0.0.1vendors:cisco:uc:ucce:finesse [2024/09/30 17:19] (current) – ↷ Links adapted because of a move operation gerardorourke
Line 1: Line 1:
 +====== Finesse ======
 +
 +===== Bulk Create Reason Codes on CCE 12.X =====
 +[[vendors:cisco:uc:ucce:finesse:bulk-create-reason-labels]]
 +
 +===== Update Finesse Layouts to Teams =====
 +
 +
 +===== Gadgets =====
 +  *https://developers.google.com/gadgets
 +  *[[vendors:cisco:uc:ucce:finesse:gadgets|Gadgets Info]]
 +  *[[myapps:finesse:gadgets|My Gadgets]]
 +  *https://developers.google.com/gadgets/docs/overview
 +  *[[https://developers.google.com/gadgets/docs/reference#makerequest|Gadget MakeRequest]]
 +  *[[vendors:cisco:uc:ucce:finesse:gadgetcodesnippets|Gadget Code Snippets]]
 +  *[[https://opensocial.atlassian.net/wiki/spaces/OSD/pages/527239/Gadgets.io+v0.9|More OpenSocial Gadget Docs]]
 +  *https://developer.cisco.com/site/finesse/
 +  *https://community.cisco.com/t5/contact-center/third-party-gadget-height/td-p/3481350
 +  *https://api.jquery.com/html/
 +
 +===== Links =====
 +<wrap tip>RTMT available on finesse - https://FQDN:8443/plugins/CcmServRtmtPlugin.exe</wrap>
 +
 +==== Sample Code ====
 +https://github.com/CiscoDevNet/finesse-sample-code\\
 +
 +==== CUIC Permalink Report in Finesse====
 +https://github.com/CiscoDevNet/finesse-sample-code/tree/master/CUICSampleGadget\\
 +
 +=====Finesse API =====
 +==== Predefined Reason Codes ====
 +
 +https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/finesse/finesse_1201/Admin/guide/cfin_b_1201-administration-guide-release-1201/cfin_b_1201-administration-guide-release-1201_chapter_0110.html#reference_E74540548AEB39553C82AE091C232CD4
 +
 +
 +==== Performance Stats =====
 +  * https://developer.cisco.com/docs/finesse/#!diagnostic-portalget-performance-information/diagnostic-portalget-performance-information
 +
 +=== Example ===
 +https://finesse1.xyz.com/finesse-dp/rest/DiagnosticPortal/GetPerformanceInformation
 +
 +<code xml> 
 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 +<dp:GetPerformanceInformationReply ReturnCode="0" 
 + xmlns:dp="http://www.cisco.com/vtg/diagnosticportal">
 +<dp:Schema Version="1.0" />
 +<dp:PerformanceInformation>
 +    <dp:PropertyList>
 +        <dp:Property Value="109441280" Name="Tomcat/Heap 
 +         Memory Utilized"/>
 +        <dp:Property Value="50921904" Name="Tomcat/Non Heap 
 +         Memory Utilized"/>
 +        <dp:Property Value="0" Name="CTI Statistics/Incoming 
 +         Responses Queue"/>
 +        <dp:Property Value="0" Name="CTI Statistics/Outgoing 
 +         Responses Queue"/>
 +        <dp:Property Value="0" Name="Tomcat/Average Request 
 +         Process Time"/>
 +        <dp:Property Value="0" Name="Tomcat/Longest Request 
 +         Process Time"/>
 +        <dp:Property Value="1.47" Name="Average System Load"/>
 +        <dp:Property Value="183" Name="Tomcat/Thread Count"/>
 +        <dp:Property Value="183" Name="Tomcat/Peak Thread Count"/>
 +        <dp:Property Value="0" Name="CTI Statistics/Events In Queue"/>
 +        <dp:Property Value="0" Name="CTI Statistics/Decoding 
 +         Responses Queue"/>
 +        <dp:Property Value="0" Name="Active Totals/Logged In Agents"/>
 +        <dp:Property Value="0" Name="Active Totals/Current Calls"/>
 +        <dp:Property Value="0" Name="Running Totals/Calls Received 
 +         or Initiated"/>
 +        <dp:Property Value="0" Name="Running Totals/Calls Failed"/>
 +    </dp:PropertyList>
 +</dp:PerformanceInformation>
 +</dp:GetPerformanceInformationReply>
 +</code>
 +
 +==== Load Balancing ====
 +Use SystemInfo API (check out https://developer.cisco.com/site/finesse/documents/dev-guide/)
 +
 +**Example**\\
 +Query: http://finesse.domain.com/finesse/api/SystemInfo\\
 +Response:\\
 +<code>
 +<SystemInfo>
 +   <deploymentType>UCCE<deploymentType>
 +   <peripheralId>5001</peripheralId>
 +   <license></license>
 +   <currentTimeStamp>2014-01-27T13:07:08.687Z</currentTimeStamp>
 +   <status>IN_SERVICE</status>
 +   <timezoneOffset>300</timezoneOffset>
 +   <xmppDomain>xmppserver.xyz.com</xmppDomain>
 +   <xmppPubSubDomain>pubsub.xmppserver.xyz.com</xmppPubSubDomain>
 +   <primaryNode>
 +      <host>10.1.1.1</host>
 +   </primaryNode>
 +   <secondaryNode>
 +      <host>10.1.1.2</host>
 +   </secondaryNode>
 +</SystemInfo>   
 +</code>   
 +
 +\\
 +As documented in Finesse Developer Guide, using Firefox plugin Poster is great for testing / developing against Finesse.\\
 +There is also a REST Client from http://www.wiztools.org/\\
 +\\
 +**Sample Gadgets from dev net**\\
 +http://orourke.tv/finesse/\\
 +
 +==== Sample Workflow URL ====
 +[[vendors:cisco:uc:ucce:finesse:workflow]]
 +
 +
 +==== FINESSE REASON CODES LIST ====
 +===Reference===
 +https://developer.cisco.com/site/finesse/docs/#reasoncode\\
 +https://developer.cisco.com/site/finesse/docs/#reasoncodeget-list\\
 +
 +===Examples===
 +https://finesse.purplepi.ie/finesse/api/ReasonCodes?category=ALL\\
 +https://finesse.purplepi.ie/finesse/api/ReasonCodes?category=NOT_READY\\
 +https://finesse.purplepi.ie/finesse/api/ReasonCodes?category=LOGOUT\\
 +
 +====Log Gathering====
 +Reference: https://supportforums.cisco.com/t5/collaboration-voice-and-video/how-to-collect-finesse-logs/ta-p/3135557\\
 +<code>
 +file get activelog desktop recurs reltime days x
 +</code>
 +
 +
 +==== Client Network Connections ====
 +<code>
 +show network status nodns search :8445
 +</code>
 +Or try this
 +<code>
 +show network status nodns search :7443
 +</code>
 +
 +==== On a Browser Refresh - Finesse Retrieves the following ====
 +
 +<code>
 +Making REST request: method=GET, url=
 +/finesse/api/SystemInfo?nocache=1526048581775
 +/finesse/api/User/5552002?nocache=1526048581793
 +/finesse/api/User/5552002/Dialogs?nocache=1526048582232
 +/finesse/api/User/5552002/ReasonCodes?category=LOGOUT&nocache=1526048582234
 +/finesse/api/User/5552002/ReasonCodes?category=NOT_READY&nocache=1526048582237
 +/finesse/api/User/5552002/Workflows?nocache=1526048582255
 +/finesse/api/User/5552002/WrapUpReasons?nocache=1526048583420
 +/finesse/api/User/5552002/MediaPropertiesLayouts?nocache=1526048583422
 +</code>
 +
 +=====Decrypt HTTPS traffic from UC Servers using wireshark====
 +==== Private Keys ====
 +http://tech.yanatm.com/?p=1213\\
 +<code>/usr/local/platform/.security/tomcat/keys/</code>
 +
 +==== HTTP Method Used====
 +  *GET: Retrieve a single object or list of objects (for example, a single user or list of users).
 +  *PUT: Replace a value in an object (for example, to change the state of a user from NOT_READY to READY).
 +  *POST: Create a new entry in a collection (for example, to create a new reason code or wrap-up reason).
 +  *DELETE: Remove an entry from a collection (for example, to delete a reason code or wrap-up reason).
 +
 +==== Agent Login/Logout/Ready/NotReady====
 +Reference - https://developer.cisco.com/docs/finesse/#!usersign-in-to-finesse/usersign-in-to-finesse\\
 +
 +\\
 +URL: http://finesse1.xyz.com/finesse/api/User/1234 
 +Method: PUT
 +Content Type: Application/XML 
 +HTTP Request
 +
 +<code XML>
 +<User>
 +   <state>LOGIN</state>
 +   <extension>1001001</extension>
 +</User>
 +</code>
 +
 +<code XML>
 +<User>
 +<state>LOGOUT</state>
 +<logoutAllMedia>true</logoutAllMedia>
 +</User>
 +</code>
 +
 +<code XML>
 +<User>
 +<state>READY</state>
 +</User>
 +</code>
 +
 +<code XML>
 +<User>
 +<state>NOT_READY</state>
 +<reasonCodeId>1</reasonCodeId>
 +</User>
 +</code>
 +
 +===== Reference Finesse JavaScript on 3rd Party Gadget =====
 +
 +Third-party gadgets that are hosted on a separate web server can reference the JavaScript library accordingly:
 +Refernce: https://developer.cisco.com/docs/finesse/#faq
 +
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<Module>
 +    <ModulePrefs title="My Title" >
 +        <Require feature="settitle" />
 +        <Require feature="dynamic-height" />
 +        <Require feature="pubsub-2" />
 +        <Require feature="setprefs" />
 +    </ModulePrefs>
 +
 + <UserPref name="scheme" display_name="scheme" default_value=""/>
 + <UserPref name="host" display_name="host" default_value=""/>
 + <UserPref name="hostPort" display_name="hostPort" default_value=""/>
 +
 +    <Content type="html">
 +
 +<![CDATA[
 +<!-- jQuery -->
 + <script type="text/javascript" src="__UP_scheme__://__UP_host__:__UP_hostPort__/desktop/assets/js/jquery.min.js"></script>
 + 
 +<!-- Finesse Library -->
 +    <script type="text/javascript" src="__UP_scheme__://__UP_host__:__UP_hostPort__/desktop/assets/js/finesse.js"></script>
 +
 + 
 +    <script type="text/javascript">
 +        gadgets.HubSettings.onConnect = function () {
 +            finesse.modules.myFunction.init();
 +        };
 +    </script>
 +]]>
 +
 +    </Content>
 +</Module>
 +
 +</code>
 +
 +=====Modified Versions of Cisco Sample Gadgets=====
 +  * {{ :vendors:cisco:uc:clicktocall_gerry_v1.zip |make Call allowed when in HOLD state}}
 +
 +=====Gadget Caching=====
 +
 +Clear Caching by 
 +  * restarting 'Cisco Finesse Tomcat' OR using the CLI command - <code>utils webproxy cache clear shindig</code>
 +  * use the CLI command **utils webproxy cache clear shindig** to clear the Shindig cache.
 +  * Pass a "nocache" parameter in the URL to clear the cache.\\
 +
 +Example:\\
 +    * http://server?nocache
 +    * http://server/desktop?nocache
 +    * http://server/desktop/container?nocache
 +
 +
 +==cURL==
 +Example Using cURL to send Finesse Commands (See Finesse Developer Guide)\\
 +Download cURL for Windows from here: http://www.confusedbycode.com/curl/\\
 +<code>
 +curl -X PUT http://192.168.1.173/finesse/api/User/12001 --user "12001:12345" -H "Content-Type:application/xml" --data "<User><state>READY</state></User>"
 +</code>
 +
 +This will send a HTTP PUT as in the below example:\\
 +<code>
 +PUT /finesse/api/User/12001 HTTP/1.1
 +Authorization: Basic MTIwMDE6MTIzNDU=
 +User-Agent: curl/7.36.0
 +Host: 192.168.1.173
 +Accept: */*
 +Content-Type:application/xml
 +Content-Length: 33
 +
 +<User><state>READY</state></User>
 +</code>
 +
 +==WGET==
 +WGET does not support PUT, but its it does support POST.\\
 +A HTTP POST is what the JavaScript library uses similar to below using wget\\
 +It includes in the POST the full URL which includes the PUT details as in above\\
 +Note: It also contains the Baisc Authentication String, which would need to be worked out before hand\\
 +
 +<code>
 +wget http://192.168.1.173/gadgets/makeRequest --header="Content-Type: application/x-www-form-urlencoded; charset=UTF-8" --post-data="url=http%3A%2F%2Flocalhost%3A8080%2Ffinesse%2Fapi%2FUser%2F12001&httpMethod=PUT&headers=Content-Type%3Dapplication%252Fxml%26Authorization%3DBasic%2520MTIwMDE6MTIzNDU%253D&postData=%3CUser%3E%3Cstate%3EREADY%3C%2Fstate%3E%3C%2FUser%3E"
 +</code>
 +
 +This send the following HTTP POST\\
 +<code>
 +POST /gadgets/makeRequest HTTP/1.0
 +User-Agent: Wget/1.11.4
 +Accept: */*
 +Host: 192.168.1.173
 +Connection: Keep-Alive
 +Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 +Content-Length: 234
 +
 +url=http%3A%2F%2Flocalhost%3A8080%2Ffinesse%2Fapi%2FUser%2F12001&httpMethod=PUT&headers=Content-Type%3Dapplication%252Fxml%26Authorization%3DBasic%2520MTIwMDE6MTIzNDU%253D&postData=%3CUser%3E%3Cstate%3EREADY%3C%2Fstate%3E%3C%2FUser%3E
 +</code>
 +
 +UCCX URLs
 +<code>
 +https://uccx10-5a.ucce9.lab.orourke.tv:8445/finesse/api/SystemInfo
 +</code>
 +<code>
 +https://uccx10-5a.ucce9.lab.orourke.tv:8445/desktop/
 +</code>
 +
 +===== JavaScrpit API=====
 +====jQUERY & Finesse JavaScript Library Location on Finesse====
 +
 +<code>
 +<!-- jQuery -->          
 +<script type="text/javascript" src="/desktop/assets/js/jquery.min.js"></script>
 +<!-- Finesse Library -->
 +<script type="text/javascript" src="/desktop/assets/js/finesse.js"></script>
 +</code>
 +
 +===Gather Finesse Logs===
 +(Requires an SFTP server)
 +<code>file get activelog desktop/logs/*</code>
 +Or this should refine it by date
 +<code>file get activelog desktop/logs/* recurs reltime days 2</code>
 +
 +
 +===== Finesse Admin GUI Password Locked =====
 +
 +
 +====Account Locked After Five Failed Sign In Attempts ====
 +If an administrator tries to sign in to the Finesse administrator console (or diagnostic portal) with the wrong password five times in a row, Finesse blocks access to that user account for a period up to 30 minutes. For security reasons, Finesse does not alert the user that their account is locked. They must wait 30 minutes and try again."
 +
 +<wrap hi>If you do not want to wait - you must set the UI password to a new password via the OS admin access. Then reset the password again back to its original password (**so set the password twice!**). This will unlock the password and you can log in again with the original password.
 +</wrap>
 +
 +<code>
 +admin:utils reset_application_ui_administrator_password
 +New password:*
 +Confirm new Password:*
 +
 +-------------------- utils reset_ui_administrator_password --------------------
 +
 +Reset user interface password
 +</code>
 +
 +==== Finesse Gadget - Call Variables ====
 +https://community.cisco.com/t5/contact-center/finesse-screen-popup-for-only-inbound-calls/m-p/3999895#M10632
 +
 +<code javascript>
 +var callvars = new Array();  // the callvars array of callvariables 
 +callvars = dialog.getMediaProperties();
 +
 +var callType = callvars.callType;
 +clientLogs.log('handleNewDialog(): callType=' + callType);
 +
 +var callState = dialog.getState();
 +clientLogs.log('handleNewDialog(): callState=' + callState);
 +
 +var callVariable = callvars["callVariable9"];
 +clientLogs.log("handleNewDialog(): callVariable9="+callvars["callVariable9"]);
 +</code>
 +
 +
 +
 +===== Upgrading to CCE 12 =====
 +
 +You need to manually configure the Reason codes and WrapUp Strings on CCE when you upgrade to CCE 12.
 +Here is how to get all the Reason codes from Finesse:
 +
 +
 +==== All Reason Codes ====
 +<code javascript>
 +https://ucce-finesse-a.lab2.purplepi.ie/finesse/api/ReasonCodes?category=NOT_READY
 +https://ucce-finesse-a.lab2.purplepi.ie/finesse/api/ReasonCodes?category=LOGOUT
 +</code>
 +
 +==== All Wrap Ups ====
 +<code>
 +https://ucce-finesse-a.lab2.purplepi.ie/finesse/api/WrapUpReasons
 +</code>
 +
 +====Force Wrap Ups====
 +https://community.cisco.com/t5/contact-center/finesse-12-force-wrap-up-config/td-p/4000554
 +
 +<code>utils finesse set_property desktop forceWrapUp true</code>
 +<code>utils finesse set_property desktop forceWrapUp false</code>
 +
 +===== Example Finesse URL Parameters =====
 +<code javascript>
 +container=default&
 +mid=0&
 +nocache=1&
 +country=US&
 +lang=en&
 +view=default&
 +refresh=86400&
 +up_id=5551002&
 +up_order=128&
 +up_country=US&
 +up_language=en&
 +up_locale=en_US&
 +up_host=ucce-finesse-a.lab2.purplepi.ie&
 +up_hostPort=443&
 +up_extension=12022&
 +up_xmppDomain=UCCE-FINESSE-A.lab2.purplepi.ie&
 +up_pubsubDomain=pubsub.UCCE-FINESSE-A.lab2.purplepi.ie&
 +up_restHost=ucce-finesse-a.lab2.purplepi.ie&
 +up_mobileAgentMode=undefined&
 +up_mobileAgentDialNumber=undefined&
 +up_scheme=https&
 +up_localhostFQDN=UCCE-FINESSE-A.lab2.purplepi.ie&
 +up_localhostPort=8082&up_teamId=5000&
 +up_teamName=Team_01&up_clientDriftInMillis=219&
 +up_systemAuthMode=NON_SSO&
 +up_compatibilityMode=false&
 +up_toasterNotificationTimeout=8&
 +up_CCDContainer=true&
 +up_externalServerHost=https%3A%2F%2Fucce-finesse-a.lab2.purplepi.ie%3A443&up_deploymentType=UCCE&
 +up_peripheralId=5000&
 +up_messages=%7B%22select.agent.message%22%3A%22Select+an+Agent+from+Team+Performance+Gadget%22%7D&
 +st=john.doe%3Ajohn.doe%3Aappid%3Acont%3Aurl%3A0%3Adefault&
 +url=https%3A%2F%2Fucce-hds-a.lab2.purplepi.ie%2Freports%2Fgadgets%2FScreenPop1%2FScreenPop.xml%3Fbanana%3Dtrue
 +</code>
 +
 +===== Finesse - getMediaProperties - CCE Call Variables =====
 +<code javscript>
 +var callVariables = dialog.getMediaProperties();
 +</code>
 +
 +==== Example CCE Variable List Retrieved ====
 +<code javascript>
 +callVariable1
 +callVariable2
 +callVariable3
 +callVariable4
 +callVariable5
 +callVariable6
 +callVariable7
 +callVariable8
 +callVariable9
 +callVariable10
 +user.media.id
 +user.microapp.ToExtVXML[0]
 +user.microapp.ToExtVXML[1]
 +user.microapp.ToExtVXML[2]
 +user.microapp.ToExtVXML[3]
 +user.microapp.ToExtVXML[4]
 +user.microapp.FromExtVXML[0] 
 +user.microapp.FromExtVXML[1] 
 +user.microapp.FromExtVXML[2] 
 +user.microapp.FromExtVXML[3] 
 +user.microapp.app_media_lib
 +user.microapp.caller_input
 +user.cvp_server_info
 +DNIS
 +callType
 +dialedNumber
 +outboundClassification
 +queueNumber
 +queueName
 +callKeyCallId
 +callKeyPrefix
 +</code>
 +
 +==== Call History Gadget ====
 +<code xml>
 +    <tab>
 +        <id>myHistory</id>
 +        <icon>history</icon>
 +        <label>finesse.container.tabs.agent.myHistoryLabel</label>
 +             <columns>
 +               <column>
 +                 <!-- The following gadgets are used for viewing the call history and state history of an agent. -->
 +                     <gadgets>
 +                       <gadget>https://my-cuic-server:8444/cuic/gadget/LiveData/LiveDataGadget.jsp?gadgetHeight=280&amp;viewId=5FA44C6F930C4A64A6775B21A17EED6A&amp;filterId=agentTaskLog.id=CL%20teamName</gadget>
 +                       <gadget>https://my-cuic-server:8444/cuic/gadget/LiveData/LiveDataGadget.jsp?gadgetHeight=280&amp;viewId=56BC5CCE8C37467EA4D4EFA8371258BC&amp;filterId=agentStateLog.id=CL%20teamName</gadget>
 +                       </gadgets>
 +                </column>
 +              </columns>
 +           </tab>
 +</code>
 +
 +
 +====alternateHosts Configuration ====
 +The <gadget> element in the Finesse Layout XML provides an attribute to specify alternate hosts from which the gadget can be loaded. This allows the Cisco Finesse desktop to load the gadget using a different host if the primary server is unavailable.
 +
 +The alternateHosts attribute contains a comma-separated list of FQDNs that will be used if the primary-host-FQDN is unavailable.
 +
 +<code>
 +<gadget alternateHosts="host1,host2,host3,...">
 +         https://<primary-host-FQDN>/<gadget-URL> 
 +    </gadget>
 +</code>    
 +
 +
 +===== Serviceability API Examples =====
 +
 +====RuntimeConfigInfo====
 +URL: https://finesse1.xyz.com/finesse/api/RuntimeConfigInfo
 +
 +<code xml>
 +<RuntimeConfigInfo>
 +<activeDialogCount>123</activeDialogCount>
 +<activeTaskCount>0</activeTaskCount>
 +<averageConfiguredMediaPerAgent>1</averageConfiguredMediaPerAgent>
 +<averageLoggedInMediaPerAgent>1</averageLoggedInMediaPerAgent>
 +<averageSkillGroupCountPerAgent>3</averageSkillGroupCountPerAgent>
 +<maxSkillGroupCountPerAgent>10</maxSkillGroupCountPerAgent>
 +<timeToInService>4</timeToInService>
 +<totalLoggedInAgentsInNode>203</totalLoggedInAgentsInNode>
 +<uniqueConfiguredSkillGroups>64</uniqueConfiguredSkillGroups>
 +<uri>/finesse/api/RuntimeConfigInfo</uri>
 +</RuntimeConfigInfo>
 +</code>
 +
 +
 +==== Get Product Version ====
 +
 +URL: https://finesse1.xyz.com/finesse-dp/rest/DiagnosticPortal/GetProductVersion
 +<code xml>
 +<dp:GetProductVersionReply xmlns:dp="http://www.cisco.com/vtg/diagnosticportal" ReturnCode="0">
 +<dp:Schema Version="1.0"/>
 +<dp:ProductVersion VersionString="12.0(1)" Maintenance="1" Minor="0" Major="12" Name="Cisco Finesse"/>
 +<dp:ComponentVersionList/>
 +</dp:GetProductVersionReply>
 +</code>
 +
 +===== Disable XMPP External Access =====
 +
 +<code>utils finesse set_property webservices enableExternalNotificationPortAccess false</code>
 +Reference: https://quickview.cloudapps.cisco.com/quickview/bug/CSCvi53649
 +
 +===== Look and Feel =====
 +
 +Note - this seems to be a doc bug at the moment - as these files don't exist on the Finesse server?
 +
 +https://developer.cisco.com/docs/finesse/#!matching-the-desktop-look-and-feel/matching-the-desktop-look-and-feel
 +
 +To maintain a consistent look and feel across third-party gadgets and the desktop, you can use the CSS styles provided by the desktop. To do this, it's essential to link the finextcommonstyles.css file to the gadget as follows:
 +
 +<code html>
 +<link rel="stylesheet" type="text/css" href="__UP_externalServerHost__/desktop/scripts/css/finextcommonstyles.css"/>
 +</code>
 +
 +The desktop CSS file should be added to Exclude URL list as described in the [[https://developer.cisco.com/docs/finesse/#!optimizing-gadget-resource-loading|Optimizing Gadget]] Resource Loading section.
 +
 +Use the respective styles from the CSS file.
 +
 +By applying the respective styles, you can customize the UI elements to match the look and feel of elements present in desktop. For instance, if you want a button to have a blue (info) background color and white text color on it, follow this example:
 +<code html>
 +<input type="button" class="finesse-button-default" id="button" value="Say hello" onclick="sayHelloWorld(); return false;"/>
 +</code>
 +
 +Similarly, by applying the appropriate class such as finesse-button-default, the button inherits styles from the linked CSS file, ensuring a uniform appearance between the third-party gadget and Finesse Desktop.
 +
 +For other similar styles, refer to the CSS file and apply the styles accordingly.
 +
 +For more information on the CSS properties and the description on when to use them, see [[https://developer.cisco.com/docs/finesse/#!common-css-styles-for-finesse-desktop|Finesse Desktop Common CSS Styles]].
 +
 +===== Workaround for COP2 bug - CSCwj22165 =====
 +
 +https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwj22165 
 +(thanks to Stanislav!)
 +
 +Note: You can use a workaround if you have ES2 and cannot do a rollback. Put this modal into console when adding a custom variable and pop-up window will not appear.
 +
 +<code>
 +const modal = document.querySelector("body > div.modal.hide.svdd-modal"); modal.style.display = "block"; modal.querySelector(".svdd-cancelButton").onclick = function() { modal.style.display = "none"; }; modal.querySelector(".svdd-setButton").onclick = function() { modal.style.display = "none"; };
 +</code>
 +
 +But when I tried above I got the following error:
 +<code>
 +VM5422:1 Uncaught TypeError: Cannot read properties of null (reading 'style')
 +    at <anonymous>:1:81
 +(anonymous) @ VM5422:1
 +</code>
 +<code>
 +const modal = document.querySelector('body > div.modal.hide.svdd-modal');
 +modal.style.display = 'block';
 +modal.querySelector('.svdd-cancelButton').onclick = function() {
 +    modal.style.display = 'none';
 +}
 +;
 +modal.querySelector('.svdd-setButton').onclick = function() {
 +    modal.style.display = 'none';
 +}
 +;
 +</code>
 +
 +====== Sample Finesse Desktop Extracts ======
 +<code xml>
 +<!-- 
 +*Note: When you upgrade, modify Custom Layout XML appropriately to utilize the benefits of new gadgets.
 +-->
 +<finesseLayout xmlns="http://www.cisco.com/vtg/finesse">
 +    <!--  DO NOT EDIT. The version number for the layout XML. -->
 +    <version>1252.02</version>
 +    <configs>
 +        <!-- The Title for the application which can be customized. -->
 +        <config key="title" value="Cisco Finesse"/>
 +        <!-- The following entries are examples of changing defaults for desktop properties.
 +        To change any property, uncomment the respective line and set the appropriate value.
 +        For more details on the properties that can be customized, refer to the Cisco Finesse Administration Guide.
 +        Note: The customized properties can only be set in the configs section and are not role-specific. -->
 +        <!-- <config key="enableDragDropAndResizeGadget" value="false"/> -->
 +        <!-- <config key="wrapUpCountDown" value="true"/> -->
 +        <!-- <config key="desktopChatAttachmentEnabled" value="true"/> -->
 +        <!-- <config key="forceWrapUp" value="true"/> -->
 +        <!-- Possible Values: supervisor_only, conference_controller_and_supervisor, all -->
 +        <!-- <config key="enableDropParticipantFor" value="supervisor_only"/> -->
 +        <!-- Possible Values: agents, all -->
 +        <!-- <config key="dropParticipant" value="agents"/> -->
 +        <!-- <config key="displayNavLevelGadgetsFirstInMultitab" value="false"/> -->
 +        <!-- The logo file for the application -->
 +        <!-- For detailed instructions on using custom icons for logos and tabs,
 +        please refer to the section "Customize Title and Logo in the Header"
 +        in the Finesse Administration Guide. -->
 +        <!-- <config key="logo" value="/3rdpartygadget/files/cisco_finext_logo.png"/>  -->
 +    </configs>
 +    <header>
 +        <!--  Please ensure that at least one gadget/component is present within every headercolumn tag -->
 + <leftAlignedColumns>
 + <headercolumn width="300px">
 + <component id="cd-logo">
 + <url>/desktop/scripts/js/logo.js</url>
 + </component>
 + </headercolumn>
 + <headercolumn width="230px">
 + <component id="agent-voice-state">
 + <url>/desktop/scripts/js/agentvoicestate.component.js</url>
 + </component>
 + </headercolumn>
 + <headercolumn width="251px">
 + <component id="nonvoice-state-menu">
 + <url>/desktop/scripts/js/nonvoice-state-menu.component.js</url>
 + </component>
 + </headercolumn>
 +
 + </leftAlignedColumns>
 + <rightAlignedColumns>
 + <headercolumn width="50px">
 +                <component id="broadcastmessagepopover">
 +                    <url>/desktop/scripts/js/teammessage.component.js</url>
 +                </component>
 +            </headercolumn>
 + <!--
 + <headercolumn width="50px">
 +                <component id="chat">
 +                    <url>/desktop/scripts/js/chat.component.js</url>
 +                </component>
 +            </headercolumn>
 + -->
 + <headercolumn width="50px">
 + <component id="make-new-call-component">
 + <url>/desktop/scripts/js/makenewcall.component.js</url>
 + </component>
 + </headercolumn>
 + <headercolumn width="72px">
 + <component id="identity-component">
 + <url>/desktop/scripts/js/identity-component.js</url>
 + </component>
 + </headercolumn>
 + </rightAlignedColumns>
 + </header>
 +    <layout>
 +        <role>Agent</role>
 +        <page>
 +            <gadget>/desktop/scripts/js/callcontrol.js</gadget>
 +
 +            <!--  The page level Multi-Tab gadget. -->
 +            <gadget id="agentMultiTabGadgetContainer">/desktop/scripts/js/tabbedGadgets.js</gadget>
 +
 +            <!-- The following gadget is for WXM Customer Experience Journey. 
 +            If WXM is onboarded successfully with all configurations, then replace the url 
 +            with the actual url obtained by exporting the Cisco Finesse gadget from WXM -->
 +            <!-- <gadget managedBy="agentMultiTabGadgetContainer">/3rdpartygadget/files/CXService/CiscoCXJourneyGadget.xml</gadget> -->
 +
 +            <!-- The following gadget is for displaying the Answers based on the ongoing conversation between
 +            the agent and the customer. If CCAI service is configured and enabled for an agent, the gadget will be rendered on
 +            uncommenting the below code-->
 +            <!-- <gadget managedBy="agentMultiTabGadgetContainer" hidden="true">/3rdpartygadget/files/ccaiGadgets/answersGadget.xml</gadget> -->
 +
 +            <!-- The following gadget is for displaying the Transcript based on the ongoing conversation between
 +            the agent and the customer. If CCAI service is configured and enabled for an agent, the gadget will be rendered on
 +            uncommenting the below code-->
 +            <!-- <gadget managedBy="agentMultiTabGadgetContainer" hidden="true">/3rdpartygadget/files/ccaiGadgets/transcriptGadget.xml</gadget> -->
 +
 +           
 +        </page>
 +        <tabs>
 +            <tab>
 +                <id>home</id>
 +                <icon>home</icon>
 +                <label>finesse.container.tabs.agent.homeLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +                            <gadget default="true" managedBy="agentMultiTabGadgetContainer">/desktop/scripts/js/queueStatistics.js</gadget>
 +
 +                            <!-- The Multi-Tab gadget to show live data reports. Uncomment this for displaying the gadgets managed by it. -->
 +                            <!-- <gadget id="agentReportsMultiTabContainer">/desktop/scripts/js/tabbedGadgets.js</gadget> -->
 +                            <!--
 +                            The following Gadgets are for LiveData.
 +                            If you wish to show LiveData Reports, then do the following:
 +                                 1) Uncomment each Gadget you wish to show.
 +                                 2) Replace all instances of "my-cuic-server" with the Fully Qualified Domain Name of your Intelligence Center Server.
 +                                 3) [OPTIONAL] Adjust the height of the gadget by changing the "gadgetHeight" parameter.
 +                            IMPORTANT NOTES:
 +                                - In order for these Gadgets to work, you must have performed all documented pre-requisite steps.
 +                                - Do *NOT* change the viewId (unless you have built a custom report and know what you are doing).
 +                                - The "teamName" will be automatically replaced with the Team Name of the User logged into Finesse (for Team-specific layouts).
 +                            -->
 +                            <!-- HTTPS Version of LiveData Gadgets -->
 +                            <!-- TEAM STATUS REPORTS: -->
 +                            <!-- 1. Agent Default view (default) -->
 +                            <!-- <gadget managedBy="agentReportsMultiTabContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=99E6C8E210000141000000D80A0006C4&filterId_1=agent.id=CL%20teamName</gadget> -->
 +                            <!-- 2. Agent Skill Group Default view -->
 +                            <!-- <gadget managedBy="agentReportsMultiTabContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=9AB7848B10000141000001C50A0006C4&filterId_1=agent.id=CL%20teamName</gadget> -->
 +
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <!-- The following gadget is for displaying the Digital Channel Gadget. The gadget will be rendered on
 +            uncommenting the below code. Multiple instances of manage digital channels gadget in desktop layout are not supported. Only single instance of manage digital channel gadget can be configured in desktop layout.-->
 +            <!--tab>
 +                <id>manageDigitalChannel</id>
 +                <icon>mui-chat-active_16</icon>
 +                <label>finesse.container.tabs.agent.manageDigitalChannelLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +                            <gadget maxDialogLimit="5" interruptAction="IGNORE" dialogLogoutAction="TRANSFER" gadget-version="LATEST" >/3rdpartygadget/files/ManageDigitalChannel/ManageDigitalChannel.xml</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab-->
 +            <tab>
 +                <id>myStatistics</id>
 +                <icon>column-chart</icon>
 +                <label>finesse.container.tabs.agent.myStatisticsLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +                            <gadget default="true" managedBy="agentMultiTabGadgetContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=150&viewId=0B8D11317ED54A80B64F3AE28C5139E5&filterId=agentStats.id=CL%20teamName</gadget>
 +
 +                            <!-- The following gadget is for WXM Customer Experience Analytics. 
 +                            If WXM is onboarded successfully with all configurations, then replace the url 
 +                            with the actual url obtained by exporting the Cisco Finesse gadget from WXM -->
 +                            <!-- <gadget>/3rdpartygadget/files/CXService/CiscoCXAnalyticsGadget.xml</gadget> -->
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <tab>
 +                <id>myHistory</id>
 +                <icon>history</icon>
 +                <label>finesse.container.tabs.agent.myHistoryLabel</label>
 +                <columns>
 +                    <column>
 +                        <!-- The following gadgets are used for viewing the call history and state history of an agent. -->
 +                        <gadgets>
 +                            <gadget default="true" managedBy="agentMultiTabGadgetContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=280&viewId=5FA44C6F930C4A64A6775B21A17EED6A&filterId=agentTaskLog.id=CL%20teamName</gadget>
 +                            <gadget alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=280&viewId=56BC5CCE8C37467EA4D4EFA8371258BC&filterId=agentStateLog.id=CL%20teamName</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <!--
 +            The following Gadgets are for LiveData.
 +            If you wish to show More LiveData Reports, then do the following:
 +                1) Uncomment each Gadget you wish to show.
 +                2) Replace all instances of "ucce-cuic-a.example.com" with the Fully Qualified Domain Name of your Intelligence Center Server.
 +                3) [OPTIONAL] Adjust the height of the gadget by changing the "gadgetHeight" parameter.
 +            IMPORTANT NOTES:
 +                - In order for these Gadgets to work, you must have performed all documented pre-requisite steps.
 +                - Do *NOT* change the viewId (unless you have built a custom report and know what you are doing).
 +                - The "teamName" will be automatically replaced with the Team Name of the User logged into Finesse (for Team-specific layouts).
 +            -->
 +            <!-- If you are showing the "More Live Data Reports" tab, then also uncomment this section.
 +            <tab>
 +                <id>moreLiveDataReports</id>
 +                <icon>reports-more</icon>
 +                <label>finesse.container.tabs.agent.moreLiveDataReportsLabel</label>
 +                <gadgets>
 +            -->
 +            <!-- Multi-Tab gadget for extended live data reports. Uncomment this for displaying the gadgets managed by it.-->
 +            <!-- <gadget id="moreLiveDataMultiTabContainer">/desktop/scripts/js/tabbedGadgets.js</gadget>  -->
 +            <!-- HTTPS Version of LiveData Gadgets -->
 +            <!-- AGENT REPORTS: 1. Agent Default view (default) -->
 +            <!-- <gadget default="true" managedBy="agentMultiTabGadgetContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=99E6C8E210000141000000D80A0006C4&filterId_1=agent.id=CL%20teamName</gadget>-->
 +            <!-- AGENT SKILL GROUP REPORTS: 1. Agent Skill Group Default view (default) -->
 +            <!-- <gadget managedBy="moreLiveDataMultiTabContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=9AB7848B10000141000001C50A0006C4&filterId_1=agent.id=CL%20teamName</gadget>-->
 +            <!-- QUEUE STATUS SKILL GROUP REPORTS: 1. Skill Group Default view (default), 2. Skill Group Utilization view -->
 +            <!-- <gadget managedBy="moreLiveDataMultiTabContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=B7371BE210000144000002870A0007C5&filterId_1=skillGroup.id=CL%20teamName&viewId_2=9E760C8B1000014B0000005A0A0006C4&filterId_2=skillGroup.id=CL%20teamName</gadget>-->
 +            <!-- QUEUE STATUS PRECISION QUEUE REPORTS: 1. Precision Queue Default view (default), 2. Precision Queue Utilization view -->
 +            <!-- <gadget managedBy="moreLiveDataMultiTabContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId_1=B71A630C10000144000002480A0007C5&filterId_1=precisionQueue.id=CL%20teamName&viewId_2=286B86F01000014C000005330A0006C4&filterId_2=precisionQueue.id=CL%20teamName</gadget>-->
 +            <!-- If you are showing the "more reports" tab, then uncomment this section too.
 +                </gadgets>
 +            </tab>
 +            -->
 +        </tabs>
 +    </layout>
 +    <layout>
 +        <role>Supervisor</role>
 +        <page>
 +            <gadget>/desktop/scripts/js/callcontrol.js</gadget>
 +
 +            <!--  The page level Multi-Tab gadget. -->
 +            <gadget id="supervisorMultiTabGadgetContainer">/desktop/scripts/js/tabbedGadgets.js</gadget>
 +
 +            <!-- The following gadget is for WXM Customer Experience Journey. 
 +            If WXM is onboarded successfully with all configurations, then replace the url 
 +            with the actual url obtained by exporting the Cisco Finesse gadget from WXM -->
 +            <!-- <gadget managedBy="supervisorMultiTabGadgetContainer">/3rdpartygadget/files/CXService/CiscoCXJourneyGadget.xml</gadget> -->
 +
 +            <!-- The following gadget is for displaying the Answers based on the ongoing conversation between
 +            the agent and the customer. If service is enabled for an agent, the gadget will be rendered on
 +            uncommenting the below code-->
 +            <!-- <gadget managedBy="supervisorMultiTabGadgetContainer" hidden="true">/3rdpartygadget/files/ccaiGadgets/answersGadget.xml</gadget> -->
 +
 +            <!-- The following gadget is for displaying the Transcript based on the ongoing conversation between
 +            the agent and the customer. If service is enabled for an agent, the gadget will be rendered on
 +            uncommenting the below code-->
 +            <!-- <gadget managedBy="supervisorMultiTabGadgetContainer" hidden="true">/3rdpartygadget/files/ccaiGadgets/transcriptGadget.xml</gadget> -->
 +
 +           
 +        </page>
 +        <tabs>
 +            <tab>
 +                <id>home</id>
 +                <icon>home</icon>
 +                <label>finesse.container.tabs.supervisor.homeLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +
 +                            <gadget default="true" managedBy="supervisorMultiTabGadgetContainer" id="team-performance">/desktop/scripts/js/teamPerformance.js</gadget>
 +                            <!-- The following gadgets are used for viewing the call history and state history of an agent selected in the Team Performance Gadget. -->
 +                            <!-- The following gadgets are managed(loaded and displayed) by the team performance gadget (associated with id "team-performance").
 +                                 This association is done using the mapping of managedBy attribute of the managed gadgets, to the id of managing gadget.
 +                                 If the id for team performance gadget is changed, the values for the associated managedBy attribute
 +                                 for the managed gadgets, also need to be updated with the new id.
 +
 +                                 These managed gadgets are not displayed by default, but would be displayed when the option 
 +                                 "view history" is selected, for an agent, in the team performance gadget.
 +
 +                                 Note: As managed gadgets are not displayed by default, placing managed gadgets alone on
 +                                 separate columns of their own, would display blank space in that area.
 +                                 For more details on managed gadgets and managedBy attribute, please refer to Finesse Administration Guide. 
 +                            -->
 +                            <gadget managedBy="team-performance" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=275&viewId=630CB4C96B0045D9BFF295A49A0BA45E&filterId=agentTaskLog.id=AgentEvent:Id&type=dynamic&maxRows=20</gadget>
 +                            <gadget managedBy="team-performance" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=275&viewId=56BC5CCE8C37467EA4D4EFA8371258BC&filterId=agentStateLog.id=AgentEvent:Id&type=dynamic&maxRows=20</gadget>
 +
 +                            <!-- The following gadget is for WXM Customer Experience Analytics. 
 +                            If WXM is onboarded successfully with all configurations, then replace the url 
 +                            with the actual url obtained by exporting the Cisco Finesse gadget from WXM -->
 +                            <!-- <gadget>/3rdpartygadget/files/CXService/CiscoCXAnalyticsGadget.xml</gadget> -->
 +
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <!-- The following gadget is for displaying the Digital Channel Gadget. The gadget will be rendered on
 +            uncommenting the below code-->
 +            <!--tab>
 +                <id>manageDigitalChannel</id>
 +                <icon>mui-chat-active_16</icon>
 +                <label>finesse.container.tabs.agent.manageDigitalChannelLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +                            <gadget maxDialogLimit="5" interruptAction="IGNORE" dialogLogoutAction="TRANSFER" gadget-version="LATEST" >/3rdpartygadget/files/ManageDigitalChannel/ManageDigitalChannel.xml</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab-->
 +            <tab>
 +                <id>myHistory</id>
 +                <icon>history</icon>
 +                <label>finesse.container.tabs.agent.myHistoryLabel</label>
 +                <columns>
 +                    <column>
 +                        <!-- The following gadgets are used for viewing the call history and state history of a logged in supervisor. -->
 +                        <gadgets>
 +                            <gadget default="true" managedBy="supervisorMultiTabGadgetContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=280&viewId=5FA44C6F930C4A64A6775B21A17EED6A&filterId=agentTaskLog.id=CL%20teamName</gadget>
 +                            <gadget alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=280&viewId=56BC5CCE8C37467EA4D4EFA8371258BC&filterId=agentStateLog.id=CL%20teamName</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <tab>
 +                <id>teamData</id>
 +                <icon>team-data</icon>
 +                <label>finesse.container.tabs.supervisor.teamDataLabel</label>
 +                <columns>
 +                    <column>
 +                        <!-- The following gadget is used by the supervisor to view an agent's queue interval details. -->
 +                        <gadgets>
 +                        <gadget default="true" managedBy="supervisorMultiTabGadgetContainer" alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/LiveData/LiveDataGadget.xml?gadgetHeight=310&viewId=0B8D11317ED54A80B64F3AE28C5139E5&filterId=agentStats.id=CL%20teamName</gadget>
 +                            <gadget alternateHosts="ucce-cuic-b.example.com">https://ucce-cuic-a.example.com:8444/cuicui/gadget/Historical/HistoricalGadget.xml?viewId=BD9A8B7DBE714E7EB758A9D472F0E7DC&linkType=htmlType&viewType=Grid&refreshRate=900&@start_date=RELDATE%20THISWEEK&@end_date=RELDATE%20THISWEEK&@agent_list=CL%20~teams~&gadgetHeight=360</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +            <tab>
 +                <id>queueData</id>
 +                <icon>storage</icon>
 +                <label>finesse.container.tabs.supervisor.queueDataLabel</label>
 +                <columns>
 +                    <column>
 +                        <gadgets>
 +                            <gadget default="true" managedBy="supervisorMultiTabGadgetContainer">/desktop/scripts/js/queueStatistics.js</gadget>
 +                        </gadgets>
 +                    </column>
 +                </columns>
 +            </tab>
 +        </tabs>
 +    </layout>
 +</finesseLayout>
 +</code>
 +
 +===== Logging =====
 +
 +<code>
 +file list activelog desktop/logs/webservices
 +</code>
 +
 +<code>
 +file tail activelog desktop/logs/webservices/
 +</code>
 +
 +===== Handy Finesse CLI Commands =====
 +
 +Disable Auto retry Login (no restart required - refresh browser)
 +<code>
 +utils finesse set_property desktop enableRetryLoginFeature false
 +</code>