PSN # PSN003169u Product Support Notice 2011 Avaya Inc. All Rights Reserved. Original publication date: 4-Feb-11. This is Issue #02, published date: 17- Nov-11. Severity/risk level High Urgency Immediately Name of problem Avaya Interaction Center Releases 7.2.2 and 7.2.3 users need to set ResetScriptIteration to 1 in WACD configuration if the new behavior introduced in the fix of wi00224930 is not desired by the customer. Products affected Avaya Interaction Center: Releases 7.2.2 and 7.2.3 SP. Problem description In Avaya IC 7.2.2 SP, a new parameter ResetScriptIteration for WACD was introduced as a part of the fix wi00224930 (When the WebACD is restarted the queue scripts for recreated tasks restart from iteration 0). However, the information about this parameter and other configuration details related to the fix are not present in the IC 7.2.2 and IC 7.2.3 Release Notes. Resolution In wi00224930, changes were made in WACD server to persist priority, workgroup & iteration counter into the database. With these changes when WACD server is restarted, rather than starting from the iteration counter from 0, WACD will recreate tasks at the same priority and workgroup that it had prior to the restart. However, enabling of this new behavior depends on the parameter ResetScriptIteration. A) If the parameter is set to 1, WACD will behave as it used to, before the fix, i.e. queue scripts will start from iteration zero. B) If the parameter is set to 0, WACD will recreate tasks at the same priority and workgroup that it had prior to the restart. By default, (i.e. if not configured) WACD server considers the value of ResetScriptIteration parameter to be 0 unless the value is explicitly set to 1 in the WACD configuration in IC Manager. Configuration steps to be performed after installing IC 7.2.2 or IC 7.2.3 SP: A) If the old behavior of WACD server is desired, i.e. value of iteration counter will be reset to zero on WACD restart, perform the following steps for all WACD servers: 1. Login to ICManager 2. Go to the Server tab and double click on a WACD server to edit its configuration. 3. Go to the configuration tab and add a new configuration parameter Name: ResetScriptIteration Value: 1 4. Hit OK to save the WACD configuration and restart the WACD server. B) If it is desired that WACD does not reset the counter on restart, perform the following steps on Windows machine (Where Design and Admin is installed): 1. Gathering database information a. Login into ICManager b. Open Tools menu and click on "IC Data Sources..." c. Once "IC Data Sources..." dialog opens expand "interaction_center" d. Click on ccqdbconnection. e. Note down Database Name and Database Server Values. 2. Changing w_script_details There are different queries for SQL Server, DB2 & Oracle a. For Microsoft SQL and DB2 Databases execute the following query for the database noted down in the above steps. Please use respective Database GUI Client to execute below query. update w_scripts_detail set script_text =' This is the default script It looks for the following key-values Expectedqueuetime - If present, it will display the expected hold time
Workgroup - The value should be a Workgroup to enqueue to Agent - The value should be an agent name to enqueue to Priority - The priority of an enqueue (team or agent) Say - A string message to say to the customer PushURL - A URL to push to the customer Wait - A value (in secs) to wait before processing the next set of keys If Expectedqueuetime is defined, get the expected hold time if acd.getvalue("expectedqueuetime") <> "0" then acd.sv("time", ACD.ExpectedQueueTime(10)) if acd.gv("time") = 0 then say("an agent will be with you shortly.") if acd.gv("time") <> -1 then say("your approximate wait time is " & acd.gv("time") & " minutes.") First check if pacagentname is provided. If so, this will be used first, and the main loop only entered if the requested agent does not become available within 30 seconds if acd.getvalue("pacagentname") <> "0" then acd.getagent(acd.getvalue("pacagentname")).enqueue() Say("Agent " & acd.getvalue("pacagentname") & " will be with you shortly.") Start the loop while (acd.gv("exit") = 0) acd.sv("exit", 1) Check to see if a team is defined and if so, check for a priority if acd.getvalue("workgroup" & acd.gv("cnt")) <> "0" then ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(low) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(normal) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(high) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(urgent) 2011 Avaya Inc. All Rights Reserved. Page 2
ACD.GetTeam(Cstr(acd.getvalue("Workgroup" & acd.gv("cnt")))).enqueue() Check to see if an agent is defined and if so, check for a priority if acd.getvalue("agent" & acd.gv("cnt")) <> "0" then ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(low) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(normal) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(high) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(urgent) ACD.GetAgent(Cstr(acd.getvalue("Agent" & acd.gv("cnt")))).enqueue() check for a say value if acd.getvalue("say" & acd.gv("cnt")) <> "0" then say(acd.getvalue("say" & acd.gv("cnt"))) check for a push url value if acd.getvalue("pushurl" & acd.gv("cnt")) <> "0" then pushurl(acd.getvalue("pushurl" & acd.gv("cnt"))) check for a wait value if acd.getvalue("wait" & acd.gv("cnt")) <> "0" then acd.setvalue("sleep", acd.getvalue("wait" & acd.gv("cnt"))) sleep(int(cdbl(acd.getvalue("sleep")))) If this was the 1st time through and no values were set, then we need to do a normal routing. if acd.gv("exit") = 1 AND acd.gv("cnt") = 0 then say("please wait for the next available econtact agent.") while(true) ACD.GetTeam("Default").Enqueue() Say("Please continue to wait...") wend 2011 Avaya Inc. All Rights Reserved. Page 3
If any values were set for this count then up the counter and continue, otherwise, set the counter back to zero and start over. if acd.gv("exit") = 0 then acd.sv("cnt", acd.gv("cnt") + 1 ) acd.sv("cnt", 0) wend' where script_name='defaultqueuescript'; b. For Oracle, execute the following query for the schema noted down. Please use Oracle GUI Client to execute below query. set scan off; declare sscriptvar varchar2(32767) := ' This is the default script It looks for the following key-values Expectedqueuetime - If present, it will display the expected hold time Workgroup - The value should be a Workgroup to enqueue to Agent - The value should be an agent name to enqueue to Priority - The priority of an enqueue (team or agent) Say - A string message to say to the customer PushURL - A URL to push to the customer Wait - A value (in secs) to wait before processing the next set of keys If Expectedqueuetime is defined, get the expected hold time if acd.getvalue("expectedqueuetime") <> "0" then acd.sv("time", ACD.ExpectedQueueTime(10)) if acd.gv("time") = 0 then say("an agent will be with you shortly.") if acd.gv("time") <> -1 then say("your approximate wait time is " & acd.gv("time") & " minutes.") First check if pacagentname is provided. If so, this will be used first, and the main loop only entered if the requested agent does not become available within 30 seconds 2011 Avaya Inc. All Rights Reserved. Page 4
if acd.getvalue("pacagentname") <> "0" then acd.getagent(acd.getvalue("pacagentname")).enqueue() Say("Agent " & acd.getvalue("pacagentname") & " will be with you shortly.") Start the loop while (acd.gv("exit") = 0) acd.sv("exit", 1) Check to see if a team is defined and if so, check for a priority if acd.getvalue("workgroup" & acd.gv("cnt")) <> "0" then ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(low) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(normal) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(high) ACD.GetTeam(acd.GetValue("Workgroup" & acd.gv("cnt"))).enqueue(urgent) ACD.GetTeam(Cstr(acd.getvalue("Workgroup" & acd.gv("cnt")))).enqueue() Check to see if an agent is defined and if so, check for a priority if acd.getvalue("agent" & acd.gv("cnt")) <> "0" then ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(low) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(normal) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(high) ACD.GetAgent(acd.GetValue("Agent" & acd.gv("cnt"))).enqueue(urgent) ACD.GetAgent(Cstr(acd.getvalue("Agent" & acd.gv("cnt")))).enqueue() check for a say value if acd.getvalue("say" & acd.gv("cnt")) <> "0" then say(acd.getvalue("say" & acd.gv("cnt"))) 2011 Avaya Inc. All Rights Reserved. Page 5
check for a push url value if acd.getvalue("pushurl" & acd.gv("cnt")) <> "0" then pushurl(acd.getvalue("pushurl" & acd.gv("cnt"))) check for a wait value if acd.getvalue("wait" & acd.gv("cnt")) <> "0" then acd.setvalue("sleep", acd.getvalue("wait" & acd.gv("cnt"))) sleep(int(cdbl(acd.getvalue("sleep")))) If this was the 1st time through and no values were set, then we need to do a normal routing. if acd.gv("exit") = 1 AND acd.gv("cnt") = 0 then say("please wait for the next available econtact agent.") while(true) ACD.GetTeam("Default").Enqueue() Say("Please continue to wait...") wend If any values were set for this count then up the counter and continue, otherwise, set the counter back to zero and start over. if acd.gv("exit") = 0 then acd.sv("cnt", acd.gv("cnt") + 1 ) acd.sv("cnt", 0) wend'; begin update qw_text set text=sscriptvar where qwkey=1; end; 3. On Design and Admin machine login to ICManager and restart the WACD server. Workaround or alternative remediation Remarks The parameter ResetScriptIteration is applicable only for the email contacts. Setting the parameter ResetScriptIteration to 1 reverts to the older behavior of WACD for email contacts. WACD will reset the iteration counter for email contacts on its restart i.e. WACD will not maintain email contact s priority and workgroup after it restarts. Introducing this parameter resulted into regression issues for email and chat contacts, workitems: wi00845906, wi00879968. These WI s are fixed in IC7.2.4 SP. WI00847148 has been created to incorporate this information in IC 7.2.4 SP Release Notes. Patch Notes The information in this section concerns the patch, if any, recommended in the Resolution above. Backup before applying the patch 2011 Avaya Inc. All Rights Reserved. Page 6
Download Patch install instructions Verification Failure Patch uninstall instructions Service-interrupting? No Security Notes The information in this section concerns the security risk, if any, represented by the topic of this PSN. Security risks Avaya Security Vulnerability Classification Not Susceptible Mitigation For additional support, contact your Authorized Service Provider. Depending on your coverage entitlements, additional support may incur charges. Support is provided per your warranty or service contract terms unless otherwise specified. Avaya Support Contact Telephone U.S. Remote Technical Services Enterprise 800-242-2121 U.S. Remote Technical Services Small Medium Enterprise 800-628-2888 U.S. Remote Technical Services BusinessPartners for Enterprise Product 877-295-0099 BusinessPartners for Small Medium Product Please contact your distributor. Canada 800-387-4268 Caribbean and Latin America 786-331-0860 Europe, Middle East, and Africa 36-1238-8334 Asia Pacific 65-6872-8686 Disclaimer: ALL INFORMATION IS BELIEVED TO BE CORRECT AT THE TIME OF PUBLICATION AND IS PROVIDED AS IS. AVAYA INC., ON BEHALF OF ITSELF AND ITS SUBSIDIARIES AND AFFILIATES (HEREINAFTER COLLECTIVELY REFERRED TO AS AVAYA ), DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND FURTHERMORE, AVAYA MAKES NO REPRESENTATIONS OR WARRANTIES THAT THE STEPS RECOMMENDED WILL ELIMINATE SECURITY OR VIRUS THREATS TO CUSTOMERS SYSTEMS. IN NO EVENT SHALL AVAYA BE LIABLE FOR ANY DAMAGES WHATSOEVER ARISING OUT OF OR IN CONNECTION WITH THE INFORMATION OR RECOMMENDED ACTIONS PROVIDED HEREIN, INCLUDING DIRECT, INDIRECT, CONSEQUENTIAL DAMAGES, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE INFORMATION PROVIDED HERE DOES NOT AFFECT THE SUPPORT AGREEMENTS IN PLACE FOR AVAYA PRODUCTS. SUPPORT FOR AVAYA PRODUCTS CONTINUES TO BE EXECUTED AS PER EXISTING AGREEMENTS WITH AVAYA. All trademarks identified by or TM are registered trademarks or trademarks, respectively, of Avaya Inc. All other trademarks are the property of their respective owners. 2011 Avaya Inc. All Rights Reserved. Page 7