Monthly Archives: February 2016

Regex – Conditionally Modifying User Data to “Title Case” for Phone Labels

Sadly a lot of UC is well, about those pesky end users.  This generally involves user data of some sort, and inevitably this is bad data.  Formatting text to get your 1k users can be a pain – even when the AD team you are working with are on top of things.

As an example, something I see a lot is changing data looking like this:


To this:

AS Jones – x1234

This requires a conditional match, moving things around, and a case change (Title Case).  The first 2 letters are initials, so I need to account for those as they must stay capitalized.

Excel requires a number of steps to do this.  I need to use a text editor here or a CLI tool like SED.  For me, Notepad++ is my poison of choice as I’m still bound to Windows.  Its a good tool use.

Firstly, I could try and use it’s built-in features available:



But this doesn’t give me the CONDITIONAL control that I want.  Using Excel is even worse.  I hate it and try avoid it at all costs.   I need REGEX to complete this task.


My requirement is completed using tagged expressions and the following:

  • \L – Translates everything to lowercase until the end of the replacement string
  • \u – Translates the next letter to uppercase

I’m not going to go into detail on the rest, as if you’re a voice engineer on Cisco – you know the rest already (I hope!).


So let’s look at his this is achieved in Notepad++:

  • Input: 1234-AS JONES
  • Regular Expression: ^([0-9]{4})-([A-Z]+) ([A-Za-z]+)
  • Replaced with: \2 \L\u\3 – x\1

The output is now exactly what I want:

AS Jones – x1234

In NPP the regex input looks like this:




What is neat about this is that I wanted to conditionally only change the case of the surname – this left the user’s initials intact and did not give me camel case which I wanted to avoid.

Please see here for more info.

Hope this helps!

Tagged , , , ,

ExpressWay DMZ and NAT Design Considerations

There are a number of excellent documents on the subject of ExpressWay traversal DMZ design and handling NAT.  I must however commend Cisco on the updates on this topic in the X8.7 documentation release.

Please see the below:


Cisco discusses various DMZ deployment models:

  1. Dual-NIC Static NAT (Recommended)
  2. Single NIC Static NAT
  3. 3-Port Firewal Static NAT


There are other methods that include variations without NAT where a Public IP is placed on the Edge.  Personally, “It works” is not a good enough reason to deploy as such.  Avoid as far as possible.


Most specifically, I must highlight the following from the document:

  • Preferred Architecture dictates a dual-NIC Static NAT design
  • Dual-NIC design requires static routing on the Edge
  • Static NAT is definitely preferred to a Public IP on a ExpressWay-E box
  • Disable SIP ALG on your firewall – pretty standard stuff
  • Single NIC designs result in problematic implementation considerations that can relate to:
    • NAT Reflection – resultant asymmetric routing, security concerns and firewall support issues
    • Hair-pinned media
    • Excessive bandwidth consumption (3 times in fact!)
    • Public IP exposure in SIP signalling to B2BUA

Please see pp. 50-51 for excellent visual representations of the traffic flows for the the various implementations!


Some Useful Links:


Tagged , , , , , ,

Prime Collaboration Provisioning – Aborting Failed Orders

If you’ve worked with Prime Collaboration Provisioning, you will be accustomed to this ongoing headache when using Batch Provisioning:



The queuing architecture is atrocious, and is very prone to failure.  Also, validation is pretty much non-existent, so this is a pretty common issue.  Delightfully, there is no way to resolve failed orders other than from root.


[root@myhostame01 ~]# cd /opt/cupm/sep/ipt/bin/
[root@myhostame01 bin]# ./ globaladmin <password> <order_number> -forced

[root@myhostame01 ~]# cd /opt/cupm/sep/ipt/bin/
[root@myhostame01 bin]# ./ globaladmin myp@ssw0rd 164 -forced


Copyright (c) 2009 Cisco Systems, Inc.
All rights reserved.
Aborting orders with id: 164

Stopped Provision
Stopped VoIPBatch
Stopped AddLine
Stopped AddLineBatch
Number of rows updated = 1
Order with Id 164 is aborted successfully

[root@myhostame01 bin]#


Had to hunt to find this:




During a call this week [02/2016] with the PCP Product Manager and TME this week has confirmed that this (as well as many other) features will be added to the UI to remove the need to access root.  This work is being done to meet FIPS requirements – great news functionally as well! 🙂

Tagged , , , ,
Collaboration Engineer

All things Technology - Posts to save for when you need them

Gerry Keleghan's Blog

A Blog about Cisco Unified Communications


my personal journey to ccie collaboration

Striving for greatness

Thoughts on DevOps, emerging tech, and open source

Network Experts Blog

“Knowledge comes by eyes always open and working hands.”

SIP Adventures

A unified communications blog by Andrew Prokop

The Cloverhound Blog

Cloverhound Employees Talk Unified Communications and Contact Center


Fog navigator. Get out of the clouds. Down to earth solutions. @Warcop

Cisco Collab Engineering Tips

Michael White - CCIE #26626


Photography by Manos,


Thoughts and experiences of a Cisco Collaboration engineer after clearing the CCIE lab...

The Daily Post

The Art and Craft of Blogging

The Blog

The latest news on and the WordPress community.