<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5691248957365391455</id><updated>2012-01-20T06:29:54.485-08:00</updated><title type='text'>UC Corner</title><subtitle type='html'>A blog to share tips and tricks of Cisco Unified Communication (UC) products, such as CUCM, CUPS, CER, CUMA, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1855673137749689237</id><published>2011-09-27T06:15:00.000-07:00</published><updated>2011-09-27T06:26:37.164-07:00</updated><title type='text'>CET Tool for UCCX</title><content type='html'>Back in the age of Windows-based CallManager (4.x and before), UCCX (a.k.a CRS) stores its configuration in CallManager DC Directory.&lt;br /&gt;&lt;br /&gt;When CallManager moves to Linux based (CUCM 5.0 and above), it removes the concept of DC directory.&amp;nbsp; Thus UCCX has to store its configuration on UCCX server in XML files.&lt;br /&gt;&lt;br /&gt;Cisco provides a tool called CET (Configuration Editing Tool?) to edit those configurations.&amp;nbsp; The tool is supposed to be used by Cisco TAC only.&lt;br /&gt;&lt;br /&gt;For Windows-based UCCX (7.x and before), you may find the CET tool on UCCX server C:\program files\wfavvid\cet.bat.&amp;nbsp; Just the the cet.bat file.&lt;br /&gt;&lt;br /&gt;For Linux-based UCCX (8.0 and above), you may find the CET installer on the UCCX installation DVD (\Installer\CetTool\CetTool.exe).&amp;nbsp; Or download from an already-installed UCCX server http://142.100.64.14/uccxinstalls/CetTool.exe (case-sensitive).&amp;nbsp; You'll have to install it on a Windows workstation.&lt;br /&gt;&lt;br /&gt;You may use CET tool to modify the configuration of UCCX, such as &lt;a href="http://www.uccx.net/configuration/how-remove-temp-license.html"&gt;removing license file&lt;/a&gt; or reset the system &lt;a href="http://www.cisco.com/en/US/products/sw/custcosw/ps3651/products_qanda_item09186a0080988a7e.shtml"&gt;back to before-initialization state&lt;/a&gt; (for password recovery purpose).&amp;nbsp; Please note that on Linux-based UCCX, you'll need a root credential to use CET tool.&amp;nbsp; Either get it from Cisco TAC or follow instructions &lt;a href="http://htluo.blogspot.com/2011/08/root-access-on-cucm-and-other-uc.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You may also modify the configuration without CET tool.&amp;nbsp; But it requires some reserve engineering.&lt;br /&gt;&lt;br /&gt;For example, you want to set the UCCX 8.5 back to FRESH INSTALL state.&amp;nbsp; You may edit the XML file in /opt/cisco/uccx/ClusterData/default/com.cisco.crs.cluster.config.AppAdminSetupConfig.&amp;nbsp; Look at the blobValue.&amp;nbsp; It's encoded in ASCII.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-c0aApuxWn9U/ToHL2Gqp8hI/AAAAAAAAARU/DWZOms4w6fw/s1600/xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="165" src="http://1.bp.blogspot.com/-c0aApuxWn9U/ToHL2Gqp8hI/AAAAAAAAARU/DWZOms4w6fw/s400/xml.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Translate that with the ASCII table:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-u-CGBUrdcXY/ToHMDE3F8cI/AAAAAAAAARY/uV_Tsdr9-yA/s1600/ascii-table.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-u-CGBUrdcXY/ToHMDE3F8cI/AAAAAAAAARY/uV_Tsdr9-yA/s320/ascii-table.gif" width="251" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You'll get:&lt;br /&gt;&lt;div style="height: 8pt; min-height: 8pt; padding: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;46 = F&lt;br /&gt;52 = R&lt;br /&gt;45 = E&lt;br /&gt;53 = S&lt;br /&gt;48 = H&lt;br /&gt;5F = _&lt;br /&gt;49 = I&lt;br /&gt;4E = N&lt;br /&gt;53 = S&lt;br /&gt;54 = T&lt;br /&gt;41 = A&lt;br /&gt;4C = L&lt;br /&gt;4C = L&lt;br /&gt;&lt;br /&gt;If you want to set the value to a specific string, you'll translate the string into ASCII code and put it in blobValue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1855673137749689237?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1855673137749689237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/09/cet-tool-for-uccx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1855673137749689237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1855673137749689237'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/09/cet-tool-for-uccx.html' title='CET Tool for UCCX'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-c0aApuxWn9U/ToHL2Gqp8hI/AAAAAAAAARU/DWZOms4w6fw/s72-c/xml.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2136682330918794808</id><published>2011-09-25T18:15:00.000-07:00</published><updated>2012-01-06T20:51:53.507-08:00</updated><title type='text'>Modify License MAC</title><content type='html'>Cisco used to bind license file to physical MAC address.&amp;nbsp; Now, it moves to "License MAC", which is a hash value of multiple system parameters such as NIC speed, NTP, DNS, hostname, etc.&lt;br /&gt;&lt;br /&gt;To view the license MAC, you need to install the system first (CUCM, UCCX, CUPS, etc.).&amp;nbsp; Then use the "show status" command.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YzQsmdNiAlo/Tn_LxGTxk1I/AAAAAAAAARM/K3c1IodV5Ig/s1600/lic_MAC1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://3.bp.blogspot.com/-YzQsmdNiAlo/Tn_LxGTxk1I/AAAAAAAAARM/K3c1IodV5Ig/s400/lic_MAC1.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This is somehow inconvenient:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;1) You cannot get the license file before finishing the installation.&lt;br /&gt;&lt;br /&gt;I personally prefer to get everything ready before starting the installation, such as IP address, hostname, password, license file, installation media, etc.&amp;nbsp; You could run into lots of surprises when trying to get the license file.&lt;br /&gt;&lt;br /&gt;2) When the system parameter was changed, the license file yield invalid.&lt;br /&gt;&lt;br /&gt;For example, you add/change DNS server settings on the system, which is pretty common during system integration.&lt;br /&gt;&lt;br /&gt;It would be better if you could dictate what license MAC the system use.&amp;nbsp; You may also use some schema like: AABBCCDDEEFF, where AA is the product code, BB is the site code, CC is the node number, DD is the version number, etc.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cxwR-DHTFTo/Tn_OxrUjuzI/AAAAAAAAARQ/jzH9or4bWjI/s1600/lic_MAC2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="110" src="http://4.bp.blogspot.com/-cxwR-DHTFTo/Tn_OxrUjuzI/AAAAAAAAARQ/jzH9or4bWjI/s400/lic_MAC2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In the example above, the "License MAC" was changed to "abcdef123456".&lt;br /&gt;&lt;br /&gt;Since you can use whatever License MAC you like, you may:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the license file before the system was installed&lt;/li&gt;&lt;li&gt;Keep using the same license file after system parameters was changed (such as DNS)&lt;/li&gt;&lt;/ul&gt;To specify the license MAC, you need to have &lt;a href="http://htluo.blogspot.com/2011/08/root-access-on-cucm-and-other-uc.html"&gt;root access&lt;/a&gt; to the system.&amp;nbsp; Then you'll modify the file /usr/local/bin/base_scripts/LicenseMac.sh.&amp;nbsp; To the bottom of the file, replace the line&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow;"&gt;FinalString=`expr substr "$SHA1sum" 1 12`&lt;/div&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow;"&gt;FinalString="abcdef123456"&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;In newer versions, you might have to change the /etc/selinux/config file so that selinux runs in permissive mode.&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;Reminder: Don't be evil.&amp;nbsp; ;) &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2136682330918794808?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2136682330918794808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/09/modify-license-mac.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2136682330918794808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2136682330918794808'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/09/modify-license-mac.html' title='Modify License MAC'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-YzQsmdNiAlo/Tn_LxGTxk1I/AAAAAAAAARM/K3c1IodV5Ig/s72-c/lic_MAC1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8765148942860063054</id><published>2011-08-31T10:54:00.000-07:00</published><updated>2011-12-10T16:55:18.680-08:00</updated><title type='text'>Database Access</title><content type='html'>Many UC appliances (like CUCM, CUPS, etc.) use database to store configuration.&amp;nbsp; For security and supportability reason, the regular CLI provides limited access to database.&amp;nbsp; However, if you could get &lt;a href="http://htluo.blogspot.com/2011/08/root-access-on-cucm-and-other-uc.html"&gt;root access&lt;/a&gt; to the box, you would have full access.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-rK6ffZcWiOA/Tl5xdtbeSJI/AAAAAAAAARA/6fB1qg5WgL8/s1600/dbaccess.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://3.bp.blogspot.com/-rK6ffZcWiOA/Tl5xdtbeSJI/AAAAAAAAARA/6fB1qg5WgL8/s400/dbaccess.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;su - informix&lt;/div&gt;&lt;br /&gt;Change user role to 'informix' which is a built in Linux user to access the Informix database.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dbaccess $(dblutil -c) -&lt;/div&gt;&lt;br /&gt;dbaccess is a SQL client to access Informix database.&amp;nbsp; 'dblutil' is a DB role.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;select * from licenseinfo&lt;/div&gt;&lt;br /&gt;A standard SQL command to view all records in 'licenseinfo' table.&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Press &lt;span style="background-color: yellow;"&gt;Ctrl-D&lt;/span&gt; to execute SQL commands&lt;/li&gt;&lt;li&gt;Press &lt;span style="background-color: yellow;"&gt;Ctrl-C&lt;/span&gt; to exit&lt;/li&gt;&lt;li&gt;On some terminals, you may have to press &lt;span style="background-color: yellow;"&gt;Delete&lt;/span&gt; to Backspace&lt;/li&gt;&lt;/ul&gt;If you want to know the relationship between different database tables, refer to "&lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/datadict/8_6_1/datadictionary_861.pdf"&gt;Data Dictionary&lt;/a&gt;" on CCO Docs.&lt;br /&gt;&lt;br /&gt;To list all tables:&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;select tabname from systables where tabid &amp;gt; 99 and tabtype = "T"&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Grab a some books like "SQL for Dummies" and test in your lab.&lt;br /&gt;&lt;br /&gt;I wondered what does this do?&amp;nbsp; ;)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-APVWf5rFkyk/Tl509YeZV2I/AAAAAAAAARE/gdtrmgbOmHM/s1600/SQL.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="13" src="http://4.bp.blogspot.com/-APVWf5rFkyk/Tl509YeZV2I/AAAAAAAAARE/gdtrmgbOmHM/s400/SQL.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8765148942860063054?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8765148942860063054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/08/database-access.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8765148942860063054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8765148942860063054'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/08/database-access.html' title='Database Access'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rK6ffZcWiOA/Tl5xdtbeSJI/AAAAAAAAARA/6fB1qg5WgL8/s72-c/dbaccess.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1432353523660299457</id><published>2011-08-30T21:12:00.000-07:00</published><updated>2011-08-31T10:29:32.806-07:00</updated><title type='text'>Root Access on Linux-based UC appliances</title><content type='html'>There are many posts on Internet teaching you how to get root access on CUCM.&amp;nbsp; This is not a secret.&amp;nbsp; Since CUCM is Linux-based, the method is pretty straight forward - use a Linux boot CD to boot into rescue mode and modify the relevant files.&amp;nbsp; Here's a simple walk through.&lt;br /&gt;&lt;br /&gt;Assuming CUCM was already installed.&amp;nbsp; Boot the box with a Linux installation CD (e.g. RedHat).&amp;nbsp; Type "&lt;span style="background-color: yellow;"&gt;linux rescue&lt;/span&gt;" in the boot prompt.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oDKiKBotEys/Tl2ikPqyQFI/AAAAAAAAAQU/qqk7XPsyHSY/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://2.bp.blogspot.com/-oDKiKBotEys/Tl2ikPqyQFI/AAAAAAAAAQU/qqk7XPsyHSY/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Chose language.&amp;nbsp; Default is 'English':&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8ZKDNy9uc5w/Tl2jhdh9ypI/AAAAAAAAAQY/ksytkozseD0/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/-8ZKDNy9uc5w/Tl2jhdh9ypI/AAAAAAAAAQY/ksytkozseD0/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Choose keyboard.&amp;nbsp; Default is 'US':&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MMwsAKE4Be8/Tl2jn9uKa6I/AAAAAAAAAQc/suMvCawSss8/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://1.bp.blogspot.com/-MMwsAKE4Be8/Tl2jn9uKa6I/AAAAAAAAAQc/suMvCawSss8/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We don't need to set up network.&amp;nbsp; Thus choose 'No' here.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9pKPB-3x6Ng/Tl2j-S_4wlI/AAAAAAAAAQg/m6t_RF-rLGQ/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/-9pKPB-3x6Ng/Tl2j-S_4wlI/AAAAAAAAAQg/m6t_RF-rLGQ/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Choose "Continue" to mount the CUCM file system.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zgx_2Quw_KE/Tl2kSPj59CI/AAAAAAAAAQk/IeRqLiFsCtE/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://2.bp.blogspot.com/-zgx_2Quw_KE/Tl2kSPj59CI/AAAAAAAAAQk/IeRqLiFsCtE/s400/5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The following message is telling you that the CUCM file system has been mounted under /mnt/sysimage.&amp;nbsp; If you want to map the root directory to the CUCM file system (which is recommended), you may use command "chroot /mnt/sysimage".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Vu-nwXFQwsU/Tl2lAI_JB4I/AAAAAAAAAQo/KiIlkH9_I0k/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://1.bp.blogspot.com/-Vu-nwXFQwsU/Tl2lAI_JB4I/AAAAAAAAAQo/KiIlkH9_I0k/s400/6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Below are the commands and explanations.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Lyhc0cg4LY4/Tl2lSAkMXiI/AAAAAAAAAQs/ft3xOSPzb7o/s1600/7a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://3.bp.blogspot.com/-Lyhc0cg4LY4/Tl2lSAkMXiI/AAAAAAAAAQs/ft3xOSPzb7o/s400/7a.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;chroot /mnt/sysimage&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;This is to map the root directory to CUCM file system.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd /etc&lt;/div&gt;&lt;br /&gt;Change the working directory to /etc, where most of the system configuration files are stored.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chattr -i passwd&lt;/div&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chattr -i shadow&lt;br /&gt;rm securetty &lt;/div&gt;&lt;br /&gt;Remove file protection on files "passwd" and "shadow", which stores user info and passwords.&amp;nbsp; Remove file "securetty" to allow remote connections with root.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;passwd root&lt;/div&gt;&lt;br /&gt;Reset (change) password for the root user.&amp;nbsp; Type a password that is easy for you to remember.&amp;nbsp; Retype it to confirm.&amp;nbsp; If the password was changed successfully, you'll see the prompt "passwd: all authentication token updated successfully".&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you typed a simple password, you might get a warning like "BAD PASSWORD: it is based on a dictionary word".&amp;nbsp; Just ignore it and retype to confirm.&lt;/li&gt;&lt;li&gt;There's no screen display for the password you're typing.&amp;nbsp; Type carefully. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following steps require some basic knowledge of the vi editor.&amp;nbsp; If you're not familiar with vi, please search Internet for vi commands help. &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vi passwd&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Change the passwd file so the root user has a shell (command line interpreter) to use.&amp;nbsp; Use vi commands.&amp;nbsp; Change the line&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-poeknJ-PZ0E/Tl2pIYMwsKI/AAAAAAAAAQw/qP195cDl1P0/s1600/root1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="17" src="http://3.bp.blogspot.com/-poeknJ-PZ0E/Tl2pIYMwsKI/AAAAAAAAAQw/qP195cDl1P0/s320/root1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;To &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZJBf27PKdFc/Tl2pSEowaVI/AAAAAAAAAQ0/MxHifHVcpVU/s1600/root2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-ZJBf27PKdFc/Tl2pSEowaVI/AAAAAAAAAQ0/MxHifHVcpVU/s1600/root2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Save and exit file.&lt;br /&gt;&lt;br /&gt;For those who are not familiar with vi, here are the command sequence (case-sensitive):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;/s&lt;/span&gt; to search for character 's' &lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;D&lt;/span&gt; to delete to the end of line&lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;A&lt;/span&gt; to enter append mode&lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;bin/bash&lt;span style="background-color: white;"&gt; to set the shell&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Press ESC key (it's a key on the upper-left corner of your keyboard) to exit append mode&lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;:wq&lt;/span&gt; to save and exit file.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div style="background-color: yellow; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vi ssh/sshd_config&lt;/div&gt;&lt;br /&gt;Change the sshd_config file so you can SSH as root (it's disabled by default).&amp;nbsp; Use vi commands.&amp;nbsp; Change the line&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-JrP0XM90Dhc/Tl2sThydSNI/AAAAAAAAAQ4/mEepV6_GLsU/s1600/Permit1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-JrP0XM90Dhc/Tl2sThydSNI/AAAAAAAAAQ4/mEepV6_GLsU/s1600/Permit1.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-f3JR2sn5k-0/Tl2scQmrehI/AAAAAAAAAQ8/py1saZV0a-c/s1600/Permit2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-f3JR2sn5k-0/Tl2scQmrehI/AAAAAAAAAQ8/py1saZV0a-c/s1600/Permit2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;Save and exit file.&lt;br /&gt;&lt;br /&gt;For those who are not familiar with vi, here are the command sequence (case-sensitive):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;/Per&lt;/span&gt; to search for the word begins with 'Per'&lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;X&lt;/span&gt; to delete the letter on the left (which is '#' in this case)&lt;/li&gt;&lt;li&gt;Type &lt;span style="background-color: yellow;"&gt;:wq!&lt;span style="background-color: white;"&gt; to save and exit this read-only file&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Now type &lt;span style="background-color: yellow;"&gt;exit&lt;/span&gt; command twice to reboot the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&lt;/span&gt;&lt;br /&gt;Use a SSH client (such as putty) to test.&amp;nbsp; You should be able to SSH into CUCM with root account.&lt;br /&gt;&lt;br /&gt;This method applies to all Linux-based appliances such as Unity Connection, CUPS, CER, UCCX (Linux version), etc. &lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-poeknJ-PZ0E/Tl2pIYMwsKI/AAAAAAAAAQw/qP195cDl1P0/s1600/root1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt; &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1432353523660299457?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1432353523660299457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/08/root-access-on-cucm-and-other-uc.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1432353523660299457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1432353523660299457'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/08/root-access-on-cucm-and-other-uc.html' title='Root Access on Linux-based UC appliances'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-oDKiKBotEys/Tl2ikPqyQFI/AAAAAAAAAQU/qqk7XPsyHSY/s72-c/1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-388085438410594539</id><published>2011-08-30T12:45:00.000-07:00</published><updated>2011-08-30T19:24:14.885-07:00</updated><title type='text'>Where's my Unity Connection option?</title><content type='html'>I was trying to install the UC 8.6.1 suite on my VMware ESXi.&amp;nbsp; I'm pretty savvy at VMware and UC, thus I didn't bother to download the OVA template from Cisco.&amp;nbsp; I created a VM with 75G hard drive and 2G RAM.&lt;br /&gt;&lt;br /&gt;I had no problem getting UCM installed.&amp;nbsp; However, when it came to Unity Connection, I realized that the option was not presented on&amp;nbsp; screen like it did in previous versions (see below).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-FxjgXGoJW94/Tl03n5x1JyI/AAAAAAAAAPg/RAFtNF8gfjo/s1600/withoutUnity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-FxjgXGoJW94/Tl03n5x1JyI/AAAAAAAAAPg/RAFtNF8gfjo/s400/withoutUnity.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Maybe there's some magic in the OVA template.&amp;nbsp; So let's download it. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rc83_xsjY0Q/Tl04jTstduI/AAAAAAAAAPk/qJj8ewOsNqk/s1600/OVAdownload.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://4.bp.blogspot.com/-rc83_xsjY0Q/Tl04jTstduI/AAAAAAAAAPk/qJj8ewOsNqk/s400/OVAdownload.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Open up the OVA file with Notepad.&amp;nbsp; You'll see that the minimum hardware requirement is 4G RAM and 160G hard disk.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-w8APtMR5eL4/Tl05caCaMII/AAAAAAAAAPo/Ku2NACdYKWY/s1600/OVAcontent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="296" src="http://3.bp.blogspot.com/-w8APtMR5eL4/Tl05caCaMII/AAAAAAAAAPo/Ku2NACdYKWY/s400/OVAcontent.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you're just testing it in the lab and want to save some hard disk space, you may choose "Thin Provision" while deploying the OVA.&amp;nbsp; VMware will dynamically allocate space as needed up to 160G.&amp;nbsp; ie. if the initial install occupies 75G, it'll only takes 75G physical space (even though the hard disk "looks like" 160G).&amp;nbsp; This is not recommended for production environment for performance consideration. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-laaFgKSkPVU/Tl06NHdzrSI/AAAAAAAAAPs/50w5D8klods/s1600/vm2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://1.bp.blogspot.com/-laaFgKSkPVU/Tl06NHdzrSI/AAAAAAAAAPs/50w5D8klods/s400/vm2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;But if you're the kind of people that like to control everything, this is pretty annoying.&amp;nbsp; Why can't it just install on a 75G disk?&amp;nbsp; Ya, why not?&amp;nbsp; Let's hack it.&lt;br /&gt;&lt;br /&gt;On the installation disc, look for the folder "Cisco/Install/conf".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XVN3S1NhoHo/Tl07QR7t-4I/AAAAAAAAAPw/f8BvgH3bQUI/s1600/UltraISO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/-XVN3S1NhoHo/Tl07QR7t-4I/AAAAAAAAAPw/f8BvgH3bQUI/s400/UltraISO.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Open the file "callmanager_product.conf" and search for "Unity Connection VMware rule".&amp;nbsp; A couple lines below, you'll see the line "&lt;u&gt;&lt;span style="color: red;"&gt;NOT&lt;/span&gt;,&amp;nbsp;&amp;nbsp; VMware,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/u&gt;".&amp;nbsp; Change it to "&lt;u&gt;&lt;span style="color: red;"&gt;VAL&lt;/span&gt;,&amp;nbsp;&amp;nbsp; VMware,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/u&gt;".&amp;nbsp; This will allow any virtual machine specification.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-L2dHJlgUI10/Tl0_vwop12I/AAAAAAAAAP4/_D2X3LIG3uY/s1600/ConfigFile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://1.bp.blogspot.com/-L2dHJlgUI10/Tl0_vwop12I/AAAAAAAAAP4/_D2X3LIG3uY/s400/ConfigFile.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You may do the same if you want to use a physical server.&amp;nbsp; For example, if you have an old 7825H server and want to install Unity Connection 8.6.1 on it, just change the line "NOT,&amp;nbsp;&amp;nbsp;&amp;nbsp; 7825H,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *" to "VAL,&amp;nbsp;&amp;nbsp;&amp;nbsp; 7825H,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp; *,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *".&lt;br /&gt;&lt;br /&gt;You may also change the sections for CUCM and CUCM BE so they have less restricted requirements.&lt;br /&gt;&lt;br /&gt;Save the file to the disc (image).&amp;nbsp; Boot from it.&amp;nbsp; Now you see the Unity Connection is available as shown below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xN4evKBybJM/Tl09j_uzSMI/AAAAAAAAAP0/zKOKPd47b8c/s1600/withUnity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-xN4evKBybJM/Tl09j_uzSMI/AAAAAAAAAP0/zKOKPd47b8c/s320/withUnity.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;By the way, UC 8.6 supports VMTools (finally).&amp;nbsp; However the VMTools bundled with the install might not be up to date.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-F8_jz9Sr06E/Tl1LUk1YagI/AAAAAAAAAP8/vgJbJAhxIOM/s1600/vmtool1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-F8_jz9Sr06E/Tl1LUk1YagI/AAAAAAAAAP8/vgJbJAhxIOM/s400/vmtool1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;From CUCM CLI:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8byRaXnkVQ4/Tl1LWr9qFNI/AAAAAAAAAQA/Fp9D7H_9Et4/s1600/CLI1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://4.bp.blogspot.com/-8byRaXnkVQ4/Tl1LWr9qFNI/AAAAAAAAAQA/Fp9D7H_9Et4/s400/CLI1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You may update the version from VM client.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UqaS_FwUbzY/Tl1LrbWmb9I/AAAAAAAAAQE/z6H_htywOvM/s1600/InstallVMtools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://1.bp.blogspot.com/-UqaS_FwUbzY/Tl1LrbWmb9I/AAAAAAAAAQE/z6H_htywOvM/s400/InstallVMtools.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The installation will take a while.&amp;nbsp; During install, you'll see the VMTools status as "not running".&amp;nbsp; This is normal.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LdbBsHvzcYI/Tl1L-lTwT5I/AAAAAAAAAQI/2JWpRuoJz9U/s1600/vmtool2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://4.bp.blogspot.com/-LdbBsHvzcYI/Tl1L-lTwT5I/AAAAAAAAAQI/2JWpRuoJz9U/s400/vmtool2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When the install is completed, you'll see the version is updated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-auljOfX7NP4/Tl1MLw4I0jI/AAAAAAAAAQQ/B1OH_yvdXPA/s1600/vmtool3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-auljOfX7NP4/Tl1MLw4I0jI/AAAAAAAAAQQ/B1OH_yvdXPA/s400/vmtool3.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;From CUCM CLI: &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-top9AFSk4fM/Tl1MLSBpS2I/AAAAAAAAAQM/tAYh86xBZAs/s1600/CLI2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="37" src="http://2.bp.blogspot.com/-top9AFSk4fM/Tl1MLSBpS2I/AAAAAAAAAQM/tAYh86xBZAs/s400/CLI2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-388085438410594539?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/388085438410594539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/08/wheres-my-unity-connection-option.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/388085438410594539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/388085438410594539'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/08/wheres-my-unity-connection-option.html' title='Where&apos;s my Unity Connection option?'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FxjgXGoJW94/Tl03n5x1JyI/AAAAAAAAAPg/RAFtNF8gfjo/s72-c/withoutUnity.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6323193778166197862</id><published>2011-07-21T12:44:00.000-07:00</published><updated>2011-07-23T18:50:21.250-07:00</updated><title type='text'>Some tools for home lab</title><content type='html'>1) Pegboard - A board with holes so you can hang things on it.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Lmf2n77_DK0/TiiOW7HUOGI/AAAAAAAAAOs/8i498nX6P14/s1600/800px-Pegboard.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5631907858503448674" src="http://2.bp.blogspot.com/-Lmf2n77_DK0/TiiOW7HUOGI/AAAAAAAAAOs/8i498nX6P14/s400/800px-Pegboard.jpg" style="cursor: hand; cursor: pointer; display: block; height: 248px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;So you can hang IP phones like this:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-wJChmmIijNI/TiiOlL40zRI/AAAAAAAAAO0/oWrX4V6593I/s1600/CIMG7075.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5631908103524240658" src="http://3.bp.blogspot.com/-wJChmmIijNI/TiiOlL40zRI/AAAAAAAAAO0/oWrX4V6593I/s400/CIMG7075.JPG" style="cursor: hand; cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;2) Remote Power Switch - allows you to power on/off device remotely through network.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Wxm9M-rCY7o/TiiRStHU8_I/AAAAAAAAAPE/0--Z9vcrTvk/s1600/nps_b.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5631911084560806898" src="http://1.bp.blogspot.com/-Wxm9M-rCY7o/TiiRStHU8_I/AAAAAAAAAPE/0--Z9vcrTvk/s400/nps_b.jpg" style="cursor: hand; cursor: pointer; display: block; height: 245px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;I got NPS 115 from eBay for about $40.  I used it a lot when I'm away from home.  So I can practice from office or hotel room.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-KTLq2lwMMUE/TiiP-QclbzI/AAAAAAAAAO8/4_wrlXTXw0c/s1600/NPS.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5631909633756327730" src="http://1.bp.blogspot.com/-KTLq2lwMMUE/TiiP-QclbzI/AAAAAAAAAO8/4_wrlXTXw0c/s400/NPS.jpg" style="cursor: hand; cursor: pointer; display: block; height: 234px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Please note that this one has 8 outlets and allows you to power on/off devices (routers/switch) individually.  Some cheaper ones (like $20) have only one outlet.  You have to power everything on or off at once.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6323193778166197862?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6323193778166197862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/07/take-break.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6323193778166197862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6323193778166197862'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/07/take-break.html' title='Some tools for home lab'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Lmf2n77_DK0/TiiOW7HUOGI/AAAAAAAAAOs/8i498nX6P14/s72-c/800px-Pegboard.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-7569077935880462267</id><published>2011-07-02T07:37:00.000-07:00</published><updated>2011-07-03T11:11:19.664-07:00</updated><title type='text'>Voice IE: Mysterious phone registration issue</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-QZFWKmZLUBk/Tg80X6-t3lI/AAAAAAAAAOk/3s5W0z0_mAM/s1600/v3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://2.bp.blogspot.com/-QZFWKmZLUBk/Tg80X6-t3lI/AAAAAAAAAOk/3s5W0z0_mAM/s400/v3.png" alt="" id="BLOGGER_PHOTO_ID_5624772045182983762" border="0" /&gt;&lt;/a&gt;It's a hub-and-spoke topology - CUCM was at the HQ site while two branches BR1 and BR2 are connected to HQ router via Frame-Relay.&lt;br /&gt;&lt;br /&gt;One of the phones on BR2 was not able to register to CUCM.  The phone's screen displays "Registering".&lt;br /&gt;&lt;br /&gt;Since the other phone on BR2 was able to registered, I thought the problem was specific to the phone.  Thus I checked the phone configuration, reset the phone, restore it to factory default, re-located it to HQ site, etc.&lt;br /&gt;&lt;br /&gt;The phone was able to register while it's on HQ.  But it doesn't work while it's on BR2.  So it seems to be site specific.  However, if it's site specific, why the other phone on the same site could register?&lt;br /&gt;&lt;br /&gt;Since the network path was "phone -&amp;gt; BR2 router -&amp;gt; Frame Relay -&amp;gt; HQ router -&amp;gt; CUCM", I focused on every elements on the path.  The phone was able to get the correct IP config (subnet mask, default gw, TFTP) from DHCP.  I wiped out the router configuration and reconfigure it.  I deleted the phone from CUCM and re-added it.  Reloaded CUCM and routers.  Still no avail.&lt;br /&gt;&lt;br /&gt;I pinged the BR2 phones from CUCM CLI.  I can ping phone1 but not phone2.  Then I realized it HAS TO be the network.  But how come?  For two hosts in the same subnet, if I could ping one but not the other, it HAS TO be the host's issue.  But I already proved phone2 was working fine when it's on HQ site.&lt;br /&gt;&lt;br /&gt;With the help of "debug ip packets detail", I found out that HQ router chose different paths for phone1 and phone2.  But I didn't configure host routes.  How could this happen?&lt;br /&gt;&lt;br /&gt;"show ip route" discovered that BR1 was advertising same route as BR2.  They both claimed to have the BR2 phones' subnet.  Since they are equal cost routes, HQ router will &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;load-balance the two routes&lt;/span&gt; (uses BR2 to reach phone1, then uses BR1 to reach phone2).  That's why phone1 is always reachable while phone2 is always unreachable.&lt;br /&gt;&lt;br /&gt;By reviewing BR2 router's config, I found out that I fat-fingered the IP address for the data VLAN (with the address of BR2 voice subnet).&lt;br /&gt;&lt;br /&gt;This kind of mistake could easily cost you couple hours in the lab unless you had experienced it before and have some routing knowledge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-7569077935880462267?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/7569077935880462267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2011/07/voice-ie-mysterious-phone-registration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7569077935880462267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7569077935880462267'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2011/07/voice-ie-mysterious-phone-registration.html' title='Voice IE: Mysterious phone registration issue'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-QZFWKmZLUBk/Tg80X6-t3lI/AAAAAAAAAOk/3s5W0z0_mAM/s72-c/v3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6097961689639384896</id><published>2010-07-19T20:48:00.000-07:00</published><updated>2010-07-19T21:14:45.408-07:00</updated><title type='text'>What is XMPP and why it is important in Unified Communication</title><content type='html'>To get a complete understand of XMPP, I recommend the book "&lt;a href="http://oreilly.com/catalog/9780596521271"&gt;XMPP: The Definitive Guide&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;In short, XMPP is a protocol (like SIP).  XMPP was majorly used for presence and Instant Messaging.  But it is being expanded to other areas like &lt;a href="http://en.wikipedia.org/wiki/Jingle_%28protocol%29"&gt;call signaling control&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;XMPP is getting more and more popular in Unified Communication products like CUPS (Cisco Unified Presence), Cisco Quad (SharePoint-like product), Contact Center, etc.&lt;br /&gt;&lt;br /&gt;Since it's a direct competitor with SIP, frequently asked questions would be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Shall I learn XMPP?&lt;/li&gt;&lt;li&gt;Will SIP be replaced by XMPP?&lt;/li&gt;&lt;/ul&gt;For the first question, Yes.  You definitely should learn XMPP because&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XMPP was built from ground to support presence and IM&lt;/li&gt;&lt;li&gt;XMPP is "eXtensible"&lt;/li&gt;&lt;li&gt;XMPP is being (or has been) adopted by many big vendors like Cisco, Microsoft, Google, etc.&lt;/li&gt;&lt;/ul&gt;For the 2nd question, it really depends.  On call control and telco interfacing, SIP will still dominate for quite a while because the install base and impact of change.&lt;br /&gt;&lt;br /&gt;Anyway, you should take an hour or two to understand XMPP so you can understand what it can do (or do better) on different systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6097961689639384896?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6097961689639384896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/07/what-is-xmpp-and-why-it-is-important-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6097961689639384896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6097961689639384896'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/07/what-is-xmpp-and-why-it-is-important-in.html' title='What is XMPP and why it is important in Unified Communication'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6409736576930860937</id><published>2010-07-01T07:11:00.000-07:00</published><updated>2010-07-01T07:22:35.182-07:00</updated><title type='text'>Happy birthday, CUPC 8!</title><content type='html'>Two months after CUPS 8 was released, Cisco finally releases the next generation of communication client - Cisco Unified Personal Communicator 8.&lt;br /&gt;&lt;br /&gt;With XMPP, now CUPC can do:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Group Chat&lt;/li&gt;&lt;li&gt;Persistent Chat Room&lt;/li&gt;&lt;li&gt;Chat History&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Message Archiving and Auditing&lt;/li&gt;&lt;li&gt;Federation with external IM systems (like GoogleTalk, Sametime, Webex, OCS)&lt;/li&gt;&lt;li&gt;Integrated HD Video with soft phone or hard phone&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Happy Birthday! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6409736576930860937?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6409736576930860937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/07/happy-birthday-cupc-8.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6409736576930860937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6409736576930860937'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/07/happy-birthday-cupc-8.html' title='Happy birthday, CUPC 8!'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-4658081954346994179</id><published>2010-06-26T11:20:00.001-07:00</published><updated>2011-03-02T11:19:09.065-08:00</updated><title type='text'>See ya in Las Vegas</title><content type='html'>I'll be leaving for Las Vegas Sunday afternoon.&lt;br /&gt;&lt;br /&gt;During Cisco Live (Networkers), I'll be in the Technical Solution Clinic (Unified Communications).  I'll attend the CCIE party at VooDoo Lounge Tuesday (June 29).&lt;br /&gt;&lt;br /&gt;See you guys there.&lt;br /&gt;&lt;br /&gt;By the way, I'll bring two copies of my "Deploying Cisco Unified Presence" book.  For those who need it, just drop by and take it.  :)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;7/1/2010 13:30 PDT - Whoever brought me a dessert at Technical Solution Clinic, thank you very much!  I really enjoyed it.  (though I don't know who it was)   :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Michael&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/TCtZH41MHCI/AAAAAAAAAJc/vMBMhIWNJSk/s1600/CiscoLive.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-4658081954346994179?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/4658081954346994179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/06/see-ya-in-las-vegas.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4658081954346994179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4658081954346994179'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/06/see-ya-in-las-vegas.html' title='See ya in Las Vegas'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2739614214029846032</id><published>2010-06-16T18:11:00.000-07:00</published><updated>2010-06-16T18:16:48.443-07:00</updated><title type='text'>Unified Communications Manager (CallManager) Upgrade Tool</title><content type='html'>It seems that when planning a Cisco Unified Communications Manager (CUCM) upgrade, the amount of releases are sometimes dizzying!  Can I direct upgrade or not?  Do I need to PUT (product upgrade tool) for a license and CD?  How do I match the release ID with the CUCM version ID (7.1(3a) vs. &lt;span class="content"&gt;7.1.3.20000-2).  I know that pain and Cisco has created a tool to help us with the process.  Check out the link &lt;a href="http://www.cisco.com/en/US/products/sw/voicesw/ps556/products_tech_note09186a0080b31514.shtml"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With this tool, you can input your version (supports only 5.1(3)+) and which version you want to migrate to.  It will let you know if you can upgrade directly and what the licensing implications are.  As a customer looking at upgrading to 8.x, this tool is a terrific resource for upgrade planning.  Check it out!&lt;br /&gt;&lt;br /&gt;-MW&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2739614214029846032?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2739614214029846032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/06/unified-communications-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2739614214029846032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2739614214029846032'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/06/unified-communications-manager.html' title='Unified Communications Manager (CallManager) Upgrade Tool'/><author><name>Mike</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6652833982119244427</id><published>2010-05-12T09:12:00.000-07:00</published><updated>2010-05-12T09:25:19.317-07:00</updated><title type='text'>Test mobility feature without PSTN</title><content type='html'>The core of the mobility feature is "Remote Destination".  Per SRND &lt;span class="jive-link-external-small"&gt;&lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/srnd/7x/mobilapp.html#wp1043943"&gt;http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/srnd/7x/mobilapp.html#wp1043943&lt;/a&gt;,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Remote destinations must be Time Division  Multiplex (TDM) devices or off-system IP phones on other clusters or  systems. You cannot configure IP phones within the same Unified CM  cluster as remote destinations. "&lt;br /&gt;&lt;/blockquote&gt;So if you'd like to test mobility feature without involving PSTN gateways, you may build another CUCM cluster (with VMWare, it should be just another VM).  Then you may create ICT (Inter-Cluster Trunk) between two clusters.  You may use the IP phones on another clusters as "Remote Destination".   With this setup, you may test the following features:&lt;br /&gt;&lt;br /&gt;1) Mobile Connect (SNR)&lt;br /&gt;2) Enterprise Feature Access (EFA)&lt;br /&gt;&lt;br /&gt;You won't be able to test the following feature:&lt;br /&gt;&lt;br /&gt;MVA (Mobile Voice Access), because it requires IVR function of the voice gateway.&lt;br /&gt;&lt;br /&gt;If you have a voice gateway but does not have T1/PRI, you may use CME to simulate PSTN phones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6652833982119244427?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6652833982119244427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/05/test-mobility-feature-without-pstn.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6652833982119244427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6652833982119244427'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/05/test-mobility-feature-without-pstn.html' title='Test mobility feature without PSTN'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6568871600315906669</id><published>2010-04-22T06:55:00.000-07:00</published><updated>2010-04-22T09:06:13.563-07:00</updated><title type='text'>Make a non-bootable ISO image bootable</title><content type='html'>For whatever reason, Cisco only post "non-bootable" ISO images on CCO for download.  In some urgent situations, you might need a bootable disc to recover the system (or your client/boss would shoot you in the head).  Here's the procedure to make a non-bootable ISO image bootable.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Before you continue, be aware that this procedure is NOT approved by Cisco.  Neither Cisco nor I will be responsible for any loss caused by this. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Any bootable disc has to follow "&lt;a href="http://en.wikipedia.org/wiki/El_Torito_%28CD-ROM_standard%29"&gt;El Torito&lt;/a&gt;" specification.  No exception for Cisco discs.  The only difference between a bootable disc and non-bootable disc is the "boot sector".  Thus the solution is very simple - extract the boot sector from a bootable disc and inject it into a non-bootable disc.&lt;br /&gt;&lt;br /&gt;The boot sector is a very small file (usually less than 10k).  And the boot sector is &lt;span style="font-style: italic;"&gt;usually&lt;/span&gt; content independent (i.e. you may extract the boot sector from CUCM 7.1.3 and inject it into 7.1.5).  You may save the boot sector on your USB thumb drive and keep it handy.&lt;br /&gt;&lt;br /&gt;To extract/inject the boot sector, you need some disc image tools like &lt;a href="http://www.ezbsystems.com/ultraiso/"&gt;UltraISO&lt;/a&gt;.  (You may also use other ISO tools with similar features)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: Extract the boot sector&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Put a bootable CUCM disc into the DVD drive and launch UltraISO.  Go to menu "Bootable &gt; Extract Boot File from CD/DVD..."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S9BYmanhIcI/AAAAAAAAAIo/vnbMjqYVgXM/s1600/1.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S9BYmanhIcI/AAAAAAAAAIo/vnbMjqYVgXM/s400/1.PNG" alt="" id="BLOGGER_PHOTO_ID_5462963765003755970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Save the file to your hard drive as a "boot info file" (bif).  In our example, we call it "boot.bif"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BZA7xghoI/AAAAAAAAAIw/yrP0WPGuuDo/s1600/2.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 270px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BZA7xghoI/AAAAAAAAAIw/yrP0WPGuuDo/s400/2.PNG" alt="" id="BLOGGER_PHOTO_ID_5462964220580628098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: Inject the boot sector&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Open the non-bootable image in UltraISO.  Go to menu "Bootable".  Make sure "Generate Bootinfotable" was checked.  Then choose "Load Boot File...".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BcIkrBCpI/AAAAAAAAAJQ/Vf4m70VVPSg/s1600/3.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 269px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BcIkrBCpI/AAAAAAAAAJQ/Vf4m70VVPSg/s400/3.PNG" alt="" id="BLOGGER_PHOTO_ID_5462967650353220242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Choose the boot file we saved before (boot.bif).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BacKLrqYI/AAAAAAAAAJA/UY04MxKQ_Ec/s1600/4.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S9BacKLrqYI/AAAAAAAAAJA/UY04MxKQ_Ec/s400/4.PNG" alt="" id="BLOGGER_PHOTO_ID_5462965787816601986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note that the image type changed to "Bootable".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S9Baw71WdsI/AAAAAAAAAJI/KWygC5IO5YU/s1600/5.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S9Baw71WdsI/AAAAAAAAAJI/KWygC5IO5YU/s400/5.PNG" alt="" id="BLOGGER_PHOTO_ID_5462966144742094530" border="0" /&gt;&lt;/a&gt;Now, you may go to "File &gt; Save As" to save the bootable image to an ISO file.  Then you may burn the ISO to a disc with your favorite disc burner software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6568871600315906669?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6568871600315906669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/04/how-to-make-non-bootable-iso-image.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6568871600315906669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6568871600315906669'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/04/how-to-make-non-bootable-iso-image.html' title='Make a non-bootable ISO image bootable'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z4Dj73m3UV8/S9BYmanhIcI/AAAAAAAAAIo/vnbMjqYVgXM/s72-c/1.PNG' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-3761046617327658817</id><published>2010-04-06T18:03:00.000-07:00</published><updated>2010-04-18T17:04:15.138-07:00</updated><title type='text'>New book and Cisco Live</title><content type='html'>New edition of the book has been &lt;a href="http://www.lulu.com/content/5552336"&gt;published&lt;/a&gt;.  &lt;span style="font-weight: bold;"&gt;Use coupon code "SHOWERS" to get 10% off.&lt;/span&gt;  &lt;span style="font-weight: bold;"&gt;Use coupon "FREEMAIL305" to save on shipping.&lt;/span&gt;  (Offer ends April 30, 2010)&lt;br /&gt;&lt;br /&gt;It covers new topics like: XMPP, Jabber, CSF (Client Service Framework), Message Archiver, Persistent Chat, 3rd-Party Compliance, external database, etc.&lt;br /&gt;&lt;br /&gt;If things worked out, I'll go to &lt;a href="https://www.ciscolive2010.com/"&gt;Cisco Live&lt;/a&gt; (Networkers) at Las Vegas from Jun 28 to July 1.  I'll be at the Technical Solution Clinics.  See you there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lulu.com/content/5552336"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 245px; height: 320px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S8udy5aJntI/AAAAAAAAAIg/zeIgJ6ThrE8/s400/3rd+Edition.jpg" alt="" id="BLOGGER_PHOTO_ID_5461632470846381778" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lulu.com/content/5552336"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-3761046617327658817?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/3761046617327658817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/04/new-book-and-cisco-live.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3761046617327658817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3761046617327658817'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/04/new-book-and-cisco-live.html' title='New book and Cisco Live'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z4Dj73m3UV8/S8udy5aJntI/AAAAAAAAAIg/zeIgJ6ThrE8/s72-c/3rd+Edition.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-7057065482979520024</id><published>2010-03-26T17:20:00.000-07:00</published><updated>2010-04-06T18:03:02.579-07:00</updated><title type='text'>Place to ask questions</title><content type='html'>It's that time again - "&lt;a href="https://supportforums.cisco.com/message/3043328"&gt;Ask the Expert&lt;/a&gt;" event on Cisco NetPro forum.&lt;br /&gt;&lt;br /&gt;If you have any questions, please feel free to ask there.&lt;br /&gt;&lt;br /&gt;This time we'll focus on the next version of CUPS and CUPC, with new technology XMPP and CSF.&lt;br /&gt;&lt;br /&gt;You may post your question at &lt;a href="https://supportforums.cisco.com/message/3043328"&gt;https://supportforums.cisco.com/message/3043328&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll update my book "&lt;a href="http://www.lulu.com/content/5552336"&gt;Deploying Cisco Unified Presence&lt;/a&gt;" to version 8.x in couple weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-7057065482979520024?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/7057065482979520024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/03/place-to-ask-questions.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7057065482979520024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7057065482979520024'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/03/place-to-ask-questions.html' title='Place to ask questions'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2536210518801134191</id><published>2010-03-09T05:45:00.000-08:00</published><updated>2010-03-09T06:28:51.481-08:00</updated><title type='text'>Client Service Framework - CSF</title><content type='html'>&lt;b&gt;History&lt;/b&gt; &lt;p&gt;Once upon a time, Cisco built a client software called "Cisco Unified Personal Communicator" (a.k.a. CUPC).  CUPC has many features like Rich Presence, Instant Message, Desk Phone control (CTI), Soft Phone (SIP), Voicemail (IMAP), Web Conference, etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Later on, when Cisco built other client software (such as plug-in for Sametime Connect, plug-in for MOC), developers realized that there were many commonalities between those software and CUPC.  Instead of "reinventing the wheel", they could just reuse the existing codes in CUPC. &lt;/p&gt;&lt;p&gt;However, "reuse" is not as simple as it sounds to be in software development.  You'll have to "shape" the codes to fit into your specific software.  To make the work easier, they decided to "extract" the codes from CUPC and standardize it.  So any other software teams can easier build their application on top of it.  This "extracted", "standardized" component is called "Client Service Framework".  (if you have ever heard about ".Net Framework" from Microsoft, the concept is pretty similar).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The idea is: CSF has all the common feature built in and provides unified interfaces to upper applications (such as CUCIMOC, CUPC 8, CUCI Connect, etc.).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The code of CSF is usually referred as "core" (e.g. "core log" of CUCIMOC). &lt;/p&gt;&lt;p&gt;Because of the history, we sometimes see the "marks" of CUPC.  For example, CUCIMOC dial rules are put in the "CUPC" folder on TFTP. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Applications using CSF&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Right now, applications using CSF are:&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;CUCIMOC (for Microsoft Office Communicator)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CUCI Connect (for Webex Connect)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CUPC 8.0&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Confusions&lt;/b&gt;&lt;br /&gt;&lt;p&gt;To use the Cisco Unified Personal Communicator soft phone feature, we have to create a device in CUCM.  The device type happened to be called "Cisco Unified Personal Communicator".  This is really a &lt;b&gt;BAD&lt;/b&gt; idea.  If I were the decision maker, I would name it with some netrual name like "Cisco SIP soft phone".  &lt;/p&gt;&lt;p&gt;Because the device type has the same name as the client software, many people (including Cisco TAC engineers) thought it was required for CUPC to work.  More confusion when it comes to licensing and troubleshooting.  Such as: &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;i&gt;"I licensed UPC on CUCM &gt; System &gt; Licensing &gt; Capability Assigments.  That took 1 DLU.  But when I ran the license calculator, the 'Cisco Unified Personal Communicator' is taking 3 DLUs"&lt;/i&gt;  &lt;/li&gt;&lt;li&gt;&lt;i&gt;"My CUPC is not registering"  "Did you mean the CUPC on your desktop(Windows XP)?  Or the CUPC on CUCM?"&lt;/i&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;They made the same mistake again with CSF.  To use the soft phone feature of CSF, you have to create a device in CUCM.  The device type is called "Client Service Framework".  Again, if I were the decision maker, I would name it with a neutral name like "Cisco SIP soft phone (2nd Generation)". &lt;/p&gt;&lt;p&gt;The point is: don't confuse one of the features with the whole piece.  You don't need to configure CSF device in CUCM to get the CSF worked on client applications.  Without CSF device on CUCM, the only feature you're missing is soft phone.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Interface&lt;/p&gt;&lt;p&gt;As you can guess, CSF does not have a user interface.  User interface was provided by the upper layer applications such as CUCIMOC, CUCI Connect, CUPC 8 etc.&lt;/p&gt;&lt;p&gt;The only way you can "see" CSF is to use Windows Task Manager.  You'll see a process called "cucsf.exe".  This process usually starts up and close down with the upper layer applications (such as CUPC 8).  But not every application does the same thing.  For example, CUCIMOC does not shutdown CSF when you close MOC.  If you want to kill or restart CSF for whatever reasons, you'll have to kill it from Task Manager.&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Configuration&lt;/p&gt;&lt;p&gt;In current version of CSF, there's no GUI to configure it.  All configuration was done via Windows registry.&lt;/p&gt;&lt;p&gt;Depending on your deployment, configuration data could be in either one of the following locations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;HKEY="HKCU\Software\Cisco Systems, Inc.\Client Services Framework\AdminData"&lt;/li&gt;&lt;li&gt;HKEY="HKCU\Software\&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Policies&lt;/span&gt;\Cisco Systems, Inc.\Client Services Framework\AdminData"&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If both keys exist, "HKCU\Software\&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Policies&lt;/span&gt;\Cisco Systems, Inc.\Client Services Framework\AdminData" takes priority.&lt;/p&gt;&lt;p&gt;For centralized management, you may use a logon script (BAT) or a group policy to update the client's registry.&lt;/p&gt;&lt;p&gt;Registry key requirement varies between applications.&lt;/p&gt;&lt;p&gt;For CUCIMOC, registry key info as below: &lt;a href="http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_clients.html"&gt;http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_clients.html&lt;/a&gt;.  CUCIMOC also provides a sample BAT file and REG file for your convenience.  Those sample files are zipped into cucimoc-&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Admin&lt;/span&gt;-ffr.&lt;span style="font-style: italic;"&gt;x-y-z&lt;/span&gt;.zip (&lt;span style="font-style: italic;"&gt;x-y-z&lt;/span&gt; is the version of CUCIMOC.  e.g. cucimoc-Admin-ffr.7-1-3.zip)&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Limitations&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Application Dial Rules (ADR)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Current version of CSF does not have an interface to "dip" into CUCM database to retrieve ADRs.  As a workaround, Cisco provides a COP file.  Whenever you run(install) the COP file on CUCM, CUCM will generate XML files in TFTP folder to reflect the latest ADRs.  Then CSF needs to be restart to download those XML files.  For details, see: &lt;a href="http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_servers.html#wp1054388"&gt;http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_servers.html#wp1054388&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This means, whenever you make changes to CUCM &gt; Call Routing &gt; Dial Rules, you'll have to run the COP file and restart CSF.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Soft Phone&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;CSF soft phone is a SIP phone.  It has quite a few limitations comparing with SCCP (skinny) phones.  For example, the following features are not supported on SIP:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CUVA support&lt;/li&gt;&lt;li&gt;FAC/CMC support&lt;/li&gt;&lt;li&gt;MLPP target device&lt;/li&gt;&lt;li&gt;Direct transfer&lt;/li&gt;&lt;li&gt;Hold tone&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;... to be continued&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2536210518801134191?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2536210518801134191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/03/client-service-framework-csf.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2536210518801134191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2536210518801134191'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/03/client-service-framework-csf.html' title='Client Service Framework - CSF'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-9015582106635774118</id><published>2010-03-03T06:25:00.000-08:00</published><updated>2010-03-03T06:31:43.394-08:00</updated><title type='text'>Client Convergence</title><content type='html'>In the "Unified Communication" world, you might have many different client software installed on your computer -&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click-to-Call for making  calls easy&lt;/li&gt;&lt;li&gt;IP Communicator to be a soft phone&lt;/li&gt;&lt;li&gt;Video Advantage to be a "video add-on"&lt;/li&gt;&lt;li&gt;Personal Communicator to be an IM and presence client&lt;/li&gt;&lt;/ul&gt;It's kind of "un-unified" with so many different things.  Fortunately, your voice was heard.  In the future, you might have a truly "unified" client, which does everything with one piece.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S45yit8YHqI/AAAAAAAAAIA/7ZLgOSViYeM/s1600-h/client_convergence.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 248px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S45yit8YHqI/AAAAAAAAAIA/7ZLgOSViYeM/s400/client_convergence.png" alt="" id="BLOGGER_PHOTO_ID_5444414940311461538" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-9015582106635774118?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/9015582106635774118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/03/client-convergence.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/9015582106635774118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/9015582106635774118'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/03/client-convergence.html' title='Client Convergence'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z4Dj73m3UV8/S45yit8YHqI/AAAAAAAAAIA/7ZLgOSViYeM/s72-c/client_convergence.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-5003926327763431245</id><published>2010-03-01T05:04:00.000-08:00</published><updated>2010-03-01T20:25:19.224-08:00</updated><title type='text'>Calendar presence with CUPS and Exchange</title><content type='html'>Cisco Unified Presence Server (CUPS) has the capability to retrieve calendar (Exchange) status and populate to clients (CUPC).  When your calendar status is "busy" in calendar, CUPC will display your status as "in a meeting".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4vCcpiKiXI/AAAAAAAAAGg/4JHaADrjCXw/s1600-h/calendar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 291px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4vCcpiKiXI/AAAAAAAAAGg/4JHaADrjCXw/s400/calendar.png" alt="" id="BLOGGER_PHOTO_ID_5443658372048652658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To enable this feature, there are server-side configuration (CUPS/Exchange) and client side configuration(CUPC).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CUPC configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On CUPC side, you go to "File &gt; Preferences &gt; Status" and put a check mark on "Show me as 'In a Meeting' whenever my Exchange calendar shows me as busy".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4vDPF5meLI/AAAAAAAAAGw/ct2BXd0roIY/s1600-h/cupc.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 349px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4vDPF5meLI/AAAAAAAAAGw/ct2BXd0roIY/s400/cupc.png" alt="" id="BLOGGER_PHOTO_ID_5443659238656604338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Please note that when multiple 'presence' arrIve, CUPC can only display one of them.  The priority, from high to low is: Phone Presence &gt; Calendar Presence &gt; Availability Status.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;You logged into CUPC ==&gt; Availability Status = "Available"&lt;br /&gt;You're on the phone ==&gt; Phone Status = "On the Phone"&lt;br /&gt;Your calendar is busy ==&gt; Calendar Presence = "In a Meeting"&lt;br /&gt;&lt;br /&gt;In this scenario, CUPC will display the status as "On the Phone".  You won't see "In a Meeting".  However, you may move the mouse over a contact (or your self-status) to see all the presence.&lt;br /&gt;&lt;br /&gt;In the screenshot below, you'll see the CUPC display its self-status as "On the phone".  When you move the mouse over the self-status, you'll see "Online, On the phone, In a meeting" in the tooltip.  This is how to explore the "hidden" presence from CUPC.&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///D:/Data/htluo/Desktop/cupc.png" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S4vx_4ykwSI/AAAAAAAAAG4/oEntR5X6l38/s1600-h/multi.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 358px; height: 400px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S4vx_4ykwSI/AAAAAAAAAG4/oEntR5X6l38/s400/multi.png" alt="" id="BLOGGER_PHOTO_ID_5443710654485938466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;CUPS configuration&lt;br /&gt;&lt;br /&gt;The most confusing (instead of difficult) part on CUPS is the SSL/Certificate configuration.  CUPS can only talk to Exchange via HTTPS.  Why is that?&lt;br /&gt;&lt;br /&gt;That is because CUPS use an Exchange "service account" to read everybody's mailbox (calendar).  If the communication was not encrypted (SSL), it would pose a threat to information security.  A hacker could easily intercept the packets on network and retrieve everybody's (including CEO's) email and calendar.&lt;br /&gt;&lt;br /&gt;With that said, here are the requirements on Exchange and CUPS to set up a SSL connection:&lt;br /&gt;1) HTTPS needs to be enabled for OWA (Outlook Web Access)&lt;br /&gt;2) The CA certificates of Exchange need to be trusted by CUPS.&lt;br /&gt;&lt;br /&gt;Regarding #1, there's a catch.  We'll discuss that in the "Exchange" section below.&lt;br /&gt;&lt;br /&gt;Regarding #2, there are two catches -&lt;br /&gt;A) Don't confuse the CA cert with identity cert.&lt;br /&gt;B) Request address has to match certificate.&lt;br /&gt;&lt;br /&gt;A) What is a "CA cert" and what is an "identity cert"?&lt;br /&gt;&lt;br /&gt;For example, if your Exchange OWA has a certificate to identify itself as "owa.acme.local".  This certificate is called "identity cert".  Let say, this identity cert was issued by a CA (Certificate Authority) called "my-ca-server.acme.local".  On the CA server, it has a certificate to identify itself.  We call that cert a "CA cert".&lt;br /&gt;&lt;br /&gt;It is the "CA cert" CUPS server needs to trust.  In our example above, it's the "my-ca-server.acme.local" certificate needs to be uploaded to CUPS as "Presence Engine-Trust".&lt;br /&gt;&lt;br /&gt;B) When you configure the "Outlook presence gateway" on CUPS, the address you put in there is the address CUPS will use to sent request to Exchange.&lt;br /&gt;&lt;br /&gt;For simplicity, quite a few people just put the IP address of Exchange there.  This is not going to work with SSL.  For security, the request address has to match with the common name in the identity certificate.  Usually, the certificate will identity the server in FQDN (e.g. owa.apps.local).  Thus, you'll have to configure the same name in presence gateway configuration page.&lt;br /&gt;&lt;br /&gt;Please note: I used the word "same name" instead of "FQDN".  Because technically, you could configure any name in the certificate.  Let's take a look at a couple examples:&lt;br /&gt;&lt;br /&gt;Your OWA server IP = 192.168.1.100&lt;br /&gt;Your OWA server FQDN in DNS = owa.apps.local&lt;br /&gt;&lt;br /&gt;Example #1: You configured the common name in the OWA cert as "email.apps.local".&lt;br /&gt;&lt;br /&gt;This won't work.  Because:&lt;br /&gt;&lt;br /&gt;If you used "192.168.1.100" in presence gateway configuration, it doesn't match "email.apps.local" in the identify cert.&lt;br /&gt;&lt;br /&gt;If you used "owa.apps.local" in presence gateway configuration, it doesn't match "email.apps.local" in the identify cert.&lt;br /&gt;&lt;br /&gt;If you used "email.apps.local" in presence gateway configuration, CUPS won't be able to resolve the name, because it's not in DNS.&lt;br /&gt;&lt;br /&gt;Or even worse, you don't have DNS configured on CUPS so you can't use any FQDN.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;1) Add "email.apps.local" to DNS&lt;br /&gt;2) Configure CUPS used DNS (use "set network dns primary" command)&lt;br /&gt;3) Use "email.apps.local" in presence gateway&lt;br /&gt;&lt;br /&gt;Example #2&lt;br /&gt;&lt;br /&gt;In a lab environment, you may configure the certificate so it identifies the OWA server with common name "192.168.1.100" (though it's not a common practice, it's technically legit).&lt;br /&gt;&lt;br /&gt;In this scenario, you may use IP address 192.168.1.100 in presence gateway config.&lt;br /&gt;&lt;br /&gt;Whenever you made changes to presence gateway, don't forget to restart Presence Engine service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exchange&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You don't have to be an Exchange expert.  But you should at least know the following:&lt;br /&gt;&lt;br /&gt;OWA, WebDAV, Receive-As permission, IIS certificate, CAS/Mailbox roles, authentication methods, Power Shell. (did I say you don't have to be an expert?  :) )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OWA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OWA - Outlook Web Access, a web interface to access Exchange emails, calendars, etc.  HTTPS needs to be enabled on OWA for CUPS integration to work.&lt;br /&gt;&lt;br /&gt;OWA is actually a very useful tool for troubleshooting.  For example:&lt;br /&gt;&lt;br /&gt;When you tried to access OWA via HTTPS, OWA server will present you a certificate.  You may view that certificate from web browser.  You should be able to tell what the CA cert is from the web browser.&lt;br /&gt;&lt;br /&gt;In the screenshot below, you open a web page to OWA.  If you double-click the "lock" icon at the bottom of IE, you'll see a certificate viewer window.  From the "certification" tab, you'll see the CA cert is "sametime.apps.local".  The identity cert is "owa.apps.local".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4v7OsgELQI/AAAAAAAAAHA/zzWZGqyc0aU/s1600-h/IE.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 339px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4v7OsgELQI/AAAAAAAAAHA/zzWZGqyc0aU/s400/IE.PNG" alt="" id="BLOGGER_PHOTO_ID_5443720804489768194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you know that:&lt;br /&gt;1) You need to upload "sametime.apps.local" cert to CUPS as "Presence Engine - Trust".&lt;br /&gt;2) You need to configure "owa.apps.local" as the "presence gateway" on CUPS &gt; Presence &gt; Presence Gateway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WebDAV&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WebDAV is a protocol (on top of HTTP) to retrieve email/calendar information.  See &lt;a href="http://en.wikipedia.org/wiki/WebDAV"&gt;http://en.wikipedia.org/wiki/WebDAV&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;CUPS uses WebDAV for calendar integration.  Microsoft obsoletes WebDAV on Exchange 2010 and advocates its own protocol EWS (Exchange Web Service).  By the time this blog was being written, CUPS doesn't support EWS yet.  Which means, CUPS doesn't work with Exchange 2010.  I'm not sure if you can have an E2007 CAS in E2010 as a "WebDAV" gateway.  I'll test it later.&lt;br /&gt;&lt;br /&gt;Though WebDAV sits on HTTP/HTTPS, it's different from OWA.  &lt;span style="color: rgb(255, 0, 0);"&gt;Don't assume WebDAV is working just because OWA was working&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Up to Exchange 2007, WebDAV was enabled by default.  You don't have to explicitly enable it.  Some people reported that WebDAV was not installed/enabled on E2007 with Win2008.  This is not true.  The "WebDAV Publishing" in screenshot below has nothing to do with CUPS integration.  It's OK to leave it uninstalled.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S4v-hLunduI/AAAAAAAAAHI/N52TlzpWz4Q/s1600-h/WebDAV.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 294px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/S4v-hLunduI/AAAAAAAAAHI/N52TlzpWz4Q/s400/WebDAV.png" alt="" id="BLOGGER_PHOTO_ID_5443724420644828898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since E2007, Microsoft change the OWA URL from /exchange to /owa, but WebDAV URL stays the same (/exchange).  This caused more confusions in troubleshooting.&lt;br /&gt;&lt;br /&gt;When you troubleshoot CUPS calendar integration, you'll see CUPS always request to URL /exchange, which is the WebDAV URL.  This is right and expected.&lt;br /&gt;&lt;br /&gt;If you tried to "test" it by typing "https://owa.acme.local/exchange", you'll be redirected to "https://owa.acme.local/owa".  This is also right and expected.  For more details, please see: &lt;a href="http://msexchangeteam.com/archive/2007/02/07/434523.aspx"&gt;http://msexchangeteam.com/archive/2007/02/07/434523.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The point is: there's no easy way to tell if WebDAV is working.  But it's easy to tell if WebDAV is NOT working.&lt;br /&gt;&lt;br /&gt;If you typed "https://owa.acme.local/exchange" and got some error like "401 unauthorized" or "503 service unavailable", WebDAV is more than likely not working.  Though regular OWA might be working fine at this point.&lt;br /&gt;&lt;br /&gt;If you got "401 unauthorized", you may take a look at &lt;a href="http://msexchangeteam.com/archive/2008/02/01/447989.aspx"&gt;http://msexchangeteam.com/archive/2008/02/01/447989.aspx&lt;/a&gt;.  Default settings should work.  If it doesn't work, most likely your authentication was expecting username in a different format.  e.g. "domain\user" instead of "user".&lt;br /&gt;&lt;br /&gt;If you got "503 service unavailable" or "500 internal server error", please make sure "ISAPI Extensions" is installed on mailbox server.  See screenshot below.  This usually happens if mailbox server and CAS are on two different servers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S4wFUtYeL4I/AAAAAAAAAHQ/6Knwt7O5Tww/s1600-h/isapi.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 294px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S4wFUtYeL4I/AAAAAAAAAHQ/6Knwt7O5Tww/s400/isapi.png" alt="" id="BLOGGER_PHOTO_ID_5443731902921846658" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Certificate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OWA/WebDAV relies on IIS to server HTTP request.  It's IIS that presents certificate to SSL client.&lt;br /&gt;&lt;br /&gt;By default, when you installed IIS, it'll generate a self-signed certificate.  Unfortunately, this self-signed certificate doesn't work with CUPS, because it doesn't contain CA bit in its extension.  Below is an example of the certificate that HAS the CA bit:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S4wKkEpYdkI/AAAAAAAAAHY/Fg6I41yZuGA/s1600-h/certificate+-+CA.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 321px; height: 400px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/S4wKkEpYdkI/AAAAAAAAAHY/Fg6I41yZuGA/s400/certificate+-+CA.png" alt="" id="BLOGGER_PHOTO_ID_5443737664422966850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If your CA cert does not have CA bit, CUPS won't trust it.  This is per &lt;a href="http://www.ietf.org/rfc/rfc2459.txt"&gt;RFC 2459&lt;/a&gt;.  Don't blame Cisco on that.&lt;br /&gt;&lt;br /&gt;Solution? Get a certificate from a CA (either external or internal) or use "makecert.exe" to create a self-signed cert with CA bit (see my &lt;a href="http://www.lulu.com/content/5552336"&gt;book&lt;/a&gt; for details).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Receive-As Permission&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to see everybody's calendar, CUPS needs an account with this permission.  So the FAQ is: what's the &lt;span style="color: rgb(255, 0, 0);"&gt;minimum&lt;/span&gt; permission required?&lt;br /&gt;&lt;br /&gt;The minimum permission required is "Receive-As" on the end user's mailbox.&lt;br /&gt;&lt;br /&gt;Cisco documents said you need "View Only Administrator".  That's not true.  All you need is "Receive-As" permission on the end user's mailbox.  Not more, not less.&lt;br /&gt;&lt;br /&gt;How do we assign "Receive-As" permission to the account?  I would recommend use Exchange Management Shell (command line).&lt;br /&gt;&lt;br /&gt;Let say, in Active Directory, the service account used by CUPS is called "cupsexch".  The end user account is called "JDoe" (full name: John Doe).  The following command give "cupsexch" Receive-As permission on John Doe's mailbox:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Add-ADPermission -Identity "&lt;span style="color: rgb(255, 0, 0);"&gt;John Doe&lt;/span&gt;" -User &lt;span style="color: rgb(255, 0, 0);"&gt;cupsexch&lt;/span&gt; -ExtendedRights Receive-As&lt;/blockquote&gt;Of course, you're not going to repeat this command for 1000 users.  The better way to do it is to assign permission on a "container" that contains the end users' mailboxes.&lt;br /&gt;&lt;br /&gt;In Exchange, the "container" for mailboxes is "Mailbox Database".  The container for "Mailbox Databases" is "Storage Group".  You may have multiple databases in a storage group.  And you may have multiple storage groups in your Exchange environment.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4wRYZ348LI/AAAAAAAAAHg/sZPJZHw27Bs/s1600-h/Storage.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 224px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4wRYZ348LI/AAAAAAAAAHg/sZPJZHw27Bs/s400/Storage.png" alt="" id="BLOGGER_PHOTO_ID_5443745160543924402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You may assign permission at different levels:&lt;br /&gt;&lt;br /&gt;End User Mailbox&lt;br /&gt;Mailbox Database&lt;br /&gt;Storage Group&lt;br /&gt;&lt;br /&gt;Since "Storage Group" is the highest level of "container", we usually assign permissions on storage group level.  Permissions would populate down to end user mailboxes.  This "population" takes some time (from 30 minutes to hours).&lt;br /&gt;&lt;br /&gt;The command to assign permission on "First Storage Group" is as below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Add-ADPermission -Identity "&lt;span style="color: rgb(255, 0, 0);"&gt;First Storage Group&lt;/span&gt;" -User &lt;span style="color: rgb(255, 0, 0);"&gt;cupsexch&lt;/span&gt; -ExtendedRights Receive-As&lt;br /&gt;&lt;/blockquote&gt;What if you have multiple storage groups and want to automate the process?  You may use the command below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Get-StorageGroup | add-ADPermission –user &lt;span style="color: rgb(255, 0, 0);"&gt;cupsexch&lt;/span&gt; -ExtendedRights Receive-As&lt;/blockquote&gt;"Get-StorageGroup" command will get all storage group names from system and feed the names to "Add-ADPermission" command.&lt;br /&gt;&lt;br /&gt;The command to verify permission is as below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Get-MailboxPermission &lt;span style="color: rgb(255, 0, 0);"&gt;jdoe&lt;/span&gt; -user &lt;span style="color: rgb(255, 0, 0);"&gt;cupsexch&lt;/span&gt; | Format-Table -autosize&lt;/blockquote&gt;This command will display "cupsexch" permission on jdoe's mailbox.  Anything after the pipe sign (|) is just for formatting purpose.&lt;br /&gt;&lt;br /&gt;If you got nothing, that means "no permission".  If you assigned the permission on higher containers, it might not have flowed down yet.&lt;br /&gt;&lt;br /&gt;If the permission has been populated, you should see something like the screenshot below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4wxhrF_kfI/AAAAAAAAAHo/6ZYO5QUCnMU/s1600-h/permission.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 136px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/S4wxhrF_kfI/AAAAAAAAAHo/6ZYO5QUCnMU/s400/permission.png" alt="" id="BLOGGER_PHOTO_ID_5443780504157393394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"AccessRights = {FullAccess}" means "cups7exch" account has permission to read "John Doe's" mailbox.&lt;br /&gt;"Is Inhereited = True" means this permission was inherited from some higher level containers.&lt;br /&gt;&lt;br /&gt;This is the only &lt;span style="color: rgb(255, 0, 0);"&gt;reliable&lt;/span&gt; way to test permissions.&lt;br /&gt;&lt;br /&gt;Cisco documents described a test method which use OWA to test the URL "https://owa-address/exchange/some_user/calendar" with the service account.  This method may or may not work depending on other permissions you configured for the service account.  For example, if you are like me to give &lt;span style="color: rgb(255, 0, 0);"&gt;minimum&lt;/span&gt; permissions, Cisco test method would yield a "no permission" page as below.  However, CUPS calendar works just fine with the "minimum permission".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4wzXpUhCaI/AAAAAAAAAHw/hXLdv5DZzEQ/s1600-h/no_permission.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4wzXpUhCaI/AAAAAAAAAHw/hXLdv5DZzEQ/s400/no_permission.png" alt="" id="BLOGGER_PHOTO_ID_5443782530905999778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Troubleshooting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If calendar integration doesn't work, "Presence Engine" (PE) logs are the only traces we need.&lt;br /&gt;&lt;br /&gt;Ideally, we want the logs since PE started.  Thus if you could, do the following:&lt;br /&gt;&lt;br /&gt;1) Restart PE&lt;br /&gt;2) Wait unti PE started and stabilized&lt;br /&gt;3) Log into CUPC&lt;br /&gt;4) Collect PE logs since the time of restart&lt;br /&gt;5) Use &lt;a href="http://www.wingrep.com/"&gt;WinGrep&lt;/a&gt; to search for keyword "owa".  It'll give you all message regarding OWA transactions.&lt;br /&gt;&lt;br /&gt;Following are some common problems:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Certificate not trusted"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This could be caused by the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The name configured in "CUPS &gt; Presence &gt; Presence Gateway" does not match with the name in identity certificate.  (e.g. IP address vs. FQDN)&lt;/li&gt;&lt;li&gt;CA certificate was not imported as "Presence Engine - Trust".  If there are multiple CAs in the certificate chain, all of them need to be imported.&lt;/li&gt;&lt;li&gt;CA bit was not set (usually happens on IIS self-signed certificate)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"440 Login Timeout"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When FBA (Form-Based Authentication) was enabled, you'll see one "440 login timeout" in PE log for each transaction.  This is normal.  If you keep getting "440 login timeout", it usually indicates an authentication issue.&lt;br /&gt;&lt;br /&gt;To reveal the nature of the problem, it's recommended to change "Form-Based Authentication" to "Standard Authentication" on "/Exchange" virtual directory on &lt;span style="color: rgb(255, 0, 0);"&gt;OWA&lt;/span&gt;.  See screenshot below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4yOKSnuDWI/AAAAAAAAAH4/JepLCcS9xr8/s1600-h/owa.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 319px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4yOKSnuDWI/AAAAAAAAAH4/JepLCcS9xr8/s400/owa.png" alt="" id="BLOGGER_PHOTO_ID_5443882357032357218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Changing this will not change the way or feel of regular OWA logon.  It's just change the authentication method for WebDAV.  (you'll need to reset IIS by using command "iisreset /noforce")&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"401 Unauthorized"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is usually caused by permission issue.  See "Receive-As" permission configuration above for testing method.&lt;br /&gt;&lt;br /&gt;Another testing method would be configuring an end user's credential on presence gateway.  An end user's credential would definitely have permission on his own mailbox.  If you log in to CUPC with that end user account, calendar integration should work.  This is a good way to do "problem isolation".&lt;br /&gt;&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-5003926327763431245?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/5003926327763431245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/03/calendar-presence-with-cups-and.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5003926327763431245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5003926327763431245'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/03/calendar-presence-with-cups-and.html' title='Calendar presence with CUPS and Exchange'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z4Dj73m3UV8/S4vCcpiKiXI/AAAAAAAAAGg/4JHaADrjCXw/s72-c/calendar.png' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-4733540064883123057</id><published>2010-01-23T19:02:00.000-08:00</published><updated>2010-01-23T20:22:43.917-08:00</updated><title type='text'>Hard Drive Partition and version control of UC Appliance</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Active and Inactive Version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many Cisco Unified Communication appliances (CUCM, CUPS, CER, CUMA, etc.) share the same OS (Cisco customized Linux).&lt;br /&gt;&lt;br /&gt;For maintenance purpose, you may install two copies (versions) of systems on the hard drive.  Cisco call it "active version" and "inactive version".&lt;br /&gt;&lt;br /&gt;CLI commands:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;show version active&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;show version inactive&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;utils system switch-version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please note: "active" and "inactive" are relative.  When you switch the version (utils system switch-version), the "active" version will becomes "inactive".&lt;br /&gt;&lt;br /&gt;If you're a Windows guy, you should be familiar with C:\boot.ini.&lt;br /&gt;&lt;br /&gt;If you're a Linux guy, you should be familiar with grub.conf.&lt;br /&gt;&lt;br /&gt;It's the same way Cisco UC appliance controls which version to boot from.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Partitions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The two copies of software are installed into two partitions: &lt;span style="font-weight: bold;font-family:courier new;" &gt;\&lt;/span&gt; (referred as Partition A) and &lt;span style="font-weight: bold;font-family:courier new;" &gt;\partB&lt;/span&gt; (referred as Partition B).  Whenever you use "utils system switch-version", the active partition will become inactive.  The inactive partition will becomes active.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Upgrade and Switch Version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The word "upgrade/patch" has a different meaning in Cisco UC world.  Instead of "replacing" files, the "upgrade/patch" process is actually installing a full copy of system in the inactive partition.  This has two benefits:&lt;br /&gt;&lt;br /&gt;1) You may perform an upgrade/patch during production hours.&lt;br /&gt;2) It's easy to fall back to the old version.&lt;br /&gt;&lt;br /&gt;Scenario:&lt;br /&gt;You have 6 CUCM servers in the cluster.  Let say, upgrade each server takes about 2 hours.  Your business does not allow any downtime during business hours.&lt;br /&gt;&lt;br /&gt;Questions:&lt;br /&gt;Q1: How long does it take to upgrade the whole cluster?&lt;br /&gt;Q2: How much time you'll have to spend in after hours for the upgrade?&lt;br /&gt;&lt;br /&gt;Answers:&lt;br /&gt;A1: About 4 hours (2 + 2)&lt;br /&gt;A2: A couple minutes.&lt;br /&gt;&lt;br /&gt;Explanation:&lt;br /&gt;&lt;br /&gt;1. You need to finish the upgrade on CUCM publisher before you can do the upgrade on subscriber.  It takes 2 hours to upgrade the publisher. The new code be installed into inactive partition.  You don't have to switch to new version right after install.  Thus you can do it in business hours.&lt;br /&gt;&lt;br /&gt;2. Once the the new version has been installed on publisher (even it's in inactive partition), you may start upgrade process on subscribers (simultaneously).  This takes about 2 hours (because you're upgrading all subscribers simultaneously).  You don't have to switch to new version right after install.  Thus you can do it in business hours.&lt;br /&gt;&lt;br /&gt;3. In after hours, you may use "utils system switch-version" command to switch all boxes to new version.  This usually takes less than 10 minutes.&lt;br /&gt;&lt;br /&gt;However, there's a catch: if you made any configuration changes after the point of upgrade, those changes wouldn't be reflected in the new version.  For example, you performed the upgrade at 10AM but didn't switch to new version.  Then you switched to new version at 6:30PM.  Any configuration changes made between 10AM and 6:30PM will be lost.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Under the hood of "utils system switch-version"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What actually happens when you type the command "utils system switch-version"?&lt;br /&gt;&lt;br /&gt;1) It modifies /grub/boot/grub/grub.conf file to make the other partition active&lt;br /&gt;2) It synchronizes UFF (User Faced Feature) to the other version.  UFF refers to Call Forwarding, MWI (Message Waiting Indicator), etc.&lt;br /&gt;&lt;br /&gt;If the system failed to switch version, here are some options:&lt;br /&gt;&lt;br /&gt;Option 1: Try "&lt;span style="font-family: courier new;"&gt;utils system switch-version &lt;span style="color: rgb(255, 0, 0);"&gt;nodatasync&lt;/span&gt;&lt;/span&gt;"&lt;br /&gt;This turn off the UFF data sync action.&lt;br /&gt;&lt;br /&gt;Option 2: Use "Recovery CD" (downloadable from CCO) to switch version.&lt;br /&gt;&lt;br /&gt;Option 3: If you're a Linux guy, it shouldn't be too difficult for you to get access to /grub/boot/grub/grub.conf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-4733540064883123057?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/4733540064883123057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/01/hard-drive-partition-and-version.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4733540064883123057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4733540064883123057'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/01/hard-drive-partition-and-version.html' title='Hard Drive Partition and version control of UC Appliance'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8800553930581156714</id><published>2010-01-23T18:43:00.000-08:00</published><updated>2010-01-23T18:56:22.277-08:00</updated><title type='text'>OCS 2007 R2 on Windows 2008 R2 with SQL 2008</title><content type='html'>Neither Windows 2008 nor SQL 2008 is supported by OCS 2007 R2.  But if you really want to do it, here are some tips:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use SQL 2008 R2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL 2008 will fail to install on Windows 2008 R2.  Instead of trying to 'fix' it, you may just use SQL 2008 R2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pool Creation Failure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a) manually create database rtcconfig (assuming you know how to use SQL Management Studio)&lt;br /&gt;&lt;br /&gt;b) manually run the script on OCS installation CD.&lt;br /&gt;D:\Setup\amd64\DbSetup&gt;cscript.exe poolcfgdbsetup.wsf /clean /sqlserver:rcdn /serverrole:EP /verbose&lt;br /&gt;&lt;br /&gt;c) continue GUI install&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error: "Not available: IIS 6 Management Compatibility and IIS Windows Authentication role services must be installed before you Deploy Server."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution: Install all IIS6 compatibility options.  Install all authentication options&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error: "The Windows Media Format Runtime is required in order to install this component. Installing the Windows Media Format Runtime may require a system restart to complete the installation. Click OK to continue with the installation."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution: install the Desktop Experience Feature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error: "[0xC3EC78D8] Failed to read the Office Communications Server version information. This can happen if the computer clock is not set to correct date and time."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution: Uninstall MS Crypto API security update KB974571&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8800553930581156714?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8800553930581156714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/01/ocs-2007-r2-on-windows-2008-r2-with-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8800553930581156714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8800553930581156714'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/01/ocs-2007-r2-on-windows-2008-r2-with-sql.html' title='OCS 2007 R2 on Windows 2008 R2 with SQL 2008'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-525526923275366252</id><published>2010-01-22T05:29:00.000-08:00</published><updated>2010-01-22T09:09:58.409-08:00</updated><title type='text'>The art of troubleshooting</title><content type='html'>Since I joined TAC, I've been the top case solver for 16 consequent quarters no matter what technology group I worked in.  I'd like to share some tips on troubleshooting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Understand the user's expectation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Still remember the old joke that a user called IT support and said the "cup holder" on his computer stopped working?  It turned out to be the CD drive.  He insisted he's been using it for years.&lt;br /&gt;&lt;br /&gt;Understanding user's expectation can help you determine if you should do customer education or troubleshooting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keep it simple&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Which one is easier?  Troubleshoot a light switch or troubleshoot a space shuttle?&lt;br /&gt;&lt;br /&gt;Multiple-system integration adds complexity to the problem.  You should try to simplify it as much as possible.&lt;br /&gt;&lt;br /&gt;For example: When PSTN call comes in, it hits Unity Auto Attendant.  Press 2 to transfer to sales queue, which is a CTI route point handled by UCCX.  If no one answers the call, it should goes into a voicemail box dedicated for sales department.  Instead of going into voicemail, the caller just heard repeating "transferring..."&lt;br /&gt;&lt;br /&gt;In this case, we have too many elements in the picture - Unity, UCCX, CUCM, voice gateway, service provider.  Instead of troubleshooting from end to end, we should troubleshoot it segment by segment -&lt;br /&gt;&lt;br /&gt;1) What if we called the sale agent directly?  If he didn't answer, would the call goes into voicemail? (get Unity Auto Attendant and UCCX out of picture)&lt;br /&gt;2) What if we bypass Unity Attendant Console and call UCCX route point directly?  Would it work properly? (get Unity Auto Attendant out of picture)&lt;br /&gt;3) What if we make a test call from internal phone?  Would the problem be the same?  (get PSTN and voice gateway out of picture)&lt;br /&gt;&lt;br /&gt;Other tips to make things simple during troubleshooting:&lt;br /&gt;1) Use default settings.  For example, use a "vanilla windows" (fresh installed with Microsoft CD) instead of using a "corporate customized" image.&lt;br /&gt;2) Test on LAN instead of over VPN (again, decrease number of elements)&lt;br /&gt;3) Always assume the system is case sensitive (err on the safe side)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Find a reference point&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If a software doesn't work for one user and works for another one, use the good one as reference point and find out the difference.&lt;br /&gt;&lt;br /&gt;Of course there are many differences between two users, such as their wife and kids.  :)  But we should look at the most relevant ones.&lt;br /&gt;&lt;br /&gt;Most software nowadays are "client-server" model.  The most relevant ones are accounts and computer.  Switch the computer (or switch the account) to see if the problem follows the computer or account.  If it follows the computer, it might be network or computer settings (client side).  If it follows the account, it might be configuration issue (most likely server side).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Understand positive and negative result of the test&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;"Dad, I couldn't find any Easter eggs in the backyard!".  Does that mean there's no eggs there?&lt;br /&gt;&lt;br /&gt;"Dad, I found some Easter eggs in the backyard!".  That means there are some eggs there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-525526923275366252?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/525526923275366252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2010/01/art-of-troubleshooting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/525526923275366252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/525526923275366252'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2010/01/art-of-troubleshooting.html' title='The art of troubleshooting'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6658859396289770114</id><published>2009-08-29T12:05:00.000-07:00</published><updated>2009-08-29T12:35:17.108-07:00</updated><title type='text'>Map a UC appliance as a network drive</title><content type='html'>Remember the "good old days" of CCM 4.x?  You can do almost everything on the box.  Because it's in fact a Windows 2000 box.  However, this brings security and supportability issues.&lt;br /&gt;&lt;br /&gt;With the introduction of Linux-based Unified Communication appliance (CUCM 5.x), Cisco locked down the box.  You can only access the box via admin web page or a tailored command line.&lt;br /&gt;&lt;br /&gt;One of the inconveniences is to review log files.  On the old-school CCM 4.x, you may just view the logs in C:\Program Files\Cisco\Trace.  On the new UC appliance, you'll have to use RTMT (RealTime Monitoring Tool).  This is especially annoying if you're testing your system.  For each test, you'll have to download a new set of logs to your computer.  (though you may use 'Remote Browse' in RTMT, its function is very limited)&lt;br /&gt;&lt;br /&gt;What if we can go back to the "good old days" and view the file system just like a Windows drive?&lt;br /&gt;&lt;br /&gt;Take a look at the screenshot below.  It's a CUCM 6.1.4 mapped to my Windows XP laptop.  You can read/write files on CUCM just like a local hard drive. For those people who are not a fan of VI, you may use your favorite editor (such as Notepad++/UltraEdit).   And you may use any Windows tools, such as Windows search, WinGrep, WinZip, etc.  How's that?  :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SpmA6HVBGxI/AAAAAAAAAFU/Yao0rpOyco8/s1600-h/s2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 258px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SpmA6HVBGxI/AAAAAAAAAFU/Yao0rpOyco8/s400/s2.png" alt="" id="BLOGGER_PHOTO_ID_5375469366131366674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To achieve this, you need two things: a root account on CUCM and a software who can map a SFTP server to a network drive (such as sFTPdrive).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SpmBDZPASNI/AAAAAAAAAFc/It3pkqAC8vA/s1600-h/s1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SpmBDZPASNI/AAAAAAAAAFc/It3pkqAC8vA/s400/s1.png" alt="" id="BLOGGER_PHOTO_ID_5375469525556807890" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6658859396289770114?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6658859396289770114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/08/map-uc-appliance-as-network-drive.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6658859396289770114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6658859396289770114'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/08/map-uc-appliance-as-network-drive.html' title='Map a UC appliance as a network drive'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z4Dj73m3UV8/SpmA6HVBGxI/AAAAAAAAAFU/Yao0rpOyco8/s72-c/s2.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-3072746434544153257</id><published>2009-07-15T10:41:00.000-07:00</published><updated>2011-09-15T04:50:42.398-07:00</updated><title type='text'>UC Appliance on VMWare</title><content type='html'>In theory, any software runs on x86 platform should be able to run on VMWare, unless the software vendor explicitly block it.&lt;br /&gt;&lt;br /&gt;Cisco has many software running on x86 platform.  We'll discuss Unified Communication products here - CUCM, CER, UCCX, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CUCM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CUCM is the flagship of Cisco UC products.  You may install CUCM on VMWare just fine.  No hacking is required, but you'll receive a warning that VMWare is not "officially" supported.  ie. you shouldn't use it in production.  Cisco planned to support VMWare in production in the future ( probably with UC 8).&lt;br /&gt;&lt;br /&gt;Though you may install CUCM on VMWare, there are some limitations.&lt;br /&gt;&lt;br /&gt;Limitation #1 Licensing&lt;br /&gt;&lt;br /&gt;Cisco limits the number of nodes and DLUs on a VMWare MAC address.  (3 nodes, 125 DLUs at the time I'm writing this blog).  If you should need more than 3 nodes and 125 DLUs, you may change the MAC address of the CUCM (change in VM guest, not in VM host).  Just Google keywords "change MAC address on Linux" and you'll find the answer.&lt;br /&gt;&lt;br /&gt;Limitation #2 SNMP Agent&lt;br /&gt;&lt;br /&gt;You'll notice that "SNMP Master Agent" service fails to start if CUCM was installed on VMWare.  This will cause problem if you're testing CER (Emergency Responder).  CER needs SNMP connection to CUCM to retrieve phone info.  The workaround would be issue the command on CUCM root shell "/sbin/chkconfig snmpd off".  Then reboot the server.&lt;br /&gt;&lt;br /&gt;Limitation #3 VMWare Acknowledgement&lt;br /&gt;&lt;br /&gt;Since from version 7, CUCM requires you acknowledge the "VMWare agreement" during startup.  If you reboot the CUCM remotely (either via OS Admin web or via CLI), the server will not boot up until you press the "Agree" button on the &lt;span style="font-weight: bold;"&gt;console&lt;/span&gt;.  The workaround is to edit /usr/local/bin/base_scripts/hardware_check.sh,&lt;br /&gt;&lt;br /&gt;change the line&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if [ "$hwmodel" = "&lt;span style="font-weight: bold;"&gt;vmware&lt;/span&gt;" ]; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; if [ "$hwmodel" = "&lt;span style="font-weight: bold;"&gt;foobar&lt;/span&gt;" ]; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On newer versions,&lt;br /&gt;&lt;br /&gt;Change the line&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if isHardwareUnsupported || isOriginalHardwareUnsupported ; then&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;To&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &lt;b&gt;#&lt;/b&gt;if isHardwareUnsupported || isOriginalHardwareUnsupported ; then&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 0 ; then&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Besides the limitations mentioned about, CER has another limitation with VMWare.&lt;br /&gt;&lt;br /&gt;CER retrieve information from CUCM via SNMP.  This includes the machine type of CUCM.  If CUCM is running on VMWare, the machine type will be "unsupported" from CER point of view.  The workaround is to edit /usr/local/CER/etc/devices.xml file on the CER box.  Add the following tag under "CcmHost" family tag:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;member OID="1.3.6.1.4.1.99.1.1.3.28" OIDNAME="vm-ware" CAPTION="VMWare"&lt;/blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;member caption="VMWare" oid="1.3.6.1.4.1.99.1.1.3.28" oidname="vm-ware"&gt;&lt;/member&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;member caption="VMWare" oid="1.3.6.1.4.1.99.1.1.3.28" oidname="vm-ware"&gt;&lt;/member&gt;&lt;/span&gt;&lt;member caption="VMWare" oid="1.3.6.1.4.1.99.1.1.3.28" oidname="vm-ware"&gt;&lt;/member&gt;Reboot CER or restart Phone Tracking Engine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UCCX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So far, UCCX has been running on "Cisco OS" 2000/2003, which in fact is Windows 2000/2003.  However, UCCX will refuse to install if Cisco specific registry key is missing.  Follow instructions on &lt;a href="http://www.tek-tips.com/viewthread.cfm?qid=930128&amp;amp;page=1"&gt;http://www.tek-tips.com/viewthread.cfm?qid=930128&amp;amp;page=1&lt;/a&gt; to add the registry key.&lt;br /&gt;&lt;br /&gt;Good news is: VMWare is supported since Cisco OS 2003.1.4.  If you're using OS 2003.1.4 or newer, you don't need the registry hack.&lt;br /&gt;&lt;br /&gt;Another tips is: if you want to bypass the hard drive/memory requirement check, you may create an empty file named "crstest.ini" on C:\.  Then CRS won't require 72G HDD/2G memory to install.  Of course, this is for testing purpose.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Root shell on UC appliance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many of the hacking above requiress the root access to the appliance (CUCM, CER, etc.).  Just use Google to find the answer.  For example: &lt;a href="http://www.blindhog.net/how-to-get-root-access-on-call-manager-56-server/"&gt;http://www.blindhog.net/how-to-get-root-access-on-call-manager-56-server/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-3072746434544153257?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/3072746434544153257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/07/cisco-software-on-vmware.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3072746434544153257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3072746434544153257'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/07/cisco-software-on-vmware.html' title='UC Appliance on VMWare'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-5478032805978520715</id><published>2009-06-20T17:48:00.000-07:00</published><updated>2009-06-20T19:40:11.399-07:00</updated><title type='text'>Virtualize everything!</title><content type='html'>People in network world should have heard about 'simulators'.  A router simulator gives you the command line interface you can practice on.&lt;br /&gt;&lt;br /&gt;With more and more network equipments move to open source OS (linux) and x86 platform, the word 'simulator' has another meaning - virtualization.  Which means, you can run the software (such as IOS, JUNOS, etc.) on a x86 computer just like it runs on the original hardware.&lt;br /&gt;&lt;br /&gt;I still remember the excitment when I discover that I can run JUNOS on a 486 PC back in 1999.  I built my first JNICE lab with nine of those PCs ($50 each).&lt;br /&gt;&lt;br /&gt;Now, working in Cisco Unified Communication team, one of the challenges I'm facing is the availability of equipments.  Sure we have access to IP phones, routers and switches.  But getting mobile phones (BlackBerry, Nokia, WinMobile, Android, iPhone) and ASA (Adaptive Security Appliance) for each engineer is not as easy as we thought.&lt;br /&gt;&lt;br /&gt;Mobile phones are required to test CUMC (Cisco Unified Mobile Communicator).  ASA is required to test CUMA (Cisco Unified Mobility Advantage), Phone Proxy and CUPS Inter-domain Federation.&lt;br /&gt;&lt;br /&gt;Fortunately, with simulators, everything can be run on a PC (or a virtual machine).&lt;br /&gt;&lt;br /&gt;Below is a &lt;a href="https://www.blackberry.com/Downloads/entry.do?code=060AD92489947D410D897474079C1477"&gt;BB simulator&lt;/a&gt; and &lt;a href="http://asa_project.gromnet.net/?p=33"&gt;ASA simulator&lt;/a&gt; running on a VM.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/Sj2HvFbmTSI/AAAAAAAAAFE/gRNCKVOT2sQ/s1600-h/CUMC_ASA.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 259px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/Sj2HvFbmTSI/AAAAAAAAAFE/gRNCKVOT2sQ/s400/CUMC_ASA.PNG" alt="" id="BLOGGER_PHOTO_ID_5349581175367552290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When running a network appliance image (such as JUNOS or ASA) on a PC or VM, one thing to notice is that you cannot use the monitor and keyboard as console.  Why?  Because a router does not have video card and keyboard.  The 'console' port is the serial port.&lt;br /&gt;&lt;br /&gt;If you are using a PC, connect the console cable to the COM port.&lt;br /&gt;&lt;br /&gt;If you are using a VM, you may direct the serial output to a named piple.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/Sj2dbP0DEfI/AAAAAAAAAFM/VSxyK5tATN4/s1600-h/serial.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 354px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/Sj2dbP0DEfI/AAAAAAAAAFM/VSxyK5tATN4/s400/serial.png" alt="" id="BLOGGER_PHOTO_ID_5349605023812882930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For the VM that running the appliance image (such as JUNOS or ASA), set the 'near end' to 'Server'.  Set the 'far end' to 'A Virtual Machine'.  You may use any name for 'pipe name'.&lt;br /&gt;&lt;br /&gt;For the VM that acting as 'terminal' (such as WinXP or Linux), set the 'near end' to 'Client'.  Set the 'far end' to 'A Virtual Machine'.  The 'pipe name' needs to match the one you configured above.  After this, it's like there's a serial cable connects the terminal VM(WinXP) and the appliance VM (ASA).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-5478032805978520715?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/5478032805978520715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/06/virtualize-everything.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5478032805978520715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5478032805978520715'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/06/virtualize-everything.html' title='Virtualize everything!'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z4Dj73m3UV8/Sj2HvFbmTSI/AAAAAAAAAFE/gRNCKVOT2sQ/s72-c/CUMC_ASA.PNG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6151372319721278938</id><published>2009-06-06T14:14:00.000-07:00</published><updated>2009-06-06T14:16:44.389-07:00</updated><title type='text'>It's live - "Ask Expert" on Netpro</title><content type='html'>If you have questions regarding CUPS/CUPC, presence, OCS/MOC, etc., you may ask questions on Netpro forum.  They have a "Ask the Expert" event this week for CUPS and presence.&lt;br /&gt;&lt;br /&gt;Link as below:&lt;a href="http://forum.cisco.com/eforum/servlet/NetProf?page=netprof&amp;amp;forum=Unified%20Communications%20and%20Video&amp;amp;topic=Unified%20Communications%20Applications&amp;amp;topicID=.ee835d2&amp;amp;fromOutline=&amp;amp;CommCmd=MB%3Fcmd%3Ddisplay_location%26location%3D.2cd34986"&gt;&lt;br /&gt;http://forum.cisco.com/eforum/servlet/NetProf?page=netprof&amp;amp;forum=Unified%20Communications%20and%20Video&amp;amp;topic=Unified%20Communications%20Applications&amp;amp;topicID=.ee835d2&amp;amp;fromOutline=&amp;amp;CommCmd=MB%3Fcmd%3Ddisplay_location%26location%3D.2cd34986&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6151372319721278938?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6151372319721278938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/06/its-live-ask-expert-on-netpro.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6151372319721278938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6151372319721278938'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/06/its-live-ask-expert-on-netpro.html' title='It&apos;s live - &quot;Ask Expert&quot; on Netpro'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-4482362337570938111</id><published>2009-05-26T20:30:00.000-07:00</published><updated>2009-05-26T20:52:20.950-07:00</updated><title type='text'>UC Appliance Command Line - Part 2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Part 2 - Start, Stop, Restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;utils service list&lt;/blockquote&gt;This command will list all services on an appliance.  It's usually used with the parameter 'page', so it'll pause at each page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/Shy1OjDbHSI/AAAAAAAAAE8/gUglAaDGdbM/s1600-h/utils+service+list.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 340px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/Shy1OjDbHSI/AAAAAAAAAE8/gUglAaDGdbM/s400/utils+service+list.png" alt="" id="BLOGGER_PHOTO_ID_5340342519686962466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;utils service stop&lt;br /&gt;utils service start&lt;br /&gt;utils service restart&lt;/blockquote&gt;These commands are used to stop/start/restart services.  For example, if you'd like to restart "Cisco Tomcat" service, you type "utils service restart Cisco Tomcat".&lt;br /&gt;&lt;blockquote&gt;utils system shutdown&lt;br /&gt;utils system restart&lt;br /&gt;&lt;/blockquote&gt;These commands are used to shutdown or restart the system.&lt;br /&gt;&lt;blockquote&gt;utils system switch-version&lt;/blockquote&gt;This command is used to switch software version (if you have two versions installed).  For your information, Cisco Unified Appliance will keep two versions of software on hard drive - one in the root partition, the other one in "PartB" partition.  This provides you an option to fall back to an old version.&lt;br /&gt;&lt;br /&gt;To see the versions installed, use the commands below:&lt;br /&gt;&lt;blockquote&gt;show version active&lt;br /&gt;show version inactive&lt;br /&gt;&lt;/blockquote&gt;Every time you run "utils system switch-version", it'll make the active partition inactive and make the inactive partition active.&lt;br /&gt;&lt;br /&gt;Please note that each partition (version) has it's own database, which means they don't share the same database (configuration).  If you switched version, you might lose any changes you made in the other version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-4482362337570938111?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/4482362337570938111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/05/uc-appliance-command-line-part-2.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4482362337570938111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4482362337570938111'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/05/uc-appliance-command-line-part-2.html' title='UC Appliance Command Line - Part 2'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z4Dj73m3UV8/Shy1OjDbHSI/AAAAAAAAAE8/gUglAaDGdbM/s72-c/utils+service+list.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-812016963896354683</id><published>2009-05-13T19:57:00.000-07:00</published><updated>2009-05-13T21:30:11.619-07:00</updated><title type='text'>UC Appliance Command Line - Part 1</title><content type='html'>Cisco built many Unified Communication "Appliance" based on Linux, such as CUCM (Communication Manager, a.k.a. CallManager), CUPS (Presence Server), CER (Emergency Responder, a.k.a. e911), etc.&lt;br /&gt;&lt;br /&gt;Even though those appliances are built on Linux, Cisco does not give you shell access to the box (if you know about Linux, you know what a "shell" means).  This is for security and maintenance purpose.&lt;br /&gt;&lt;br /&gt;However, some of the maintenance work needs to be done via command line.  Cisco built a customized command line interface (CLI) for UC appliances.  Since most of the UC appliances share the same OS, they also share the same sets of CLI commands.&lt;br /&gt;&lt;br /&gt;Mastering some of the CLI commands would make your life easier (or you may impress your colleagues or boss by showing off some of the rarely used commands).&lt;br /&gt;&lt;br /&gt;Some basics:&lt;br /&gt;0) To get access to the CLI, you need the "OS Administration" credential.  "OS Administration" credential is stored in /etc/passwd file, while "Application Administration" credential is stored in database.&lt;br /&gt;&lt;br /&gt;1) To access the CLI, you may either go to the sever console or SSH to it.  (Telnet is not supported for security reasons).&lt;br /&gt;&lt;br /&gt;2) Cisco keeps adding new commands to CLI.  Some of the commands are available on new versions (such as CUCM 7.x) but not available on old versions (such as CUCM 6.x).&lt;br /&gt;&lt;br /&gt;3) You may always use question mark (?) and tab key to get help.&lt;br /&gt;&lt;br /&gt;4) Unlink IOS, UC Appliance CLI doesn't take abbreviations.  You'll have to give the full command (either type it yourself or use the tab key).&lt;br /&gt;&lt;br /&gt;5) "show" command is to display information&lt;br /&gt;&lt;br /&gt;6) "set" and "unset" commands are to change configuration&lt;br /&gt;&lt;br /&gt;7) "utils" command is run maintenance utilities (such as system reboot, backup/restore, etc.)&lt;br /&gt;&lt;br /&gt;8) "run sql" command is to run SQL query against the database.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part 1: Getting system info&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;show status&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SguO0pA0YVI/AAAAAAAAAEk/kj7sckZwErM/s1600-h/show_status.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 264px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SguO0pA0YVI/AAAAAAAAAEk/kj7sckZwErM/s400/show_status.png" alt="" id="BLOGGER_PHOTO_ID_5335515218564112722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This command will give you the following information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hostname of the box&lt;/li&gt;&lt;li&gt;Current date/time on the box&lt;/li&gt;&lt;li&gt;Current time zone configured on the box&lt;/li&gt;&lt;li&gt;Current version&lt;/li&gt;&lt;li&gt;How long the system has been up and running&lt;/li&gt;&lt;li&gt;CPU/Memory/Hard Disk usage&lt;/li&gt;&lt;/ul&gt;For example, if you cannot access the web interface of your CUCM box, you open a case.  TAC engineer asks you what version is the CUCM.  If you can access to the CLI, you may find out the version.  This could possibly speed up the resolution.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;show hardware&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_Z4Dj73m3UV8/SguSPW0YEiI/AAAAAAAAAEs/ttu7U4zZJ_U/s1600-h/show_hardware.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 193px;" src="http://lh5.ggpht.com/_Z4Dj73m3UV8/SguSPW0YEiI/AAAAAAAAAEs/ttu7U4zZJ_U/s400/show_hardware.png" alt="" id="BLOGGER_PHOTO_ID_5335518976071438882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This command would give you the hardware information (such as serial number of the box).  If you need to find out the serial number remotely, you may SSH to the box and use this command.  Serial number is critical for entitlement and tech support.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;show network eth0 detail&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SguSkIyyEAI/AAAAAAAAAE0/VyaTNryISCY/s1600-h/show_network_eth0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 163px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SguSkIyyEAI/AAAAAAAAAE0/VyaTNryISCY/s400/show_network_eth0.png" alt="" id="BLOGGER_PHOTO_ID_5335519333083910146" border="0" /&gt;&lt;/a&gt;This gives you the following information:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IP address of the box&lt;/li&gt;&lt;li&gt;MAC address&lt;/li&gt;&lt;li&gt;DNS&lt;/li&gt;&lt;li&gt;Gateway&lt;/li&gt;&lt;/ul&gt;This command is useful if you need to check the MAC address quickly (for licensing purpose).&lt;br /&gt;&lt;br /&gt;To see all "show" commands, type "show ?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-812016963896354683?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/812016963896354683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/05/uc-appliance-command-line-part-1.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/812016963896354683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/812016963896354683'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/05/uc-appliance-command-line-part-1.html' title='UC Appliance Command Line - Part 1'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z4Dj73m3UV8/SguO0pA0YVI/AAAAAAAAAEk/kj7sckZwErM/s72-c/show_status.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1257164247549841771</id><published>2009-05-07T20:10:00.001-07:00</published><updated>2009-05-08T14:45:41.400-07:00</updated><title type='text'>"Ask The Expert" on Cisco NetPro Forum</title><content type='html'>Sorry I didn't post any new article lately.&lt;br /&gt;&lt;br /&gt;I'll host a "Ask The Expert" event on &lt;a href="http://forum.cisco.com/eforum/servlet/NetProf?page=netprof&amp;amp;forum=Unified%20Communications%20and%20Video&amp;amp;topic=Unified%20Communications%20Applications&amp;amp;CommCmd=MB%3Fcmd%3Ddisplay_messages%26mode%3Dnew%26location%3D.ee835d2"&gt;Cisco NetPro&lt;/a&gt; forum June 8 - June 12.&lt;br /&gt;&lt;br /&gt;For those new to the forum, "Ask The Expert" is a periodic event that the subject matter expert (SME) would answer questions on a specific topic (such as licensing, contact center, video conferencing, etc.).  Of course, I'll be answering questions on CUPS/CUPC and presence-related questions.  Bring your toughest questions!  :)&lt;br /&gt;&lt;br /&gt;Though I cannot guarantee every question be answered immediately, I'll make sure they get to the right people.&lt;br /&gt;&lt;br /&gt;We believe Unified Communication will make our life better (though the process of deploying it might make your life tougher... LOL)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1257164247549841771?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1257164247549841771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/05/ask-expert-on-cisco-netpro-forum.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1257164247549841771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1257164247549841771'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/05/ask-expert-on-cisco-netpro-forum.html' title='&quot;Ask The Expert&quot; on Cisco NetPro Forum'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1025906745327067900</id><published>2009-04-04T14:20:00.000-07:00</published><updated>2010-09-14T07:41:26.067-07:00</updated><title type='text'>Book, charity and life</title><content type='html'>I'm a customer support engineer that supporting Cisco Unified Communication products.&lt;br /&gt;&lt;br /&gt;I built this blog and wrote the book "&lt;a href="http://www.lulu.com/content/5552336"&gt;Deploying Cisco Unified Prsence&lt;/a&gt;" with the intention of helping my customers (and my employer). The book was priced very cheap (39.99). After deducting the manufaturer and distribution cost, the revenue I received from retailers is $5.16 for each copy sold (it'll be higher if it was sold from the publisher's website).&lt;br /&gt;&lt;br /&gt;For some reasons, my motive was questioned. (Sorry I can't disclose more details. But it makes me feel really bad.)&lt;br /&gt;&lt;br /&gt;Thus I make an announcement here (and Lulu.com), that all (100%) revenue from this book will go to "&lt;a href="http://www.redcross.org/donate/donate.html"&gt;American Red Cross International Relief Fund&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;I'll try my best to answer any technical questions you have. I'll be hosting a "Ask the Expert" session on Cisco &lt;a href="http://forum.cisco.com/eforum/servlet/NetProf?page=main"&gt;NetPro Forum&lt;/a&gt; in June 2009 (on CUPS/CUPC products).&lt;br /&gt;&lt;br /&gt;God bless America. God bless you!&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Donation receipts for Q1 2009:&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/Sdjkl-LRnsI/AAAAAAAAAEU/SrEHc_P1CyU/s1600-h/RedCross-1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5321254300734824130" style="margin: 0px 10px 10px 0px; float: left; width: 84px; height: 200px;" alt="" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/Sdjkl-LRnsI/AAAAAAAAAEU/SrEHc_P1CyU/s200/RedCross-1.png" border="0" /&gt;&lt;/a&gt; &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SdjkqPj35EI/AAAAAAAAAEc/ig4Yvl21OmE/s1600-h/RedCross-2.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5321254374120875074" style="margin: 0px 10px 10px 0px; float: left; width: 84px; height: 200px;" alt="" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SdjkqPj35EI/AAAAAAAAAEc/ig4Yvl21OmE/s200/RedCross-2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SdjkTrAF88I/AAAAAAAAAEM/tHuIM1i4h2A/s1600-h/RedCross-1.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1025906745327067900?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1025906745327067900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/04/book-charity-and-life.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1025906745327067900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1025906745327067900'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/04/book-charity-and-life.html' title='Book, charity and life'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z4Dj73m3UV8/Sdjkl-LRnsI/AAAAAAAAAEU/SrEHc_P1CyU/s72-c/RedCross-1.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-5484105436926601077</id><published>2009-03-31T10:44:00.000-07:00</published><updated>2009-04-06T14:04:43.193-07:00</updated><title type='text'>"Hardware not supported"</title><content type='html'>When installing Cisco Unified Communication products (CUCM, CUPS, CER, UC, CUMA, etc.), you might get a message saying that the hardware is not supported. It's a pain in the butt. Espeically when you (or you client) spent quite a few $$$ to get a brand new server and yielded "not supported".&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;History&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cisco itself does not manufacture servers (not until lately, with introducing of 'Unified Computing'). Cisco OEM servers (x86) from IBM, HP and Dell and brand it as "Cisco MCS" (Media Convergence Server). Cisco also labels those servers with it's own model number. For example, MCS-7845-H2 is actually a HP DL380 G5 server.&lt;br /&gt;&lt;br /&gt;Cisco recommends customers purchase "Cisco MCS" server for Unified Communication products. The major advantage of that is it guarantees the compatibility between hardware and software. For example, you may find the CUCM compatibility matrix here: &lt;a href="http://www.cisco.com/en/US/prod/collateral/voicesw/ps6790/ps5748/ps378/prod_brochure0900aecd8062a4f9.html"&gt;http://www.cisco.com/en/US/prod/collateral/voicesw/ps6790/ps5748/ps378/prod_brochure0900aecd8062a4f9.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The mess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even though Cisco recommends customers purchase MCS servers, it does not prohibit people from buying "equivalence" from manufacturers directly (ie. from IBM/HP/Dell).&lt;br /&gt;&lt;br /&gt;If you decided to buy "equivalence", be careful, Cisco has very strict requirements on that. If you didn't order the right parts, the server could yield "not supported" (ie. the software install will fail).&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;What does it look for&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;When the software being installed, it usually looks for the following attributes on the system:&lt;br /&gt;1) Machine type (model number in BIOS)&lt;br /&gt;2) Hard drive and RAID card&lt;br /&gt;3) CPU speed&lt;br /&gt;4) Memory&lt;br /&gt;&lt;br /&gt;Frequently seen issues:&lt;br /&gt;&lt;br /&gt;#1 You have an MCS I-series ("I" stands for IBM) server from Cisco. One day, the motherboard burnt out. IBM replaced the motherboard (yes, it's IBM who services the server, though you bought it from Cisco).&lt;br /&gt;&lt;br /&gt;You tried to reinstall CUCM 6.1.2, but it kept saying the server was not supported.&lt;br /&gt;&lt;br /&gt;Cause of the problem:&lt;br /&gt;In IBM BIOS, there's a field called "Machine Type". The generic IBM machine type is different with Cisco MCS machine type.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;1) Obtain a BIOS update disk for the server from here (2000.4.4 supported version 1.14, this link is for 1.17, please note that 1.17 has NOT been tested): http://www-304.ibm.com/jct01004c/systems/support/supportsite.wss/docdisplay?lndocid=MIGR-57074&amp;amp;brandind=5000008&lt;br /&gt;&lt;br /&gt;2) Boot to the disk and flash the BIOS. During the BIOS flash, you should receive a prompt as to whether or not you would like to change the MTM. Please select yes, and enter the correct machine type (e.g. 884xxxx)&lt;br /&gt;&lt;br /&gt;Note: the above should be performed by a Cisco TAC engineer.&lt;br /&gt;&lt;br /&gt;#2 You have an MCS H-series ("H" stands for HP) server from Cisco. One day, the motherboard burnt out. HP replaced the motherboard (yes, it's HP who services the server, though you bought it from Cisco).&lt;br /&gt;&lt;br /&gt;You tried to reinstall CUPS 6.0.4, but it kept saying the server was not supported.&lt;br /&gt;&lt;br /&gt;Cause of the problem:&lt;br /&gt;Your old motherboard was with a CPU at speed of 2.13 Ghz. Since the 2.13 Ghz CPU was end of life, HP gave you a 2.8 Ghz CPU and thought you'd be happy with that.&lt;br /&gt;&lt;br /&gt;Resolution:&lt;br /&gt;Though you might be happy with the faster CPU, the software was not happy at all. Based on the machine type, the software expect a 2.13Ghz CPU.&lt;br /&gt;&lt;br /&gt;#3 You ordered a server from HP, you made sure the CPU, memory, hard disks meet the Cisco requirements. But the software stills said "hardware not supported".&lt;br /&gt;&lt;br /&gt;Root cause of the problem:&lt;br /&gt;You forgot to order a "PCI-X/E Mixed Riser Option" from HP.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;How do we find the "equivalence" of a MCS server (so you can order it from HP/IBM)?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Step 1: Go to product compatibility page and find a supported MCS server. e.g. for CUPS 6, go to &lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/cups/7_0/english/compatibility/cupcompatibility.html#wp77512"&gt;http://www.cisco.com/en/US/docs/voice_ip_comm/cups/7_0/english/compatibility/cupcompatibility.html#wp77512&lt;/a&gt;. Let say, you picked MCS-7825-I3-IPC1, which is good for CUPS 6.0.4 new install.&lt;br /&gt;&lt;br /&gt;Step 2: Go to this page and click on IBM or HP link (&lt;a href="http://www.cisco.com/en/US/products/hw/voiceapp/ps378/product_solution_overview_list.html"&gt;http://www.cisco.com/en/US/products/hw/voiceapp/ps378/product_solution_overview_list.html&lt;/a&gt;). MCS-7825-&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,0,0)"&gt;I&lt;/span&gt;3-IPC1 is an IBM server. So you would click on the IBM link.&lt;br /&gt;&lt;br /&gt;Step 3: Search for the 2nd and 3rd part of the MCS model number. e.g. 7825-I3 in this case. You'll find something like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="content" style="FONT-WEIGHT: bold"&gt;IBM x3250 with Intel 3050 Xeon 2.13-GHz Processor&lt;/span&gt;&lt;br /&gt;"... &lt;span class="content"&gt;It is the configuration equivalent of the Cisco MCS 7825-I3"&lt;br /&gt;&lt;br /&gt;And you'll find the parts list for it:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="pTableCaptionCMT" style="FONT-WEIGHT: normal; MARGIN: 12pt 0pt 6pt 47pt; TEXT-TRANSFORM: none; TEXT-INDENT: -47pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;&lt;b&gt;Table 19.&lt;/b&gt; Non-Country Specific Hardware for IBM x3250 with Intel 3050 Xeon 2.13-GHz Processor*&lt;/p&gt;&lt;a name="wp9001349"&gt;&lt;/a&gt;&lt;table id="wp9000507table4000019" bordercolor="#adadad" cellspacing="0" cellpadding="6" width="80%" border="1"&gt;&lt;tbody&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000507"&gt;&lt;/a&gt;&lt;p class="pChart_headCMT" style="FONT-WEIGHT: bold; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal"&gt;Quantity&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000508"&gt;&lt;/a&gt;&lt;p class="pChart_headCMT" style="FONT-WEIGHT: bold; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal"&gt;IBM Type-Model Feature&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000509"&gt;&lt;/a&gt;&lt;p class="pChart_headCMT" style="FONT-WEIGHT: bold; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal"&gt;Description&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000510"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000511"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;4364-AC1** or&lt;br /&gt;4365-AC1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000512"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;IBM System x3250&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000513"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000514"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;0992&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000515"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;CPU Retention Module&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000516"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000517"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1128&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000518"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;x3250 Revision 1 System Planar&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000519"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000520"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1272&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000521"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Dual Core Intel Xeon 3050 (2.13 GHz / 2M L2)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000522"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000523"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1903&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000524"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1-GB DDR2 667 SDRAM DIMM Memory&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000525"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000526"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2007&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000527"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;BIOS GBM&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000528"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000529"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2046&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000530"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Front Bezel&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000531"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000532"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2088&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000533"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;3.5inch DASD Cage&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000534"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000535"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2091&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000536"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;SATA Filler 3.5inch&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000537"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000538"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2268&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000539"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Base Hardware&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000540"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000541"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;4144&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000542"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;CDRW/DVD Combo V UltraBay Enhanced&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000543"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000544"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;4256&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000545"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Rack Mount Kit&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000546"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000547"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;4367&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000548"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Simple Swap SATA RAID Kit&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000549"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000550"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;5291&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000551"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;160GB 7200 RPM 3.5 inch Simple Swap SATA HDD&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="top" align="left"&gt;&lt;td&gt;&lt;a name="wp9000552"&gt;&lt;/a&gt;&lt;p class="pChart_subheadCMT" style="MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000553"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;9011&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;a name="wp9000554"&gt;&lt;/a&gt;&lt;p class="pChart_bodyCMT" style="FONT-WEIGHT: normal; MARGIN: 3pt; TEXT-TRANSFORM: none; TEXT-INDENT: 0pt; FONT-STYLE: normal; TEXT-ALIGN: left; FONT-VARIANT: normal; TEXT-DECORATION: none"&gt;Internal RAID - Cabled only - setup by Customer&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span class="content"&gt;You'll have to order each piece on the list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;If we got a "hardware not supported" message, how do we know which part is not meeting the requirements?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To see the reason of the failure, you need to review the /tmp/hw_validation_err file on the hard drive. You may press ALT+F2 while the installation is in progress (before it gets to halt state). Then you'll get to the Linux command prompt. Type the command below to display the content of the file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cat /tmp/hw_validation_err&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Other useful files include: /tmp/hw_info, /tmp/anaconda.log and /tmp/install.log.&lt;br /&gt;&lt;/span&gt;&lt;span class="content"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-5484105436926601077?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/5484105436926601077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/03/hardware-not-supported.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5484105436926601077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5484105436926601077'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/03/hardware-not-supported.html' title='&quot;Hardware not supported&quot;'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8380470750945901655</id><published>2009-03-26T17:23:00.000-07:00</published><updated>2009-03-26T17:33:25.721-07:00</updated><title type='text'>Licensing</title><content type='html'>Licensing is another mysterious area in Unified Communication.  Each product has its own licensing model.&lt;br /&gt;&lt;br /&gt;CUCM (CallManager)&lt;br /&gt;&lt;br /&gt;CUCM license resides on publisher.  The 'host ID' in license file needs to match the MAC address of the publisher.&lt;br /&gt;&lt;br /&gt;There are three different types of license for CUCM: node license, feature license and device license (DLU).  Node license is for server node.  Feature license is required for upgrade or CUCM 7 and above.  Device license is required to configure devices (such as phones).&lt;br /&gt;&lt;br /&gt;CER (Emergency Responder or e911)&lt;br /&gt;&lt;br /&gt;CER license resides on publisher and subscriber (if you have CER subscriber).  License file on pub needs to match the MAC address of pub.  License file on sub needs to match the MAC address of sub.&lt;br /&gt;&lt;br /&gt;If you received a "license expired" message on a two-node CER deployment, 99% of the chance you don't have a license for sub (wrong MAC address).&lt;br /&gt;&lt;br /&gt;CUPS (Presence)&lt;br /&gt;&lt;br /&gt;Like CUCM, CUPS also has node license and device license.  Node license resides on CUPS publisher.  Device license resides on CUCM (it's just a regular DLU license).&lt;br /&gt;&lt;br /&gt;Node license could contain proxy or PE (Presence Engine) or both.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8380470750945901655?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8380470750945901655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/03/licensing.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8380470750945901655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8380470750945901655'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/03/licensing.html' title='Licensing'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2616262429686613077</id><published>2009-03-11T09:18:00.000-07:00</published><updated>2009-05-12T19:48:02.570-07:00</updated><title type='text'>CCIE Voice Lab v3</title><content type='html'>Cisco is going to change the CCIE Voice Lab in mid-July 2009. Major changes are:&lt;br /&gt;&lt;br /&gt;1) Remove analog devices (such as VG248, ATA)&lt;br /&gt;2) Remove CatOS (Catalyst 65xx)&lt;br /&gt;3) Replace CCM with CUCM 7 (Linux Appliance)&lt;br /&gt;4) Replace Unity with Unity Connection 7 (Linux Appliance)&lt;br /&gt;5) Add CUPS 7 (Linux Appliance)&lt;br /&gt;6) Add SIP phones&lt;br /&gt;&lt;br /&gt;IPExpert (a training company) provides some practice labs. The topology would be like below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/Sbf6E74nnmI/AAAAAAAAADM/IhyvnJX6kH4/s1600-h/v3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 287px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/Sbf6E74nnmI/AAAAAAAAADM/IhyvnJX6kH4/s400/v3.png" alt="" id="BLOGGER_PHOTO_ID_5311989248208379490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are some tips if you're going to build your own lab.&lt;br /&gt;&lt;br /&gt;PSTN-WAN simulator&lt;br /&gt;&lt;br /&gt;As shown in the diagram above, we have a PSTN cloud and a Frame-Relay cloud. We can use a single router to simulate that. And this router could also be the terminal server.&lt;br /&gt;&lt;br /&gt;I would choose a Cisco 2811 router with the following modules:&lt;br /&gt;&lt;br /&gt;PVDM2-16 (or other PDVM resource).&lt;br /&gt;HWIC-4T : 4-port Serial module for Frame-Relay simulation.&lt;br /&gt;VWIC2-1MFT-T1/E1 : 2-port T1/E1 module for PSTN simulation. You need at least three ports. So you may order two of these. Or to save some money, order one 2-port module and one 1-port module&lt;br /&gt;HWIC-8A &amp;amp; CAB-OCTAL-ASYNC : 8-port async module for terminal service&lt;br /&gt;&lt;br /&gt;Don't forget the female serial cable (CAB-SS-V35MT). You need at least three.&lt;br /&gt;&lt;br /&gt;On HQ, BR1, and BR2 Gateways:&lt;br /&gt;&lt;br /&gt;PVDM2-8 (or other PDVM2)&lt;br /&gt;HWIC-1T &amp;amp; CAB-SS-V35MT&lt;br /&gt;VWIC2-1MFT-T1/E1&lt;br /&gt;&lt;br /&gt;On BR1 and BR2 Gateways&lt;br /&gt;HWIC-4ESW-POE : Ether net module to power up the IP phones.&lt;br /&gt;&lt;br /&gt;On BR2 Gateway&lt;br /&gt;NM-CUE : Unity Express Module&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Switch&lt;br /&gt;&lt;br /&gt;Any Cisco IOS switch that supports PoE.&lt;br /&gt;&lt;br /&gt;Servers&lt;br /&gt;&lt;br /&gt;I recommend using virtual machine(VM) for the lab:&lt;br /&gt;&lt;br /&gt;1. If you don't use VM, you're going to need the expensive Cisco/HP/IBM server to install CUCM, UC, CUPS.&lt;br /&gt;2. If you don't use VM, you're going to need license files for CUCM, UC, CUPS.&lt;br /&gt;3. If you don't use VM, you're going to need 5 servers and a couple of workstations (to simulate soft phone and run CUPC/CAD)&lt;br /&gt;4. With VM, you can easily clone VMs, which saves you lots of time.&lt;br /&gt;&lt;br /&gt;I myself use VMWare.  I have no experience on Microsoft Virtual PC (HyperV).&lt;br /&gt;&lt;br /&gt;Here are some caveats you need to know about VMWare:&lt;br /&gt;&lt;br /&gt;1) You may either use "VMWare Server" (a.k.a. GSX) or "VMWare Infrastructure") (a.k.a. ESX)&lt;br /&gt;2) GSX is free while ESX is commercial license&lt;br /&gt;3) VMs on GSX has issues with NTP.  This is a known issue.&lt;br /&gt;4) ESX does not support audio device.  Your VM might need an audio device to launch soft phone (such as CIPC or IP Blue).   Try google "virtual audio cable" and you should find a solution.&lt;br /&gt;&lt;br /&gt;Following is my lab set up with four 2811 routers, one 3560 switch, one PC (8G RAM, 750G HDD):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/Sbf5776ccSI/AAAAAAAAADE/SoT4a6M4MEE/s1600-h/htluo-lab.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 302px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/Sbf5776ccSI/AAAAAAAAADE/SoT4a6M4MEE/s400/htluo-lab.png" alt="" id="BLOGGER_PHOTO_ID_5311989093597212962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When creating VM, make sure you choose RHEL 4(RedHat), 32-bit, one CPU.  For CUCM 7, you need at least 1G RAM and 60G hard drive.  For CUPS 7, you need 1296M RAM and 75G hard drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2616262429686613077?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2616262429686613077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/03/ccie-voice-lab-v3.html#comment-form' title='52 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2616262429686613077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2616262429686613077'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/03/ccie-voice-lab-v3.html' title='CCIE Voice Lab v3'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z4Dj73m3UV8/Sbf6E74nnmI/AAAAAAAAADM/IhyvnJX6kH4/s72-c/v3.png' height='72' width='72'/><thr:total>52</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-7733920052773292840</id><published>2009-03-03T19:24:00.000-08:00</published><updated>2009-03-06T09:54:18.672-08:00</updated><title type='text'>Change Notification</title><content type='html'>On Cisco Unified Communication products, there's a terminology called "Change Notification".&lt;br /&gt;&lt;br /&gt;What is "Change Notification"?  And how does it affect products' functionality?&lt;br /&gt;&lt;br /&gt;Typical symptom of "Change Notification Issue" is: the changes you made didn't seem to take effect, including:&lt;br /&gt;&lt;br /&gt;#1 You add a new DN (Directory Number) to CUCM.  But you got fast busy when calling that DN.&lt;br /&gt;#2 You try to reset the phone from GUI.  But the phone didn't get reset.&lt;br /&gt;#3 You updated the information on CUCM (such as PIN#, line association, etc.).  But CUPS didn't get those changes.&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;"Change Notification" is one component notify another component that changes have been made.  The other component should react to this notification.&lt;br /&gt;&lt;br /&gt;For example, when you add a new DN to CUCM.  The changes were made to database.  Database component should send notification to the call routing component.  So the call routing function could work properly (calls can be routed to the new DN).&lt;br /&gt;&lt;br /&gt;If change notification was failed (or delayed), the call routing component will use outdated information to route calls.  Thus calls to new DN would failed.&lt;br /&gt;&lt;br /&gt;How do you know if there's a change notification issue?  If the components are on the same box, you may use the command "show tech notify"&lt;br /&gt;&lt;br /&gt;An example output would be link below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;32 I   0 P 118 H 118 T 118 S  80 ccm&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;...&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;38 I   0 P 119 H 119 T 119 S  27 EPAS_SyncAgent[10.88.229.209]:32958&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The line that begin with numbers (32, 38, ...etc.) represent clients (applications) subscribed to change notify&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;32" means it is the 32 client slot on this server.&lt;br /&gt;"I 0" means there are 0 messages in shared memory to be processed by this client.&lt;br /&gt;"P 118" means 118 messages have been processed.&lt;br /&gt;"H  118" means the "Head" message position is 118.&lt;br /&gt;"T 118" means the "Tail" message was in position 118.&lt;br /&gt;This is the optimal situation: 118-118=0 (nothing to be processed).&lt;br /&gt;&lt;br /&gt;“S  80 ccm” means there are 80 tables subscribed by this client and the client name is ccm (callprocssing).&lt;br /&gt;&lt;br /&gt;You may also use RTMT to see the CN (Change Notification) queued.  If you saw non-zero value in queue, either the server was busy, or you got CN issues.  Restarting corresponding process (such as ccm) normally would clean up the queue and solve the problem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/Sa39s4OSdUI/AAAAAAAAACs/-9ppol8gyO0/s1600-h/cn.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 311px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/Sa39s4OSdUI/AAAAAAAAACs/-9ppol8gyO0/s400/cn.png" alt="" id="BLOGGER_PHOTO_ID_5309178483188069698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Change notification across different boxes is a little bit complex.  CN was sent via IPSEC tunnel in this scenario.  IPSEC was controlled by Cluster Manager.  Trust relationship was established during installation (when you add a box into cluster).&lt;br /&gt;&lt;br /&gt;In order to add a new server into a cluster, two requirements have to be met:&lt;br /&gt;1) The hostname of the new box needs to be presented in the Publisher's server list or application list.  (this can be done manually or automatically depends on the server you try to add).&lt;br /&gt;2) You need to know the cluster "secret password".  The password needs to be entered during installation (of the new box).&lt;br /&gt;&lt;br /&gt;If either one was changed after installation, the trust would be broken.  You can verify that by looking at "Cluster Manager" logs.&lt;br /&gt;&lt;br /&gt;If trust was broken, change notification won't work.  For example, changes made on CUCM didn't populate to CUPS.  Restart Sync Agent would force a synchronization, which is not affected by change notification or IPSEC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-7733920052773292840?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/7733920052773292840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/03/change-notification.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7733920052773292840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7733920052773292840'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/03/change-notification.html' title='Change Notification'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z4Dj73m3UV8/Sa39s4OSdUI/AAAAAAAAACs/-9ppol8gyO0/s72-c/cn.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8955896115725707231</id><published>2009-02-27T10:51:00.000-08:00</published><updated>2009-02-27T12:35:52.311-08:00</updated><title type='text'>Phone reset issue</title><content type='html'>Phone reset issue is the most common yet most nasty issue (especially when it's "sporadic" or "intermittent").&lt;br /&gt;&lt;br /&gt;Please note the different between reset and re-register.&lt;br /&gt;&lt;br /&gt;If the phone lost connection with CUCM, it'll try to re-register.  "Lost connection" means, the phone lost three keepalives from CUCM in a row.  By default, those keepalives are sent every 30 seconds.  You may verified that from "Cisco CallManager" trace.  If CUCM sent keepalives but phone didn't receive it, it's usually network issue.&lt;br /&gt;&lt;br /&gt;Reset usually happens when IP address on the phone was lost.  In that case, the phone need to go through a reset process to acquire a new IP address.  This is usually a DHCP (server) problem.&lt;br /&gt;&lt;br /&gt;When the DHCP client reaches half-life, it'll try to renew the lease with DHCP server.  e.g. If the DHCP lease was 72 hours, the client will try to renew at 36 hours.  In normal situation, DHCP server will agree to renew.  So the client can keep its IP address.&lt;br /&gt;&lt;br /&gt;If DHCP server explicitly refused the renew, DHCP client has to release the IP.  This is unusual and probably would be a problem of DHCP server.&lt;br /&gt;&lt;br /&gt;On phone console log, you would see something like below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.854439 DHCP: Restart - delay = 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.866112 DHCP: Sending Release... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.894059 DHCP:  dhcpSendReq: status 0x12300000 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.894946 DHCP: Sending Request... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.899614 DHCP: &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;NAK received&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.901451 DHCP: clear info - IP = 10.2.16.37, state = 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;NOT 08:11:10.902400 DHCP: Sending Release... &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;"NAK received" means the DHCP server refused to renew the lease.&lt;br /&gt;&lt;br /&gt;Next time, if you got phone reset periodically (say, every 36 hours), check DHCP lease time.  If the cycle matches the "half-life", it's most likely DHCH server issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8955896115725707231?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8955896115725707231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/02/phone-reset-issue.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8955896115725707231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8955896115725707231'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/02/phone-reset-issue.html' title='Phone reset issue'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2071470406275127895</id><published>2009-02-25T19:54:00.000-08:00</published><updated>2009-02-26T02:34:10.588-08:00</updated><title type='text'>KISS - Keep It Simple Stupid</title><content type='html'>Most IT guys would know about KISS rule (Keep It Simple Stupid). However, not too many really understand and utilize it. Let's take a look at some Cisco Unified Communication products and see how we can utilize KISS rule.&lt;br /&gt;&lt;br /&gt;The most frequently seen problem description is "it doesn't work".&lt;br /&gt;&lt;br /&gt;"It" could mean lots of things. "It" could involved different products from different products/vendors (such as CUCM/IPCC/CUPS from Cisco, MOC from Microsoft, PBX from Avaya, T1 trunks from AT&amp;amp;T, etc.).&lt;br /&gt;&lt;br /&gt;In order to simply the problem, we have to narrow down the problem quickly.&lt;br /&gt;&lt;br /&gt;For example, if a customer said "My call center agents cannot make phone calls", I would ask "can you make calls from IP phone to IP phone in the same office?". This question could potentially eliminate call center software, voice gateway, PSTN and codec issues.  If you didn't ask, you'd have to troubleshoot those items one by one (assuming you know how to troubleshoot those items)&lt;br /&gt;&lt;br /&gt;Another example is network issue.  All Unified Communication software rely on network connectivity.  They wouldn't function properly if network didn't.  Sometimes, network issue was not as obvious as you had thought.  For example:&lt;br /&gt;&lt;br /&gt;1) Windows Firewall service was stopped.  But traffic wouldn't pass through until you explicitly open ports on it.  (Hard to believe.  But it happens)&lt;br /&gt;&lt;br /&gt;2) You're not using VPN.  But VPN client was running as a service and have firewall option turned on.  (works as designed)&lt;br /&gt;&lt;br /&gt;3) You claimed there was no firewall in the network, but there's a FWSM(Firewall Switching Module) on the switch.&lt;br /&gt;&lt;br /&gt;4) You opened all ports on ASA (Firewall and VPN), CUPC still won't work.  That is because one of the ASA bugs prevent large SIP message from passing through.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;To troubleshoot network issue, you have to:&lt;br /&gt;a) Have visibility on every components in the network&lt;br /&gt;b) Be very good at all network layers (from physical layer to application layer)&lt;br /&gt;c) Know how to use sniffer (such as Wireshark)&lt;br /&gt;&lt;br /&gt;The difficult part is: sometimes you wouldn't think it's the network because it's not that obvious.  Hence you wouldn't go down that path at all.  You have to use KISS rule to find it out.&lt;br /&gt;&lt;br /&gt;Example #1:&lt;br /&gt;Customer: "My CUPC doesn't work."&lt;br /&gt;You: "Doesn't work for all users?  Or for some users?"&lt;br /&gt;Customer: "For those users working from home."&lt;br /&gt;You: "If those users were in office, would CUPC work for them?"&lt;br /&gt;Customer: "Yes."&lt;br /&gt;&lt;br /&gt;Now you know the problem is outside CUPC.  Probably on the network (VPN?)&lt;br /&gt;&lt;br /&gt;Example #2:&lt;br /&gt;Customer: "My CUPC doesn't work."&lt;br /&gt;You: "Doesn't work for all users?  Or for some users?"&lt;br /&gt;Customer: "It works for John but doesn't work for Mary.  And they are both in the same office."&lt;br /&gt;You: "On John's computer, can you log into CUPC with Mary's account?  See if it works?"&lt;br /&gt;Customer: "Yes, it works."&lt;br /&gt;&lt;br /&gt;Now you know the problem is outside CUPC.  Probably on Mary's computer (Firewall?)&lt;br /&gt;&lt;br /&gt;Some KISS rules for Cisco UC (Unified Communication) products:&lt;br /&gt;&lt;br /&gt;#1 If you don't know if it's case sensitive, assume it is.&lt;br /&gt;This becomes a problem when Cisco moved from Windows platform to Linux.&lt;br /&gt;&lt;br /&gt;#2 Because of #1, try to use lower case as much as you could.&lt;br /&gt;Some people use capital case for cosmetic purpose.  This could potentially cause some problems and it could take weeks to troubleshoot.&lt;br /&gt;&lt;br /&gt;#3 Eliminate dependencies as much as possible.&lt;br /&gt;&lt;br /&gt;Example A: When you installing CUCM, you have the option to use DNS, NTP, etc.  Do NOT use them.  If you use them, the installation might fail if those components weren't configured properly.  You chance to configure them after install.  I can't tell you how many problems are caused by DNS (even after install).&lt;br /&gt;&lt;br /&gt;Example B: Don't use same "service account" for different applications.  For example, you used the same active directory account for CUCM LDAP integration, CUPC LDAP search and CUPS Calendar. If CUPS admin change the account password (for whatever reason), it breaks CUCM and CUPC.&lt;br /&gt;&lt;br /&gt;Example C: Get rid of CUCM subscribers during Windows-to-Linux migration.  When you migrate from CCM 3.x/4.x (Windows) to CUCM (Linux), DB replication is always a headache.  DB replication would fail if hostname, IP address was changed during migration (or some other changes between Pub and Sub).  To avoid those headaches, remove subscribers from the cluster before migration.  With a single server (Publisher) in the cluster, your chance of failure is far less than a 10-server cluster.  After migration, you may add the subscriber to cluster one by one.&lt;br /&gt;&lt;br /&gt;#4 Be a "minimalist"&lt;br /&gt;Sales people tend to sell all the "bells and whistles" to customer.  Sure that's the selling point.  But as an engineer, if you want to get the job done smoothly, try to start with the minimum.&lt;br /&gt;&lt;br /&gt;Example A: Use TCP instead of TLS.&lt;br /&gt;Sure we want the security of TLS.  But don't try to run before you can walk.  Make sure the product is working before attempting TLS.  If it didn't work with TLS, you know where the problem is.&lt;br /&gt;&lt;br /&gt;Example B: Use simple passwords.&lt;br /&gt;Sure we want the security of a long, complex passwords (how about 1024-character long?).  But for installation and troubleshooting purpose, keep it short and simple (don't use special characters)&lt;br /&gt;&lt;br /&gt;Example C: Build a simple test bed.&lt;br /&gt;I've seen some integrators tried to deploy their first CUPS/CUPC installation over the VPN (because they are not onsite).  This is a bad idea unless VPN is what you want to test.  If something didn't work, you won't know if it's the VPN or CUPC.&lt;br /&gt;&lt;br /&gt;Same for the computers.  Instead of testing on a computer with bunch of custom-installed software, you'd better test on a clear/fresh-installed computer.  Stick with Windows XP.  Stay away from Vista, unless you understand what is UAC, Windows Defender (or offender?), and other security "features".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2071470406275127895?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2071470406275127895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/02/kiss-keep-it-simple-stupid.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2071470406275127895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2071470406275127895'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/02/kiss-keep-it-simple-stupid.html' title='KISS - Keep It Simple Stupid'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-4718669113948025371</id><published>2009-02-12T18:18:00.000-08:00</published><updated>2009-02-16T06:26:39.317-08:00</updated><title type='text'>Decrypt CUCM version numbers</title><content type='html'>In an ideal world, version 6.x is better than 5.x, version 7.x is better than 6.x, and so on so forth.  However, we're not in an ideal world.&lt;br /&gt;&lt;br /&gt;Cisco builds different "trains" in parallel.  Currently, the active trains for CUCM are 5.x, 6.x and 7.x.&lt;br /&gt;&lt;br /&gt;This "multiple trains" approach is a compromise between market demands and compatibility.  In order to support new features, big changes need to be made to the infrastructure (e.g. database schema).  Sometimes, the changes are so big that it's impossible to be compatible with previous versions.  So they introduce a totally different "train" to lower the risk.&lt;br /&gt;&lt;br /&gt;It's really hard to tell which train is the "best".  Of course, newer train would have more features.  But they also have more requirements.  For example, CUCM 6.x is compatible with CUPS 6.x and 7.x.  But CUCM 7.x is only compatible with CUPS 7.x.&lt;br /&gt;&lt;br /&gt;On each train, there are many "sub-versions".  For example, on 6.x train, you have 6.1.1, 6.1.2 and 6.1.3.  Read the release note carefully.  Some versions won't be able to upgrade to another train.  For example, CUCM 6.1.3 won't be able to upgrade to 7.0.x (because of different database schema)&lt;br /&gt;&lt;br /&gt;On each sub-version, there are also "build-numbers".  e.g. 6.1.2.1000, 6.1.2.2000, etc.  Build-number is the most confusing part.&lt;br /&gt;&lt;br /&gt;Generally speaking, build numbers should increase in 1000, such as 6.1.2.1000, 6.1.2.2000, etc.&lt;br /&gt;&lt;br /&gt;CUCM is built on Linux OS.  Whenever Cisco release an &lt;span style="font-weight: bold;"&gt;OS&lt;/span&gt; security patch, they'll increase the build number by 1000.  This is called PSIRT patch.&lt;br /&gt;&lt;br /&gt;Remember CUCM is an application running on Linux.  OS patch does not contain any CUCM bug fixes.  Any bug fixes would be in ES (Engineering Special).  ES versions would be indentified by the last three digits in build numbers (e.g. 6.1.2.1&lt;span style="font-weight: bold;"&gt;112&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;OS team and CUCM (application) team are two different teams.  When the OS team release OS patches, they don't include any application patches at all.  But the version number was increased by 1000.&lt;br /&gt;&lt;br /&gt;Quiz: 6.1.2.&lt;span style="font-weight: bold;"&gt;2000&lt;/span&gt; and 6.1.2.&lt;span style="font-weight: bold;"&gt;1112&lt;/span&gt;, which one is "better"?&lt;br /&gt;&lt;br /&gt;Answer: it depends on how you define "better".  But most of the people would think "less buggy" is better.  When they say "less buggy", they mean "less bugs in CUCM".  If that's the case, 6.1.2.1112 is better.  Because it has ES number of 112, which means it fixed quite a lot bugs.  While 6.1.2.2000 has no CUCM bug fixes at all (it contains OS patches though).&lt;br /&gt;&lt;br /&gt;Confusing enough?  I don't know which genius invented this version schema.  But that's the way it is.  If you try to "upgrade" 6.1.2.1112 to 6.1.2.2000, it'll fail with some vague error messages.  You have to open a TAC case to understand why it failed.&lt;br /&gt;&lt;br /&gt;Interesting?  Yeah, that's the way to keep TAC engineers' jobs.  :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-4718669113948025371?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/4718669113948025371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/02/decrypt-cucm-version-numbers.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4718669113948025371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4718669113948025371'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/02/decrypt-cucm-version-numbers.html' title='Decrypt CUCM version numbers'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8980794512329551562</id><published>2009-02-08T06:23:00.001-08:00</published><updated>2010-04-21T06:00:04.300-07:00</updated><title type='text'>NTP - Network Time Protocol</title><content type='html'>NTP is critical in Cisco voice products.  Time synchronization not only provides consistent time in trace files, but also a mandatory requirement for some components.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On a CUCM publisher, you may choose to use internal clock (computer hardware clock) or external clock (NTP server, such as a router).&lt;br /&gt;&lt;br /&gt;Regardless of your choice, all other servers in the cluster will use NTP protocol to synchronize time with publisher.  In another word, NTP is only configurable on publisher.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Basic concepts&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Network_Time_Protocol"&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Network_Time_Protocol&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tips&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Before you configure NTP on publisher, configure the local time as accurate as possible.  This will shorten the time to synchronize after you configure NTP.&lt;br /&gt;&lt;br /&gt;2. Be patient after you configured NTP.  It might take hours to synchonize based on the time difference between publisher and NTP source.  This works as designed.  This is to comply with IETF RFC.&lt;br /&gt;&lt;br /&gt;3.  If NTP was configured on publisher, subscribers won't synchronize to publisher until publisher is in-sync with NTP source.  If you're having problem sync the publisher to NTP source, but you want the whole cluster in-sync on time, disable NTP on publisher.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frequently used commands&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;utils ntp status&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ntpd (pid 3638) is running...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     remote           refid      st t when poll reach   delay   offset  jitter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;==============================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 127.127.1.0     127.127.1.0     10 l    9   64  377    0.000    0.000   0.008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*171.68.10.80    64.103.34.14     2 u  921 1024  377   38.233    3.336   1.182&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;+171.68.10.150   10.81.254.202    2 u  988 1024  377   37.044    3.252  12.236&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;synchronised to NTP server (171.68.10.80) at stratum 3 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   time correct to within 60 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   polling server every 1024 s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Current time in UTC is : Sun Feb  8 14:38:36 UTC 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Current time in America/Chicago is : Sun Feb  8 08:38:36 CST 2009&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The output above tells you:&lt;br /&gt;1. The box is synchronized to 171.68.10.80 at stratum 2.&lt;br /&gt;2. Internal clock is at stratum 10 (the box won't synchonrize to any time source with stratum equal or greater than 10)&lt;br /&gt;&lt;br /&gt;Other commands include:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;utils ntp config&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;utils ntp restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;utils ntp start&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Troubleshooting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;utils network capture port 123&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Executing command with options:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; size=128                count=1000              interface=eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; src=                    dest=                   port=123               &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ip=                   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;08:56:01.125718 cm6-sub.ntp &gt; cm6-pub.ntp:  v4 client strat 4 poll 10 prec -18 (DF) [tos 0x10]&lt;br /&gt;08:56:01.125965 cm6-pub.ntp &gt; cm6-sub.ntp:  v4 server strat 3 poll 10 prec -17 (DF) [tos 0x10]&lt;br /&gt;08:56:18.270720 cm6-pub.ntp &gt; ntp-sj1.ntp:  v4 client strat 3 poll 10 prec -17 (DF) [tos 0x10]&lt;br /&gt;08:56:18.308956 ntp-sj1.ntp &gt; cm6-pub.ntp:  v4 server strat 2 poll 10 prec -18&lt;br /&gt;08:57:24.271526 cm6-pub.ntp &gt; ntp-sj2.ntp:  v4 client strat 3 poll 10 prec -17 (DF) [tos 0x10]&lt;br /&gt;08:57:24.309282 ntp-sj2.ntp &gt; cm6-pub.ntp:  v4 server strat 2 poll 10 prec -16&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Port 123 is NTP port.  The output above shows the incoming/outgoing NTP packets on publisher:&lt;br /&gt;1) cm6-sub is the NTP client on stratum 4&lt;br /&gt;2) cm6-pub is the NTP server on stratum 3 (because the external NTP source is on stratum 2)&lt;br /&gt;3) ntp-sj1 and ntp-sj2 are the external NTP source on stratum 2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NTP logs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use RTMT to get "ntp logs".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Troubleshooting time offset on phones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If the time on CUCM server was correct, but the phones showed wrong time, it's most likely due to misconfiguration.&lt;br /&gt;&lt;br /&gt;First of all, we need to understand the difference between UTC time and local time.&lt;br /&gt;&lt;br /&gt;There are many different time zones in the world.  In US, we have EST, CST, MST, PST, etc.  8AM EST means 7AM CST.  Daylight saving also adds more complex to this.  Different countries have different daylight saving cutoff dates.&lt;br /&gt;&lt;br /&gt;To provide consistency around the world, NTP server feeds UTC (GMT) time to clients.  How to manipulate it to get "local time" would be the client's responsibility.&lt;br /&gt;&lt;br /&gt;On CUCM Admin &gt; System &gt; Date/Time Group, you may configure different groups to reflect different time zones.  Then you may associate date/time group to different device pools.  Hence, different phones in different device pools can have different local time.&lt;br /&gt;&lt;br /&gt;One thing to notice is:&lt;br /&gt;The "old" phones (7940/7960) get local time from CUCM server.&lt;br /&gt;The "new" phones (7941/7961 and newer) get UTC time and time zone info from CUCM server.  Then they do the math and display the local time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use Windows server as NTP source&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depending on your Windows version, there are some registry settings you need to set:&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NTPServer\Enabled&lt;br /&gt;Changing the ‘Enabled’ flag to the value 1 enables the NTP Server.&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type&lt;br /&gt;Change the server type to NTP by specifying ‘NTP’ in the ‘Type’ registry entry.&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags&lt;br /&gt;Set the ‘Announce Flags’ registry entry to 5, to indicate a reliable time source.&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\LocalClockDispersion&lt;br /&gt;Set 'LocalClockDispersion' to 0&lt;br /&gt;&lt;br /&gt;The last one is most important one.&lt;br /&gt;&lt;br /&gt;After changing registry, you need to restart "Windows Time" service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8980794512329551562?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8980794512329551562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/02/ntp-network-time-protocol.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8980794512329551562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8980794512329551562'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/02/ntp-network-time-protocol.html' title='NTP - Network Time Protocol'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-198504718504760306</id><published>2009-02-04T18:27:00.000-08:00</published><updated>2009-02-05T15:25:44.832-08:00</updated><title type='text'>Integration between CUPS and MOC/OCS</title><content type='html'>For now, to integrate MOC (Microsoft Office Communicator) with Cisco IP phone system (CUCM) you need CUPS for phone presence and phone control.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phone presence&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Phone presence info will flow like this: CUCM -&gt; CUPS -&gt; OCS -&gt; MOC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phone control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Phone control info will flow like this: MOC -&gt; OCS -&gt; CUPS -&gt; CUCM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Best Practices&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use TCP instead of TLS on your first deployment.  TLS/Cetificates are not something fun to play with.  They are optional for the integration.  Per the KISS (Keep It Simple, Stupid) principle, don't mess with TLS unless you have to.&lt;br /&gt;&lt;br /&gt;Let's talk about phone control first.  Currently, Cisco support RCC (Remote Call Control) for MOC.&lt;br /&gt;&lt;br /&gt;RCC was configured in Active Directory Users and Computers (ADUC) &gt; Communications.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYpfV68MWVI/AAAAAAAAACE/jXxmg864sWo/s1600-h/rcc.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 298px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYpfV68MWVI/AAAAAAAAACE/jXxmg864sWo/s400/rcc.png" alt="" id="BLOGGER_PHOTO_ID_5299152741758425426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see from the picture above, we need to configure Server URI and Line URI.&lt;br /&gt;&lt;br /&gt;6002 is the IP phone DN (Directory Number).&lt;br /&gt;&lt;br /&gt;htluo-cups is the proxy domain that will process the request.  We'll further discuss this part later.&lt;br /&gt;&lt;br /&gt;When MOC starts up, it'll send "INVITE 6002@htluo-cups6" to OCS.&lt;br /&gt;&lt;br /&gt;When OCS receives the INVITE message, it'll try to route it to the right destination (CUPS in this case).&lt;br /&gt;&lt;br /&gt;How OCS routes the message is more complicated than it looks like. It could be static route, it could be DNS lookup. For more details see "&lt;a href="http://htluo.blogspot.com/2009/01/sip-domain-and-dns-domain.html"&gt;SIP domain and DNS domain&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Again, per KISS principle, it's recommended to use static route on OCS to eliminate any misconfiguration of DNS.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYryx5qI7XI/AAAAAAAAACM/TN3p-kLD2QY/s1600-h/static.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 297px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYryx5qI7XI/AAAAAAAAACM/TN3p-kLD2QY/s400/static.png" alt="" id="BLOGGER_PHOTO_ID_5299314850659888498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As shown above, the static route means "for any SIP message with domain htluo-cups6, forward it to 10.88.229.209, port 5060, with TCP protocol".&lt;br /&gt;&lt;br /&gt;In order for CUPS to accept this message, OCS' IP address must be added to CUPS Incoming ACL.  (or you may configure an "ALL" incoming ACL)&lt;br /&gt;&lt;br /&gt;When CUPS server receives the message from OCS, the first thing it does is to determine if message has reached the final destination.  CUPS compares its own configuration with the domain portion of the SIP message.  If the domain portion of the SIP message matches one of the following, CUPS would think the message arrives at its final destination and take care of that.&lt;br /&gt;&lt;br /&gt;a) SIP domain name (configured under CUPS Admin &gt; System &gt; Service Parameters)&lt;br /&gt;b) CUPS node name (configured under CUPS Admin &gt; System &gt; Server)&lt;br /&gt;c) node name + SIP domain&lt;br /&gt;d) other alias name configured on CUPS&lt;br /&gt;&lt;br /&gt;To see a full list of alias names, set "SIP Proxy" trace to detail.  Restart SIP Proxy service.  SIP Proxy would write a list of alias names to trace files during startup.&lt;br /&gt;&lt;br /&gt;If CUPS decided to take care of the INVITE message from OCS, it will do the following:&lt;br /&gt;&lt;br /&gt;1) Determine if the MOC user has permission to control the phone&lt;br /&gt;2) If step 1 was ok, open a CTI request to CUCM CTIManager&lt;br /&gt;3) If step 2 was successful, return "200 OK" SIP message to OCS&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Determine if the MOC user has permission to control the phone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the Server URI (tel:6002;phone-context=dialstring;device=SEP001E7A24429A), if a device name was specified (which was in this case), CUPS will check if that device was in the "Controlled Devices" list on CUCM Admin &gt; User Management &gt; End User.&lt;br /&gt;&lt;br /&gt;If no device name was specified in Server URI, CUPS will try to find the device by DN.  For details, please see: http://www.cisco.com/en/US/docs/voice_ip_comm/cups/6_0_1/install_upgrade/deployment/guide/dgmsint.html#wp1049685&lt;br /&gt;&lt;br /&gt;Again, per KISS principle, you'd better specify device name in Server URI on your first deployment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Open a CTI request to CUCM CTIManager&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CUPS will open a CTI request to CUCM CTIManager with the credential configured on CUPS Admin &gt; Application &gt; CTI Gateway &gt; Settings (CUPS 6.x).&lt;br /&gt;&lt;br /&gt;Of course, the credential needs to exsit on CUCM &gt; User Management &gt; Application User.  It needs to be in "Standard CTI Enabled" and "Standard CTI Allow Control of All Devices" groups.&lt;br /&gt;&lt;br /&gt;And of course, the phone device needs to be registered to CUCM.&lt;br /&gt;&lt;br /&gt;If all above was successful, CUPS will send "200 OK" to OCS as an response to the INVITE.&lt;br /&gt;&lt;br /&gt;At this point, CUPS has done its job.  But it does not necessarily mean MOC gets phone control.&lt;br /&gt;&lt;br /&gt;In order for OCS to accept the "200 OK" message from CUPS, CUPS' IP address must be added to OCS "Host Authorization" (please note, it's IP address, not hostname or FQDN).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SYr79q1T8wI/AAAAAAAAACU/pQeSHUHu7ys/s1600-h/hostauth.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SYr79q1T8wI/AAAAAAAAACU/pQeSHUHu7ys/s400/hostauth.png" alt="" id="BLOGGER_PHOTO_ID_5299324948443296514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Don't forget to restart OCS Front End services after making changes.&lt;br /&gt;&lt;br /&gt;The best tool to debug OCS/CUPS integration is on OCS.  Right-click on the pool &gt; Logging Tool &gt; New Debug Session.  Choose SIP Stack.  Optionally, you may filter by the MOC user ID in the filter settings.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYr9aLBXUBI/AAAAAAAAACc/O0mFxrrPNzo/s1600-h/debug.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 297px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYr9aLBXUBI/AAAAAAAAACc/O0mFxrrPNzo/s400/debug.png" alt="" id="BLOGGER_PHOTO_ID_5299326537631748114" border="0" /&gt;&lt;/a&gt;Known caveats:&lt;br /&gt;&lt;br /&gt;1. CUPS sent "200 OK" for the INVITE.  But MOC still not getting phone control.&lt;br /&gt;&lt;br /&gt;This is because OCS doesn't trust CUPS.  OCS SIP stack log will show &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Courier;  panose-1:2 7 4 9 2 2 5 2 4 4;  mso-font-charset:0;  mso-generic-font-family:modern;  mso-font-format:other;  mso-font-pitch:fixed;  mso-font-signature:3 0 0 0 1 0;} @font-face  {font-family:宋体;  panose-1:2 1 6 0 3 1 1 1 1 1;  mso-font-alt:SimSun;  mso-font-charset:134;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:3 135135232 16 0 262145 0;} @font-face  {font-family:"\@宋体";  panose-1:2 1 6 0 3 1 1 1 1 1;  mso-font-charset:134;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:3 135135232 16 0 262145 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-fareast-font-family:宋体;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;strong&gt;&lt;/strong&gt;"&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;SIPPROXY_E_INVALID_RECORD_ROUTE&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Resolution: Check "Host Authorization" on OCS.&lt;br /&gt;&lt;br /&gt;2. Load balancer&lt;br /&gt;&lt;br /&gt;If you have load balancer for OCS, more likely than not, you will run into "one-way phone control" issue.  The symptom is: you can make phone calls from MOC.  But the call status was not updated on MOC.  For example, when the call was connected, MOC still showing "calling".&lt;br /&gt;&lt;br /&gt;This problem was caused by misconfiguration of load-balancing.&lt;br /&gt;&lt;br /&gt;When OCS sends message to CUPS, it doesn't go through load-balancer (based on your exsiting configuration).&lt;br /&gt;&lt;br /&gt;When CUPS tries to reply to OCS, it looks up DNS and DNS resolve the pool name to the load-balancer virtual IP.  So the traffic goes through load-balancer to get to OCS.  When OCS received the message, the last hop was load-balancer.  However, the load-balancer didn't add its IP to the SIP header.  OCS will reject this message and send "&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;400 Missing correct Via header&lt;/strong&gt;&lt;/span&gt;" to CUPS.&lt;br /&gt;&lt;br /&gt;Resolution:&lt;br /&gt;Check your load-balancer, see if it's capable of modifying SIP header.  Or contact Microsoft to see if they can turn off the "Via header" check on OCS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-198504718504760306?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/198504718504760306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/02/integration-between-cups-and-mococs.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/198504718504760306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/198504718504760306'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/02/integration-between-cups-and-mococs.html' title='Integration between CUPS and MOC/OCS'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z4Dj73m3UV8/SYpfV68MWVI/AAAAAAAAACE/jXxmg864sWo/s72-c/rcc.png' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-5858480658084717093</id><published>2009-01-28T10:34:00.000-08:00</published><updated>2009-01-28T17:18:07.594-08:00</updated><title type='text'>How does CUPC determine presence address</title><content type='html'>In order for CUPC to receive presence information, it has to connect to a presence node.&lt;br /&gt;&lt;br /&gt;Just to remind you again, "presence node" is NOT necessarily the same node as the logon server.  For example, you have two CUPS servers - CUPS-A and CUPS-B.  The logon server could be CUPS-A, but the "presence node" could be CUPS-B.&lt;br /&gt;&lt;br /&gt;Even in a single-node environment, CUPC still has to run through a set of rules to determine the "presence address".&lt;br /&gt;&lt;br /&gt;If you ever looked at CUPC &gt; Show Server Health (or CUPC logs), you'll notice two parameters: "Presence.Primary.Address" and "Presence.Domain".&lt;br /&gt;&lt;br /&gt;"Presence.Primary.Address" is the node name of the server.  You may find this under CUPS Admin &gt; System &gt; Servers.&lt;br /&gt;&lt;br /&gt;"Presence.Domain" is the SIP proxy domain.  You may find this under CUPS Admin &gt; System &gt; Service Parameters &gt; Cisco UP SIP Proxy.&lt;br /&gt;&lt;br /&gt;If the node name was configured as dotted IP address (e.g. 192.168.1.100), CUPC will use that as the presence address.&lt;br /&gt;&lt;br /&gt;If the node name was non dotted IP, things are more complicated.  Here are the rules CUPC uses to determine the presence address:&lt;br /&gt;&lt;br /&gt;When you specify a non IP string for the node name, CUPC looks at the string to see if it already ends with the domain value -- if not, it appends it.  Examples:&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;Proxy.Domain = cisco.com&lt;br /&gt;Presence.Primary.Address = cup1&lt;br /&gt;&lt;br /&gt;Registration will be to user@cup1.cisco.com (hostname, domain is appended)&lt;br /&gt;&lt;br /&gt;2)&lt;br /&gt;Proxy.Domain = cisco.com&lt;br /&gt;Presence.Primary.Address = cup1.cisco.com&lt;br /&gt;&lt;br /&gt;Registration will be to user@cup1.cisco.com (FQDN, domain was already included)&lt;br /&gt;&lt;br /&gt;3)&lt;br /&gt;Proxy.Domain = cisco.com&lt;br /&gt;Presence.Primary.Address = 10.11.12.13&lt;br /&gt;&lt;br /&gt;Registration will be to user@10.11.12.13 (address was dotted-decimal)&lt;br /&gt;&lt;br /&gt;4)&lt;br /&gt;Proxy.Domain = 10.11.12.13&lt;br /&gt;Presence.Primary.Address = 10.11.12.13&lt;br /&gt;&lt;br /&gt;Registration will be to user@10.11.12.13 (address was dotted-decimal)&lt;br /&gt;&lt;br /&gt;5)&lt;br /&gt;Proxy.Domain = 10.11.12.13&lt;br /&gt;Presence.Primary.Address = cup1&lt;br /&gt;&lt;br /&gt;Registration will be to user@cup1.10.11.12.13 (hostname, domain is appended)    WRONG&lt;br /&gt;&lt;br /&gt;6)&lt;br /&gt;Proxy.Domain = 10.11.12.13&lt;br /&gt;Presence.Primary.Address = cup1.cisco.com&lt;br /&gt;&lt;br /&gt;Registration will be to user@cup1.cisco.com.10.11.12.13 (FQDN, domain is appended)    WRONG&lt;br /&gt;&lt;br /&gt;7)&lt;br /&gt;Proxy.Domain = PROXY_DOMAIN_NOT_SET&lt;br /&gt;Presence.Primary.Address = cup1.cisco.com&lt;br /&gt;&lt;br /&gt;Registration will be to user@cup1.cisco.com.PROXY_DOMAIN_NOT_SET (FQDN, domain is appended)    WRONG&lt;br /&gt;&lt;br /&gt;The last 3 of these are wrong (there are other permutations) because the domain portion of the URI is neither an IP address nor DNS-resolvable FQDN.  While the proxy might be content to match the strings, CUPC's SIP stack needs to resolve to a routable address.&lt;br /&gt;&lt;br /&gt;Please note everything is case sensitive.  If node name was cup1.cisco.com, proxy domain was CISCO.COM, presence address will be "cup1.cisco.com.CISCO.COM", which is also WRONG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-5858480658084717093?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/5858480658084717093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/how-does-cupc-deterine-presence-address.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5858480658084717093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/5858480658084717093'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/how-does-cupc-deterine-presence-address.html' title='How does CUPC determine presence address'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6676722691811214350</id><published>2009-01-26T10:48:00.000-08:00</published><updated>2009-02-12T18:18:24.195-08:00</updated><title type='text'>Mysterious "Invalid Crdentials" on CUPC</title><content type='html'>On CUPC &gt; Help &gt; Show Server Health, sometimes you would see failed items with the message "invalid credential", such as "Presence", "Desk Phone", or "Voicemail".&lt;br /&gt;&lt;br /&gt;This is very confusing.  Since you already logged into CUPC, why it's giving you "invalid credential"?  What kind of credential it was failing on?&lt;br /&gt;&lt;br /&gt;Before we can move further, please take a look at "&lt;a href="http://htluo.blogspot.com/2009/01/cups-and-cupc-father-and-son-or-not.html"&gt;CUPS and CUPC, father and son?  or not&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;CUPS and CUPC's relationship is not as tight as you thought.  CUPC has many features, but CUPS is only relevant in two of them (configuration repository and presence).&lt;br /&gt;&lt;br /&gt;When you type username and password on CUPC login window, that is majorly for "Configuration Repository".  If you typed in the wrong password, CUPC won't be able to download configuration from CUPS.  No other functions CUPC can perform without configuration.&lt;br /&gt;&lt;br /&gt;However, sucessfully downloading configuration does not guarantee other functionalities.  To use other fucntions, a 2nd authentication might be required (either explicitly or implicitly).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Presence - Invalid Credential&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For presence feature, 2nd authentication is required on SIP layer.  This authentication is implicit.  For more details on "Digest Authentication", please see http://www.ietf.org/rfc/rfc3261.txt.&lt;br /&gt;&lt;br /&gt;Why is it implicit?  Why does it fail?&lt;br /&gt;&lt;br /&gt;To make it implicit is Cisco development's decision.  If they made it explicit, you'd have to provide digest credential (2nd password) after login.  This could be annoying since SSO (Single Sign On) was what we preferred.&lt;br /&gt;&lt;br /&gt;So Cisco development made CUPS/CUPC worked this way:&lt;br /&gt;1)  You (system admin) configure digest credential on CUCM Admin &gt; User Management &gt; End User page.&lt;br /&gt;2) CUPS synchronizes digest credentials from CUCM to CUPS.&lt;br /&gt;3) CUPS transmits digest credential to CUPC during logon.&lt;br /&gt;4) CUPC uses that degest credential to authenticate with SIP proxy.&lt;br /&gt;&lt;br /&gt;Step 3 and 4 look funny because it's like a door keeper gives the key to you and asks you open the door with the key.  But keep in mind:&lt;br /&gt;a) The "door keeper" acutally verified your identify (username/password), before giving you the key.&lt;br /&gt;b) The key was encrypted during transmission.&lt;br /&gt;c) The key door keeper gave you might be for a different door (SIP proxy could be on a different server other than the logon server)&lt;br /&gt;d) This is a compromise (or balance) between inconvenience of SSO and SIP protocol requirements.&lt;br /&gt;&lt;br /&gt;If there's no digest credential configured on CUCM (ie. it's blank), you'll get "Invalid Credential" for presence.  To fix it, take one of the following options:&lt;br /&gt;&lt;br /&gt;Option 1: Go to CUCM Admin &gt; User Management &gt; End User, configure a dummy value for "digest credential".  It could be any value.  Why?  See workflow explained above.&lt;br /&gt;&lt;br /&gt;Option 2: Go to CUPS Admin &gt; Cisco Unified Presence &gt; Proxy Server &gt; Incoming ACL.  (on CUPS 7.x, it's "System &gt; Security &gt; Incoming ACL".  Configure an address pattern that covers your CUPC machines.  For example, a "all" pattern matches all machines.&lt;br /&gt;&lt;br /&gt;This option is considered less secure, because any machine in that address pattern (subnet) would be able to connect to SIP proxy without digest authentication challenge.&lt;br /&gt;&lt;br /&gt;Option 3: Go to System &gt; Service Parameters &gt; Cisco UP SIP Proxy.  Set "Authentication Module" to "off".  This is the least secure option, which turns off SIP authentication at all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desk Phone - Invalid Credential&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This usually happens when CUCM was configured to use "LDAP Authentication".&lt;br /&gt;&lt;br /&gt;To control desk phone from CUPC, CTI protocol was used.  Before a CTI client (CUPC) can control the phone, it needs to authenticate with CTI server (CTIManager).  This authentication is implicit.  CUPC would use the same logon username/password to authenticate with CTIManager.  CTIManager, in turn, would authenticate that with LDAP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Question: Why the authentication would fail?&lt;br /&gt;Answer: In short, this is a bug on CUCM.&lt;br /&gt;&lt;br /&gt;Question: Any workaround for that before we can upgrade CUCM?&lt;br /&gt;Answer: On CUCM, change LDAP authentication port to 3268 and restart CTIManager.&lt;br /&gt;&lt;br /&gt;Question: Why it would fix the problem?&lt;br /&gt;Answer: When LDAP referral happens, CTIManager would fail on authentication.  Using 3268 (Global Catalog) port eliminate LDAP referals.&lt;br /&gt;&lt;br /&gt;Question: Why it only affects CUPC?&lt;br /&gt;Answer: CUPC is the only application (so far) that uses end user credential to authenticate with CTIManager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Voicemail - Invalid &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;username/password or account locked&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depending on what Unity edition you're running (Unity or Unity Connection), the cause could be different.&lt;br /&gt;&lt;br /&gt;Before moving on, please take a look at "&lt;a href="http://htluo.blogspot.com/2009/01/how-to-test-imap-connection.html"&gt;How to test IMAP connection&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;On Exchange 2007, it's because IMAP login was disabled on TCP (port 143) by default.&lt;br /&gt;&lt;br /&gt;On Unity Connection, make sure you reset "Web Application Password" instead of VoiceMail password.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6676722691811214350?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6676722691811214350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/myterious-invalid-crdential-on-cupc.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6676722691811214350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6676722691811214350'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/myterious-invalid-crdential-on-cupc.html' title='Mysterious &quot;Invalid Crdentials&quot; on CUPC'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1728217457319487541</id><published>2009-01-24T12:08:00.000-08:00</published><updated>2009-01-24T19:21:33.500-08:00</updated><title type='text'>Decrypt HTTPS traffic with Wireshark</title><content type='html'>Wireshark is a useful tool in troubleshooting.  However, if the traffic was encrypted (such as https between CUPS and Exchange), it's unless you can decrypt it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SXt3QHEI3vI/AAAAAAAAABE/-5AohnsTYq4/s1600-h/encrypted.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 316px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SXt3QHEI3vI/AAAAAAAAABE/-5AohnsTYq4/s400/encrypted.png" alt="" id="BLOGGER_PHOTO_ID_5294956905562169074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Look at packet 11 in sniffer capture above.  Application data was encrypted.  There's not too much useful data in it.&lt;br /&gt;&lt;br /&gt;To decrypt this data, we need the "private key" of the server certificate.  You cannot get the private key from client side (such as web browsers).  To get the private key, you need access to the server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1. Export the server certificate with private key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1-1: Go to IIS Admin &gt; Right-click "Defautl Web Site" &gt; Properties &gt; "Directory Security" &gt; "View Certificate".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/SXt5NnUzWaI/AAAAAAAAABM/XoCagS3oUJA/s1600-h/IIS1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 358px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/SXt5NnUzWaI/AAAAAAAAABM/XoCagS3oUJA/s400/IIS1.PNG" alt="" id="BLOGGER_PHOTO_ID_5294959061705644450" border="0" /&gt;&lt;/a&gt;1-2: Go to "Details" tab &gt; "Copy to File" &gt; Choose "Yes, export the private key"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SXt8evyqARI/AAAAAAAAABc/L0K1VLHMmmA/s1600-h/IIS2.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 358px;" src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SXt8evyqARI/AAAAAAAAABc/L0K1VLHMmmA/s400/IIS2.PNG" alt="" id="BLOGGER_PHOTO_ID_5294962654571004178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1-3: You'll save the file in PKCS #12 (.PFX) with all three options UNCHECKED&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt8Mlt5mAI/AAAAAAAAABU/-fEyuoOuVJY/s1600-h/IIS3.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 307px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt8Mlt5mAI/AAAAAAAAABU/-fEyuoOuVJY/s400/IIS3.PNG" alt="" id="BLOGGER_PHOTO_ID_5294962342629054466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1-4: You'll have to provide a password to protect the file.  Because private key is a very sensitive information.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt889iEX2I/AAAAAAAAABk/_Kcem2Gn1C0/s1600-h/IIS4.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 307px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt889iEX2I/AAAAAAAAABk/_Kcem2Gn1C0/s400/IIS4.PNG" alt="" id="BLOGGER_PHOTO_ID_5294963173655600994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;1-5: Save the file (system will add ".pfx" extension to the file name)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt9eH0PY4I/AAAAAAAAABs/8ko1gTW-Obc/s1600-h/IIS5.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 307px;" src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SXt9eH0PY4I/AAAAAAAAABs/8ko1gTW-Obc/s400/IIS5.PNG" alt="" id="BLOGGER_PHOTO_ID_5294963743351858050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now we have a PKCS #12 file (.pfx file).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: Extract the private key from .pfx file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;openssl pkcs12 -in test.pfx -nocerts -out privateKey.pem -nodes&lt;br /&gt;&lt;br /&gt;The command above take "test.pfx" as the input file, extract the private key, save it unencrypted in "privateKey.pem" file.    You'll be asked for the password (where you entered on step 1-4).&lt;br /&gt;&lt;br /&gt;Where to find openssl?  Google!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3: Go to Wireshark &gt; Edit &gt; Preferences &gt; Protocols &gt; SSL&lt;/span&gt;.  In "RSA keys list", type the following:&lt;br /&gt;&lt;br /&gt;10.88.229.196,443,http,C:\privateKey.pem&lt;br /&gt;&lt;br /&gt;Where "10.88.229.196" is the server IP.  "443" is the port number (HTTPS).  "http" is the protocol you want Wireshark decode to.  "C:\privateKey.pem" is the file name of the private key.  "SSL debug file" is optional.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z4Dj73m3UV8/SXuAip2zIsI/AAAAAAAAAB0/9dwe42bITBE/s1600-h/pref.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 244px;" src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/SXuAip2zIsI/AAAAAAAAAB0/9dwe42bITBE/s400/pref.png" alt="" id="BLOGGER_PHOTO_ID_5294967119743754946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 4: Once you click OK, you'll notice the changes on Wireshark screen.  Now the data was decrypted!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SXuBOW6dfFI/AAAAAAAAAB8/Wv3Vd_ot5gc/s1600-h/decrypted.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 316px;" src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SXuBOW6dfFI/AAAAAAAAAB8/Wv3Vd_ot5gc/s400/decrypted.png" alt="" id="BLOGGER_PHOTO_ID_5294967870573083730" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1728217457319487541?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1728217457319487541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/decrypt-https-traffic-with-wireshark.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1728217457319487541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1728217457319487541'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/decrypt-https-traffic-with-wireshark.html' title='Decrypt HTTPS traffic with Wireshark'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z4Dj73m3UV8/SXt3QHEI3vI/AAAAAAAAABE/-5AohnsTYq4/s72-c/encrypted.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-7896076110671874179</id><published>2009-01-23T08:25:00.001-08:00</published><updated>2009-01-23T08:39:26.456-08:00</updated><title type='text'>CUPS Calendar integration</title><content type='html'>Calendar integration is probably the most mysterious part of CUPS.&lt;br /&gt;&lt;br /&gt;There are many catchas in Calendar integration due to the following:&lt;br /&gt;&lt;br /&gt;1) CUPS uses WebDAV protocol to query calendar, which is a pretty old-school protocol and has many limitations.  Microsoft recommend developers use EWS (Exchange Web Service) for better compatibility and features.  Cisco will eventually change to EWS.  But no ETA yet.&lt;br /&gt;&lt;br /&gt;2) CUPS requires HTTPS (TLS/SSL) connection between CUPS and Exchange.  This adds more complexity to the picture because you have to deal with CA, certificates, etc.&lt;br /&gt;&lt;br /&gt;3) Exchange authentication and permissions&lt;br /&gt;Exchange (OWA/IIS) has many authentication methods (FBA, classic, NTLM, etc.).  Exchange also has two different sets of permissions: AD permission and Mailbox permission.&lt;br /&gt;&lt;br /&gt;It's impossible to elaborate all scenarios in this blog.  But here are some recommendations:&lt;br /&gt;&lt;br /&gt;1) Avoid "2003/2007 mixed mode"&lt;br /&gt;More likely than not, it's not going to work with CUPS due to limitation of WebDAV.&lt;br /&gt;&lt;br /&gt;2) Avoid any firewall (especially MSFT ISA server) between CUPS and Exchange.&lt;br /&gt;&lt;br /&gt;3) Avoid any load-balancer or traffice directory between CUPS and Exchange.&lt;br /&gt;&lt;br /&gt;4) Try to disable FBA (Form Based Authentication) for troubleshooting purpose.&lt;br /&gt;&lt;br /&gt;5) If you don't care about certificates, use "makecert.exe" utility to create self-signed certificate for Exchange.  See http://www.lulu.com/content/5552336 for details.&lt;br /&gt;&lt;br /&gt;6) Make sure you set your meeting status to "Busy" for testing.  Make sure you set it to "whole day event" to avoid time zone glitches.  (be aware, when you set it to "whole day event", the status in outlook will be "FREE" by default)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-7896076110671874179?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/7896076110671874179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/cups-calendar-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7896076110671874179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7896076110671874179'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/cups-calendar-integration.html' title='CUPS Calendar integration'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8141350430141935782</id><published>2009-01-21T10:40:00.000-08:00</published><updated>2009-01-21T13:12:25.363-08:00</updated><title type='text'>SIP domain and DNS domain</title><content type='html'>If you deal with SIP products (such as CUPS/CUPC), you'll have to deal with SIP domain sooner or later.&lt;br /&gt;&lt;br /&gt;Here are some of the most asked questions:&lt;br /&gt;1) What is a SIP domain?&lt;br /&gt;2) Does the SIP domain has to match the DNS domain?&lt;br /&gt;3) What if I'm not using DNS with the application?&lt;br /&gt;&lt;br /&gt;SIP domain is more like on application layer versus DNS domain on network layer.&lt;br /&gt;&lt;br /&gt;Let's take a look at a real life example.  Let say, you have a SIP application that can send instant message and make phone calls (such as CUPC and MOC).&lt;br /&gt;&lt;br /&gt;When the application initiate a call, the SIP message would look like this "&lt;span style="font-weight: bold;"&gt;INVITE 6002@acme.com&lt;/span&gt;".  This message means - "I want to call extension number 6002 in ACME company".&lt;br /&gt;&lt;br /&gt;Usually, the first stop of this SIP message would be your local proxy server (SIP proxy).  The local proxy server will determine how to route this message to its destination.&lt;br /&gt;&lt;br /&gt;Whenever a SIP proxy server receive a SIP message, it will always look at the domain part of the SIP request.  Based on the domain, SIP proxy will determine how to route the message.&lt;br /&gt;&lt;br /&gt;Here's the detailed workflow:&lt;br /&gt;&lt;br /&gt;1) If the SIP message's domain matches with the SIP domain configured on SIP proxy, SIP proxy will handle that within the same domain.  Otherwise, SIP proxy will forward it to a different domain (or just ignore/discard it depends on the design).&lt;br /&gt;&lt;br /&gt;This is very important.  Let say, CUPC sent a message "INVITE johndoe@acme.com" to SIP proxy.  However, the SIP domain configured on SIP proxy was "abc.com".  The SIP proxy will treat it as "foreign message" and try to forward it to its destination domain or discard/ignore it.&lt;br /&gt;&lt;br /&gt;2) SIP proxy will look at the SIP &lt;span style="font-weight: bold;"&gt;static routes&lt;/span&gt; to determine the messages' destination.&lt;br /&gt;&lt;br /&gt;SIP static routes are configured on the SIP proxy server on application layer.  Don't confuse it with TCP/IP static routes.&lt;br /&gt;&lt;br /&gt;On CUPS 6.x, you may configure static routes on CUPS Admin &gt; Cisco Unified Presence &gt; Proxy Server &gt; Static Routes.  On OCS 2007, you may configure static routes by right-click on the "Front End" folder &gt; properties &gt; routing.&lt;br /&gt;&lt;br /&gt;You may configure IP address or FQHN for static routes.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;Static route: acme.com ---&gt; apple.acme.com&lt;br /&gt;This means for all SIP messages with SIP domain acme.com will be routed to a host with FQHN apple.acme.com.&lt;br /&gt;&lt;br /&gt;Static route: acme.com ---&gt; 192.168.1.100&lt;br /&gt;This means for all SIP messages with SIP domain acme.com will be routed to a host with IP address 192.168.1.100.&lt;br /&gt;&lt;br /&gt;Keep in mind, the above is on application layer.&lt;br /&gt;&lt;br /&gt;3) If there's no static route configured, SIP Proxy would try to determine the next hop by name resolution.&lt;br /&gt;&lt;br /&gt;If SRV records were configured, SIP proxy would try to resolve the domain by SRV records.&lt;br /&gt;&lt;br /&gt;Then SIP proxy would try to resolve by A records.&lt;br /&gt;&lt;br /&gt;Now lets answer the questions.&lt;br /&gt;&lt;br /&gt;Q1: What is a SIP domain?&lt;br /&gt;Answer: A SIP domain is an application layer configuration that define the management domain of a SIP proxy.&lt;br /&gt;&lt;br /&gt;2) Does the SIP domain has to match the DNS domain?&lt;br /&gt;Answer: Yes, it has to match the DNS domain in most of the scenarios.  And it's strongly recommended to match the SIP domain with DNS domain.&lt;br /&gt;&lt;br /&gt;3) What if I'm not using DNS with the application?&lt;br /&gt;Answer: You may or may not be able to use application features if you don't have appropriate name resolution configured.  For example, in CUPC 1.2.x, you may use presence feature without name resolution to the presence FQHN.  On CUPC 7.0.x, it doesn't work (because they changed the design on 7.0.x).  If you don't have a DNS, you may use local host files to do name resolution.&lt;br /&gt;&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8141350430141935782?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8141350430141935782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/sip-domain-and-dns-domain.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8141350430141935782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8141350430141935782'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/sip-domain-and-dns-domain.html' title='SIP domain and DNS domain'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1182381479540225052</id><published>2009-01-19T20:57:00.000-08:00</published><updated>2009-01-19T21:28:06.968-08:00</updated><title type='text'>LDAP account keeps locking out on CUPC</title><content type='html'>CUPC has the capability to search LDAP.  So you can easily add contacts to your CUPC contact list.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to search LDAP, the application (CUPC) has to authenticate with LDAP first.  A service account was used.  This service account was configured in CUPS Admin &gt; Application &gt; Cisco Unified Personal Communicator &gt; LDAP Profile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once this service account was locked out, none of the CUPCs would be able to search LDAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The strange thing is: as soon as you unlocked the account, it got locked up pretty soon.  By looking at Windows Event Viewer (Security Log), you'd see the source was the CUPC computer.  You changed the password in LDAP, and changed it on CUPC.  But the account still got locked up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you got confused.  Since you already "refreshed" the password, why the account still got locked up?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The answer is: the "refresh" didn't get populated to CUPC.  Some of the CUPCs were still trying the LDAP with old (wrong) password.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you change the LDAP profile on CUPS, CUPC didn't get the updated profile (password) until next logon.  It'll keep trying LDAP with the old password and keep locking out the account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To solve this problem, you'll have to logout all CUPC before you unlock the LDAP account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometimes, this is "mission impossible" in a large network where you have hundreds of users.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The workaround is:&lt;/div&gt;&lt;div&gt;1) Create a 2nd LDAP account.&lt;/div&gt;&lt;div&gt;2) On CUPS, update LDAP profile to use the new account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On step2, you have to make sure you put in the correct information in one shot.  If you misconfigured something and tried to correct that, chances are some CUPC might get the wrong info before you corrected it.  The loop starts again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1182381479540225052?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1182381479540225052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-account-keeps-locking-out-on-cupc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1182381479540225052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1182381479540225052'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-account-keeps-locking-out-on-cupc.html' title='LDAP account keeps locking out on CUPC'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-8158726607290257809</id><published>2009-01-15T20:17:00.000-08:00</published><updated>2009-01-15T20:40:55.453-08:00</updated><title type='text'>LDAP Integration with CUPS</title><content type='html'>There's no GUI on CUPS to configure "LDAP Integration".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CUPS synchronizes users from CUCM.  CUPS does not sychronize with LDAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How about "CUPS Admin &gt; Application &gt; Cisco Unified Personal Communicator &gt; LDAP server"?  Well, as the menu inidcated, it's a configuration for CUPC.  It's not a configuration for CUPS.  CUPC download this configuration upon login and use that to query LDAP (for contact search).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even though LDAP integration is not configurable on CUPS, it might affect CUPS in an unexpected way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Scenario 1: CUCM is using LDAP authentication.  CUPC user not able to login.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When CUPC users try to login, the username/password was authenticated aginst CUPS (via SOAP).  In turn, CUPS will authenticated the username/password against LDAP (because CUCM is using LDAP authentication).  If for whatever reason, CUPS having problem with LDAP, authentication would failed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reason A: Access-list blocked traffic between CUPS and LDAP.  Access-list allow traffic between CUCM and LDAP.  Access-list allow traffic between CUPS and CUCM.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this case, CUPS would synchronize CUCM users over.  But those users won't be able to log into CUPC.  Because CUPS cannot talk to LDAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reason B: CUCM was configured to use LDAP over SSL (LDAPS).  Certificates were uploaded to CUCM but not to CUPS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this case, CUPS won't be able to set up the LDAPS connection because the certificates were missing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Frequently asked questions:&lt;/div&gt;&lt;div&gt;Do I need CUCM/LDAP integration to use CUPS/CUPC?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Answer: No.  But there are some catchas.  CUCM/LDAP integration is highly recommended.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Explanation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Without LDAP, adding contacts to CUPC would be a pain.  Because CUPC cannot search CUCM for contacts.  (there's no such a thing called "CUCM native directory")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) If you use LDAP with CUPC but not CUCM, potential problem is on the way.  If you search LDAP from CUPC and add that contact to CUPC contact list, user ID in LDAP would be used as "presence user ID".  If the "presence user ID" is different with the user ID in CUCM, you won't be able to see your contact's presence (your contact would always be offline).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Workarounds:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Make sure the user ID in LDAP matches the user ID in CUCM.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;or&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) If the CUCM ID &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;happens&lt;/span&gt; to be the phone extension number.  And you &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;happen&lt;/span&gt; to have the phone extension number configured in LDAP.  You may go to "CUPS Admin &gt; Application &gt; Cisco Unified Personal Communicator &gt; Settings" to map the LDAP phone attribute to the CUPC "user ID" attribute.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-8158726607290257809?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/8158726607290257809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-integration-with-cups.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8158726607290257809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/8158726607290257809'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-integration-with-cups.html' title='LDAP Integration with CUPS'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-6463838897371877301</id><published>2009-01-14T19:51:00.000-08:00</published><updated>2009-01-14T20:07:00.624-08:00</updated><title type='text'>LDAP integration with CUCM 5.0 or above</title><content type='html'>On CUCM 5.0 or above, LDAP integration actually consists of two parts:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Part 1: LDAP Sychronization.&lt;/div&gt;&lt;div&gt;Part 2: LDAP Authentication.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may enable part 1 without part 2.  But you cannot enable part 2 without part 1.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In either scenario, CUCM &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;never&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ever&lt;/span&gt; synchronizes passwords from LDAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Part 1: LDAP Sychronization&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When LDAP synchronization was configured, CUCM will import user accounts from LDAP and create users in CUCM database.  As mentioned before, CUCM won't import passwords.  CUCM will import user ID, first name, last name, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any user that pre-exists in CUCM user database but not exists in LDAP will be deleted.   CUCM will mark them as "delete pending" and give them 72 hours grace period.  After 72 hours, those "delete pending" accounts will be deleted permanently and no way to recover.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Part 2: LDAP authentication&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whenever a CUCM user need to authenticate, CUCM will authenticate the password against LDAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Commonly seen problems:&lt;/div&gt;&lt;div&gt;1) Some user accounts in LDAP didn't synchronize over to CUCM&lt;/div&gt;&lt;div&gt;Usually, it's because some 'critical' attributes were missing.  For CUCM, "last name" is a critical attribute.  If the LDAP account does not have last name configured, it won't synchronize over to CUCM.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Slow synchronization&lt;/div&gt;&lt;div&gt;If you have a large active directory, use Global Catalog port (default is 3268) is recommended.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) LDAP over SSL&lt;/div&gt;&lt;div&gt;After uploading the certificate to CUCM for LDAP over SSL, you need to restart Cisco Tomcat service to take effect.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-6463838897371877301?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/6463838897371877301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-integration-with-cucm-50-or-above.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6463838897371877301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/6463838897371877301'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/ldap-integration-with-cucm-50-or-above.html' title='LDAP integration with CUCM 5.0 or above'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-2729654801814774717</id><published>2009-01-10T07:37:00.000-08:00</published><updated>2009-01-10T07:57:15.963-08:00</updated><title type='text'>CTI vs. Presence</title><content type='html'>When talking about "phone presence", people are always confused with "line status".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CTI (Computer Telephony Interface) has been around for a while.  It allows computer software control phone devices.  So you can make calls, answer calls, tranfer calls, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The software that controls the phone is usually referred as "CTI client".  More often than not, there's a "CTI server".  In Cisco products, CTI clients include Attendant Console client, Cisco Agent Desktop, etc.  CTImanager on CUCM (CallManager) is the CTI server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When a phone was controlled by CTI, the phone's staus is usually reported to CTI client.  For example, when you pick up the handset on the phone, CTI client would display "off-hook" or "dial tone" on the screen.  We usually refer this as "CTI status" instead of "Presence".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can only see CTI status for the phones you controlled.  You won't be able to see CTI status on other phones.  CTI is more like a protocol to &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;control&lt;/span&gt; the phone. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Presence" is a rather new term comparing with CTI.  "Presence" is usually referred to the SIP extension SIMPLE (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When using "Presence" with phones, we can see the status of the phone (off-hook, on-hook, do-not-disturb, etc.).  You don't necessarily have control of the phone.  In face, "presence" won't provide any function to control phone devices.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Keep that in mind when you troubleshoot clients (such as CUPC, MOC, etc.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, when you make a call from your phone, MOC would display the phone status (CTI status).  However, you might not be able to see the phone status of your contacts on MOC contact list.  That part was "presence". &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-2729654801814774717?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/2729654801814774717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/cti-vs-presence.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2729654801814774717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/2729654801814774717'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/cti-vs-presence.html' title='CTI vs. Presence'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-1359635775282280363</id><published>2009-01-06T20:23:00.000-08:00</published><updated>2009-01-06T20:51:49.482-08:00</updated><title type='text'>How to test IMAP connection</title><content type='html'>IMAP is a protocol to retrieve email from mail server.  With appropriate settings, Cisco Unity allows application retrieve voicemail via IMAP.  CUPC is one of the clients that uses IMAP to retrieve voicemail.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are two Unity families - regular Unity (which works on Windows and Exchange) and Unity Connection (a Linux appliance).&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For regular Unity, MS Exchange is required as mail store.  CUPC should always point to Exchange.  But the GUI on CUPS refers this as "Unity Server".  This is pretty confusing, especially in "Unfied Messaging" mode, where Unity server and Exchange are actually two different servers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By default, IMAP service is disabled on Exchange.  You'll have to go to Windows services to set the startup type to "Automatic" and start it.  Please note the following difference between Exchange 2003 and 2007:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Exchange 2003 use IMAP over TCP (port 143) by default.&lt;/div&gt;&lt;div&gt;Exchange 2007 use IMAP over SSL (port 993) by default.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The bad thing about SSL is you cannot test it with telnet command.  We'll talk about the workaround later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For Exchange 2003, here's how to test the IMAP connection and login.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_Z4Dj73m3UV8/SWQwteyu5HI/AAAAAAAAAA8/2Gss3LrHZmA/s400/imap+-+login+test.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 162px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5288405420357903474" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Each command begins with a number and a space.  Though you may use any numbers and you may reuse the number, it's recommended you use unique, sequential numbers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first command we want to use is "capability".  Pay attention to "LOGINDISABLED" in screen output.  You usually saw that on Exchange 2007, which means LOGIN is disabled on TCP (available on SSL only).  On Exchange you normally won't see that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you don't see "LOGINDISABLED", you may continue the test.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next commend is "login JohnDoe pass123", where JohnDoe is the username you want to test and pass123 is the actually password.  If you got a "OK", that means the username and password was correct.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As mentioned about, on Exchange 2007, LOGIN on TCP was disabled by default.  To enable it, you run the following commands on in Exchange Management Shell:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="mso-element:para-border-div;border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt; margin-left:.5in;margin-right:0in"&gt;  &lt;p class="MsoNormal" style="border:none;mso-border-alt:solid windowtext .5pt; padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-family: Courier"&gt;Set-IMAPSettings –LoginType 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Resart IMAP service after that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently, CUPC does not support IMAP referral.  Which means, if you have multiple mailbox servers, you have to enable IMAP service on each one and create multiple profiles on CUPS. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-1359635775282280363?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/1359635775282280363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/how-to-test-imap-connection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1359635775282280363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/1359635775282280363'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/how-to-test-imap-connection.html' title='How to test IMAP connection'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z4Dj73m3UV8/SWQwteyu5HI/AAAAAAAAAA8/2Gss3LrHZmA/s72-c/imap+-+login+test.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-682941183458944642</id><published>2009-01-05T20:07:00.000-08:00</published><updated>2009-01-06T20:54:05.595-08:00</updated><title type='text'>Name resolution in Cisco voice products</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: small;"&gt;In Cisco documentations, there's no specific requirements for name resultion.  You may install Cisco voice products (such as CUCM, CUPS, CER) without worrying about name resolution.  The reason was - there's a process on those products called "ClusterManager'.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ClusterManager is the process takes care of IPSec communication between nodes in a cluster.  ClusterManager also takes care of host table (/etc/hosts).  Whenever a node was added to the cluster, ClusterManager will add the hostname into host table.  Hence every node in the cluster should be able to resolve each other's hostname without DNS involved.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Before we moving on, let's get familiar with some terminologies.&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hostname&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; - The name for a computer.   e.g. &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.  This name was entered during installation and  used as the default "&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;node name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;".  To show the host name, use  CLI command "&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;show status&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Node  name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (or process node name) - The name for a voice appliance(application).  By default, the node name was set to the hostname  entered during installation.  You may change the node name to any value.  But  the hostname stays the same.  To show the node name, use CLI command "&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;run sql select * from processnode&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Domain  name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; - A name for a domain (a group of computers).   e.g. &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sales&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; domain, &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;support&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; domain, etc.  A  domain name could be ambiguous.  For example, a &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sales&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; domain  could mean the sales domain in Asia Pacific or the sales domain in Europe.  To  eliminate this ambiguity, we want to use &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Fully Qualified Domain  Name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (or &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FQDN&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Fully  Qualified Domain Name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (or &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FQDN&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) -   For example,  &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sales.apac.acme.com.&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; is a FQDN.   (Technically, every FQDN  should have a dot (.) at the end.  The dot means the root.  Without the dot,  it's not a FQDN, it's a partial domain.)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Fully  Qualified Host Name&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (or &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FQHN&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) - a FQHN consists of a  hostname and a FQDN.  For example, a FQHN &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1.acme.com.&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  consists of a hostname &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; and a FQDN  &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;acme.com.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;For the  reason mentioned above (to avoid ambiguity), all DNS query should use FQHN or  FQDN.  If a &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;hostname&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; was used, it's the client's responsibility  to translate that into a &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FQHN&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.  For example, on client PC, we  do a "nslookup ccm-1".  Windows actually translates "&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;" into  "&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1.acme.com&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;" before sending out the query to DNS server.  A sniffer capture could prove this.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The key point is -  whether the client can translate the hostname into a &lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;correct&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  FQHN.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;This translation  is controlled by the "DNS suffix" configuration on client side.  Client computers usually got this from DHCP.  To see the DNS suffix, use "ipconfig/all" command in Windows command prompt.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Though we don't have to worry about name resolution on voice servers (CUCM, CUPC, etc.), we do have to take end points (clients) into consideration.  End points might request hostname even though you thought you were using IP address.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;IP Phones.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Let say, you just finish installing a CUCM 6.1.2 server (named ccm-1).  You registered Cisco IP phones to the CUCM.  You can make make/receive phone calls.  Everything looks good, right?  Right, until you press the "Directory" button on IP phone.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;When you press the "Directory" button on IP phone, the phone actually acts like a web browser and initate a http request to http://&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:8080/ccmcip/xmldirectory.jsp.  If the phone cannot resolve &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; into an IP address, it won't be able to make that connection.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"ccm-1" is the node name.  By default, it's the hostname you entered during installation.  You may change the node name on CCMAdmin page &gt; System &gt; Servers.  Changing the node name does not change the hostname.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Application Clients (such as Attendant Console client)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;On Attendant Console client logon, you specified IP address of the CUCM server.  You successfully logged in.  But you were not able to control the phones.  Looking at log files, you realized that Attendant Console client was trying to initiate the JTAPI connection to CUCM server by node name (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ccm-1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;).  Adding ccm-1 to C:\Windows\system32\drivers\etc\hosts on client computer solved the problem.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CUPC (Cisco Unified Personal Client)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Things become more insteresting (complicated) when SIP comes into play.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;On CUPC 7.x, some customer noticed an annoying behavior.  On the first logon, user specified HQHN of CUPS server (e.g. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;cups1.acme.com&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;) as the login server.  CUPC logged in successfully.  Exit and re-launch CUPC.  User noticed that the login server field was automatically poplated with the CUPS node name (e.g. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;cups1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;).  Since "cups1" was not resolvable from the client computer, logon failed.  User changed the login server to FQHN &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;cups1.acme.com&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.  Logon succeeded.  But on next logon, it changed to hostname again.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;This annoying behavior is actually a new feature in CUPC.  We might have multiple CUPS servers in a cluster.  To better load-balancing between those servers, we specify a "home node" for each user.  A user's request should designated to his "home node" (unless the "home node" is down).  On the initial logon, CUPC gets "home node" information from CUPS.  CUPC will try to use "home node" as logon server afterwards.  This is why the login server field was populated with the node name (by default, it's the hostname).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You might want to ask "why does the client computer can resolve FQHN but not hostname?".  Please refer to the earlier section of this article.  It was because DNS suffix was "incorrect".  I put a quote around "incorrect" because sometimes, it can't be fixed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Scenario #1.  The  client computer is on a offsite location (mobile user, VPN, etc.), where the DNS  suffix from DHCP is not the same as the corporate domain.  (e.g. "isp.com"  instead of "acme.com")&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Scenario #2.   Customer has multiple subdomains (e.g. "apac.acme.com" and "emea.acme.com").   The client computers are in different subdomains.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="328421815-03012009"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Workarounds (pick one below):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#1 On CUPC side,  manually change the login server to FQHN on each login.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#2 On CUPC side, add  the hostname to local hosts table  (C:\Windows\System32\drivers\etc\hosts)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#3 On CUPS side,  change the node name to FQHN.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span&gt;&lt;span class="328421815-03012009"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#4 On CUPS side,  change the node name to IP address.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-682941183458944642?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/682941183458944642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/name-resolution-for-cisco-voice.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/682941183458944642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/682941183458944642'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/name-resolution-for-cisco-voice.html' title='Name resolution in Cisco voice products'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-4440892553366616858</id><published>2009-01-01T12:39:00.000-08:00</published><updated>2009-01-01T13:08:03.022-08:00</updated><title type='text'>CUPS and CUPC - Father and Son?  Or not?</title><content type='html'>Like many client/server models, people would think CUPS and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CUPC&lt;/span&gt; are like father and son, like Exchange and Outlook.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, CUPS and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CUPC&lt;/span&gt; are more like peers.  They were designed by two different groups of developers.  These two groups treat each other as an "important customer", but not the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;only&lt;/span&gt; customer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, CUPS can be used without &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CUPC&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example #1: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MOC&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;RCC&lt;/span&gt; (Microsoft Office Communicator Remote Call Control).&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;MOC&lt;/span&gt; can control an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IP&lt;/span&gt; Phone via CUPS and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;CUCM&lt;/span&gt; without &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;CUPC&lt;/span&gt; in the picture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example #2: SIP Proxy&lt;/div&gt;&lt;div&gt;CUPS acts as a SIP proxy without &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;CUPC&lt;/span&gt; in the picture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example #3: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;IPPM&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;IP&lt;/span&gt; Phone Messenger)&lt;/div&gt;&lt;div&gt;An &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;IP&lt;/span&gt; phone can see buddy's status, send &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;IMs&lt;/span&gt;, retrieve meeting schedules without &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;CUPC&lt;/span&gt; in the picture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the other hand, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;CUPC&lt;/span&gt; was built as a multi-function software other than just a "CUPS client".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;CUPC&lt;/span&gt; can't function without CUPS.  Because it uses CUPS as a configuration repository.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CUPC&lt;/span&gt; has to retrieve the configuration from CUPS for all its features.  But except for the presence feature, all other features do NOT rely on CUPS. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;CUPC's&lt;/span&gt; soft phone feature is most demanded from Mac OS users.  It's the only &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Cisco&lt;/span&gt; soft phone works on Mac OS.  (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;CIPC&lt;/span&gt; - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Cisco&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;IP&lt;/span&gt; Communicator does not run on Mac).   However, to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;CUPC&lt;/span&gt;, you need a CUPS server.  In this scenario, CUPS server provides no value other than supplying the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;TFTP&lt;/span&gt; address to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;CUPC&lt;/span&gt;.  If &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;CUPC&lt;/span&gt; can save the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;TFTP&lt;/span&gt; address locally (like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;CIPC&lt;/span&gt;), there's no need for CUPS server.  It makes perfect sense from both technical and economic perspective.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Same for other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;CUPC&lt;/span&gt; features like Voicemail, Web Conference, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;LDAP&lt;/span&gt; search, click to dial, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For this reason, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;CUPC&lt;/span&gt; developers are considering the options of "separating &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;CUPC&lt;/span&gt; from CUPS" and make them more &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_33"&gt;independent&lt;/span&gt; to each other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With that said, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;CUPC&lt;/span&gt; and CUPS are more like peers other than father and son (or couple).  Keep that in mind would help you understanding the function modules of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;CUPC&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-4440892553366616858?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/4440892553366616858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/cups-and-cupc-father-and-son-or-not.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4440892553366616858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/4440892553366616858'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/cups-and-cupc-father-and-son-or-not.html' title='CUPS and CUPC - Father and Son?  Or not?'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-7247817686326308300</id><published>2009-01-01T11:55:00.000-08:00</published><updated>2009-01-01T12:39:03.537-08:00</updated><title type='text'>Cisco Presence Products</title><content type='html'>&lt;div style="text-align: left;"&gt;When talking about Cisco presence products, we usually refer to BLF (Busy Lamp Field) and CUPS (Cisco Unified Presence Server).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div&gt;BLF is a built-in feature of CUCM (CallManager).  It allows you to see a person's phone status (off hook / on hook) on a speed dial button or in phone directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/_Z4Dj73m3UV8/SV0jRcS8qMI/AAAAAAAAAAc/08ndNxCkZU8/s320/BLF+-+onhook.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 241px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5286420320163244226" /&gt;&lt;div style="text-align: center;"&gt;BLF: Pone 6001 is on-hook (idle)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/_Z4Dj73m3UV8/SV0jpVuaBaI/AAAAAAAAAAk/pvFzPRkB47U/s320/BLF+-+offhook.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5286420730716226978" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 238px; " /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;BLF: Pone 6001 is off-hook (active)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more information regarding CUCM presence, please see: &lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/admin/6_1_1/ccmfeat/fsprsnc.html"&gt;http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/admin/6_1_1/ccmfeat/fsprsnc.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CUPS (Cisco Unified Presence Server) is a standalone products.  It requires a separate server, it cannot coresident with CUCM.  For supported server models, see: &lt;a href="http://www.cisco.com/en/US/docs/voice_ip_comm/cups/7_0/english/compatibility/cupcompatibility.html"&gt;http://www.cisco.com/en/US/docs/voice_ip_comm/cups/7_0/english/compatibility/cupcompatibility.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Usually, CUPS is used with a presence client - CUPC.  The official name of CUPC is "Cisco Unified Personal Communicator".  Some people also refer it as "Cisco Unified Presence Client".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CUPC can run on Windows and Mac OS.  CUPC is a multi-function client.  It can send IMs (like MSN Messenger).  It can display your buddies' presence (on the phone, in a meeting, etc.).  It can retrieve voicemail.  It can control your desk phone.  It can act as a soft phone as well.  It support video calls.  It can also be a outlook plugin.  So you can "click-to-dial" from Outlook.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SV0o1WurGEI/AAAAAAAAAAs/w_NYmzwyszM/s1600-h/cupc.png"&gt;&lt;img src="http://4.bp.blogspot.com/_Z4Dj73m3UV8/SV0o1WurGEI/AAAAAAAAAAs/w_NYmzwyszM/s320/cupc.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5286426434702350402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 178px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;For more information regarding CUPC, please see: &lt;a href="http://www.cisco.com/en/US/products/ps6844/index.html"&gt;http://www.cisco.com/en/US/products/ps6844/index.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-7247817686326308300?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/7247817686326308300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/cisco-presence-products_01.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7247817686326308300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/7247817686326308300'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/cisco-presence-products_01.html' title='Cisco Presence Products'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z4Dj73m3UV8/SV0jRcS8qMI/AAAAAAAAAAc/08ndNxCkZU8/s72-c/BLF+-+onhook.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5691248957365391455.post-3711395262083068914</id><published>2009-01-01T11:13:00.000-08:00</published><updated>2009-01-01T11:47:21.416-08:00</updated><title type='text'>Introduction of 'Presence'</title><content type='html'>Many people are still confused about 'presence' and what it can do for us.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The official explanation of presence was "&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Presence is a real-time indicator of a person’s willingness and availability to communicate&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ya, that explanation is as clear as mud.  Let's take a look at some &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;real life&lt;/span&gt; examples.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Instant Messaging.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're reading this blog, you're unlikely to be unaware of "Instant Messaging" (or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;IM&lt;/span&gt;).  Just to name some of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IM&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;software&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MSN&lt;/span&gt; Messenger, Yahoo Messenger, AOL Messenger, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ICQ&lt;/span&gt;, IBM &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Sametime&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Obviously, the major purpose of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;IM&lt;/span&gt; software is to send instant message.  Yet another important information they provide is buddy status - 'Available', 'Away', 'Out to lunch', 'In a meeting', 'Do not disturb', etc.  Those status are 'presence' info, and play a more and more important role in our life.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Phone presence.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the adoption of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;IP&lt;/span&gt; phones, more and more features were built on it.  In the old world, you call somebody and got a busy signal.  You know he's on the phone.  In the new world, you could see if he's on the phone or not, before you actually call him.  This is called 'phone presence'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let say, you'd like to ask your buddy out for lunch.  With presence tool, you know he's on the phone.  You would use other method to communicate, such as instant message, email, etc.  With appropriate tools, you can even send the instant message to his &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;IP&lt;/span&gt; phone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Calendar presence.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you'd like, you may also have the presence software publish your calendar status.  So your buddy would see your status as 'In a meeting' when you have a meeting going on in the calendar.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5691248957365391455-3711395262083068914?l=htluo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://htluo.blogspot.com/feeds/3711395262083068914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://htluo.blogspot.com/2009/01/introduction-of-presence.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3711395262083068914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5691248957365391455/posts/default/3711395262083068914'/><link rel='alternate' type='text/html' href='http://htluo.blogspot.com/2009/01/introduction-of-presence.html' title='Introduction of &apos;Presence&apos;'/><author><name>Michael Luo</name><uri>http://www.blogger.com/profile/11426506986724715144</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
