Your solution covered all the cases much better.

Hi,

The first quick fix, didn't work.  The current version is almost a copy or your original code with exception from

--
final Matcher camelCaseMatcher = camelCasePattern
.matcher(intermediateName);
while (camelCaseMatcher.find()) {
final String regFusion = camelCaseMatcher.group(0);
intermediateName = intermediateName.replace(regFusion,
regFusion.charAt(0) + "_" + regFusion.charAt(1));
}
---

in the getName method. 

Had to duplicate the below 

--
private Map<String, String> nameKeyMap = new TreeMap<String, String>();
private Map<String, String> keyNameMap = new TreeMap<String, String>();
public void afterPropertiesSet() throws Exception {
final Set<Entry<Object, Object>> entries = getReservedNames()
.entrySet();
for (final Entry<Object, Object> entry : entries) {
final Object entryKey = entry.getKey();
if (entryKey != null) {
final String key = entryKey.toString().toUpperCase();
final Object entryValue = entry.getValue();
final String value = entryValue == null
|| "".equals(entryValue.toString().trim()) ? key + "_"
: entryValue.toString();
nameKeyMap.put(key, value);
keyNameMap.put(value, key);
}
}
}
--
.

Migrated all of our services successfully now. 

best regards
Pether