Upgrading Cisco Unity Express

I recently upgraded an NME-CUE (Cisco Unity Express Enhanced Network Module) from version 3.2.1 to 8.6.7. This module was moving from a 3845 router (running CUCME 7.1) to a 3945 router (running CUCME 10.5), so these versions match the compatibility matrix. On the whole, this went fairly smoothly, but there are a couple of issues to be aware of.

In brief, there were 4 main steps:

  1. Backup the current configuration and data.
  2. Download and install the upgrade package.
  3. Migrate licences to CSL.
  4. Sort out the Message Waiting Indicator (MWI).

Firstly, make sure that you have a backup copy of your running config. If you use PuTTY (or a similar program) to connect to the router, you can tell it to save everything to a text file, then type “show run” at the command prompt. It’s a good idea to do this whenever you make a change; that way, if something stops working, you can compare the old/new configs to see what’s different. Similarly, backup your actual data (e.g. messages), just in case anything goes wrong: Appendix A of the Installation and Upgrade Guide explains how to do that. Also, make sure that you’ve saved the router configuration (i.e. the running config needs to match the startup config).

You then need to download the relevant files and put them in a repository.
NB You have to use an FTP server, not a TFTP server.

Make sure that you download the language package file as well as the main application package file, and put all the files in the same folder. I thought I could skip the language pack (since UK and US are pretty similar) but it turns out that there is a GB specific language pack (cue-vm-en_GB-langpack.nmx.8.6.7.prt1) and you get an error message if it’s missing.

The Installation and Upgrade Guide recommends that you “stage” the installation, i.e. download the files from the repository onto the local hard disk, then do the upgrade. The download went fine, but I got an error message when I tried to install the software.

CUE> software install upgrade cue-vm-k9.nmx.8.6.7.pkg

WARNING:: This command will install the necessary software to
WARNING:: complete an upgrade. It is recommended that a backup be done
WARNING:: before installing software.

