Thursday, March 09, 2017

Cisco UCCX upgrade - An error has occured but no messages are available. This can happen when another administrator is working on the system at the same time and triggers an error.

While recently working on upgrading a client from CUCM, IMP, CUC and UCCX version 9 to 11.5.X (and we'll throw Expressway in there too) I ran into a snag while upgrading UCCX.

I was diligent with preparation and found their 9.0.2.11001-24 / SU1 version did not support a direct upgrade to 11.5.1.  My plan was then to get them to 9.0.2.11003-44 / SU3 first and then to 11.5.1, a supported upgrade path.

To get to  SU3 I had Prime Collaboration Deployment install it's own ciscocm.ucmap_platformconfig.cop file during discovery, install the ciscouccx.refresh_upgrade_v1.11.cop to get it out of the way, and then turned it loose on upgrading to SU3.  That went fine although the jury is till out on what efficiency gains I made using PCD.

Shortly after triggering the upgrade to 11.5.1 I was greeted with a "Task paused due to task action failures." email from PCD.   Downloading and digging through the install logs returned nothing very obvious.  

I showed the current version to confirm I had some SU3 success and all looked good.

admin:show version active
Active Master Version: 9.0.2.11003-44
Active Version Installed Software Options:
ciscouccx.refresh_upgrade_v1.11.cop
ciscocm.ucmap_platformconfig.cop
admin:


A manual upgrade attempt made a symptom perfectly clear though.

admin:utils system upgrade initiate

Warning: Do not close this window without first canceling the upgrade.

An error has occured but no messages are available.  This can happen when another administrator is working on the system at the same time and triggers an error.


There was no other administrator with access to the system.  In the event PCD was being considered an administrator I cancelled and deleted the associated task there.  Another manual run attempt resulted in the same An error has occured but no messages are available. message though.

Google matches consistently referred to a missing refressh cop file.  All documentation indicated my ciscouccx.refresh_upgrade_v1.11.cop was appropriate, PCD indicated it completed the task for me and I could see it in the active partition myself.

Ultimately the fix was to manually install the ciscouccx.refresh_upgrade_v1.11.cop again.

Possible problem scenarios are:
  1. the cop file first install used a fragged version or blew up the version of the cop file on the PCD server
  2. PCD shouldn't have been used to simply install the cop file
  3. the fact the cop file was installed before the upgrade to 9.0.2 SU3 rather than 11.5 invalidated its usefulness
  4. stuff happen  
It seems the consensus is correct that the error points to some missing refresh upgrade preparation, but thought my "Trust me... just try it again" theory might help someone shave an hour or two off you upgrade weekend.

Good luck.

Saturday, February 04, 2017

UCCX Finesse and Spark Team Announcement gadget as a CAD CSD team messages and chat replacement

While upgrading clients to UCCX 11 and 11.5, and away from CAD and CSD to Finesse, one feature often found lacking is the old team messaging and chat features available via CAD.

After experimenting with Cisco's Spark Care Assistant bot at https://depot.ciscospark.com I thought it might be a good option to use as a replacement.  My plan was to possibly incorporate this bot or one similar into Finesse as a gadget to replace the missing CAD/CSD feature and allow broadcast messages from supervisors to agents.  It would also give me the opportunity to dig a little into Spark's and Finesse's feature set and the related javascript and css design that would hold it together.

Then I found I would be reinventing the wheel, as Cisco already published a Spark Team Announcements Gadget here some time ago: https://communities.cisco.com/community/developer/finesse/blog/2016/09/28/try-out-the-new-cisco-spark-team-announcements-gadget  That took some fun out of the project for me but at least Cisco seems to be addressing Finesse native shortcomings in some fashion.

Get the gadget:

You can get the Spark Team Announcements Sample Gadget code here: https://github.com/CiscoDevNet/finesse-sample-code/tree/master/SparkTeamAnnouncementsSampleGadget Make note that the gadgets are version specific.  I've used a few of Cisco's gadgets on UCCX version 10.6 before they were moved to github and getting new gadgets to work on older versions had some challenges for awhile.  I suppose they will be another thing that needs to be considered carefully during upgrade processes.  There is a nice post regarding version differences here https://communities.cisco.com/community/developer/finesse/blog/2016/03/16/how-to-convert-your-existing-1051-custom-gadget-to-work-with-1061-or-1101 that may be helpful at least for awhile.

Install the gadget:

Even if you are using UCCX with Finesse running co-resident you still have the ability to install gadgets directly on your UCCX server to be referenced by Finesse.  There is a 3rdpartygadget account in UCCX / Finesse that can be used to upload gadgets.

You'll need to reset the account password to something you know by SSH'ing to the UCCX CLI and running utils reset_3rdpartygadget_password.

Once you have that, you can transfer files to and from UCCX's / Finesse's gadget folder http:///3rdpartygadget/files/ via SFTP.  To make life easy, I might suggest using WinSCP here https://winscp.net/eng/index.php or a similar tool to provide a graphical interface during the process. Here what that looks like if you haven't used it:




Implement notes:

The gadget code from github includes a great PDF describing the implementation steps.  I did get tripped up a couple time though.

You'll need to go to https://developer.ciscospark.com/ and create a new integration.

My first hurdle was simply having an icon available to visually identify my new "App".  It seems you are required to host a 512x512 pixel icon somewhere publicly to be used visually and you cannot proceed through the integration creation without it.  If you don't have a public web server somewhere, you might investigate a free version like https://sites.google.com.  I had mixed results using links from file sharing sites and while the URL is rather convoluted, the image sitting on my Google sites page seems to work well for some reason.  Ultimately I came up with this one one:

https://1e96032b-a-62cb3a1a-s-sites.googlegroups.com/site/raymaslanka/home/ICON.jpg?attachauth=ANoY7conMrxe3vubOApA3QL0VU9SYLkYZtEkqh2ExwWnV6g0eaeFPbp6lJosaNIBEdSXktxz2Dk45_OEay9KxHSy55uLsXtijrqDYMwWLd9KDTvviKqzl8_PUjCRkQtwQ3JJotpbPC4RQNQEBuTQBE4R6Y0UQWPxf9UnyCfMAy3eVnBfsSrNKYrfqy6ZznWZSK3jdPI0Qw3xIxIb0Lsh_x4WJ-PWfTa4RQ%3D%3D&attredirects=0
FQDN vs IP ?:

When setting up the integration, I would suggest using the FQDN of your UCCX / Finesse server. I had issues attempting to use the IP address of the server for some reason.  Your results may vary. 

My working Redirect URI looks like: https://sc-uccx01.my-demo-domain.com:8445/3rdpartygadget/files/SparkTeamAnnouncements/oauth.html

This did not work for me for some reason: https://172.22.115.50:8445/3rdpartygadget/files/SparkTeamAnnouncements/oauth.html

This needs to be accessible by your Finesse users, not just Finesse via a relative link you may have used elsewhere. You can verify you have the URL correct by just accessing it trough your browser and should expect to be returned this:





Editing your integration:

If you need to change your integration's Redirect URI at https://developer.ciscospark.com note the OAuth Authorization URL will be changed as well.  Changing this:


changes this as well:


So...  when you change your Redirect URI on Cisco's site, you will need to update your oauth.html with the new Redirect URI, AND ALSO your SparkTeamAnnouncements.js with the new OAuth Authorization URL.

User experience:

When it is all done and working a Finesse user should expect a new page or tab to pop after entering their normal Finesse credentials.  This will prompt them to log into Spark.  Note, you CAN log into Spark with an account different than your Finesse domain.  You'll also be challenged to allow the new integration access to some Spark features.

Oh look... my icon is missing
If that is successful, the new tab will close and you'll have access to Spark wherever you placed it in Finesse.

Fun.

Sunday, October 30, 2016

UCCX CUIC Not Ready Custom Reason Codes

While migrating a client to UCCX 11.5 found them needing to use and report on custom reason codes.  UCCX and CUIC do not have this capability available by default, but with some customization it can be done.

Here's an official bug CSCue26150 indicating Cisco is only considering this a documentation defect as they seem to think this functionality is acceptable by design.
UCCX: Not Ready Reason Code Report Does Not Display Custom Reason Codes
https://bst.cloudapps.cisco.com/bugsearch/bug/CSCue26150

Here's a decent write up by a Cisco representative who apparently fields daily calls on why this is so painful but isn't 11.5 specific and lacks some detail for the newbies.
https://supportforums.cisco.com/document/13129451/uccx-cuic-not-ready-reason-code 

Here's my version / what I suggest:

Create a custom version of your report
  • Click the ellipses to the right of the report name and choose Save As
  • Choose a new descriptive report name and location.  For example I have "Agent Not Ready Reason Code Summary Report 1" in a "Custom" folder.


Run the new copy of the report while filtering by your custom reason codes.
  • Here I know a custom code 108 equates to "Admin Duties" and 111 equates to "Done for the Day". We'll filter on those.  You can have a maximum of 8 codes displayed separately but the sum of the ninth through whatever will be displayed in a single column.  You may have to run multiple reports to display your data.
  • I will also select the "Save the chosen filter as default" check box to make filtering easier easier in the future.
  • Then run the report.


Verify the data column order
  • The columns will not have headers that reflect the descriptions of your custom ready codes.  The headers will still be the default names displayed if you did not filter at all (i.e. RC 32,751 or RC 32,752, etc.).
  • Use the SQL output or "View Filter Information" to verify what order your codes were retrieved in.   Here we see we retrieved 108 first and 111 second.  This should correspond to the order you entered them in your filter list.


Rename your column headers to make report readable
  • Choose "Edit View" from drop down.
  • Scroll to the column from the Selected list that you want to rename and click the edit pencil icon.
  • Change the Display Name to something meaningful.  Here I will use 108 Admin Duties and 111 Done for the Day.  Click Done.
  • To further tailor your report, you can remove unused columns from this same Selected List by selecting them and using the left button.



Wednesday, October 12, 2016

Download and save Instagram photos without an app

Download and save Instagram photos without an app

On a Windows 7 desktop using Google Chrome circa version 53:

  1. Find the photo on Instagram
  2. Right click the photo and choose "Inspect"
  3. On the developer tools menu, choose "Application"
  4. In the left pane, scroll down to "Images"
  5. Scroll down through images (displayed in right pane) until you find the one you are looking for.
  6. Right click image in right pane and choose "Save"
  7. Enter an appropriate name and file location and choose "Save"
Stalking my daughter for my wife with Chrome


 On a Windows 7 desktop using Mozilla Firefox (circa version 49):

  1. Find the photo on Instagram
  2. Right click the photo and choose "View Page Info"
  3. In pop-up window, choose Media icon.
  4. In top Address list, scroll down through images (displayed in bottom Media Preview frame) until you find the one you are looking for.
  5. Click "Save As" button.
  6. Enter an appropriate name and file location and choose "Save"

Stalking my daughter for my wife with Firefox

Saturday, September 10, 2016

NetApp cable diagram when adding DS2246 disk shelves

I had a chance to help a cohort add storage to a couple NetApp deployments.  I basically had to cable the devices so he could provision them remotely later. 

They had two FAS2220 systems with double controllers (Multipath HA) in production and I had to attach the new DS2246 disk shelves.

NetApp publishes a quickstart guide that has nice cable drawings in them but none specifically with this (a single external storage shelf) as the end result.  In addition, the new shelves were racked above the original systems so the drawings were evening a bit more difficult to follow  by a NetApp noob.

Below is the production system, the racked external storage above it, and the ultimate path for the SAS and ACP cables.  Worked like a champ.


Hope it helps calm someone's storage nerves.