Would you like to continue? [n]y
install/type: no such node/attribute
install/local: no such node/attribute
/bin/installer.sh: line 92: [: ==: unary operator expected
/bin/installer.sh: line 311: [: ==: unary operator expected

Downloading ftp cue-vm-k9.nmx.8.6.7.pkg

Error: Download error
Can not download cue-vm-k9.nmx.8.6.7.pkg
error code 0 : error type 'couldn't connect to host'
Error: Download error
/bin/installer.sh: line 402: [: ==: unary operator expected

So, I had to do the download and installation as a combined command:
CUE> software install upgrade url ftp://ftp.example.com/cue-vm-k9.nmx.8.6.7.pkg username CUE password MyPassword

That displayed a lot more output, including some slightly worrying messages; I’m not sure whether they were errors or warnings.

Once the installation finished, it rebooted the voicemail module, then said:
Please enter '***' to change boot configuration:
I wasn’t sure whether that was optional or compulsory. After a few seconds it didn’t seem to be doing anything, so I typed in the asterisks, which gave me a new prompt:
ServicesEngine boot-loader>

I then ran “verify”. This displayed several lines of output: mostly good, but it ended by halting the system.

INIT: Sending processes the TERM signal

Sending an RBCP message to IOS notifying module shutdown...

Halting ...

shutdown: sending all processes the TERM signal...
platform.config: INFO platform.config server output END

rbcp: INFO rbcp daemon output END

trace: INFO trace daemon output END

shutdown: sending all processes the KILL signal.
shutdown: turning off swap
shutdown: unmounting all file sysd 1:0:0:0: [sda] Synchronizing SCSI cache
stems
The system is halted. Press CTRL-ALT-DEL or turn off power
sd 1:0:0:0: [sda] Stopping disk
Clocksource tsc unstable (delta = 90864886 ns)
Time: pit clocksource has been installed.
System halted.

That left the system in a weird state: I could still get a dial tone on my Cisco IP phone and call my mobile phone (via ISDN/PSTN), but I couldn’t do anything via PuTTY, so I had to do a hard reboot on the entire router (not just the voicemail module). That’s why it’s important to save your running config on the router before you do this upgrade.

After the reboot, I logged back in and checked the version:

CUE# show software version
Cisco Unity Express version (8.6.7)
Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2013 by Cisco Systems, Inc.

Components:

- CUE Voicemail Language Support version 8.6.7

So, that’s all fine. I also verified that it had preserved all the mailboxes, so I didn’t have to restore any data from my backup file. There were a few hiccups that the documentation doesn’t mention; maybe it would be a smoother upgrade if I’d gone through a few intermediate versions.

I then tried to get into voicemail from my phone, but I just got an engaged tone. That normally means that you’ve exceeded the maximum number of allowed simultaneous connections, but in this case I was the only person using the system. The issue turned out to be licensing:

CUE# show license
Index 0 Feature: VMIVR-VM-MBX
Period left: 8 weeks 4 days
License Type: Evaluation
License State: Active, Not in Use, EULA not accepted
License Count: 600 / 0
License Priority: None
Index 1 Feature: VMIVR-PORT
Period left: 8 weeks 4 days
License Type: Evaluation
License State: Active, Not in Use, EULA not accepted
License Count: 60 / 0
License Priority: None
Index 2 Feature: VMIVR-IVR-SESS
Period left: 8 weeks 4 days
License Type: Evaluation
License State: Active, Not in Use, EULA not accepted
License Count: 60 / 0
License Priority: None

CUE# show license status application
voicemail disabled, no activated mailbox license available
ivr disabled, no activated ivr session license available

When I originally purchased this module, it came with licences for 8 ports and 250 mailboxes. However, Cisco changed the licensing module a few years ago. According to Software Activation of Cisco Unity Express for 7.1 and Later Versions:
“When you upgrade to version 7.1 or later, you must replace your pre-CSL licenses with CSL licenses. [..] If you are upgrading to the same of licensed features as before, the CSL licenses are free.”

So, the old licences were invalid and it switched into evaluation mode. You could run it with 600 mailboxes and 60 ports for 60 days, but you’d have to accept the EULA first. In my case, it made more sense to replace my old licences. So, I went to the Cisco licensing portal, which asked for the UDI product ID and the UDI serial number.

If you run show version at the command prompt, the output includes a line like this:
UDI: NME-CUE:FOC12345ABC
You then need to split this in half, i.e.

  • UDI product ID: NME-CUE
  • UDI serial no: FOC12345ABC

The UDI serial number will be unique for each device, but it’s the module serial number rather than the chassis serial number.

The website then prompted me to enter the quantity for each SKU:
CSL

Each SKU is listed twice. I believe that you use the version without the “=” sign if you order the licence at the time of purchase, whereas you use the version with the “=” sign if you order extra licences later. So, in my case the relevant SKUs were:

  • FL-CUE-MBX-5 * 50 (250 mailboxes)
  • FL-CUE-Port-2 * 4 (8 ports)

The website promptly emailed me with a new licence file, so I think that it’s working on the honour system. However, it’s possible that someone is manually reviewing the records later. Anyway, I copied that licence file to my TFTP server, then installed it:

CUE# license install tftp://tftp.example.com/FOC12345ABC.lic
Installing...Feature:VMIVR-PORT...Successful:No Error
License Note:
Application will evaluate this change upon next reload
Installing...Feature:VMIVR-VM-MBX...Successful:No Error
License Note:
Application will evaluate this change upon next reload
2/2 licenses were successfully installed
0/2 licenses were existing licenses
0/2 licenses were failed to install

I ran reload to reboot the CUE module (not the entire router), then I was able to access voicemail from my IP phone. Checking the licences again, the lines in bold have changed:

CUE# show license
Index 0 Feature: VMIVR-VM-MBX
Period left: Life time
License Type: Permanent
License State: Active, In Use
License Count: 250 /250
License Priority: Medium

Index 1 Feature: VMIVR-PORT
Period left: Life time
License Type: Permanent
License State: Active, In Use
License Count: 8 /8
License Priority: Medium

Index 2 Feature: VMIVR-IVR-SESS
Period left: 8 weeks 4 days
License Type: Evaluation
License State: Active, Not in Use, EULA not accepted
License Count: 60 / 0
License Priority: None

CUE# show license status application
voicemail enabled: 8 ports, 8 sessions, 250 mailboxes
ivr disabled, no activated ivr session license available

The final issue was the MWI, i.e. the red light which appears on a phone to tell you that you have new voicemail. After the upgrade, the MWI didn’t turn on.

Looking at the CME’s running config, it included these entries:

ephone-dn 499
number 8000....
mwi on
!
!
ephone-dn 500
number 8001....
mwi off

I verified that if I dialled the relevant number then I could turn the MWI on and off for a particular phone, e.g. dialling “80001234” would turn the red light on for extension 1234. That proved that there wasn’t a physical problem with the light on the IP phone and that CME could control it. So, there was some problem with the CME/UE integration.

I looked at Cisco’s troubleshooting guide. They said that it’s important to verify the application mode: “If you find, instead, that the application mode is CCM, Cisco CallManager, everything works except MWI.” That would match my symptoms, but unfortunately the command they mention is deprecated:

CUE# show software licenses
This command is deprecated. Please use "show license status application" instead.

As shown above, the alternate command doesn’t mention the application mode. Here’s the command that you actually need to use:

CUE# show call-agent
Call-agent: CUCME

So, the application mode was correct, and the problem lay elsewhere. Going back to the UE config (pre-upgrade), it included these lines:

ccn application ciscomwiapplication aa
description "ciscomwiapplication"
enabled
maxsessions 8
script "setmwi.aef"
parameter "CallControlGroupID" "0"
parameter "strMWI_OFF_DN" "8001"
parameter "strMWI_ON_DN" "8000"
end application

ccn application msgnotification aa
description "msgnotification"
enabled
maxsessions 8
script "msgnotify.aef"
parameter "logoutUri" "http://localhost/voicemail/vxmlscripts/mbxLogout.jsp"
parameter "DelayBeforeSendDTMF" "1"
end application

[..]

ccn trigger http urlname msgnotifytrg
application "msgnotification"
enabled
maxsessions 2
end trigger

ccn trigger http urlname mwiapp
application "ciscomwiapplication"
enabled
maxsessions 1
end trigger

NB The first section (ciscomwiapplication = Cisco MWI Application) refers to the extension numbers which are defined in CME, i.e. 8000 and 8001.

Checking the UE config again (post-upgrade), the ccn application sections were identical. However, the triggers had changed slightly:

ccn trigger http urlname msgnotifytrg
application "msgnotification"
enabled
maxsessions 0
end trigger

ccn trigger http urlname mwiapp
application "ciscomwiapplication"
enabled
maxsessions 0
end trigger

The maxsessions lines had dropped to zero, which meant that UE couldn’t contact CME to send the notifications. Once I restored the original values, the system started working again, i.e. new messages would turn the MWI on. I then ran mwi refresh so that the MWI would also turn on for existing messages, although it took a couple of minutes for this to take effect on all the phones.

So, this shows why it’s useful to keep old copies of your config files around! I think that the trigger change is connected to the licensing issue, but it’s odd that installing new licences didn’t change the values back. It’s also not exactly obvious; I couldn’t find any mention of this in the release notes etc. Hopefully this blog post is useful to anyone else who finds themselves in a similar situation.

Leave a Reply

Your email address will not be published. Required fields are marked *