<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUcDRX07fSp7ImA9WhBaEU4.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979</id><updated>2013-05-21T06:44:34.305-04:00</updated><category term="mobile" /><category term="EV Best Practices" /><category term="PBX" /><category term="Powershell" /><category term="Exchange" /><category term="bug" /><category term="throttling" /><category term="call admission control" /><category term="e.164" /><category term="iOS 6.1" /><category term="normalization" /><category term="mobility" /><category term="legacyExchangeDN" /><category term="recording" /><category term="Skype" /><category term="routes" /><category term="troubleshooting" /><category term="conferencing" /><category term="location" /><category term="2013" /><category term="publish" /><category term="load balancers" /><category term="UM" /><category term="Mac" /><category term="script" /><category term="Polycom" /><category term="code" /><category term="firewall" /><category term="RCC" /><category term="vbscript" /><category term="adsiedit" /><category term="sharing" /><category term="MSPL" /><category term="hold" /><category term="CS14" /><category term="rgs" /><category term="extensions" /><category term="RFC" /><category term="certificates" /><category term="response groups" /><category term="Lync" /><category term="HLB" /><category term="holiday" /><category term="ringback" /><category term="optimizer" /><category term="translator" /><category term="edge" /><category term="SP1" /><category term="migration" /><category term="Aastra" /><category term="music" /><category term="commentary" /><category term="attendant" /><category term="networking" /><category term="SDK" /><category term="OCS" /><category term="Dialogic" /><category term="SBA" /><category term="location-based routing" /><category term="telephony" /><category term="conversation" /><category term="SBS" /><category term="CMS" /><category term="features" /><category term="usages" /><category term="topology" /><category term="fix" /><category term="external" /><category term="premium" /><category term="Plantronics" /><title>Ken's Unified Communications Blog</title><subtitle type="html">Musings on Microsoft's Unified Communications offerings, such as Lync Server 2010 and Exchange Server 2010.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ucken.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/aLLnFU" /><feedburner:info uri="blogspot/allnfu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck4NRXk5eCp7ImA9WhBbGEw.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-6799599483503263666</id><published>2013-05-08T15:57:00.000-04:00</published><updated>2013-05-17T13:16:34.720-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T13:16:34.720-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="telephony" /><category scheme="http://www.blogger.com/atom/ns#" term="extensions" /><category scheme="http://www.blogger.com/atom/ns#" term="e.164" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="normalization" /><title>Viewing Extensions in the Lync Client</title><content type="html">&lt;div&gt;
In
companies that use extensions off the main number, I’ve always recommended they
format their numbers using the main office number for the “base” and followed
by the extension (ie.&lt;b&gt; tel:+14165551111;ext=222&lt;/b&gt;
for North America, or &lt;b&gt;tel:+4420555111;ext=222&lt;/b&gt;
for elsewhere).&amp;nbsp; In Active Directory, I’ve recommended they use the same type of format (ie. +1.416.555.1111 X222), and use the &lt;b&gt;Company_Phone_Number_Normalization_Rules.txt&lt;/b&gt; to enforce the same
formatting.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Background&lt;/h3&gt;
&lt;div&gt;
For those unfamiliar with how Lync displays phone numbers, the Lync client will only display numbers it can parse from Active Directory. &amp;nbsp;It doesn't show the actual TelURI defined in the Lync Control panel, which is a good thing, because there are often additional settings applied there that administrators don't want to have appear in the address list. &amp;nbsp;The&amp;nbsp;&lt;b&gt;Company_Phone_Number_Normalization_Rules.txt &lt;/b&gt;file is helpful in re-formatting phone numbers in AD to the E.164 format we like to see in Lync. &amp;nbsp;For a good overview of the&amp;nbsp;&lt;b&gt;Company_Phone_Number_Normalization_Rules.txt&lt;/b&gt;, see &lt;a href="http://blog.schertz.name/2010/09/lync-2010-address-book-normalization/" target="_blank"&gt;Jeff Schertz's blog entry on the topic&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
The Problem&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
I've found that when using the Lync 2010 client, North American phone numbers would
always display with the typical North American formatting properly along with the extension when dialed,
(ie. &lt;b&gt;+1 (416)
555-1111 X222&lt;/b&gt;).&amp;nbsp; However, when applying similar rules to international
numbers, the extension would never display.&amp;nbsp; It would show &lt;b&gt;+4420555111&lt;/b&gt;
instead of &lt;b&gt;+4420555111 X222&lt;/b&gt;.&amp;nbsp; The number would be dialed properly, but it
would be confusing to the user, because the extension&amp;nbsp;wouldn't&amp;nbsp;appear. &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Fast
forward to Lync 2013 client, and the situation appeared even worse. &amp;nbsp;Even
North American phone numbers with extensions&amp;nbsp;wouldn't&amp;nbsp;appear properly when
dialled. &amp;nbsp;I assumed this was a client bug that was getting worse with each client revision.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
The Solution...Sort of&lt;/h3&gt;
Fellow Lync MVP &lt;a href="http://confusedamused.com/" target="_blank"&gt;Tom Pacyk of ConfusedAmused.com&lt;/a&gt; brought to my attention a little known (well, little known by me) &lt;a href="http://support.microsoft.com/kb/2735322" target="_blank"&gt;feature added with the October 2012 update for the Lync 2010 client&lt;/a&gt;. &amp;nbsp;In short, the client update finally fixed the bug for international extensions, but with a catch....you had to first add a new client policy entry to your Lync client policy. &amp;nbsp;If only the global client policy is being used, the commands are:&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
$x = New-CsClientPolicyEntry -Name "ShowExtensionInFormattedDisplayString" -Value "True"&lt;br /&gt;
$y = Get-CsClientPolicy -Identity Global&lt;br /&gt;
$y.PolicyEntry.Add($x)&lt;br /&gt;
Set-CsClientPolicy -Instance $y&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
Since this policy setting was a part of the Lync 2010 client updates, it would be very easily missed by someone whose focus has changed to Lync 2013. &amp;nbsp;I can only assume the same settings are required in a pure Lync 2013 environment, although there is very little information on the topic.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
If you're running Lync Server 2010, it appears as though you need at least the October 2012 Lync 2010 server updates for this to work. &amp;nbsp;I tried to apply this client policy entry to a client's deployment whose got Lync 2010 and 2013 in parallel, but the Lync 2010 environment is a bit out of date. &amp;nbsp;The policy entry showed up properly when I ran the following:&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
$y = Get-CsClientPolicy -Identity Global&lt;br /&gt;
$y.PolicyEntry&lt;/blockquote&gt;
&lt;div class="MsoNormal"&gt;
...but neither my Lync 2010 or 2013 clients would show extensions properly. &amp;nbsp;Applying the policy entry to a 2010/2013 server mix where the 2010 environment was up-to-date worked fine...at least for 2010 clients...mostly.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
So, make sure your Lync 2010 infrastructure is up-to-date before attempting to apply this setting.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
What's Still Not Working&lt;/h3&gt;
&lt;div class="MsoNormal"&gt;
I setup a few test users with extensions off a fictitious Toronto, Canada and London, UK main office number. &amp;nbsp;The Toronto user's office number in AD was set to&amp;nbsp;&lt;b&gt;+1.416.555.1111 X111&lt;/b&gt;, and the London user's number in AD was set to&amp;nbsp;&lt;b&gt;+44.20.444.2222 X999&lt;/b&gt;. &amp;nbsp;Both users were setup in Lync with their TelURI properly defined as tel:+14165551111;ext=111 and tel:+44204442222;ext=999 respectively.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
A Company_Phone_Number_Normalization_Rules.txt file was placed in the ABFiles folder on the shared folder for the Lync server pool with the following rule to ensure Lync would be able to parse phone numbers &amp;nbsp;with extensions in Active Directory properly:&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
\+(\d{6,14})\D+(\d+)&lt;br /&gt;
+$1;ext=$2&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
When testing with the Lync 2010 client, North American numbers showed up properly in both the list view and the dialing view, as shown below:&lt;/div&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://4.bp.blogspot.com/-bh5FmceWIRs/UYqmboRx7NI/AAAAAAAAAg8/kRrI0SZiM5I/s1600/2010_NANumList.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-bh5FmceWIRs/UYqmboRx7NI/AAAAAAAAAg8/kRrI0SZiM5I/s1600/2010_NANumList.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-086OWwkhkOM/UYqmbm9IexI/AAAAAAAAAg0/FPITtE11O4A/s1600/2010_NADial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://2.bp.blogspot.com/-086OWwkhkOM/UYqmbm9IexI/AAAAAAAAAg0/FPITtE11O4A/s320/2010_NADial.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
However, international numbers did show numbers a bit differently between the views, using the ;ext= from the TelURI instead of the X:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-6yT594CO0ZU/UYqmbRQLw0I/AAAAAAAAAg4/Ec75vTylGMQ/s1600/2010_EUNumList.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-6yT594CO0ZU/UYqmbRQLw0I/AAAAAAAAAg4/Ec75vTylGMQ/s1600/2010_EUNumList.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-0wpbi4SljIM/UYqmbY9FqqI/AAAAAAAAAhA/bNsNnnab2lA/s1600/2010_EUDial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://4.bp.blogspot.com/-0wpbi4SljIM/UYqmbY9FqqI/AAAAAAAAAhA/bNsNnnab2lA/s320/2010_EUDial.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Interestingly enough, the Lync 2013 client doesn't seem to fully honour the extension setting for either North American or international numbers. &amp;nbsp;The number shows up properly when hovering over the phone icon, but only shows the main number when dialing:&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;u&gt;North America&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-amqBppBEMhE/UYqocUh2LTI/AAAAAAAAAhU/J7uh4-ueCbQ/s1600/2013_NANumHover.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="70" src="http://2.bp.blogspot.com/-amqBppBEMhE/UYqocUh2LTI/AAAAAAAAAhU/J7uh4-ueCbQ/s400/2013_NANumHover.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-fMq4XZz3XCA/UYqocG_FhpI/AAAAAAAAAhM/rrYDiOKkqGs/s1600/2013_NADial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="106" src="http://1.bp.blogspot.com/-fMq4XZz3XCA/UYqocG_FhpI/AAAAAAAAAhM/rrYDiOKkqGs/s400/2013_NADial.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;United Kingdom&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-VjSnyjDAp2U/UYqocBPJFTI/AAAAAAAAAhQ/q569JsmNsIg/s1600/2013_EUNumHover.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="75" src="http://1.bp.blogspot.com/-VjSnyjDAp2U/UYqocBPJFTI/AAAAAAAAAhQ/q569JsmNsIg/s400/2013_EUNumHover.png" width="400" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-ltpyCV2D94o/UYqocO-bxcI/AAAAAAAAAhI/lsSBT-P1Lhw/s1600/2013_EUDial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://3.bp.blogspot.com/-ltpyCV2D94o/UYqocO-bxcI/AAAAAAAAAhI/lsSBT-P1Lhw/s400/2013_EUDial.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Needless to say, this can be very confusing to the average user.&lt;br /&gt;
&lt;br /&gt;
This appears to be a bug introduced with the Lync 2013 client. &amp;nbsp;I've brought this up with the Lync product managers, and we should see a future patch that will address the issue for Lync 2013 clients.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/wggeoLd5a88" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/6799599483503263666/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/05/viewing-extensions-in-lync-client.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/6799599483503263666?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/6799599483503263666?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/wggeoLd5a88/viewing-extensions-in-lync-client.html" title="Viewing Extensions in the Lync Client" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-bh5FmceWIRs/UYqmboRx7NI/AAAAAAAAAg8/kRrI0SZiM5I/s72-c/2010_NANumList.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/05/viewing-extensions-in-lync-client.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQXo_cCp7ImA9WhBUE0g.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-8722213281710489792</id><published>2013-04-30T16:24:00.001-04:00</published><updated>2013-04-30T16:24:50.448-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-30T16:24:50.448-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="location-based routing" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><title>Location-Based Routing in the Lync Optimizer</title><content type="html">The &lt;a href="http://support.microsoft.com/kb/2809243" target="_blank"&gt;Lync Server Update for February 2013&lt;/a&gt; included a much asked for feature: location-based routing. Location-based routing basically ensures the routes that phone calls can take are dependent on where the user is currently located.&lt;br /&gt;
&lt;br /&gt;
Before the February 2013 update, the path calls would take were solely determined by the assigned Lync voice policy. &amp;nbsp;Normally, &amp;nbsp;call routes are somewhat local to the user (at least within the same country). If a user were to go to another office on the other side of the planet, their calls would still route via the same paths as if the user were at their home office.&lt;br /&gt;
&lt;br /&gt;
Normally, this isn't a very big issue, but some countries have very strict rules about how calls may enter and exit the country. India is an example where they don't want to see any calls leave the country via the Internet. &amp;nbsp;All calls must leave the country via the PSTN. &amp;nbsp;Toll bypass or least-cost routing is not allowed.&lt;br /&gt;
&lt;br /&gt;
Fellow Lync'er Richard Brynteson wrote up a great post on &lt;a href="http://masteringlync.com/2013/02/21/location-based-routing-with-lync-server-2013-cu1/" target="_blank"&gt;how to setup location-based routing&lt;/a&gt; in Lync 2013 CU1. &amp;nbsp;He even put me on the spot by saying that I was working on adding location-based routing to the Optimizer. &amp;nbsp;So, that pretty much meant that I had to do it.&lt;br /&gt;
&lt;br /&gt;
So, in the spirit of the Lync Optimizer doing all the work required to setup Enterprise Voice in Lync, I've added an option to configure location-based routing when the Optimizer is run for a given Lync deployment.&lt;br /&gt;
&lt;br /&gt;
There is a single prerequisite in order to make it all work. The Lync environment must have at least one Lync network region, site and subnet configured (preferably/obviously for the location where location-based routing is to be enabled). &amp;nbsp;If call admission control has already been deployed, then this should already be done. &amp;nbsp;If not, the Lync network site/subnet can be setup manually by following &lt;a href="http://technet.microsoft.com/en-us/library/gg398467.aspx" target="_blank"&gt;the guide on Technet&lt;/a&gt;. If AD Sites &amp;amp; Services has been fully populated with site/subnet information, I've &lt;a href="http://ucken.blogspot.ca/2013/04/automatically-creating-lync-sites-and.html" target="_blank"&gt;created a script&lt;/a&gt; that will transfer this into Lync.&lt;br /&gt;
&lt;br /&gt;
When the Optimizer runs, it will check to see if the deployment is running Lync 2013 and has at least one network site defined. &amp;nbsp;It will then prompt the user to apply location-based routing to that site (or others if more than one site is found).&lt;br /&gt;
&lt;br /&gt;
If you are unsure whether or not to apply location-based routing, then DON'T DO IT. &amp;nbsp;It will ensure that all calls made from within the network site use only the routes defined for that site. &amp;nbsp;It may have unintended consequences for users visiting the site. &amp;nbsp;It can be undone, but if you are not comfortable with the inner workings of Lync, its best not to open up that can of worms.&lt;br /&gt;
&lt;br /&gt;
As a final note, the Lync Optimizer now includes dial rules for India, which is one of the main reasons why location-based routing was added to Lync in the first place.&lt;br /&gt;
&lt;br /&gt;
Best of luck out there!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/qYipJWR_Qfc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/8722213281710489792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/04/location-based-routing-in-lync-optimizer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8722213281710489792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8722213281710489792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/qYipJWR_Qfc/location-based-routing-in-lync-optimizer.html" title="Location-Based Routing in the Lync Optimizer" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/04/location-based-routing-in-lync-optimizer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQFQn08cSp7ImA9WhBVGE8.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-2607200819461528552</id><published>2013-04-01T13:25:00.000-04:00</published><updated>2013-04-24T14:15:13.379-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-24T14:15:13.379-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="location" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="location-based routing" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="call admission control" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><category scheme="http://www.blogger.com/atom/ns#" term="script" /><title>Automatically Creating Lync Sites and Subnets using AD Sites</title><content type="html">To use&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/library/gg398529.aspx" target="_blank"&gt;call admission control&lt;/a&gt; or &lt;a href="http://technet.microsoft.com/en-us/library/jj994036.aspx" target="_blank"&gt;location-based routing&lt;/a&gt; in Lync, one of the first steps is to define all the sites and subnets used in the company and to assign the sites to network regions.&amp;nbsp; In larger companies, this can be a tedious process if this information is not stored in a central, easily accessible location.&lt;br /&gt;
&lt;br /&gt;
One place where network site/subnet information can sometimes be centrally found is within Active Directory itself.&amp;nbsp; Active Directory and other applications such as Exchange uses site/subnet information to determine where to direct clients for authentication services (among other things).&amp;nbsp; Ideally, every site and subnet should be defined using the Active Directory Sites and Services snap-in.&amp;nbsp; If the Active Directory administrator has diligently defined all the sites/subnets, this information can be easily parsed and used in Lync.&lt;br /&gt;
&lt;br /&gt;
I've created a short script that will automate the creation of network sites and subnets using the information stored in AD Sites and Services.&amp;nbsp; Again, this script is only useful if all the sites/subnets have been defined in AD.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Copy the below script into a .PS1 file on a Lync server and run it.&amp;nbsp; As always, be careful and test this in a lab first.&amp;nbsp; I can't be responsible for any damage this script will cause.&lt;br /&gt;
&lt;textarea cols="80" rows="30"&gt;# Load Active Directory Powershell module if its not already loaded
if(-not(Get-Module -name ActiveDirectory)){Import-Module ActiveDirectory}

# If a Lync network region doesn't exist, create one and name it the same as the first Lync site
# If one or more does exist, select the first one associated with the first Lync site

if(-not(Get-CSNetworkRegion))
{
 $SiteName = (Get-CSSite 1).DisplayName
 New-CSNetworkRegion $SiteName -CentralSite 1
}
else
{
 $SiteID = (Get-CSSite 1).Identity
 $SiteName = (Get-CSNetworkRegion | Where {$_.CentralSite -eq $SiteID} | Select-Object -First 1).NetworkRegionID
}


# Get the ConfigurationNamingContext from AD and go to the Sites container
$ConfigDN = (Get-ADRootDSE).ConfigurationNamingContext
$SiteContainerDN = ("CN=Sites," + $ConfigDN)

# Select all the site objects
$Sites = Get-ADObject -SearchScope OneLevel -SearchBase $SiteContainerDN -filter {ObjectClass -eq 'Site'}

foreach ($Site in $Sites)
{ 
 # Create Lync network sites based on AD site
 $SiteObj = Get-ADObject $Site.distinguishedName -properties "siteObjectBL", "description" 
 New-CSNetworkSite -NetworkSiteID $SiteObj.Name -Description $SiteObj.Description -NetworkRegionID $SiteName

 # Add each defined AD site subnet to the Lync network site object
 foreach ($SubnetDN in $SiteObj.siteObjectBL) 
 {
  $Subnet = Get-ADObject -Identity $SubnetDN -properties "description"
  $SubnetName = $Subnet.Name  #Subnet name is in format 192.168.100.0/24
  $SubnetSplit = $SubnetName.Split("/")  #Need to split subnet name into IP and mask for command
  $SubnetID = $SubnetSplit[0]
  $SubnetMask = $SubnetSplit[1]
  New-CSNetworkSubnet -SubnetID $SubnetID -MaskBits $SubnetMask -Description $Subnet.Description -NetworkSiteID $SiteObj.Name
 }
}

#Create subnet object with 32-bit mask for all public edge A/V IP addresses
$EdgeServerPools = Get-CSService -EdgeServer | Where {$_.SiteID -ne "Site:BackCompatSite"}
foreach ($EdgeServerPool in $EdgeServerPools)
{
  $EdgeServers = (Get-CSPool $EdgeServerPool.PoolFQDN).Computers
 
  foreach ($EdgeServer in $EdgeServers)
  {
    $NetworkInterfaces = Get-CSNetworkInterface -ComputerFQDN $EdgeServer | Where {$_.Interface -eq "External" -and $_.IPAddress -ne "0.0.0.0"} 
    if (($NetworkInterfaces).Count -eq 3)
    {
      $NetworkInterface = $NetworkInterfaces | Where {$_.InterfaceNumber -eq 3}
    }
    else
    {
      $NetworkInterface = $NetworkInterfaces
    }

    if ($NetworkInterface.ConfiguredIPAddress -ne $NULL)
    {
      $IPAddress = $NetworkInterface.ConfiguredIPAddress
    }
    else
    {
      $IPAddress = $NetworkInterface.IPAddress
    }

    $Description = "A/V external edge IP for " + $EdgeServer
    New-CSNetworkSubnet -SubnetID $IPAddress.IPAddressToString -MaskBits 32 -Description $Description
  }
}
&lt;/textarea&gt;
&lt;br /&gt;
&lt;br /&gt;
The script will first check to see if a Lync network region already exists. If so, it will select the first one it sees as the base for all the subnets.&amp;nbsp; If one doesn't exist, it will create one using the first Lync site as the base. If need be, you can define additional network sites later. &lt;br /&gt;
&lt;br /&gt;
The script will then create all the sites/subnets based on information from AD. All the sites will be assigned to the one network region selected according to the rules in the previous paragraph. Since there is no way for the script to know which site belongs to which region, this will have to be done manually if multiple Lync network regions exist.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;IMPORTANT:&lt;/strong&gt; The script will also create the required subnets for all the Lync edge A/V public IP addresses with a 32-bit subnet mask as per the requirements for call admission control.&amp;nbsp; You will have to manually assign these subnets to the sites where you deployed the edge servers.&lt;br /&gt;
&lt;br /&gt;
While this script doesn't try to do everything associated with setting up call admission control, it does go a long way towards automating a good chunk of the process. A future revision of the &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Optimizer&lt;/a&gt; will hopefully close the loop and help completely automate the work required to setup location-based routing.&lt;br /&gt;
&lt;br /&gt;
As a final side note, one thing I don't understand is why Lync can't leverage AD Sites &amp;amp; Services for this information directly.&amp;nbsp; Exchange versions since 2007 have used AD Sites &amp;amp; Services for mail routing, so its not like it hasn't been done before.&amp;nbsp; Maybe a future version of Lync will add this functionality.&amp;nbsp; Until then, this script should help those who have well-defined site/subnet information in Active Directory.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/ijzOBtGh46U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/2607200819461528552/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/04/automatically-creating-lync-sites-and.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2607200819461528552?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2607200819461528552?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/ijzOBtGh46U/automatically-creating-lync-sites-and.html" title="Automatically Creating Lync Sites and Subnets using AD Sites" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/04/automatically-creating-lync-sites-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HRXg7eSp7ImA9WhBTGEg.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-4069662678560144787</id><published>2013-02-13T14:18:00.000-05:00</published><updated>2013-02-14T10:30:34.601-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-14T10:30:34.601-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="throttling" /><category scheme="http://www.blogger.com/atom/ns#" term="Exchange" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS 6.1" /><title>Assigning a Throttling Policy to all iOS 6.1 Devices in Exchange 2010</title><content type="html">&lt;b&gt;UPDATE 14-Feb-2013&lt;/b&gt;: After being linked to from &lt;a href="http://arstechnica.com/information-technology/2013/02/microsoft-suggests-fix-for-ios-6-1exchange-problem-block-iphone-users/" target="_blank"&gt;Ars Technica&lt;/a&gt;, I felt the need to improve the script. My original version of the script tried to use the&amp;nbsp;&lt;b&gt;UserDisplayName&amp;nbsp;&lt;/b&gt;field that is returned from&amp;nbsp;&lt;b&gt;Get-ActiveSyncDevice&lt;/b&gt;. &amp;nbsp;However, that field had a maximum number of characters, and a number of longer user DNs got cut off, which would make the script fail for that user. I figured out a way around it, and the script has been updated.&lt;br /&gt;
&lt;br /&gt;
If you're an Exchange administrator, you have probably heard about the issues caused by Apple's iOS 6.1 on Exchange servers. &amp;nbsp;It seems that screwy calendar code in iOS 6.1 ends up generating tons of transaction logs in Exchange, and can bring CAS servers to its knees.&lt;br /&gt;
&lt;br /&gt;
As an aside, its rather timely that this has come up just after the new Blackberry 10 came out. &amp;nbsp;Coincidence?????? &amp;nbsp;Heh.&lt;br /&gt;
&lt;br /&gt;
The temporary workarounds that MS recommends were to either apply a throttling policy to affected users, or block iOS 6.1 devices completely. &amp;nbsp;Since an all-out block is generally a Bad Thing, throttling policy is the way to go. &amp;nbsp;However, determining who is using iOS 6.1 and applying a throttling policy to them was not provided. &lt;br /&gt;
&lt;br /&gt;
A company I do work for experienced the exact issue. &amp;nbsp;Exchange transaction logs were being generated at a prodigious rate. &amp;nbsp;So, rather than blocking them, we went the throttling route. &amp;nbsp;First, I created a throttling policy called iOS61 and set the ActiveSync throttling to the lowest recommended values:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
New-ThrottlingPolicy -Name iOS61 -EASPercentTimeInCAS 10 -EASPercentTimeInAD 10 -EASPercentTimeInMailboxRPC 10&lt;/blockquote&gt;
Then, I created a short Powershell script to apply the policy to any user with a device using iOS 6.1:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-size: x-small;"&gt;$DeviceList = Get-ActiveSyncDevice -ResultSize Unlimited | Where {$_.DeviceOS -match "iOS 6.1"}&lt;br /&gt;foreach ($Device in $DeviceList)&lt;br /&gt;{&lt;br /&gt;$DeviceDN = $Device.DistinguishedName&lt;br /&gt;&amp;nbsp;$MBName=$DeviceDN.SubString($DeviceDN.IndexOf("CN=ExchangeActiveSyncDevices,")+29)&lt;br /&gt;Set-Mailbox $MBName -ThrottlingPolicy iOS61&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
The script will likely throw up some warnings about completing the command but not making any changes. &amp;nbsp;This happens because users may have more than one device, and the script tries to update the mailbox for every device it finds. &amp;nbsp;Nothing to be alarmed about.&lt;br /&gt;
&lt;br /&gt;
Quick and dirty, but gets the job done.&lt;br /&gt;
&lt;br /&gt;
Once Apple comes up with a solution, you can remove the throttling policy like this (assumes the users didn't have a throttling policy before this whole debacle):&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Get-Mailbox -ResultSize Unlimited | Where {$_.ThrottlingPolicy -eq 'iOS61'} | Set-Mailbox -ThrottlingPolicy $NULL&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/R4uBlpvta9w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/4069662678560144787/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/02/assigning-throttling-policy-to-all-ios.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/4069662678560144787?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/4069662678560144787?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/R4uBlpvta9w/assigning-throttling-policy-to-all-ios.html" title="Assigning a Throttling Policy to all iOS 6.1 Devices in Exchange 2010" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/02/assigning-throttling-policy-to-all-ios.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MMQnk9fyp7ImA9WhNaEE4.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-6132577614931212613</id><published>2013-01-24T09:55:00.002-05:00</published><updated>2013-01-24T09:58:03.767-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-24T09:58:03.767-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="usages" /><category scheme="http://www.blogger.com/atom/ns#" term="features" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><title>Limiting Call Forwarding and Simultaneous Ringing in Lync 2013</title><content type="html">In Lync 2010, users were able to forward calls or setup simultaneous ringing to any number that they were able to call themselves. &amp;nbsp;This could lead to people forwarding all their calls to a long distance or even international number (assuming their voice policy allowed international calling). &amp;nbsp;This can lead to increased telephony costs to the company, and there wasn't very much the administrator could do to control this, short of disabling the feature entirely.&lt;br /&gt;
A&amp;nbsp;new feature in Lync Server 2013 Enterprise Voice allows administrators to limit where users are able to setup call forwarding/simultaneous ringing. &amp;nbsp;You'll see the new option at the bottom of the voice policy screen in Lync 2013 Control Panel (as highlighted in red).&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-MzIaMcv8b_M/UOsDY1bd4CI/AAAAAAAAAbo/Y9B6K3drwp0/s1600/VoicePolicy.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="617" src="http://3.bp.blogspot.com/-MzIaMcv8b_M/UOsDY1bd4CI/AAAAAAAAAbo/Y9B6K3drwp0/s640/VoicePolicy.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The selectable options are:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-UM_27RE6ydg/UOsFOQaqnZI/AAAAAAAAAb4/n296edX6Das/s1600/CallForwardOptions.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="137" src="http://4.bp.blogspot.com/-UM_27RE6ydg/UOsFOQaqnZI/AAAAAAAAAb4/n296edX6Das/s400/CallForwardOptions.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;Route using the call PSTN usages (default) &lt;/b&gt;- essentially means to allow users to forward calls to any destination phone number they are allowed to call (the same behaviour as in Lync 2010). &amp;nbsp;So if a user is allowed to call international numbers, they will be allowed to forward/simultaneous ring international numbers. The option wording here could really use some improvement, because to me it doesn't make much sense as it currently stands.&lt;br /&gt;
&lt;b&gt;Route to internal Lync users only&lt;/b&gt; - allows call forwarding/simultaneous ringing only to other Lync users within the company.&lt;br /&gt;
&lt;b&gt;Route calls using custom PSTN usages&lt;/b&gt; - &amp;nbsp;allows administrators to limit call forwarding/simultaneous ringing to only the PSTN usages defined by the administrator.&lt;br /&gt;
&lt;br /&gt;
When the last option is selected, the Control Panel will display a box where administrators can select the appropriate PSTN usages. &amp;nbsp;For instance, to limit call forwarding/simultaneous ringing to only local numbers, select a local PSTN usage, as shown below:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Skrk-itbdDc/UOsGhogFC7I/AAAAAAAAAcI/_WC7-eJkQNA/s1600/ForwardtoUsage.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://1.bp.blogspot.com/-Skrk-itbdDc/UOsGhogFC7I/AAAAAAAAAcI/_WC7-eJkQNA/s640/ForwardtoUsage.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Administrators can add multiple usages&amp;nbsp;to allow calls forwarding/simultaneous ringing to any combination of PSTN usages.&amp;nbsp; Since voice policies can be applied either globally, site-wide or down to the user level, this should allow administrators to grant different policies to any number of users.&lt;br /&gt;
&lt;br /&gt;
This assumes&amp;nbsp;the Enterprise Voice deployment&amp;nbsp;has been designed granular&amp;nbsp;enough to break out local, national and international calling. &amp;nbsp;If&amp;nbsp;there is only&amp;nbsp;a single catch-all usage for all calls, then this won't work and the Enterprise Voice configuration will have to be re-designed. &lt;br /&gt;
&lt;br /&gt;
Luckily,&amp;nbsp;the &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt; (shameless plug) creates usages for local, mobile, national, premium, and international usages, which should be enough for any administrative need.&lt;br /&gt;
&lt;br /&gt;
Unfortunately from the user's perspective, they won't get a notification in the Lync client if they try to forward/simultaneous ring a phone number that is outside the dialing areas allowed by their voice policy. &lt;br /&gt;
&lt;br /&gt;
For example, assume a user's voice policy only allows forwarding/simultaneous ringing to local numbers. If the user sets up simultaneous ringing to a number outside the local dialing area, they won't get any feedback that it isn't allowed by the policy. &amp;nbsp;When someone phones the user, their Lync devices will ring as usual, but the simultaneous ring number simply won't ring. &amp;nbsp;This could generate an unnecessary helpdesk call, which could also confuse the helpdesk, if they haven't been made aware of the policy.&lt;br /&gt;
&lt;br /&gt;
Similarily, the user doesn't get any feedback in the Lync client when setting up call forwarding to a number outside the allowed dialing areas. &amp;nbsp;In this case, calls will simply go straight to Exchange voicemail without attempting to forward. &amp;nbsp;However, the user will get an email stating the forwarding isn't allowed. &amp;nbsp;Slightly more helpful, but still likely to generate a helpdesk call.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-jISlriMKKMY/UOsQZ6bbn-I/AAAAAAAAAcY/wuZ65Le5GP4/s1600/ForwardUnsuccessful.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://3.bp.blogspot.com/-jISlriMKKMY/UOsQZ6bbn-I/AAAAAAAAAcY/wuZ65Le5GP4/s640/ForwardUnsuccessful.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
Curiously, the interface still refers to Office Communicator, but since I'm still running Exchange 2010, maybe this is to be expected.&lt;br /&gt;
&lt;br /&gt;
The situation would be greatly improved if the Lync client would be more informative in this respect. &amp;nbsp;In my perfect world, there would be no war, global warming would turn Canada into a tropical paradise, gin and tonic would flow freely from taps all around my house, and the Lync client would provide feedback like this when users try to forward to a number that isn't allowed:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-u6GZ6pIIZ_Y/UOsi9YY4QpI/AAAAAAAAAco/E8CG1CWJYvY/s1600/LyncForward.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="372" src="http://4.bp.blogspot.com/-u6GZ6pIIZ_Y/UOsi9YY4QpI/AAAAAAAAAco/E8CG1CWJYvY/s640/LyncForward.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A man can dream, can't he? &lt;br /&gt;
&lt;br /&gt;
Either way, the new control administrators have to limit call-forwarding/simulring is a much needed new feature, and I'm glad it made it into Lync 2013.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/ogCNi5d_7n8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/6132577614931212613/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/01/Lync-Call-Forwarding-SimulRing.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/6132577614931212613?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/6132577614931212613?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/ogCNi5d_7n8/Lync-Call-Forwarding-SimulRing.html" title="Limiting Call Forwarding and Simultaneous Ringing in Lync 2013" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-MzIaMcv8b_M/UOsDY1bd4CI/AAAAAAAAAbo/Y9B6K3drwp0/s72-c/VoicePolicy.PNG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/01/Lync-Call-Forwarding-SimulRing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8FR3wzfyp7ImA9WhNUF0k.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-8658135804701349248</id><published>2013-01-09T10:17:00.001-05:00</published><updated>2013-01-09T11:26:56.287-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-09T11:26:56.287-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="usages" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="routes" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><title>Least-Cost/Failover Routing in the Lync Dialing Rule Optimizer</title><content type="html">The &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt; tries to take care of all the Enterprise Voice configuration necessary for all deployments. &amp;nbsp;On most fronts, it does a pretty good job (IMHO). &amp;nbsp;One area that has been lacking is the ability to automatically arrange PSTN usages to provide least-cost/failover routing for multi-site Lync deployments. Once an administrator has run the Optimizer for all their sites, they have to manually configure the voice policies to provide least-cost/failover routing.&lt;br /&gt;
&lt;br /&gt;
If you're not familiar with how least-cost/failover routing works in Lync, please refer to &lt;a href="http://ucken.blogspot.com/2011/01/enterprise-voice-best-practices-in-lync_21.html" target="_blank"&gt;my post on the subject&lt;/a&gt; in my &lt;a href="http://ucken.blogspot.com/search/label/EV%20Best%20Practices" target="_blank"&gt;Lync Enterprise Voice Best Practices series&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
With version 9.0 of the &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt;, Lync administrators now have the option to create least-cost/failover routing between all sites that have been deployed using the Optimizer (or at least follows the same naming conventions used by the Optimizer).&lt;br /&gt;
&lt;br /&gt;
When the Optimizer-generated script detects multiple Lync sites, it will prompt the user if they want to apply least-cost/failover routing to the voice policy being generated. &amp;nbsp;If the user allows it, the Optimizer will add PSTN usages for all the other sites to the new voice policies. &amp;nbsp;This assumes the existing PSTN usages are named with the country abbreviation first, and ends with either &lt;b&gt;Local&lt;/b&gt;, &lt;b&gt;National&lt;/b&gt;, &lt;b&gt;International &lt;/b&gt;etc in any of the languages currently supported by the Optimizer as in the following examples: &amp;nbsp;UK-Leeds-113-Local, IT-Rome-06-Nazionali.&lt;br /&gt;
&lt;br /&gt;
The output can be best summarized by way of example. &amp;nbsp;Assume a company has Lync Enterprise Voice deployed in the following locations:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
Toronto, Canada&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Vancouver, Canada&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
London, UK&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Rome, Italy&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Belém, Brazil&lt;/div&gt;
&lt;br /&gt;
After running the Optimizer script against all sites, the PSTN usages for the Toronto International user voice policy would look like this (you might want to sit down for this):&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
NA-ON-Toronto-41&lt;span style="background-color: white;"&gt;6&lt;/span&gt;567-Local&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-BC-Vancouver-604678-Local&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-ON-Toronto-416567-National&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-BC-Vancouver-604678-National&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-ON-Toronto-416567-Premium&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-BC-Vancouver-604678-Premium&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-ON-Toronto-416567-Service&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="background-color: white;"&gt;UK-London-20-Local&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="background-color: white;"&gt;IT-Roma-06-Locali&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="background-color: white;"&gt;BR-&lt;span style="text-align: center;"&gt;Belém-91-Local&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
UK-London-20-Mobile&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
IT-Roma-06-Cellulari&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
BR-&lt;span style="text-align: center;"&gt;Belém-91-Celular&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
UK-London-20-National&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
IT-Roma-06-Nazionali&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
BR-&lt;span style="text-align: center;"&gt;Belém-91-Nacional&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-ON-Toronto-416567-International&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
NA-BC-Vancouver-604678-International&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
UK-London-20-International&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
IT-Roma-06-Internazionali&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
BR-&lt;span style="text-align: center;"&gt;Belém-91-Internacional&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The Optimizer will group PSTN usages from the same country near the top, using the assumption that most of the calls will be made to in-country locations and that the fewer PSTN usages the system needs to evaluate for each call, the better. &lt;br /&gt;
&lt;br /&gt;
The ordering is such that least-cost routing and failover routing will occur. &amp;nbsp;PSTN usages from other countries will be placed lower in the list while still providing least-cost and failover routing for all calls. &amp;nbsp;If there are multiple Lync sites out-of-country, the ordering of PSTN usages within the National and International usages will be somewhat random. Administrators should review the PSTN ordering to make sure it suits their needs.&lt;br /&gt;
&lt;br /&gt;
It is assumed that premium numbers can only be dialed from in-country locations, so out-of-country premium PSTN usages are not assigned. Also, only the local service PSTN usage is assigned for similar reasons.&lt;br /&gt;
&lt;br /&gt;
All calls will use the least-cost route where possible. If a route assigned to a specific usage is unavailable, calls will use a route in another site, again keeping the call in-country if possible.&lt;br /&gt;
&lt;br /&gt;
With the inclusion of least-cost/failover routing in the Lync Optimizer, administrators now have a tool that can completely build the Enterprise Voice environment for even the largest enterprise-level Lync deployment. &lt;br /&gt;
&lt;br /&gt;
As always, feedback is greatly appreciated. Let me know if you come across any issues with functionality or scalability as I haven't tested if there is a limit to the number of PSTN usages that can be assigned to a voice policy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/5sGpBwxV2gU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/8658135804701349248/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/01/least-cost-failover-routing-in-optimizer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8658135804701349248?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8658135804701349248?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/5sGpBwxV2gU/least-cost-failover-routing-in-optimizer.html" title="Least-Cost/Failover Routing in the Lync Dialing Rule Optimizer" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/01/least-cost-failover-routing-in-optimizer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ABRH0yeCp7ImA9WhNUE08.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-5784089378421378533</id><published>2013-01-04T12:49:00.001-05:00</published><updated>2013-01-04T12:49:15.390-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T12:49:15.390-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="telephony" /><category scheme="http://www.blogger.com/atom/ns#" term="e.164" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><category scheme="http://www.blogger.com/atom/ns#" term="normalization" /><title>Blocking International Calls to Specific Countries in Lync</title><content type="html">A question that often comes up in my travels is that Lync administrators want an easy way to allow users to dial internationally but exclude specific countries for some reason.&lt;br /&gt;
&lt;br /&gt;
This is very easy to accomplish once you understand the ins and outs of regular expressions, and assuming you follow all my best practices regarding number normalization, and Enterprise Voice setup. &amp;nbsp;To summarize, every number a user enters in Lync should be normalized to E.164 standards, which starts with a&amp;nbsp;+ followed by the country code, then the area/city code and finally the local subscriber number. &amp;nbsp;A Canadian example (country code 1) would be&amp;nbsp;+14165551111. &amp;nbsp;A UK example (country code 44) would be&amp;nbsp;+442033334444. &amp;nbsp;If you use the &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt; to create your Enterprise Voice configuration, you'll be all set.&lt;br /&gt;
&lt;br /&gt;
When all numbers are normalized to E.164, and you already have separate usages and routes for local, national and international calls, it makes it very easy to design regular expressions that meet any specific criteria required by your business.&lt;br /&gt;
&lt;br /&gt;
Say your company is based in North America, and is required to block international calls to Iran (98) and North Korea (850). &amp;nbsp;The Lync Dialing Rule Optimizer routing rule for international calls is this:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: large;"&gt;^\+[2-9]\d{6,14}$&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
This rule allows any number that doesn't start with a 0 or 1 to be routed out. Only North American countries (US/Canada and some Caribbean countries) use the country code 1. &amp;nbsp;All other country codes start with the digits 2-9. &amp;nbsp;So essentially, this rule allows calls to any international destination.&lt;br /&gt;
&lt;br /&gt;
To block calls to Iran and North Korea, modify the rule to look like this (new stuff highlighted in yellow):&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 20px; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="background-color: white;"&gt;^\+&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;(?!98|850)&lt;/span&gt;&lt;span style="background-color: white;"&gt;[2-9]\d{6,14}$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.333333969116211px; line-height: 20px; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;
This will allow any number starting with 2-9, but excludes numbers that start with 98 or 850 as required.&lt;br /&gt;
&lt;br /&gt;
If you're not in North America and used the Lync Dialing Rule Optimizer to create your Enterprise Voice setup, your international rule looks a little different, because we want to make sure that North American numbers are formatted correctly (as highlighted in blue), while making sure that it does not try to route national numbers as international (using UK +44 as an example, shown in green):&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: large;"&gt;^\+(&lt;span style="background-color: cyan;"&gt;(1[2-9]\d\d[2-9]\d{6})&lt;/span&gt;|(&lt;span style="background-color: lime;"&gt;?(?!(44))&lt;/span&gt;([2-9]\d{6,14})))$&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
To block calls to Iran and North Korea using this example, modify the rule as follows (new stuff highlighted in yellow again):&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: large;"&gt;^\+((1[2-9]\d\d[2-9]\d{6})|(?(?!(44|&lt;span style="background-color: yellow;"&gt;98|850&lt;/span&gt;))([2-9]\d{6,14})))$&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Now, anybody who tries to dial a number in Iran or North Korea will be met with a notice that the call couldn't be completed. &lt;br /&gt;
&lt;br /&gt;This method is pretty granular as you could create separate routes to block countries selectively or for a specific group of users. &amp;nbsp;If you want to just block those numbers globally, you can use &lt;a href="http://ucken.blogspot.com/2011/09/block-premium-rate-numbers-with-dialing.html" target="_blank"&gt;Unassigned Numbers&lt;/a&gt; to provide an announcement to users that those numbers are not allowed to be dialled. The only downside to that method is that you need to know in advance how long phone numbers are in the country you want to block.&lt;br /&gt;
&lt;br /&gt;
Happy Enterprise Voicing everyone!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/7I-19IifPxU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/5784089378421378533/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2013/01/blocking-international-calls-to.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/5784089378421378533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/5784089378421378533?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/7I-19IifPxU/blocking-international-calls-to.html" title="Blocking International Calls to Specific Countries in Lync" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ucken.blogspot.com/2013/01/blocking-international-calls-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8AQn86cSp7ImA9WhNXF08.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-5440084754443184725</id><published>2012-12-05T09:47:00.001-05:00</published><updated>2012-12-05T11:27:23.119-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-05T11:27:23.119-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><title>Localized UK Dialing Rules for the Optimizer</title><content type="html">Using data from a number of web sources and some helpful users, I've been able to create customized Lync dialing rules for over 30 countries worldwide and made them available to all via the&amp;nbsp;&lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt;. &amp;nbsp;These customized dialing rules account for country-specific dialing patterns for local, national, international, toll-free, mobile, premium and service numbers.&lt;br /&gt;
&lt;br /&gt;
However, true localized dialing rules have been out of reach for countries other than those in North America until now. &amp;nbsp;For all non-North American countries, I have been forced to create generic dialing patterns for local numbers simply because I don't have access to any source of local dialing rule data. &amp;nbsp;This isn't generally a problem because most local dialing rules are different enough from other patterns that conflicts are rare. &amp;nbsp;For example, &amp;nbsp;a local dialing rule for a country might specify that the number start with digits 2-9 and are between 5 and 6 digits in length. &amp;nbsp;As long as there aren't any other dialing patterns in that country that use that same pattern (ie national, international, mobile, service, toll-free or premium), there won't be a problem. &amp;nbsp;I try to make sure that is the case for all dialing rules created for the Optimizer, but it is sometimes difficult.&lt;br /&gt;
&lt;br /&gt;
The United Kingdom has more than 60 different local dialing rules. Local numbers can be 4 to 8 digits in length and area codes have from 2 to 5 digits. Some 41 area codes have mixed length numbers where some numbers have a total 10 digits and others have only 9. In some area codes the local number cannot begin with certain digits, or certain digits will not come into use for many decades.&amp;nbsp; The generic UK local dialing rule used by the Optimizer tries to account for all these in a single regular expression, but obviously some generalizations had to be made.&lt;br /&gt;
&lt;br /&gt;
Enter &lt;a href="https://twitter.com/g1smd" target="_blank"&gt;Ian Galpin&lt;/a&gt; of the UK. &amp;nbsp;Ian has made it a personal mission to ensure that the UK has a complete set of dialing rules written as regular expressions. &amp;nbsp; Over the past year, he's helped me ensure the regex for UK dialing rules are correct. &amp;nbsp;He's also created a &lt;a href="https://github.com/g1smd/Local-Number-Format-44-GB/blob/master/Local-Number-Format-44GB.xml" target="_blank"&gt;localized set of dialing rules for every area code in the UK as an XML file&lt;/a&gt;&amp;nbsp;along with a &lt;a href="https://github.com/g1smd/Area-Code-List-44-GB/blob/master/Area-Code-List-44GB-Split-Entries-Numbered.xml" target="_blank"&gt;list of all the area codes used in the UK&lt;/a&gt;. &amp;nbsp;He's done this to help various telephony vendors create the appropriate rulesets for PBX deployments. I've been able to incorporate that into the Lync Dialing Rule Optimizer, so that UK users now have true customized local dialing rules for Lync that will differ depending on which area code you select in the Optimizer.&lt;br /&gt;
&lt;br /&gt;
I've modified the Optimizer code to be able to use local dialing rules for other countries if available. &amp;nbsp;If anybody can point me to a similar source as provided by Ian for other countries, it would be greatly appreciated.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/xJnC3792_PY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/5440084754443184725/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/12/localized-uk-dialing-rules-for-optimizer.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/5440084754443184725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/5440084754443184725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/xJnC3792_PY/localized-uk-dialing-rules-for-optimizer.html" title="Localized UK Dialing Rules for the Optimizer" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/12/localized-uk-dialing-rules-for-optimizer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFQX09eyp7ImA9WhNTFEw.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-643787953807207125</id><published>2012-10-12T09:40:00.000-04:00</published><updated>2012-10-16T16:13:30.363-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-16T16:13:30.363-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="2013" /><category scheme="http://www.blogger.com/atom/ns#" term="commentary" /><title>Lync 2013 is Code-Complete</title><content type="html">For those who haven't heard through Twitter or other channels, &lt;a href="http://blogs.technet.com/b/lync/archive/2012/10/11/lync-2013-is-finished.aspx" target="_blank"&gt;Lync 2013 is code-complete&lt;/a&gt;, with a general availability target of first quarter 2013 as part of the Office 2013 suite. &amp;nbsp;It isn't clear from the announcement, but this is for the Lync 2013 &lt;b&gt;CLIENT&lt;/b&gt;, not server. &amp;nbsp;Since Exchange 2013 and Sharepoint 2013 have been announced, I'm sure we'll be hearing about Lync &lt;b&gt;Server &lt;/b&gt;2013 achieving the same milestone fairly soon.&lt;br /&gt;
&lt;br /&gt;
UPDATE: Well, confusion reigned among some of the MVP mailing lists. &amp;nbsp;While some were saying the Lync 2013 announcement was for the client, others were saying it was for the server. &amp;nbsp;Seeing how all the other servers in the "suite" have been announced, I think its safe to say that Lync &lt;b&gt;Server &lt;/b&gt;2013 is part of it.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/MTK5Hgv0sH0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/643787953807207125/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/10/lync-2013-is-code-complete.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/643787953807207125?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/643787953807207125?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/MTK5Hgv0sH0/lync-2013-is-code-complete.html" title="Lync 2013 is Code-Complete" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/10/lync-2013-is-code-complete.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MFRX0zeCp7ImA9WhNTEEo.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-7451448638219544439</id><published>2012-10-04T10:15:00.002-04:00</published><updated>2012-10-12T15:50:14.380-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-12T15:50:14.380-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="SBS" /><category scheme="http://www.blogger.com/atom/ns#" term="SBA" /><title>Lync Branch Site Options and Recommendations</title><content type="html">A large-scale Lync deployment typically consists of at least one central site that contains either a Standard or Enterprise Edition pool and one or more branch sites that don't warrant having a full-blown Lync deployment, but still need local voice connectivity in case of a WAN outage.&lt;br /&gt;
&lt;br /&gt;
You have 4 options when considering what to deploy at a branch site:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Survivable Branch Appliance&lt;/strong&gt; (SBA)&amp;nbsp;- an all-in-one solution that&amp;nbsp;consists of&amp;nbsp;a PSTN gateway with the appropriate interface required for connectivity to the PSTN and a "Lync-Lite" installation that has only the Lync registrar and mediation server roles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Survivable Branch Server&lt;/strong&gt; (SBS) - A "Lync-lite" installation containing the Lync registrar and mediation server roles.&lt;/li&gt;
&lt;li&gt;A PSTN gateway and a standalone Lync mediation server&lt;/li&gt;
&lt;li&gt;A full-blown Lync deployment (typically Standard Edition)&lt;/li&gt;
&lt;/ol&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/gg398234.aspx" target="_blank"&gt;Microsoft doesn't give much guidance&lt;/a&gt; as to which option is right other than saying that an SBA is appropriate for branches up to 1000 users, an SBS or 2 SBAs&amp;nbsp;is good for 2000 users, and anything beyond that should be a Standard Edition Server.&lt;br /&gt;
&lt;br /&gt;
What a lot of people don't realize is that there is more to consider than simple user counts.&amp;nbsp; Let's start by looking at where an SBA is appropriate, and where it isn't.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Survivable Branch Appliance&lt;/h2&gt;
As noted earlier, a Survivable Branch Appliance is an appliance that contains a PSTN gateway along with a small Windows Server 2008 R2 deployment with the Lync registrar and mediation server roles. SBAs are purchased from vendors such as &lt;a href="http://technet.microsoft.com/en-us/lync/gg131938.aspx" target="_blank"&gt;NET, Audiocodes, Dialogic, or Ferrari, among others&lt;/a&gt;. An SBA is paired with a central site that has a full-blown Lync deployment and is designed to be dropped into an office that doesn't have much local IT support.&lt;br /&gt;
&lt;br /&gt;
Lync clients are homed on an SBA, and will register/login directly against it.&amp;nbsp;PSTN calls are routed through the mediation server role and onto the PSTN gateway component of the SBA. &lt;br /&gt;
&lt;br /&gt;
While clients register against the SBA, their contact list is still homed on the central Lync deployment.&amp;nbsp; Also, all conferencing features and response group functionality is provided by the central Lync deployment.&amp;nbsp; So, if the WAN link between the central site goes down, clients will lose their personal contact list, the ability to do multiparty web/video conferencing and any response groups whose phone numbers terminate on the SBA won't work.&amp;nbsp; &lt;a href="http://voipnorm.blogspot.ca/2010/12/survivable-branch-appliance-in-failover.html" target="_blank"&gt;This is beautifully illustrated by VOIPNorm on his blog post on the topic&lt;/a&gt;.&amp;nbsp; What DOES work is one-to-one IMs/telephone calls, PSTN calling, searching for contacts&amp;nbsp;and any other features that don't require the full Lync deployment's involvement.&amp;nbsp; Again, see the blog post by VOIPNorm for full details.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
When to Use&amp;nbsp;a SBA and When Not To&lt;/h3&gt;
Use an SBA when you your site meets the following criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Up to 1000 users (2000 if you use 2 SBAs)&lt;/li&gt;
&lt;li&gt;Have a T1/E1 or analog connection to the PSTN&lt;/li&gt;
&lt;li&gt;Won't miss conferencing or response group functionality during a WAN outage&lt;/li&gt;
&lt;li&gt;Have limited IT staff on site&lt;/li&gt;
&lt;/ul&gt;
Don't use an SBA if your site meets any of these criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Does a lot of conferencing&amp;nbsp;and has a slow/expensive WAN pipe to the central site. &amp;nbsp;Conferencing services come from the central pool, so this can be a strain on WAN resources.&lt;/li&gt;
&lt;li&gt;Requires high availability for conferencing features and/or Response Group services&lt;/li&gt;
&lt;li&gt;Use a SIP trunk for PSTN connectivity, unless the SBA can be configured as a SIP gateway and doesn't have PSTN interfaces you don't need (they aren't cheap)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Survivable Branch Server&lt;/h2&gt;
A Survivable Branch Server (SBS) has the same capabilities as an SBA, but without the PSTN gateway component.&amp;nbsp; It isn't something that you purchase from a vendor.&amp;nbsp; It's simply a "Lync-lite" server you define in the topology and install yourself on a regular Windows Server 2008 R2 (or Windows Server 2012 for Lync 2013) server.&amp;nbsp; Like the SBA, it only has the Lync registrar and mediation server roles. &lt;br /&gt;
&lt;br /&gt;
Incidentally, &amp;nbsp;you won't see an option to define an SBS in the Lync topoology. &amp;nbsp;Your only option is an SBA. &amp;nbsp;Since the functionality of the Lync portion of the SBA is identical for an SBS, it doesn't need to be defined separately. Lync doesn't care if the PSTN gateway is part of the same chassis as in an SBA or a separate component as with an SBS.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
When to Use a SBS and When Not To&lt;/h3&gt;
Use an SBS when your site meets the following criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Have up to 2000 users&lt;/li&gt;
&lt;li&gt;Have the local&amp;nbsp;infrastructure to support a full-blown Windows Server deployment (either VM or physical server)&lt;/li&gt;
&lt;li&gt;Have a SIP trunk connection to a Lync-certified SIP provider, or you already have a standalone PSTN gateway&lt;/li&gt;
&lt;li&gt;Won't miss conferencing or response group functionality during a WAN outage&lt;/li&gt;
&lt;li&gt;Have at least some local IT staff&lt;/li&gt;
&lt;/ul&gt;
Don't use an SBS if your site meets any of these criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Does a lot of conferencing and has a slow/expensive WAN pipe to your central site.&amp;nbsp;Conferencing services come from the central pool, so this can be a strain on WAN resources.&lt;/li&gt;
&lt;li&gt;Requires high availability for conferencing features and/or Response Group services&lt;/li&gt;
&lt;li&gt;Have either a T1/E1 or analog service for PSTN access. You would still need to purchase a PSTN gateway, and would probably be better served by using an SBA (unless either of the above 2 points apply)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
PSTN Gateway and Mediation Server&lt;/h2&gt;
This option is an interesting one in that I've not seen it "in the wild". &amp;nbsp;A site with just a mediation server role is entirely dependent on the WAN link to the central site. If the WAN goes down, then so do your clients. You need the infrastructure to support a Windows installation, something many small branch sites don't have. &amp;nbsp;If you have a SIP trunk connection, you may not need a PSTN gateway at all. &amp;nbsp;Conversely, you may not require a mediation server if you use &lt;a href="http://technet.microsoft.com/en-us/library/gg413028.aspx" target="_blank"&gt;media bypass&lt;/a&gt; to send client audio traffic directly from the client to the PSTN gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
When to Use this Option and When Not To&lt;/h3&gt;
Use a PSTN Gateway/mediation server when your site meets the following criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You have a 100% reliable WAN connection to your central site or your users will be OK with no functionality in the event of an outage&lt;/li&gt;
&lt;/ul&gt;
Don't use a PSTN Gateway/mediation server if your site meets the following criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Your WAN isn't reliable&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Standard Edition Deployment&amp;nbsp;&lt;/h2&gt;
&lt;div&gt;
Sometimes, you will need a full-blown Lync deployment at your branch site. &amp;nbsp;With even just a Standard Edition server, local clients will get all the functionality Lync has to offer, so WAN outages won't be a big issue.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
When to Use this Option&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Use a Standard Edition server when your site meets one or more of the following criteria:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You have more than 2000 users in a site&lt;/li&gt;
&lt;li&gt;Your WAN link reliability is low&lt;/li&gt;
&lt;li&gt;Your users do a lot of conferencing with each other&lt;/li&gt;
&lt;li&gt;You need local Response Group functionality&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Hopefully, this post will give you some better guidance as to what branch role to deploy at your sites. If you have any questions or comments, please let me know. By the way, the above is relevant for both Lync 2010 and Lync 2013.&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/u-1AmPowB1E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/7451448638219544439/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/10/lync-branch-site-options-and.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7451448638219544439?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7451448638219544439?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/u-1AmPowB1E/lync-branch-site-options-and.html" title="Lync Branch Site Options and Recommendations" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>11</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/10/lync-branch-site-options-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDQHY8cSp7ImA9WhJQEUo.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-1353148932441337777</id><published>2012-07-16T16:08:00.000-04:00</published><updated>2012-07-24T20:47:51.879-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-24T20:47:51.879-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="features" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="2013" /><title>What's New in Lync 2013</title><content type="html">With the recent announcement about &lt;a href="http://lync.microsoft.com/en-us/Pages/Lync-2013-Preview.aspx" target="_blank"&gt;Lync 2013&lt;/a&gt;&amp;nbsp;(previously known in beta circles as Lync 15), I'm sure everyone is interested in what's new. Lync 2013 doesn't re-invent the wheel when compared to Lync 2010. &amp;nbsp;Lync 2013 builds on the features introduced in Lync 2010 in a way that makes Lync&amp;nbsp;2013&amp;nbsp;a compelling upgrade. Here is a quick rundown of the new features (note this is information from the beta product so things may change before its final release):&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



Roles&lt;/h3&gt;
&lt;div&gt;
There has been significant role consolidation in Lync 2013. &amp;nbsp;There is no longer a separate server role for monitoring and archiving. &amp;nbsp;Each front-end server communicates directly with the monitoring and/or archiving database, eliminating the need for a separate monitoring/archiving server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can no longer install the A/V conferencing server role separately. &amp;nbsp;It is now always co-located with the front-end role.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Directors are now an optional role, which is kind of funny because I've always treated them as optional myself.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



&lt;span style="background-color: white;"&gt;DR/High Availability Options&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
Lync 2010 introduced the concept of a backup registrar. &amp;nbsp;When a user's home pool becomes unavailable, the client can automatically register with a pre-defined backup pool. &amp;nbsp;This maintains basic voice availability, but the client loses conferencing capabilities, and the user's contact list is unavailable. &amp;nbsp;In Lync 2013, users will maintain nearly all functionality in the event of a failed pool. &amp;nbsp;This is made possible because all user data is now replicated between all Lync servers in the enterprise. &amp;nbsp;Every server maintains multiple copies of the user database, so there is almost no reduction in service availability. &amp;nbsp;I say "almost" because Response Groups are still not highly available (something that was sorely missed in Lync 2010). &amp;nbsp;So, should you suffer a failure on your home pool that hosts response groups, those response groups will not be available.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Each front-end server stores a complete copy of all the databases stored in the SQL back-end, so if the back-end SQL database server is unavailable, the front-end will still function.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Also, Lync 2013 supports SQL mirroring on the back-end databases. &amp;nbsp;This can reduce hardware costs typically associated with the older clustering options in SQL (separate shared storage).&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



Enterprise Voice&lt;/h3&gt;
&lt;div&gt;
In Lync 2010, if you had multiple mediation servers connecting to the same PSTN gateway or SIP trunk, you had to fake the Topology Builder out by creating multiple DNS A records pointing to the same IP. &amp;nbsp;Lync 2013 now supports M-N trunk routing. &amp;nbsp;This allows you to&amp;nbsp;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;have multiple trunks to different gateways, and a gateway to have multiple trunks to different Mediation Servers.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Lync 2013 includes support for inter-trunk routing. This feature allows Lync to act as an intermediary between two or more different phone systems. &amp;nbsp;For example, Lync can accept calls from one PBX, and pass the call through to another PBX. This can be very useful in larger environments and allows Lync to be the backbone of a corporate telephone network.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
In Lync 2010, you could use trunk translation rules to modify the CALLED phone number before passing it to the next hop. &amp;nbsp;However, you couldn't make any changes to the CALLING number (ie the person making the telephone call). &amp;nbsp;Lync 2013 now allows you to make changes to both the called and calling number. &amp;nbsp;This is very useful when the PSTN provider does not accept E.164 formatted phone numbers. For example, in North America, many PSTN providers do not accept the country code 1 as part of the number and only accepts 10-digit numbers. &amp;nbsp;In the past, an external gateway would have to do the necessary manipulation, but with Lync 2013, all the number manipulation can be done in Lync.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are also several other new Enterprise Voice related enhancements&lt;span style="background-color: white;"&gt;. Delegates can setup simultaneous ringing to their mobile devices for incoming calls to their manager. When a user has setup simultaneous ringing to a mobile phone, and the device is turned off or out of range, Lync 2013 can determine that an incoming call was immediately routed to voicemail, and disconnect that endpoint so the call can continue to ring other endpoints. Caller ID presentation allows administrators to modify the Caller ID format in a much more scalable way than in Lync 2010, which only allowed Caller ID changes based on the route.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;



&lt;span style="background-color: white;"&gt;Response Groups&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
Not much has changed here, but you can configure Response Group Managers and Administrators, allowing you to delegate Response Group tasks to other users. &amp;nbsp;If this seems familiar, its because that feature was in OCS 2007 R2, but was removed from Lync 2010 for some reason.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



Integration with Lync Online&lt;/h3&gt;
&lt;div&gt;
You can now create hybrid deployments with a mix of on-premises and Lync Online servers (similar to Exchange 2010). &amp;nbsp;This means that you can have some users running "in the cloud" and some users on traditional on-premises servers. &amp;nbsp;Microsoft calls this "hybrid voice". &amp;nbsp;You can also have all your users running in Lync Online and make calls via an on-premises PSTN gateway. This means you can allow Lync Online users to dial legacy PBX extensions, or make calls via a traditional PSTN connection (T1/E1 or similar) in situations where SIP trunking isn't desirable or an option. &amp;nbsp;Media bypass will work in this situation, so a user's media stream won't be hairpinned through the Lync Online service when making phone calls from an office running a local PSTN gateway.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



&lt;span style="background-color: white;"&gt;Mobility&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;Mobile clients will finally get the featureset people have been asking for.&amp;nbsp;&amp;nbsp;Mobile clients will be able to make audio and video calls from their mobile device using either a mobile data connection or wi-fi.&amp;nbsp;I have no idea&amp;nbsp;if this will be available at launch or sometime after. &amp;nbsp;There isn't a Lync 2013 mobile client available yet that I've seen,&amp;nbsp;but there are &lt;a href="http://lyncme.blogspot.ca/2012/07/lync-server-2013-powershell-whats-next.html" target="_blank"&gt;definite signs around&amp;nbsp;mobile A/V&amp;nbsp;in some updated Powershell commands like &lt;strong&gt;Get-CSMobilityPolicy&lt;/strong&gt;&lt;/a&gt;. I saw an early demo of Lync 2013 on a tablet running Windows 8, and it pretty much guaranteed I'll be buying a Windows 8 tablet when it comes out. &amp;nbsp;Lync on a tablet was just THAT cool.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;



&lt;span style="background-color: white;"&gt;Persistent Chat&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
Persistent chat (or group chat), is now a full-fledged Lync service, unlike older versions which was really just tacked on (and quite poorly, in my opinion). &amp;nbsp;You now define servers in the Topology Builder as with other roles, and the persistent chat features are included in the base Lync 2013 client (no separate client required).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



Other New Features&lt;/h3&gt;
&lt;div&gt;
Other features that don't fall into the above categories include:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Full A/V capabilities on the Lync Web App client&lt;/li&gt;
&lt;li&gt;Full IPv6 support&lt;/li&gt;
&lt;li&gt;VDI plugin - allows full A/V support in virtual desktop environments&lt;/li&gt;
&lt;li&gt;H.264 SVC codec support&lt;/li&gt;
&lt;li&gt;Skype federation support&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
There are a lot of other small enhancements that go a long way towards improving the overall product or enhancing usability. &amp;nbsp;If I were to go into detail here on all of them, it would become a very long post. &amp;nbsp;I will do future deep-dives into some of the specific improvements at a later time.&lt;br /&gt;
&lt;br /&gt;
Get the preview &lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973393.aspx?wt.mc_id=TEC_118_1_33" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/gg398616(v=ocs.15)" target="_blank"&gt;Technet documentation&lt;/a&gt;.&lt;/div&gt;
&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;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/e7obvYcpdus" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/1353148932441337777/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/07/whats-new-in-lync-2013.html#comment-form" title="36 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1353148932441337777?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1353148932441337777?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/e7obvYcpdus/whats-new-in-lync-2013.html" title="What's New in Lync 2013" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>36</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/07/whats-new-in-lync-2013.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCRno7eCp7ImA9WhBUE0g.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-2187867687859800531</id><published>2012-07-11T16:01:00.003-04:00</published><updated>2013-04-30T16:54:27.400-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-30T16:54:27.400-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><title>Useful Lync Powershell Scripts</title><content type="html">&lt;br /&gt;
I find myself having to&amp;nbsp;create and use the same&amp;nbsp;Lync Powershell scripts over and over again, so I thought I'd compile a list of&amp;nbsp;some of the ones I've created&amp;nbsp;for others.&amp;nbsp; It will get updated as time goes on.&lt;br /&gt;
&lt;br /&gt;
Enjoy, and suggest others in the Comments.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;strong&gt;&lt;u&gt;Finding all the people who have a telephone number set in Lync&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
Get-CsUser -Filter {LineURI -ne $NULL} | FT Name, LineURI&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;u&gt;Change SIP domain for all users&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
$UserList = Get-&lt;span class="il" style="background-color: #ffffcc;"&gt;CsUser&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
foreach ($User in $UserList)&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
{&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
&amp;nbsp; &amp;nbsp;$oldAddress = $User.SipAddress&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
&amp;nbsp; &amp;nbsp;$newAddress = $oldAddress -replace "@olddomain.com", "@newdomain.com"&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
&amp;nbsp; &amp;nbsp;&lt;span class="il" style="background-color: #ffffcc;"&gt;Set&lt;/span&gt;-&lt;span class="il" style="background-color: #ffffcc;"&gt;CsUser&lt;/span&gt;&amp;nbsp;-Identity $User.Identity -SipAddress $newAddress&lt;/div&gt;
&lt;div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13.333333969116211px;"&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;strong&gt;&lt;u&gt;Setting the AD office phone number to the TelURI for all users&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
#Only need to add the AD Powershell instance once&lt;br /&gt;
Add-WindowsFeature RSAT-AD-Powershell&lt;br /&gt;
Import-Module ActiveDirectory&lt;br /&gt;
&lt;br /&gt;
$users = Get-CSUser&lt;br /&gt;
&lt;br /&gt;
Foreach ($user in $users)&lt;br /&gt;
{&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; $Tel = $user.LineURI&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; $Tel = $Tel.Replace("tel:", "")&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; If ($Tel -ne "")&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set-ADUser -Identity $user.SAMAccountName -OfficePhone $Tel&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;strong&gt;Move All OCS Users Homed on a Specific Pool to Lync&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
Also sets conferencing policy and external access policy to automatic, rather than the legacy migrated OCS policies.&amp;nbsp; Replace items in bold with your environmental specifics.&lt;br /&gt;
&lt;br /&gt;
get-csuser -OnOfficeCommunicationServer | Where {$_.HomeServer -eq "CN=LC Services,CN=Microsoft,CN=&lt;strong&gt;OCSPOOLNAME&lt;/strong&gt;,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=&lt;strong&gt;contoso&lt;/strong&gt;,DC=&lt;strong&gt;com&lt;/strong&gt;"} | Move-CsLegacyUser -Target&amp;nbsp;&lt;strong&gt;LYNCPOOLFQDN&lt;/strong&gt;&amp;nbsp;-ExcludeConferencingPolicy -ExcludeExternalAccessPolicy -Confirm:$FALSE&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;strong&gt;&lt;u&gt;Count How Many Users are on OCS and Lync&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
(Get-CsUser -OnOfficeCommunicationServer).Count&lt;br /&gt;
&lt;span style="background-color: white;"&gt;(Get-CsUser -OnLyncServer).Count&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Get a List of All Lync-Enabled Users Along with Selected AD Properties&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
#Asked by a commenter.&amp;nbsp;Harder than it initially looked....&lt;br /&gt;
&lt;br /&gt;
$ErrorActionPreference = 'SilentlyContinue'&lt;br /&gt;
Import-Module ActiveDirectory&lt;br /&gt;
$Output = @()&lt;br /&gt;
&lt;br /&gt;
Foreach ($LyncUser in Get-CSUser -ResultSize Unlimited)&lt;br /&gt;
{&lt;br /&gt;
$ADUser = Get-ADUser -Identity $LyncUser.SAMAccountName -Properties Department, Title&lt;br /&gt;
$Output += New-Object PSObject -Property @{DisplayName=$LyncUser.DisplayName; Department=$ADUser.Department; Title=$ADUser.Title; SAMAccountName=$ADUser.sAMAccountName; SIPAddress=$LyncUser.SIPAddress; EVEnabled=$LyncUser.EnterpriseVoiceEnabled}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$Output | Export-CSV -Path .\Output.csv&lt;br /&gt;
$Output | FT DisplayName, Title, Department, SAMAccountName, SIPAddress, EVEnabled&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Create Lync Network Sites and Subnets using Info from AD Sites &amp;amp; Services&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://ucken.blogspot.ca/2013/04/automatically-creating-lync-sites-and.html"&gt;http://ucken.blogspot.ca/2013/04/automatically-creating-lync-sites-and.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/e_coqaB_TkE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/2187867687859800531/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/07/useful-lync-powershell-scripts.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2187867687859800531?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2187867687859800531?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/e_coqaB_TkE/useful-lync-powershell-scripts.html" title="Useful Lync Powershell Scripts" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/07/useful-lync-powershell-scripts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMCQX49fSp7ImA9WhVbFUs.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-176260235195573702</id><published>2012-05-31T18:40:00.000-04:00</published><updated>2012-06-01T11:11:00.065-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-01T11:11:00.065-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><title>Lync Dialing Rule Optimizer Gets Optimized</title><content type="html">It was recently brought to my attention that some of the normalization rules created by the&lt;a href="http://lyncoptimizer.com/" target="_blank"&gt; Lync Dialing Rule Optimizer&lt;/a&gt; in certain cases were not being used by the Lync client. &amp;nbsp;Specifically, the issue only arises if you select the option for the Optimizer to create 7-digit local dialing rules (only available for North America dialing rules). &amp;nbsp;The 7-digit rules are simply never used. &amp;nbsp;If you enter a 7-digit number that should be normalized to a 11-digit E.164 North American phone number, it doesn't happen. &amp;nbsp;Interestingly, if you use the Lync Voice Routing Test Case applet in the Lync Control Panel, you'll see that it normalizes just fine.&lt;br /&gt;
&lt;br /&gt;
I did some testing of my own, and found out that the first part of the 7-digit rules were causing the Lync client to ignore the entire rule. &amp;nbsp;The first part of each 7-digit normalization rule is this cryptic piece of regex: &lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;(?=^\d{7}$)&lt;/span&gt;&lt;span style="color: #1f497d; font-family: Calibri, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style="font-family: inherit;"&gt;This bit of regex says that whatever number is entered has to be a total of 7 digits long. The rest of the regular expression dictates the allowable first 2 or 3 digits for that particular area code. &amp;nbsp;At the time, this was the only way I could think of to ensure the total number of digits entered was exactly 7.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I put the question to Microsoft, who acknowledged that the server and the client can use different criteria for evaluating the validity of regular expressions. &amp;nbsp;It may be fixed in a future patch, but rather than waiting, I went about figuring out how to ensure 7-digit numbers without that bit of cryptic regex at the beginning.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;After a good amount of research, work, and testing, I was able to figure out a way to ensure 7 digits in a much simpler way. &amp;nbsp;At the same time, I got a bit of regex schooling by Dan Berry of Acrodex. He told me I had way too many brackets in my regular expressions, so with his prompting, I was able to reduce the number of brackets by quite a bit. &amp;nbsp;He also gave me some other ideas for reducing the length and complexity of my regular expressions.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;The end result is a much shorter and more robust set of regular expressions for all the North American local dialing rules. &amp;nbsp;For example, one ruleset for Toronto, ON used to be 820 characters long. &amp;nbsp;With the new optimizations, the character count is down to 621. &amp;nbsp;This reduction can result in fewer rules, especially in larger cities.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;If you've previously used the Optimizer to create your rulesets for 7-digit dialing, I recommend you apply the updated rules. &amp;nbsp;If you subscribe to the monthly email rule update, then you'll get the updated ruleset starting next month. &amp;nbsp;If you come across any issues with the new rules, please let me know.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/9TFJRslibqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/176260235195573702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/05/lync-dialing-rule-optimizer-gets.html#comment-form" title="15 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/176260235195573702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/176260235195573702?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/9TFJRslibqA/lync-dialing-rule-optimizer-gets.html" title="Lync Dialing Rule Optimizer Gets Optimized" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>15</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/05/lync-dialing-rule-optimizer-gets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCR348eSp7ImA9WhVVEEo.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-3308562144953576444</id><published>2012-05-03T14:57:00.002-04:00</published><updated>2012-05-03T14:57:46.071-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-03T14:57:46.071-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="Powershell" /><category scheme="http://www.blogger.com/atom/ns#" term="rgs" /><category scheme="http://www.blogger.com/atom/ns#" term="holiday" /><title>Holiday Sets for Lync Response Groups</title><content type="html">If you use Lync Response Groups, you have probably noticed the lack of any built-in holiday definitions for any country. Setting these up yourself is a labour intensive and very boring process using Powershell. I figure I'd take the time to publish the commands necessary to setup the default holidays for both US and Canada. When it gets closer to 2014, I'll take the time to do the holidays then. I won't do them now, because things might change with the release of Lync 15.&lt;br /&gt;
&lt;br /&gt;
First, copy and paste the holiday definitions into the&amp;nbsp;Lync Management Shell as shown below.&amp;nbsp; I didn't bother with holidays that have already happened in 2012.&amp;nbsp; If the dates are incorrect for your site, go ahead and change them.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2012 Holidays &lt;/h3&gt;
&lt;textarea cols="85" rows="23"&gt;$Victoria = New-CsRgsHoliday -Name "Victoria Day 2012" -StartDate "5/21/2012" -EndDate "5/22/2012"
$CADay = New-CsRgsHoliday -Name "Canada Day 2012" -StartDate "7/2/2012" -EndDate "7/3/2012"
$USDay = New-CsRgsHoliday -Name "US Independence Day 2012" -StartDate "7/4/2012" -EndDate "7/5/2012"
$Civic = New-CsRgsHoliday -Name "CA Civic Holiday 2012" -StartDate "8/6/2012" -EndDate "8/7/2012"
$Labour = New-CsRgsHoliday -Name "Labour Day 2012" -StartDate "9/3/2012" -EndDate "9/4/2012"
$Columbus = New-CsRgsHoliday -Name "Columbus Day 2012" -StartDate "10/8/2012" -EndDate "10/9/2012"
$CA_Thanks = New-CsRgsHoliday -Name "CA Thanksgiving 2012" -StartDate "10/8/2012" -EndDate "10/9/2012"
$Veterans = New-CsRgsHoliday -Name "Rememberance/Veterans Day 2012" -StartDate "11/12/2012" -EndDate "11/13/2012"
$US_Thanks = New-CsRgsHoliday -Name "US Thanksgiving 2012" -StartDate "11/22/2012" -EndDate "11/23/2012"
$Christmas = New-CsRgsHoliday -Name "Christmas 2012" -StartDate "12/25/2012" -EndDate "12/26/2012"
$Boxing = New-CsRgsHoliday -Name "CA Boxing Day 2012" -StartDate "12/26/2012" -EndDate "12/27/2012"
&lt;/textarea&gt;&lt;br /&gt;
&lt;br /&gt;
Then run this Powershell command to create the holiday set.&amp;nbsp; Replace YOURPOOLFQDNHERE with the actual name of the Standard or Enterprise Edition pool you want to create the holiday set.&amp;nbsp; If your company has different holidays (ie Banks/government in Canada get Easter Monday off), add them to the holiday list (ie $EastMon)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;For US&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
New-CsRgsHolidaySet -Parent "ApplicationServer:YOURPOOLFQDNHERE" -Name "2012 US Holidays" -HolidayList ($USDay, $Labour, $Columbus, $Veterans, $US_Thanks, $Christmas)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;For Canada&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
New-CsRgsHolidaySet -Parent "ApplicationServer:YOURPOOLFQDNHERE" -Name "2012 CA Holidays" -HolidayList ($Victoria, $CADay, $Civic, $Labour, $CA_Thanks, $Christmas, $Boxing)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2013 Holidays&lt;/h3&gt;
&lt;textarea cols="85" rows="30"&gt;$NewYear = New-CsRgsHoliday -Name "New Year's Day 2013" -StartDate "1/1/2013" -EndDate "1/2/2013"
$MLK = New-CsRgsHoliday -Name "Martin Luther King Jr. Day 2013" -StartDate "1/21/2013" -EndDate "1/22/2013"
$FamilyPres = New-CsRgsHoliday -Name "Family/Presidents Day 2013" -StartDate "2/18/2013" -EndDate "2/19/2013"
$GoodFri = New-CsRgsHoliday -Name "Good Friday 2013" -StartDate "3/29/2013" -EndDate "3/30/2013"
$EastMon = New-CsRgsHoliday -Name "Easter Monday 2013" -StartDate "4/1/2013" -EndDate "4/2/2013"
$Victoria = New-CsRgsHoliday -Name "Victoria Day 2013" -StartDate "5/20/2013" -EndDate "5/21/2013"
$Memorial = New-CsRgsHoliday -Name "Memorial Day 2013" -StartDate "5/27/2013" -EndDate "5/28/2013"
$CADay = New-CsRgsHoliday -Name "Canada Day 2013" -StartDate "7/1/2013" -EndDate "7/2/2013"
$USDay = New-CsRgsHoliday -Name "US Independence Day 2013" -StartDate "7/4/2013" -EndDate "7/5/2013"
$Civic = New-CsRgsHoliday -Name "CA Civic Holiday 2013" -StartDate "8/5/2013" -EndDate "8/6/2013"
$Labour = New-CsRgsHoliday -Name "Labour Day 2013" -StartDate "9/2/2013" -EndDate "9/3/2013"
$Columbus = New-CsRgsHoliday -Name "Columbus Day 2013" -StartDate "10/14/2013" -EndDate "10/15/2013"
$CA_Thanks = New-CsRgsHoliday -Name "CA Thanksgiving 2013" -StartDate "10/14/2013" -EndDate "10/15/2013"
$Veterans = New-CsRgsHoliday -Name "Rememberance/Veterans Day 2012" -StartDate "11/11/2013" -EndDate "11/13/2013"
$US_Thanks = New-CsRgsHoliday -Name "US Thanksgiving 2013" -StartDate "11/28/2013" -EndDate "11/29/2013"
$Christmas = New-CsRgsHoliday -Name "Christmas 2013" -StartDate "12/25/2013" -EndDate "12/26/2013"
$Boxing = New-CsRgsHoliday -Name "CA Boxing Day 2013" -StartDate "12/26/2013" -EndDate "12/27/2013"
&lt;/textarea&gt;&lt;br /&gt;
&lt;br /&gt;
Then run this Powershell command to create the holiday set. Replace YOURPOOLFQDNHERE with the actual name of the Standard or Enterprise Edition pool you want to create the holiday set. If your company has different holidays (ie Banks/government in Canada get Easter Monday off), add them to the holiday list (ie $EastMon)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;For US&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
New-CsRgsHolidaySet -Parent "ApplicationServer:YOURPOOLFQDNHERE" -Name "2013 US Holidays" -HolidayList ($NewYear, $MLK, $FamilyPres, $GoodFri, $Memorial, $USDay, $Labour, $Columbus, $Veterans, $US_Thanks, $Christmas)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;For Canada&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
New-CsRgsHolidaySet -Parent "ApplicationServer:YOURPOOLFQDNHERE" -Name "2013 CA Holidays" -HolidayList ($NewYear, $FamilyPres, $GoodFri, $Victoria, $CADay, $Civic, $Labour, $CA_Thanks, $Christmas, $Boxing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/ZwdIxapiwaQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/3308562144953576444/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/05/holiday-sets-for-lync-response-groups.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/3308562144953576444?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/3308562144953576444?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/ZwdIxapiwaQ/holiday-sets-for-lync-response-groups.html" title="Holiday Sets for Lync Response Groups" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/05/holiday-sets-for-lync-response-groups.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QDQnw_eip7ImA9WhVWFUg.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-2498838074535102299</id><published>2012-04-27T16:39:00.000-04:00</published><updated>2012-04-27T16:42:53.242-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-27T16:42:53.242-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><category scheme="http://www.blogger.com/atom/ns#" term="normalization" /><title>Inbound Number Normalization Bug in Lync (FIXED)</title><content type="html">I came across an issue recently where a North American company had deployed Enterprise Voice using the&amp;nbsp;&lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt;. &amp;nbsp;Outbound calling would work fine, but inbound calls would fail with a busy signal. &amp;nbsp;I was testing against a number that was supposed to route to an Exchange auto-attendant.&lt;br /&gt;
&lt;br /&gt;
I ran a trace using the Snooper tool and found a big glaring red error staring at me:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;404 - No matching rule has been found in the dial plan for the called number.&amp;nbsp;&lt;/b&gt;&lt;/blockquote&gt;
The detailed error looked like this:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: #444444; font-size: x-small;"&gt;Direction: outgoing;source="local"&lt;br /&gt;Peer: lyncpool.contoso.com:58964&lt;br /&gt;Message-Type: response&lt;br /&gt;Start-Line: SIP/2.0 404 No matching rule has been found in the dial plan for the called number.&lt;br /&gt;From: "604xxxxxxx"&lt;sip:604xxxxxxx;phone-context=headoffice@contoso.com;user=phone&gt;;epid=5A81C7C2F0;tag=b356e0ebc3&lt;br /&gt;To:&amp;nbsp;&lt;sip:4165551111;phone-context=headoffice@contoso.com;user=phone&gt;;tag=FCA83E847F99452AC4A563DB1552D6C4&lt;br /&gt;CSeq: 2389 INVITE&lt;br /&gt;Call-ID: 9d03fadf-282b-461b-912b-fbefe95a111b&lt;br /&gt;ms-application-via: LYNCMON.contoso.com_LyncMonitoring;ms-server=LYNCFE.contoso.com;ms-pool=lyncfepool.contoso.com;ms-application=51FB453D-5B9F-45df-83B4-ADD1F7E604A8&lt;br /&gt;Via: SIP/2.0/TLS 10.0.5.10:58964;branch=z9hG4bK71da34d1;ms-received-port=58964;ms-received-cid=18FC00&lt;br /&gt;ms-diagnostics: 14010;reason="Unable to find an exact match in the rules set";source="LYNCFE.contoso.com";CalledNumber="4165551111";ProfileName="HeadOffice";appName="TranslationService"&lt;br /&gt;Server: TranslationService/4.0.0.0&lt;/sip:4165551111;phone-context=headoffice@contoso.com;user=phone&gt;&lt;/sip:604xxxxxxx;phone-context=headoffice@contoso.com;user=phone&gt;&lt;/span&gt;&lt;/blockquote&gt;
The inbound phone number was coming in as 10-digits, and excluded the North American country code 1 (which isn't unusual for a lot of phone providers). &amp;nbsp;I knew the normalization rules were working properly for outbound calls, but I couldn't figure out why inbound was failing.&lt;br /&gt;
&lt;br /&gt;
I zeroed in on my NA-National rule. &amp;nbsp;The rule is formatted as follows:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
^1?([2-9]\d\d[2-9]\d{6})$ &amp;nbsp;----NormalizeTo----&amp;gt; +1$1&lt;/blockquote&gt;
This rule will accept any 10-digit valid North American formatted telephone number&amp;nbsp;&lt;b&gt;OR&amp;nbsp;&lt;/b&gt;any valid 11-digit North American formatted telephone number starting with a 1. &amp;nbsp;Users in many areas tend to use 10-digits and exclude the leading 1 when dialing phone numbers, or they may use the full 11-digit proper format. The NA-National rule deals with both these cases by starting the rule with 1?. &amp;nbsp;When a question mark is present in a regular expression, it means that the preceding element is optional. &amp;nbsp;So, in our case, the NA-National rule will match both 10-digit and 11-digit North American numbers.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there seems to be a bug in earlier versions of Lync Server 2010 (prior to the&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=2493736" target="_blank"&gt;March 2012 update&lt;/a&gt;&amp;nbsp;from what I can tell) that results in inbound numbers failing to normalize against a rule that includes a question mark. &amp;nbsp;When I removed the 1? from the rule, inbound calls worked as expected.&lt;br /&gt;
&lt;br /&gt;
Thankfully, it appears that someone at MS has already caught this and fixed it somewhere between the November 2011 Lync Server update and the March 2012 update. &amp;nbsp;I didn't try to figure out which update fixed it, but I knew it was broken on a server running the November 2011 updates, and was fixed with the March 2012 update.&lt;br /&gt;
&lt;br /&gt;
If you keep up-to-date with your Lync server patches, you won't come across this bug. &amp;nbsp;So, make sure you have the latest Lync Server updates applied before running the Optimizer for North American deployments.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/xSB7HzhbJyU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/2498838074535102299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/04/inbound-number-normalization-bug-in.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2498838074535102299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2498838074535102299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/xSB7HzhbJyU/inbound-number-normalization-bug-in.html" title="Inbound Number Normalization Bug in Lync (FIXED)" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/04/inbound-number-normalization-bug-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MFQ3o8fCp7ImA9WhVXGUg.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-7771305588592374613</id><published>2012-04-20T15:43:00.003-04:00</published><updated>2012-04-20T15:50:12.474-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-20T15:50:12.474-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="CMS" /><title>Resetting Lync CMS Replication</title><content type="html">The Central Management Store (CMS) stores a copy of the entire Lync topology for your deployment. &amp;nbsp;Every server has a copy of the CMS, but there can be only one master. &amp;nbsp;Each Lync server downloads a copy of the CMS from this master at regular intervals. &amp;nbsp;By default, the first Lync server you deploy is designated the master CMS. &amp;nbsp;However, there may be cases where you have to move the master CMS to another server. &amp;nbsp;This can be done relatively easily, assuming you follow the &lt;a href="http://technet.microsoft.com/en-us/library/gg195644.aspx" target="_blank"&gt;documentation&lt;/a&gt; properly.&lt;br /&gt;
&lt;br /&gt;
The CMS replication process uses a local file share to copy updates between servers. &amp;nbsp;The share is called&amp;nbsp;&lt;b&gt;\\servername\xds-replica&lt;/b&gt;. &amp;nbsp;Every server has this share, including the CMS master. &amp;nbsp;The share is typically located in the root of the C: drive in the folder&amp;nbsp;&lt;b&gt;C:\RtcReplicaRoot\xds-replica&lt;/b&gt;. &amp;nbsp;If you installed Lync on another drive, this folder will be in the root of that drive. &amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
Sometimes, you may find that CMS replication is not working on a specific server. &amp;nbsp;You can check the CMS replication status by running the command&amp;nbsp;&lt;b&gt;Get-CsManagementStoreReplicationStatus&lt;/b&gt;. If all is well, every server's&amp;nbsp;&lt;b&gt;UpToDate&amp;nbsp;&lt;/b&gt;status will be &lt;b&gt;True&lt;/b&gt;. &amp;nbsp;If a server's status is &lt;b&gt;False&lt;/b&gt;, try&amp;nbsp;to force replication by running&amp;nbsp;&lt;b&gt;Invoke-CsManagementStoreReplication -ReplicaFqdn &lt;/b&gt;&lt;i style="font-weight: bold;"&gt;servername&lt;/i&gt;.&lt;b&gt; &amp;nbsp;&lt;/b&gt;Wait a few minutes to see if its status changes. &amp;nbsp;If not, then look in the Event Log for both the failed replica and the CMS master for clues as to what is wrong.&lt;br /&gt;
&lt;br /&gt;
If you can't find any reason for the failed replication, I've found that deleting the &lt;b&gt;xds-replica&lt;/b&gt; folder on the failed replica and recreating it seems to reset things and solve the problem. &amp;nbsp;Unfortunately, even full Lync administrators do not have permissions to view the contents of the xds-replica folder (likely to prevent people like me from making a mess of things). &lt;br /&gt;
&lt;br /&gt;
To "reset" the xds-replica to installation default follow these steps:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Stop the following services used for CMS replication:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Lync Server File Transfer Agent&lt;/li&gt;
&lt;li&gt;Lync Server Replica Replicator Agent (courtesy of the Department of Redundancy Department)&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li value="2"&gt;Take ownership of the &lt;b&gt;C:\RtcReplicaRoot\xds-replica &lt;/b&gt;folder, using the below picture as a guide. &amp;nbsp;Be warned, that once you start this procedure, you're committed to following through. &amp;nbsp;When you&amp;nbsp;take ownership of the folder, you will wipe out the required permissions Lync needs to replicate the CMS and remove the share.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-2mN0Ks9Da4o/T5G2XUhMYZI/AAAAAAAAAaA/Sp5OE8cOGko/s1600/xds-replicaPerms.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/-2mN0Ks9Da4o/T5G2XUhMYZI/AAAAAAAAAaA/Sp5OE8cOGko/s640/xds-replicaPerms.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li value="3"&gt;Once you take ownership, delete the entire xds-replica folder under &lt;b&gt;C:\RtcReplicaRoot&lt;/b&gt;. &amp;nbsp;Now, go to &lt;b&gt;Control Panel - Programs and Features&lt;/b&gt;, select &lt;b&gt;Microsoft Lync Server 2010, Core Components&lt;/b&gt; and select &lt;b&gt;Repair&lt;/b&gt;. &amp;nbsp;This will create a new xds-replica folder/share and set the proper permissions.&lt;/li&gt;
&lt;li&gt;Go back to the &lt;b&gt;Services &lt;/b&gt;snap-in and restart the two services. &amp;nbsp;The Replicator service may have been set to Disabled by the repair process. &amp;nbsp;Just set it to &lt;b&gt;Automatic &lt;/b&gt;before starting it.&lt;/li&gt;
&lt;li&gt;Run&amp;nbsp;&lt;b&gt;Invoke-CsManagementStoreReplication -ReplicaFqdn&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;servername&lt;/b&gt;&amp;nbsp;&lt;/i&gt;and after a few minutes you should see the CMS replication status for the server change to True.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
This procedure worked like a charm for me on a few occasions. &amp;nbsp;Let me know if it doesn't work for you.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/WSXuWkZzwhY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/7771305588592374613/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/04/resetting-lync-cms-replication.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7771305588592374613?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7771305588592374613?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/WSXuWkZzwhY/resetting-lync-cms-replication.html" title="Resetting Lync CMS Replication" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-2mN0Ks9Da4o/T5G2XUhMYZI/AAAAAAAAAaA/Sp5OE8cOGko/s72-c/xds-replicaPerms.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/04/resetting-lync-cms-replication.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MRH8-eyp7ImA9WhVTF0U.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-419808176771493914</id><published>2012-03-01T13:04:00.000-05:00</published><updated>2012-03-03T09:28:05.153-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-03T09:28:05.153-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><category scheme="http://www.blogger.com/atom/ns#" term="normalization" /><title>Localized Dialing Rules in the Lync Optimizer</title><content type="html">I'm always looking for input from the community about things they'd like to see in the &lt;a href="http://lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt;. &amp;nbsp;I met &lt;a href="http://www.ehloworld.com/" target="_blank"&gt;Pat Richard&lt;/a&gt; at the MVP Summit this week and he needed help in the following scenario:&lt;br /&gt;
&lt;br /&gt;
He has a customer who has a centralized Lync deployment located in the United States. There are several small offices located in other countries who connect to the US Lync server and use it for Enterprise Voice. &amp;nbsp;He wanted the users in the small offices to be able to dial phone numbers as if they were logged into a local Lync server. &lt;br /&gt;
&lt;br /&gt;
For example, a UK user wants to be able to dial local UK numbers by dialing 6 or 7 digits. They dial national numbers by prepending a 0. &amp;nbsp;They know they have to prepend 00 for international calls. &amp;nbsp;They don't want to have to dial 01144xxxxxxxx for what they perceive to be a local call.&lt;br /&gt;
&lt;br /&gt;
After some thought, I've updated the Optimizer to be able to handle this situation. &amp;nbsp;If you want to provide localized dialing rules for different countries, just do the following:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Start with a clean Enterprise Voice slate&lt;/li&gt;
&lt;li&gt;Run the Optimizer against your Lync site using the generated script appropriate for your country, which will generate the necessary dialing rules for the country where your Lync server resides.&lt;/li&gt;
&lt;li&gt;Run the Optimizer for each country you want to create localized dialing rules and apply the generated script against your central Lync site.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
By default, the rulesets for all countries use the official language for that country. &amp;nbsp;If you want the Optimizer to use English for all rulesets, then click on &lt;b&gt;Click for English-Only Version&lt;/b&gt;, on the top-left corner of the page (or go directly to &lt;a href="http://lyncoptimizer.com/english.htm"&gt;http://lyncoptimizer.com/english.htm&lt;/a&gt;).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When you run the Optimizer script for the first time, it will create a site-level dial plan with normalization rules for the desired country. &amp;nbsp;When you run the Optimizer script additional times, using scripts generated for different countries, it will detect the existence of a site-level dial plan and will create a user-level dial plan with normalization rules appropriate for that country.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Assign the user-level dial plan to the appropriate users and they will be able to dial phone numbers as they are accustomed to. &amp;nbsp;Continuing the previous example, US users will dial local and national numbers using either 10 or 11 digits, and international calls starting with 011. &amp;nbsp;UK users will dial local numbers using 7+ digits, national numbers starting with a 0, and international numbers with 00. &amp;nbsp;The UK users won't be aware that when they dial a 7 digit local number, it actually gets dialed out from the US Lync server as 01144xxxxxxx. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Again, thanks to Pat Richard for the feedback and the suggestion, and for being the first person to actually give me a Paypal donation!&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/vTKUtBbL1fI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/419808176771493914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/03/localized-dialing-rules-in-lync.html#comment-form" title="17 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/419808176771493914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/419808176771493914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/vTKUtBbL1fI/localized-dialing-rules-in-lync.html" title="Localized Dialing Rules in the Lync Optimizer" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>17</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/03/localized-dialing-rules-in-lync.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MQXs8fSp7ImA9WhVTEU0.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-4152787508061239130</id><published>2012-02-23T15:00:00.001-05:00</published><updated>2012-02-24T12:36:20.575-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-24T12:36:20.575-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><title>Lync Mobile for Android Updated!</title><content type="html">When the full suite of Lync mobile clients first came out, the Android experience was less than thrilling. &amp;nbsp;One key feature missing was the ability to use the mobile client to make the Lync server call your mobile phone and then connect you to the person you are calling (call-via-work). &amp;nbsp;All the other mobile clients had that feature, and the reason given was that it was difficult to program in Android's fragmented OS space. &amp;nbsp;Fair enough, but it certainly wasn't a barrier to the hundreds of thousands of other apps that are available for Android.&lt;br /&gt;
&lt;br /&gt;
It seems as though someone at MS finally got the message and they've just released a &lt;a href="https://market.android.com/details?id=com.microsoft.office.lync&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5taWNyb3NvZnQub2ZmaWNlLmx5bmMiXQ.." target="_blank"&gt;Lync Mobile update for Android in the Market&lt;/a&gt;. &amp;nbsp;When I was at the Lync 15 Airlift last week, they said there would be an update "in a few months". &amp;nbsp;Happily, they should have said "a few days". &amp;nbsp;Wish this were the way for all upcoming MS products. &amp;nbsp;The details for the update are as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: 'Droid Sans', Arial, sans-serif; font-size: 13px; line-height: 18px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;
What's in this version:&lt;/div&gt;
&lt;ol style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: 'Droid Sans', Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 1.3em; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; line-height: 1.3; margin-bottom: 0px; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Enabled call-via-work – allowing Enterprise Voice enabled users to make and receive calls using your Enterprise Voice (Lync ID) number only. Connect with others using a single identity.&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; line-height: 1.3; margin-bottom: 0px; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Added user controls for adjusting the sound/vibration for incoming notifications&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; line-height: 1.3; margin-bottom: 0px; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Improved the Lync status icon : know if you can receive IM messages&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; line-height: 1.3; margin-bottom: 0px; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Enabled copy of IM text to the clipboard&lt;/li&gt;
&lt;li style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; line-height: 1.3; margin-bottom: 0px; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Multiple bug fixes&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Of course, I installed the update and had a poke around. &amp;nbsp;Right off the bat, Lync Mobile asked me to verify my mobile number to be used for Lync to phone me back when using Call-via-Work. &amp;nbsp;Immediately, it seemed as though the client was more responsive than before. This could just be wishful thinking, but it did seem snappier.&lt;br /&gt;
&lt;br /&gt;
The &lt;b&gt;My info&lt;/b&gt; screen now gives the ability to change your call forwarding settings, in addition to the usual ability to change my status from Available to Busy/Away etc.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-YgvKHjP7usQ/T0aU__HWUzI/AAAAAAAAAYs/1LSv1mDZzUg/s1600/LyncAndroid_MyInfo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-YgvKHjP7usQ/T0aU__HWUzI/AAAAAAAAAYs/1LSv1mDZzUg/s400/LyncAndroid_MyInfo.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Clicking on &lt;b&gt;Call forwarding&lt;/b&gt; takes you to a screen where you can edit your settings. &amp;nbsp;Any changes you make here are immediately reflected in your Lync desktop client.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-NXPbAxxjORU/T0aUDOmIb7I/AAAAAAAAAYk/2RPQd7M-odg/s1600/LyncAndroid_Forwarding.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-NXPbAxxjORU/T0aUDOmIb7I/AAAAAAAAAYk/2RPQd7M-odg/s400/LyncAndroid_Forwarding.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The &lt;b&gt;Options &lt;/b&gt;screen has new options for changing sound and vibration settings. &amp;nbsp;When you select those options, you are able to change it to &lt;b&gt;System settings&lt;/b&gt; or &lt;b&gt;Never&lt;/b&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-wXDOzHe3lqQ/T0aTwlZBGdI/AAAAAAAAAYc/XIHTF21MMXM/s1600/LyncAndroid_Options.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-wXDOzHe3lqQ/T0aTwlZBGdI/AAAAAAAAAYc/XIHTF21MMXM/s400/LyncAndroid_Options.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&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;
The &lt;b&gt;Contacts &lt;/b&gt;screen looks the same as before. &amp;nbsp;Status updates did seem quicker than before, so maybe that was part of the bug fixes. Clicking on a user brings up the same screen. &amp;nbsp;No changes to the UI were noted here.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-5iPh3VF-vhs/T0aOpisMtlI/AAAAAAAAAX8/b7RaNEbsbx0/s1600/LyncAndroid_Contacts.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-5iPh3VF-vhs/T0aOpisMtlI/AAAAAAAAAX8/b7RaNEbsbx0/s400/LyncAndroid_Contacts.jpeg" width="240" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-siihDv9XFdU/T0aRmaosgQI/AAAAAAAAAYM/ZYDg4FFMrPw/s1600/LyncAndroid_User.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-siihDv9XFdU/T0aRmaosgQI/AAAAAAAAAYM/ZYDg4FFMrPw/s400/LyncAndroid_User.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Before the update, when you clicked a phone number, it would just use your mobile phone to make the call. There was no integration with Lync. &amp;nbsp;Now, when you make a call, Lync will notify you to answer the next incoming call. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-M7rHFEWC2hI/T0aSybhMCyI/AAAAAAAAAYU/11QB878qxEU/s1600/LyncAndroid_Notify.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-M7rHFEWC2hI/T0aSybhMCyI/AAAAAAAAAYU/11QB878qxEU/s400/LyncAndroid_Notify.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The next call will appear to be coming from your office phone number, which you should recognize. &amp;nbsp;As soon as you pick up the call, you'll hear it ringing the other end. &amp;nbsp;That user will also see your office phone number. &amp;nbsp;This effectively hides your mobile number from other users and will also be useful in situations where incoming mobile calls are free or where a call would be cheaper when being made through the Lync server PSTN connection. &lt;br /&gt;
&lt;br /&gt;
There is a new screen called &lt;b&gt;Keypad&lt;/b&gt;. &amp;nbsp;From here, you can dial a number directly. &amp;nbsp;As with the previous example, the Lync server will call your mobile number and then connect you to the number. &amp;nbsp;One thing I noticed is that the normal normalization rules don't seem to kick in. So, I have to dial the full 11-digits instead of 10-digits like I normally do (Lync adds the 1 for me).&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ShDQLT3mPa4/T0aZj_NhsFI/AAAAAAAAAY0/_xtWornOvKo/s1600/LyncAndroid_Dialpad.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-ShDQLT3mPa4/T0aZj_NhsFI/AAAAAAAAAY0/_xtWornOvKo/s400/LyncAndroid_Dialpad.jpeg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The most welcome addition for me was the ability to do one-click meeting joins from my Android phone. &amp;nbsp;Before the update, I would have to manually enter the conference ID info, which would mean memorizing or writing down the confID and then entering it. &amp;nbsp;Tough to do when you're trying to join a call from a car. &amp;nbsp;Now, you can just click the meeting invite from your email, and it will call you and connect you to the meeting seamlessly. &amp;nbsp;Even better, when I tested this feature while I was already joined to a meeting via Lync on my desktop, it dropped the desktop audio and seamlessly joined me via my mobile. &amp;nbsp;So, if you have to leave, you can transfer to your mobile without missing a beat. &amp;nbsp;Very slick and impressive!&lt;br /&gt;
&lt;br /&gt;
The notification icon has also been updated to be more informative. &amp;nbsp;While Lync is running and actively connected, you'll see the familiar Lync icon in your notification bar. &amp;nbsp;When Lync is disconnected, the icon will show a little X (as highlighted in red below). &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-5-bCvBR0IM0/T0euWsK-h-I/AAAAAAAAAY8/T_jbJL7t_bk/s1600/LyncAndroid_Conn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="60" src="http://1.bp.blogspot.com/-5-bCvBR0IM0/T0euWsK-h-I/AAAAAAAAAY8/T_jbJL7t_bk/s320/LyncAndroid_Conn.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-vpI2dh9D2sQ/T0euXBlGhPI/AAAAAAAAAZE/CwGpf5SIzVI/s1600/LyncAndroid_NoConn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="59" src="http://4.bp.blogspot.com/-vpI2dh9D2sQ/T0euXBlGhPI/AAAAAAAAAZE/CwGpf5SIzVI/s320/LyncAndroid_NoConn.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Since there isn't a Lync push notification service for Android, you won't get conversation updates when disconnected. &amp;nbsp;However, if your phone works like mine (using JuiceDefender), the phone will shut off all network connectivity when not being actively used, but will periodically do a check. At that point, you will get any queued notifications. The user at the other end might get a failed delivery notification, so this isn't a very clean way to operate.&lt;br /&gt;
&lt;br /&gt;
Even with the downsides, these updates are an extremely welcome addition to the Android Lync client. &amp;nbsp;This brings Lync for Android up to near-feature parity with the other mobile clients. &amp;nbsp;This Android fan is extremely happy!&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/SQCVVKiQSEk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/4152787508061239130/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/02/lync-mobile-for-android-updated.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/4152787508061239130?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/4152787508061239130?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/SQCVVKiQSEk/lync-mobile-for-android-updated.html" title="Lync Mobile for Android Updated!" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-YgvKHjP7usQ/T0aU__HWUzI/AAAAAAAAAYs/1LSv1mDZzUg/s72-c/LyncAndroid_MyInfo.jpeg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/02/lync-mobile-for-android-updated.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8CQHc6fCp7ImA9WhJTEU0.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-8359940270500122144</id><published>2012-02-22T12:29:00.000-05:00</published><updated>2012-06-19T08:27:41.914-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-19T08:27:41.914-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MSPL" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><title>Re-routing Incoming Lync Calls to AutoAttendant Using MSPL Scripting</title><content type="html">Many companies assign extensions to their users rather than dedicating a full external phone number. &amp;nbsp;In companies with thousands of users, this is often the only option, plus it can save significant amounts of money. &amp;nbsp;If you've followed my &lt;a href="http://ucken.blogspot.com/2011/05/enterprise-voice-best-practices-in-lync.html" target="_blank"&gt;Enterprise Voice Best Practices for extensions&lt;/a&gt;, then you know that I recommend you assign phone numbers to Lync Enterprise Voice users using the main office number as the base followed by the extension, using the format tel:&amp;lt;OfficeNumberinE164Format&amp;gt;;ext=&amp;lt;Extension&amp;gt;. &amp;nbsp;For example, if your main office number is &lt;b&gt;15553334444&lt;/b&gt;, and your extension is &lt;b&gt;222&lt;/b&gt;, then your Tel URI would be &lt;b&gt;tel:+15553334444;ext=222&lt;/b&gt;. &amp;nbsp;You then create a normalization rule that takes the main office number and routes it to an Exchange autoattendant at an unused extension, such as tel:+15553334444;ext=999. &amp;nbsp;When someone calls the main office number, the phone call will be routed to the Exchange autoattendant where they can enter the extension of the user they wish to reach.&lt;br /&gt;
&lt;br /&gt;
This works fine in many deployments, but in situations where the &lt;a href="http://ucken.blogspot.com/2011/07/lync-bug-with-incoming-e164-phone.html" target="_blank"&gt;incoming phone number is already formatted in E.164 format&lt;/a&gt; (as with many SIP providers), it breaks down. &amp;nbsp;When Lync sees a number that starts with a +, it assumes the number is normalized properly and does not apply normalization rules, no matter how hard you try. &amp;nbsp;Users get a busy signal and if you do a log trace, you'll see the error &lt;b&gt;485 Ambiguous&lt;/b&gt;. &amp;nbsp;Lync sees many users with the same base phone number, and doesn't know where to send the call.&lt;br /&gt;
&lt;br /&gt;
In many of those cases, you can either set your PSTN gateway (if you are using one) to not send the + to Lync, or you can ask your SIP provider to drop the +. &amp;nbsp;If neither of those options are available, then you can employ &lt;a href="http://msdn.microsoft.com/en-us/library/gg439520.aspx" target="_blank"&gt;MSPL scripting&lt;/a&gt; to re-route the incoming call to the appropriate autoattendant.&lt;br /&gt;
&lt;br /&gt;
MSPL scripts are simple text-based programs that can do custom message routing and filtering in Lync. &amp;nbsp;They can be very powerful, if you know how to create them. &amp;nbsp;Now, having exactly zero experience with MSPL scripting, I turned to the only way I know how to program: &amp;nbsp;Google/Bing for examples. &amp;nbsp;Thanks to some excellent blog posts by &lt;a href="http://blog.greenl.ee/2011/07/08/extending-lync-server-routing-with-mspl-part-1/" target="_blank"&gt;Michael Greenlee&lt;/a&gt;&amp;nbsp;(which made me hyperventilate because most of it was totally incomprehensible to me) and a terrific example by&amp;nbsp;&lt;a href="http://tech.rundtomrundt.com/2011/11/lync-scriptapplication-to-reroute.html" target="_blank"&gt;Lasse Wedø&lt;/a&gt;&amp;nbsp;(where he did the bulk of the work for me), I was able to figure out how to make this work in my specific example.&lt;br /&gt;
&lt;br /&gt;
First, copy the contents of the below window into Notepad on a server that is running the Mediation Server role. &lt;textarea cols="80" rows="20"&gt;&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;lc:applicationManifest
 lc:appUri="http://www.contoso.com/ReroutePilotNumtoAA"
 xmlns:lc="http://schemas.microsoft.com/lcs/2006/05"&amp;gt;
&amp;lt;lc:allowRegistrationBeforeUserServices action="true" /&amp;gt;
&amp;lt;lc:requestFilter methodNames="INVITE"
   strictRoute="false"
                        registrarGenerated="true"
                        domainSupported="true" /&amp;gt;
&amp;lt;lc:responseFilter reasonCodes="ALL" /&amp;gt;
&amp;lt;lc:proxyByDefault action="true" /&amp;gt;
&amp;lt;lc:scriptOnly /&amp;gt;
&amp;lt;lc:splScript&amp;gt;&amp;lt;![CDATA[

// // // // // // // // // // // // // // // // // // // // // // // // // //  
// February 2012 - Application
// This script re-routes inbound calls from a specific number and routes it to
// an Exchange autoattendant.
// 
// Originally created by Rune Strand for OCS 2007
// Modified for Lync by Lasse Wedø then Ken Lasko
// // // // // // // // // // // // // // // // // // // // // // // // // // 
//
// CRITICAL:  Must be run before UserServices  (as 3. in list from above)
// When installing the app on server, use the -priority 2 switch
//
       

    //
    // Filter out irrelevant requests
    //
    Log("debugr", 1, "ReroutePilotNumtoAA:           *  Inside app.");
    
    //
    //  Process only sipRequests
    //
    if (!sipRequest)  
     {
      Log("debugr", 1, "* * * * * * * ReroutePilotNumtoAA:*  Not a sipRequest. Leaving.");
      return;  // Message is not our business. Let Lync handle this.
    }

    //
    // Avoid processing RE-INVITEs
    //
    foreach (sessionExpires in GetHeaderValues("Session-Expires")) 
    {
        if (ContainsString(sessionExpires, "refresher", true)) 
        {
            Log("debugr", false, "ReroutePilotNumtoAA: * Session refreshing invite. Leaving");
            return;  
        }
    }

    //
    // INVITE is from a mediation server? If not, end processing
    //
    foreach (userAgent in GetHeaderValues("USER-AGENT")) 
    {
        if (! ContainsString(userAgent, "mediation", true)) 
        {
            Log("debugr", false, "ReroutePilotNumtoAA: * Request not from Mediation server. Leaving");
            return;  // Only external requests are of interest!
        }
    }

    Log("debugr", 1, "ReroutePilotNumtoAA: * App is processing a request - ", sipRequest.Method);

    //
    // Build the user@host from the To: header.  (and some other convenient variables)
    //
    toUri = GetUri(sipRequest.To);
    toUserAtHost = Concatenate(GetUserName(toUri), "@", GetHostName(toUri));
    telNum = GetUserName(toUri);

    //
    // Look for +15552229999@contoso.com in the sipRequest object
    // This is the Attendant no. 
    //
    if (ContainsString(toUserAtHost, "+15552229999@contoso.com", true)) 
    {
        Log("Event", 0, "ReroutePilotNumtoAA: Autoattendant match. Re-routing +15552229999 to Autoattendant", toUserAtHost);
        
        Respond("302","Moved Temporarily","Contact=&amp;lt;sip:Main_AA@contoso.com&amp;gt;");
        
        // Return initiative to Lync.
        return;
    }
          
    // Return initiative to Lync/Default Routing.
    return;

]]&amp;gt;&amp;lt;/lc:splScript&amp;gt;
&amp;lt;/lc:applicationManifest&amp;gt;
&lt;/textarea&gt;&lt;br /&gt;
&lt;br /&gt;
Do a search-and-replace for &lt;b&gt;contoso.com&lt;/b&gt; and use your public domain name instead.&lt;br /&gt;
&lt;br /&gt;
Then do another search-and-replace for &lt;b&gt;15552229999 &lt;/b&gt;and use your main office number instead.&lt;br /&gt;
&lt;br /&gt;
Finally, do a search-and-replace for &lt;b&gt;Main_AA@contoso.com&lt;/b&gt; and replace it with the SIP URI of your Exchange autoattendant or response group. &amp;nbsp;You can determine the SIP URI by running the &lt;b&gt;OcsUmUtil.exe&lt;/b&gt; program (located in&amp;nbsp;C:\Program Files\Common Files\Microsoft Lync Server 2010\Support). &amp;nbsp;This program is used to create the necessary contact objects to connect Lync to Exchange UM. &amp;nbsp;Once you click &lt;b&gt;Load Data&lt;/b&gt;, make note of the SIP URI for the appropriate AA, and do a search-and-replace for &lt;b&gt;Main_AA@contoso.com&lt;/b&gt; in the script using the information you found from OcsUmUtil.&lt;br /&gt;
&lt;br /&gt;
Then save the script on your mediation server/front-end in a folder like &lt;b&gt;C:\MSPLScripts&lt;/b&gt;, calling it &lt;b&gt;ReroutePilotNumtoAA.am&lt;/b&gt;. &amp;nbsp;If you have multiple servers in the pool, copy the script to each server.&lt;br /&gt;
&lt;br /&gt;
Now, open Lync Management Shell and type the following (make sure you replace contoso.com with your public domain name):&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
New-CsServerApplication -Name ReroutePilotNumtoAA -Parent Service:Registrar:&lt;br /&gt;
&amp;lt;lyncpoolFQDN&amp;gt; -Uri http://www.contoso.com/ReroutePilotNumtoAA -Enabled $TRUE -Critical $FALSE -ScriptName c:\MSPLScripts\ReroutePilotNumtoAA.am -Priority 2&lt;/blockquote&gt;
If all goes well, you should see a few events in the Lync Server Event Viewer like the following:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Log Name: &amp;nbsp; &amp;nbsp; &amp;nbsp;Lync Server&lt;br /&gt;
Source: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LS Script-Only Applications&lt;br /&gt;
Event ID: &amp;nbsp; &amp;nbsp; &amp;nbsp;30803&lt;br /&gt;
Description: Loading application - 'c:\MSPLScripts\ReroutePilotNumtoAA.am'&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Log Name: &amp;nbsp; &amp;nbsp; &amp;nbsp;Lync Server&lt;br /&gt;
Source: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LS Applications Module&lt;br /&gt;
Event ID: &amp;nbsp; &amp;nbsp; &amp;nbsp;30208&lt;br /&gt;
Description: Lync Server application has successfully registered.&lt;br /&gt;
Application Uri 'http://www.contoso.com/ReroutePilotNumtoAA'&lt;/blockquote&gt;
Open Lync Control Panel and go to &lt;b&gt;Topology - Server Application&lt;/b&gt; and you should see the new script between TranslationService and UserServices.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gHf_eHBQrBU/T0UiWhqmWaI/AAAAAAAAAX0/BXqMVUtwl4E/s1600/ServerApps.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" src="http://2.bp.blogspot.com/-gHf_eHBQrBU/T0UiWhqmWaI/AAAAAAAAAX0/BXqMVUtwl4E/s640/ServerApps.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If the script doesn't work you will see the error logged in the Event Viewer. &amp;nbsp;If so, click &lt;b&gt;Action &lt;/b&gt;and &lt;b&gt;Disable Application&lt;/b&gt;. &amp;nbsp;After a few minutes, you should see an event saying the script was disabled. &amp;nbsp;Make any necessary fixes and re-enable. &amp;nbsp;It will take a few minutes to restart. &amp;nbsp;Once you get a clean start, try calling the main office number. &amp;nbsp;You should be directed to the chosen Exchange autoattendant.&lt;br /&gt;
&lt;br /&gt;
Every time the script runs, it will log a warning event saying that the number was forwarded to the autoattendant. &amp;nbsp;If you don't want to see this event, comment the line that starts with&amp;nbsp;&lt;b&gt;Log("Event"&lt;/b&gt;&amp;nbsp;with a //. &lt;br /&gt;
&lt;br /&gt;
What is happening behind the scenes is that the script is looking for an INVITE for the main office number. &amp;nbsp;If it sees that, it will respond to the system making the call with a &lt;b&gt;302 Moved Temporarily&lt;/b&gt;. &amp;nbsp;This tells the system to forward the call to the new destination.&lt;br /&gt;
&lt;br /&gt;
I recommend that you thoroughly document the procedure for future Lync administrators. &amp;nbsp;If you hand off Lync administration to someone else, it will be very difficult to determine that a script is being used to re-route the office number. &amp;nbsp;It doesn't make itself known when doing a typical log trace. &amp;nbsp;If you make a call to the office number, the trace will only show the phone call is going to the AA. &amp;nbsp;It won't show the script making the forward. &lt;br /&gt;
&lt;br /&gt;
Also, note that this procedure can be used to forward calls to &lt;b&gt;ANY &lt;/b&gt;SIP URI, not just an Exchange autoattendant. &amp;nbsp;It can be an autoattendant, a response group or an individual user.&lt;br /&gt;
&lt;br /&gt;
This is my first foray into MSPL scripting. &amp;nbsp;If you notice any errors, please let me know. &lt;br /&gt;
&lt;br /&gt;
For more funtastic MSPL examples, check out &lt;a href="http://voipnorm.blogspot.com/" target="_blank"&gt;VOIPNorm's blog&lt;/a&gt;. &lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/s-xL5zXQst8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/8359940270500122144/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/02/re-routing-incoming-calls-to.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8359940270500122144?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8359940270500122144?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/s-xL5zXQst8/re-routing-incoming-calls-to.html" title="Re-routing Incoming Lync Calls to AutoAttendant Using MSPL Scripting" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-gHf_eHBQrBU/T0UiWhqmWaI/AAAAAAAAAX0/BXqMVUtwl4E/s72-c/ServerApps.png" height="72" width="72" /><thr:total>13</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/02/re-routing-incoming-calls-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMHQ3g5cSp7ImA9WhVbFUs.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-1291096505269165059</id><published>2012-02-07T12:27:00.001-05:00</published><updated>2012-06-01T11:10:32.629-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-01T11:10:32.629-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="load balancers" /><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="HLB" /><category scheme="http://www.blogger.com/atom/ns#" term="commentary" /><title>Hardware Load Balancers in Lync</title><content type="html">Over the past while, I've come across several Enterprise Edition Lync deployments done by other companies that utilized hardware load balancers for all Lync services. &amp;nbsp;In every case, the reason given for using the hardware load balancers was "so we could have high-availability". &amp;nbsp;They were shocked to find out that hardware load balancing all Lync services is actually &lt;b&gt;not recommended&lt;/b&gt; in a wide variety of scenarios and they could have saved themselves a lot of time and money.&lt;br /&gt;
&lt;br /&gt;
When I design a highly-available Lync deployment, I ask four questions whose answers determine where hardware load balancers are required:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Will the majority of internal clients be running Lync?&lt;/li&gt;
&lt;li&gt;Will the majority of external clients be running Lync?&lt;/li&gt;
&lt;li&gt;Do you require high-availability when federating with companies running OCS 2007 R2 or older, or MSN/Yahoo!/AOL/GoogleTalk/Jabber?&lt;/li&gt;
&lt;li&gt;Do your external users need to play messages on their phone during a failover?&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
If the answer to #1 is "No", then I recommend against using hardware load balancing (HLB) for all internal Lync front-end pools. &amp;nbsp;If the answer to #2, #3 and #4 are also "No", then I recommend against using HLB for edge servers as well.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Before I go on, I should stress that HLBs are still required for load balancing HTTP/HTTPS traffic to the front-end servers. &amp;nbsp;Since web connections are session based, they are not suitable for DNS load balancing. &amp;nbsp;So, for your web services (which includes address book downloads, meeting content and meet/dialin URLs), you will still need a simple HLB solution, which can be provided by either hardware or even a dedicated software-based load balancer (but don't use Windows NLB, its not supported)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Using hardware load balancers in Lync can be a costly&amp;nbsp;endeavour for many reasons:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;For a full HLB solution for a single Lync site with edge services, you would need an HLB for the front-end pool, an HLB for the internal interfaces on your edge pools and an HLB for the external interfaces on your edge pool. &amp;nbsp;That's 3 HLBs.&lt;/li&gt;
&lt;li&gt;Many HLBs are not well suited to real-time communication. &amp;nbsp;HLBs that support real-time media are much more expensive than one used only for web traffic balancing. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Configuring the load balancers to work with Lync is much more complicated and extends the implementation time. It can also complicate troubleshooting connectivity issues.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Putting additional hardware between your users and the servers also introduces additional network latency, which is something you want to minimize where possible. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Finally, the HLBs themselves can be a single point of failure, unless you deploy multiple nodes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Lync can use &lt;b&gt;&lt;i&gt;DNS load balancing&lt;/i&gt;&lt;/b&gt; to provide high availability. &amp;nbsp;That term is misleading, because it implies that &amp;nbsp;DNS is responsible for load balancing, which is not true (or possible, since you can only do DNS round-robin in most cases). &amp;nbsp;DNS is only used to present the initial list of available front-end or edge servers (depending on if the user is internal or external). &amp;nbsp;Once the Lync client successfully connects to Lync, it caches the IP address of each server in the pool. &amp;nbsp;The user will preferably connect to the same server at each login (calculated using an algorithm described &lt;a href="http://blogs.technet.com/b/nexthop/archive/2011/05/25/dns-load-balancing-in-lync-server-2010.aspx" target="_blank"&gt;here&lt;/a&gt;), but if that server is unavailable, the client will automatically and seamlessly connect to another server in the pool. &amp;nbsp;The same is also true for federated connections from other companies, as long as they are using Lync for their edge servers. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For legacy connections or 3rd party IM provider connections to a DNS load balanced Lync pool, the clients/edge server will only connect to the first IP address that is returned from a DNS lookup. &amp;nbsp;Should that server go down, they will not failover to an alternate server. &amp;nbsp;The same is true for external users who try to listen to Exchange-based voicemail messages during a failover. &amp;nbsp;If legacy/3rd party connections or external access to voicemail (and remember that voicemail messages are always accessible via Outlook) are important, then this is the ONLY reason I would deploy HLB on your edge servers. &amp;nbsp;In most cases, the company accepts the reduced potential for legacy high-availability in return for a simpler, cheaper and more reliable solution.&lt;br /&gt;
&lt;br /&gt;
So before you go and drop a ton of money on hardware load balancers, make sure you understand the built-in high-availability capabilities in Lync first, so you can make an informed decision.&lt;br /&gt;
&lt;br /&gt;
For more information on DNS load balancing in Lync, check out these links:&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/gg398634.aspx" target="_blank"&gt;Lync DNS Load Balancing on Technet&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.technet.com/b/nexthop/archive/2011/05/25/dns-load-balancing-in-lync-server-2010.aspx" target="_blank"&gt;Lync DNS Load Balancing on NextHop&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/MkINeioNyk4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/1291096505269165059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/02/hardware-load-balancers-in-lync.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1291096505269165059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1291096505269165059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/MkINeioNyk4/hardware-load-balancers-in-lync.html" title="Hardware Load Balancers in Lync" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/02/hardware-load-balancers-in-lync.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABQ3k5eyp7ImA9WhRVFEU.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-2954228590934676996</id><published>2012-01-13T13:52:00.000-05:00</published><updated>2012-01-13T13:52:32.723-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-13T13:52:32.723-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="commentary" /><title>Going to MVP Summit</title><content type="html">I got accepted into the Microsoft MVP program for Lync a few weeks ago, and have just booked passage to my very first &lt;a href="http://www.2012mvpsummit.com/default.aspx" target="_blank"&gt;MVP Summit&lt;/a&gt; in Seattle the week of February 27 to March 2, 2012.&lt;br /&gt;
&lt;br /&gt;
Since I have to keep up with the Hoff persona, you can expect to find me driving up to the beach in my '80's black Pontiac Trans-Am, stripping down to some red shorts and running down the beach in slow-motion. &amp;nbsp;My chest hair will keep me warm in Seattle's February climate.&lt;br /&gt;
&lt;br /&gt;
If you're going to be at the summit, I'm sure I'll get the chance to meet you! &amp;nbsp;See you there.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-lsWbscr5AR8/TxB9HESHLMI/AAAAAAAAAXM/0R6pjva6TVM/s1600/hoff-old-knight-rider.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-lsWbscr5AR8/TxB9HESHLMI/AAAAAAAAAXM/0R6pjva6TVM/s400/hoff-old-knight-rider.jpg" width="400" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-W8YuGkQ-uS0/TxB9I03JnZI/AAAAAAAAAXU/ZtHUpmvD704/s1600/hoff-baywatch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-W8YuGkQ-uS0/TxB9I03JnZI/AAAAAAAAAXU/ZtHUpmvD704/s400/hoff-baywatch.jpg" width="261" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/CgAPXZ1URHk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/2954228590934676996/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/01/going-to-mvp-summit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2954228590934676996?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/2954228590934676996?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/CgAPXZ1URHk/going-to-mvp-summit.html" title="Going to MVP Summit" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-lsWbscr5AR8/TxB9HESHLMI/AAAAAAAAAXM/0R6pjva6TVM/s72-c/hoff-old-knight-rider.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/01/going-to-mvp-summit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHQnk7fyp7ImA9WhNbGUk.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-1608822676313377383</id><published>2012-01-06T13:36:00.000-05:00</published><updated>2013-01-23T08:05:33.707-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-23T08:05:33.707-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="edge" /><category scheme="http://www.blogger.com/atom/ns#" term="networking" /><title>Lync Edge Server Static Routes</title><content type="html">&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;If you're following the Technet articles on how to setup your edge server, you will eventually get to the point where you have to setup your NICs on your edge server. &amp;nbsp;According to &lt;/span&gt;the&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/gg412847.aspx" target="_blank"&gt;Set Up Network Interfaces for Edge Servers&lt;/a&gt;&amp;nbsp;page:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, you should set the default gateway on the external interface, but not the internal. The guide then helpfully tells you to....&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Create persistent static routes on the internal interface to all internal networks where clients, Lync Server 2010, and Exchange Unified Messaging (UM) servers reside.&lt;/blockquote&gt;
If you're not a Windows networking expert, this might stump you a bit. &amp;nbsp;Doing some searches might help, but here's a simple way to ensure that all internal networks are covered, even if you aren't aware of exactly which ones are in use. &amp;nbsp;This can easily happen if you're a consultant doing a Lync deployment for a large, multi-site company.&lt;br /&gt;
&lt;br /&gt;
There are 3 well-known IP subnets that are reserved for internal use. &amp;nbsp;Any networking person can tell you what they are, and should be using these for their internal corporate network. &amp;nbsp;If not, then I would recommend running away. &amp;nbsp;The 3 well-known subnets are 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16.&lt;br /&gt;
&lt;br /&gt;
I typically add static routes for all 3 subnets even if they aren't all in use. &amp;nbsp;This will future-proof your deployment &amp;nbsp;in case the company adds or changes their subnetting scheme. &amp;nbsp;To add these static routes on the internal interface of your edge server, do the following:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Using the Network Connections interface, make sure your NICs have descriptive names that make sense (Ie. Internal and External)&lt;/li&gt;
&lt;li&gt;Open a command prompt in Administrative Mode on the edge server.&lt;/li&gt;
&lt;li&gt;Make sure you know what the internal default gateway should be. &amp;nbsp;In this example, we will use &lt;b&gt;192.168.100.1&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Type the following commands in the command window:&lt;/li&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;/blockquote&gt;
&lt;/ol&gt;
&lt;blockquote class="tr_bq"&gt;
netsh interface ipv4 add route 10.0.0.0/8 "Internal" 192.168.100.1&lt;br /&gt;
netsh interface ipv4 add route&amp;nbsp;172.16.0.0/12&amp;nbsp;"Internal" 192.168.100.1&lt;br /&gt;
netsh interface ipv4 add route&amp;nbsp;192.168.0.0/16 "Internal" 192.168.100.1&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
When you do a &lt;b&gt;netsh interface ipv4 show route&lt;/b&gt;, you should see the new routes show up at the bottom of the list. &amp;nbsp;If you make a mistake, you can delete a route by using the same command above, and replace &lt;b&gt;add &lt;/b&gt;with &lt;b&gt;delete&lt;/b&gt;. &amp;nbsp;Now, &amp;nbsp;your Lync edge server should be able to route to any internal address, both now and in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE: &lt;/b&gt;&amp;nbsp;Apparently, I'm part Amish, and I was using ROUTE ADD instead of the updated netsh commands shown above. &amp;nbsp;Thanks to @twharrington on Twitter for pointing out the error to this ol' timer. &amp;nbsp;I'M DOIN' IT OLD SKOOL!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/1IRQE_KD81E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/1608822676313377383/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/01/lync-edge-server-static-routes.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1608822676313377383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/1608822676313377383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/1IRQE_KD81E/lync-edge-server-static-routes.html" title="Lync Edge Server Static Routes" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/01/lync-edge-server-static-routes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEDSXo-cCp7ImA9WhBVEUk.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-7289427367563425265</id><published>2012-01-03T14:46:00.002-05:00</published><updated>2013-04-16T16:21:18.458-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-16T16:21:18.458-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="optimizer" /><title>Complete Guide to the Lync Optimizer</title><content type="html">&lt;strong&gt;UPDATE (09-Jan-2013): &lt;/strong&gt;Least-cost and failover call routing is now built into the Optimizer. &amp;nbsp;See &lt;a href="http://ucken.blogspot.com/2013/01/least-cost-failover-routing-in-optimizer.html" target="_blank"&gt;this post&lt;/a&gt; for information.&lt;br /&gt;
&lt;b&gt;UPDATE (05-Dec-2012):&lt;/b&gt; Added true customized local dialing rules for the UK. &amp;nbsp;See &lt;a href="http://ucken.blogspot.ca/2012/12/localized-uk-dialing-rules-for-optimizer.html" target="_blank"&gt;this post&lt;/a&gt; for information.&lt;br /&gt;
&lt;strong&gt;UPDATE (31-May-2012): &lt;/strong&gt;Significant optimizations to North American local rulesets, and fix of normalization rule bug affecting 7-digit dialing rules.&amp;nbsp;See&amp;nbsp;&lt;a href="http://ucken.blogspot.com/2012/05/lync-dialing-rule-optimizer-gets.html" target="_blank"&gt;this post&lt;/a&gt;&amp;nbsp;for more information.&lt;br /&gt;
&lt;strong&gt;UPDATE (16-Mar-2012):&amp;nbsp;&lt;/strong&gt;Now creates separate dialing rules for toll-free and premium calls. Makes it easier to limit dialing to some groups while granting additional dialing rights to others.&amp;nbsp;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;UPDATE (29-Feb-2012): &lt;/strong&gt;Will allow you to run multiple Optimizer output files against a site to provide localized dialing rules for international users. &amp;nbsp;See &lt;a href="http://ucken.blogspot.com/2012/03/localized-dialing-rules-in-lync.html" target="_blank"&gt;this post&lt;/a&gt; for more information.&lt;br /&gt;
&lt;strong&gt;UPDATE (17-Feb-2012): &lt;/strong&gt;Program will now create separate dialing rules/usages for mobile networks in non-North American dial plans. Allows for administrators to easily control who is able to dial mobile numbers, which usually cost more than land-lines.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;
Whenever I've added new features to the&amp;nbsp;&lt;a href="http://www.lyncoptimizer.com/" target="_blank"&gt;Lync Dialing Rule Optimizer&lt;/a&gt;, I've created a post outlining the new functionality. &amp;nbsp;This has led to information being scattered across several different posts and isn't readily available. &amp;nbsp;I figured it would be best to create a single, all-encompassing post that outlines how to get the most out of the Lync Optimizer. &amp;nbsp;It will be updated over time as new features are added.
&lt;br /&gt;
&lt;br /&gt;
The Lync Optimizer began its life in February 2009 as a locally run VBScript designed to create optimized dialing rules for Dialogic and Audiocodes gateways, as detailed in &lt;a href="http://ucken.blogspot.com/2010/08/dialing-rule-optimizer-for-e164-phone.html" target="_blank"&gt;this post dug up from ancient times&lt;/a&gt; (2010). &amp;nbsp;Its primary purpose was to figure out what phone numbers were local and which were long distance for any given area. &amp;nbsp;People who knew me would email me the phone number they would want optimized and I would run the program and email the results. &amp;nbsp;The earliest known versions of this code are now archived in the Smithsonian for future historians. &amp;nbsp;It has since grown and evolved into the well-oiled Lync-centric online machine it is today.&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;a href="http://4.bp.blogspot.com/-qFZkhIb8mHs/T1IoxI1EwwI/AAAAAAAAAZU/itpbRC-gC-o/s1600/LyncOptimizer76.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="404" src="http://4.bp.blogspot.com/-qFZkhIb8mHs/T1IoxI1EwwI/AAAAAAAAAZU/itpbRC-gC-o/s640/LyncOptimizer76.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
There are tons of documentation available on how to setup Enterprise Voice in Lync Server 2010, but reading through them all can be daunting and there is not very much guidance on the WHYs as much there is on the HOWs. &amp;nbsp;The Lync Dialing Rule Optimizer is designed to take care of 95% of the typical setup required to make Enterprise Voice work in Lync Server 2010. &amp;nbsp;It takes advantage of the knowledge gained from multiple deployments from several Lync professionals on the best way to do things in Lync. All this knowledge is funnelled down into a simple set of options that outputs a Powershell script that takes care of almost all the work for you.&lt;br /&gt;
&lt;br /&gt;
For some more background on Lync Enterprise Voice Best Practices, I encourage you to read through some of my posts on the subject:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://ucken.blogspot.com/2010/12/enterprise-voice-best-practices-in-lync.html" target="_blank"&gt;E.164 Formatting&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://ucken.blogspot.com/2011/01/enterprise-voice-best-practices-in-lync.html" target="_blank"&gt;Normalization&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://ucken.blogspot.com/2011/01/enterprise-voice-best-practices-in-lync_21.html" target="_blank"&gt;Usages and Routes&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://ucken.blogspot.com/2011/05/enterprise-voice-best-practices-in-lync.html" target="_blank"&gt;Extensions&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://ucken.blogspot.com/2011/11/migrating-pbx-users-to-lync-enterprise.html" target="_blank"&gt;Migrating to Enterprise Voice&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Tested Scenarios&lt;/span&gt;&lt;br /&gt;
The Optimizer has been tested to work with the following topology combinations:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Single central site&lt;/li&gt;
&lt;li&gt;Multiple central sites&lt;/li&gt;
&lt;li&gt;Multiple central sites with multiple branch sites&lt;/li&gt;
&lt;li&gt;Single central site with multiple mediation pools&lt;/li&gt;
&lt;li&gt;Multiple central/branch sites with multiple mediation pools/PSTN gateways&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-size: x-large;"&gt;Before You Start&lt;/span&gt;&lt;br /&gt;
Before you jump in and use the Optimizer, its best to make sure your Lync environment is up to speed.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Make sure that all your user's phone numbers in Active Directory are in E.164 format, as described in my post on &lt;a href="http://ucken.blogspot.com/2010/12/enterprise-voice-best-practices-in-lync.html" target="_blank"&gt;E.164 formatting&lt;/a&gt;. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Make sure you have a PSTN gateway defined in your Lync topology for each Lync site you wish to run the Optimizer.&lt;/li&gt;
&lt;li&gt;Don't mess around with any of the Enterprise Voice sections at this time. &amp;nbsp;It will just complicate your life. &amp;nbsp;If practical, delete any routes/usage/policies you've already defined.&lt;/li&gt;
&lt;li&gt;If you do have existing policies/routes etc. back them up by going to &lt;b&gt;Action - Export Configuration&lt;/b&gt; under the &lt;b&gt;Voice Routing&lt;/b&gt; section of the Lync Control Panel.&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-WyZHsWAzSQc/UW2ynWk-77I/AAAAAAAAAfo/6Nb6FPwD37g/s1600/BackupConfig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://2.bp.blogspot.com/-WyZHsWAzSQc/UW2ynWk-77I/AAAAAAAAAfo/6Nb6FPwD37g/s640/BackupConfig.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Using the Lync Optimizer&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Ensure the Lync site you wish to apply the rules have at least one PSTN gateway assigned to it. &amp;nbsp;If you don't, the script will not run.&lt;/li&gt;
&lt;li&gt;Go to&amp;nbsp;&lt;a href="http://www.lyncoptimizer.com/"&gt;http://www.LyncOptimizer.com&lt;/a&gt;. &amp;nbsp;If you wish to create rules that use only English, regardless of the official language in the chosen country, click on &lt;b&gt;&lt;a href="http://lyncoptimizer.com/english.htm" target="_blank"&gt;Click for English-Only version&lt;/a&gt;&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Pick your country from the drop-down list.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ML6nrfKBgbY/TwODnerNvmI/AAAAAAAAAR8/rswKgKh5i6A/s1600/DRO_Country.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-ML6nrfKBgbY/TwODnerNvmI/AAAAAAAAAR8/rswKgKh5i6A/s400/DRO_Country.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="4"&gt;For North American (including Hawaii and Alaska) and&amp;nbsp;Caribbean&amp;nbsp;users, enter the area code and local exchange information for the Lync site you want to apply the script to. &amp;nbsp;For other countries, pick the city where your Lync server resides from the list provided.&lt;/li&gt;
&lt;/ol&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Jm8mgrwfJqM/TwOFLrEBu3I/AAAAAAAAASI/FEj5O1qCI7U/s1600/DRO_AreaCodeNA.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="72" src="http://4.bp.blogspot.com/-Jm8mgrwfJqM/TwOFLrEBu3I/AAAAAAAAASI/FEj5O1qCI7U/s400/DRO_AreaCodeNA.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;North American Area Code Selection&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4vnvBL8R4fE/TwOFNXZxvAI/AAAAAAAAASQ/yeE3GdaRDz4/s1600/DRO_AreaCodeINT.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="75" src="http://3.bp.blogspot.com/-4vnvBL8R4fE/TwOFNXZxvAI/AAAAAAAAASQ/yeE3GdaRDz4/s400/DRO_AreaCodeINT.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;International Area Code Selection (UK example)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ol&gt;
&lt;li value="5"&gt;Non-North American users have the option to add a rule suffix to each generated rule. &amp;nbsp;This is handy when deploying Lync to multiple sites within the same city. &amp;nbsp;Without customizing rule names, the rulesets can conflict with one another, producing unexpected results. &amp;nbsp;With the example shown below, the non-customized rule would be&lt;b&gt; UK-Leeds-113-Local&lt;/b&gt;. &amp;nbsp;Adding &lt;b&gt;Downtown &lt;/b&gt;changes each rule so they start with &lt;b&gt;UK-Leeds-113-Downtown-&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-nEgiNZpWrMo/TzUoiX5Fs8I/AAAAAAAAAXo/qVMSYTU1Y2g/s1600/RuleSuffix.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="56" src="http://1.bp.blogspot.com/-nEgiNZpWrMo/TzUoiX5Fs8I/AAAAAAAAAXo/qVMSYTU1Y2g/s640/RuleSuffix.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="6"&gt;Some countries (Brazil for example) requires a carrier access code to be dialed when dialing long distance phone numbers. &amp;nbsp;If your country requires a carrier access code (Brazil is the only one in the Optimizer so far), you can enter it here. &amp;nbsp;The carrier access code will be added to the dialed number after the national/international access code and before the subscriber number. &amp;nbsp;For example, if you select 19 as the carrier access code, then long-distance numbers will be sent to the PSTN as 019xxxxxxxxx, instead of just 0xxxxxxxxxx.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-oXTQkooH33M/T2N4kQhmVnI/AAAAAAAAAZc/8MoO0dfksH4/s1600/CarrierCode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="64" src="http://1.bp.blogspot.com/-oXTQkooH33M/T2N4kQhmVnI/AAAAAAAAAZc/8MoO0dfksH4/s400/CarrierCode.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="7"&gt;If you have to enter 9 (or some other digit)&amp;nbsp;to get an outside line, enter it in the &lt;b&gt;External Access #&lt;/b&gt; box. This should only apply to connections to an existing PBX. &amp;nbsp;Don't enter numbers you would normally have to use to make a call from outside the office (ie. 00).&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-4UDJM23I3FE/TwOHICw_ygI/AAAAAAAAASc/xPUjciY_4TM/s1600/DRO_ExtAccess.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://2.bp.blogspot.com/-4UDJM23I3FE/TwOHICw_ygI/AAAAAAAAASc/xPUjciY_4TM/s400/DRO_ExtAccess.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="8"&gt;If you want your users to be able to enter an extension to reach someone, select the &lt;b&gt;Use Extensions&lt;/b&gt; checkbox.&amp;nbsp;When you select the checkbox, it will show an&amp;nbsp;&lt;b&gt;Edit Extensions&lt;/b&gt;&amp;nbsp;button. &amp;nbsp;Clicking it will bring up the&amp;nbsp;&lt;b&gt;Extension Entry&lt;/b&gt;&amp;nbsp;screen.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-A1k7a-YecqI/TwOIHz7JP6I/AAAAAAAAASo/j-JD9lK6Wbo/s1600/DRO_Extensions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="35" src="http://4.bp.blogspot.com/-A1k7a-YecqI/TwOIHz7JP6I/AAAAAAAAASo/j-JD9lK6Wbo/s400/DRO_Extensions.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SqDG5CLRyG8/TwOJZiA9n8I/AAAAAAAAAS0/vbP-Or4A6Xo/s1600/ExtensionEntry.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="556" src="http://1.bp.blogspot.com/-SqDG5CLRyG8/TwOJZiA9n8I/AAAAAAAAAS0/vbP-Or4A6Xo/s640/ExtensionEntry.png" width="640" /&gt;&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;
If none of your users are directly dialable (ie. have to go through a receptionist), then enter the full main phone number and the corresponding extension range. &amp;nbsp;In the above example, if a user dials &lt;b&gt;244&lt;/b&gt;, it will normalize to &lt;b&gt;+14165551111;ext=244&lt;/b&gt;. &amp;nbsp;This assumes that you've assigned the phone number to the user in the format &lt;b&gt;tel:+14165551111;ext=244&lt;/b&gt;. &amp;nbsp;If you entered it as just 244, this will not work. &amp;nbsp;See my post on&amp;nbsp;&lt;a href="http://ucken.blogspot.com/2011/05/enterprise-voice-best-practices-in-lync.html" style="text-align: center;" target="_blank"&gt;Extensions&lt;/a&gt;&amp;nbsp;for more information.&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;
If your extension range maps to an external DID, select the &lt;b&gt;DID &lt;/b&gt;checkbox and enter the prefix and extension start/end range. &amp;nbsp;This will create a normalization rule that will translate typed extensions to the full DID. &amp;nbsp;As in the above example, if a user dials &lt;b&gt;3055&lt;/b&gt;, the number will be normalized to &lt;b&gt;+14165553055&lt;/b&gt;. &amp;nbsp;Again, this assumes you've assigned the phone number to the user in the format&lt;b&gt; tel:+14165553055&lt;/b&gt;. &amp;nbsp;If you've used the extension only, this will not work.&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;
You can enter up to 10 extension ranges here. &amp;nbsp;If you need more, please send me a note, and I will see about increasing the limit. &amp;nbsp;Make sure you press &lt;b&gt;Submit &lt;/b&gt;when done, or else it won't save your work.&lt;/div&gt;
&lt;ol&gt;
&lt;li value="9"&gt;If you are using a SIP trunk that accepts E.164 phone numbers, select the &lt;b&gt;SIP Trunk Connection&lt;/b&gt; option.&amp;nbsp; If selected, the program will not create trunk translation rules.&amp;nbsp; All numbers will be sent to the next hop formated as E.164. &amp;nbsp;It will also set encryption on the trunk to &lt;b&gt;Optional &lt;/b&gt;and will disable REFER support, as this is not supported by most SIP providers. &amp;nbsp;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;Don't select both an external access number AND SIP trunk options.&amp;nbsp; The two options are mutually exclusive.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-F8TNKeOPk7o/TwON5XFLBgI/AAAAAAAAATA/RtKF6ZFWZNQ/s1600/DRO_SIPTrunk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="43" src="http://2.bp.blogspot.com/-F8TNKeOPk7o/TwON5XFLBgI/AAAAAAAAATA/RtKF6ZFWZNQ/s400/DRO_SIPTrunk.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="10"&gt;If you want Lync to block premium rate phone numbers (like 900 in North America) for all users, select the&amp;nbsp;&lt;strong&gt;Block Premium Numbers&lt;/strong&gt;&amp;nbsp;checkbox. &amp;nbsp;The program will use the Announcement service to let the user know they can't dial those numbers. &amp;nbsp;This will apply to ALL users in the company, so don't use this option if you want to be more selective. &amp;nbsp;See the &lt;a href="http://ucken.blogspot.com/2011/09/block-premium-rate-numbers-with-dialing.html" target="_blank"&gt;original post &lt;/a&gt;for more information.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-_yJtimlmqss/TwON_yyuMOI/AAAAAAAAATM/7LFvBG1LGbg/s1600/DRO_BlockPrem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://4.bp.blogspot.com/-_yJtimlmqss/TwON_yyuMOI/AAAAAAAAATM/7LFvBG1LGbg/s400/DRO_BlockPrem.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="11"&gt;If you want to use the Call Park feature, select the &lt;b&gt;Enable Call Park&lt;/b&gt; option. &amp;nbsp;When selected, you will be able to enter a range for the call park orbit. &amp;nbsp;The range must be 2-digits or longer and can include * or # at the beginning. &amp;nbsp;To ensure the call park orbit doesn't conflict with an existing normalization rule, the program will create a Call Park specific normalization rule to make sure those numbers are not normalized to something else. &amp;nbsp;Check out the &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=1557" target="_blank"&gt;Call Park Deployment Guide &lt;/a&gt;for more information on Call Park.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-mrS_mF6CU90/TwR3x0LkMoI/AAAAAAAAAT8/pu0BgM4JQ_k/s1600/DRO_CallPark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="27" src="http://2.bp.blogspot.com/-mrS_mF6CU90/TwR3x0LkMoI/AAAAAAAAAT8/pu0BgM4JQ_k/s400/DRO_CallPark.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="12"&gt;If your North American local dialing area supports 7-digit dialing, select the&amp;nbsp;&lt;strong&gt;7-Digit Normalization&lt;/strong&gt;&amp;nbsp;checkbox.&amp;nbsp; If you're unsure if your local dialing area supports 7-digit dialing, leave this blank. Selecting this option when 7-digit dialing isn't available can lead to unpredictable results. &amp;nbsp;Doesn't apply to other countries other than North America.&lt;/li&gt;
&lt;/ol&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/-YM-3XMLW2Zg/TwR0tDA9IxI/AAAAAAAAATw/hsaVQaq_2Qc/s1600/DRO_7Digit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="48" src="http://2.bp.blogspot.com/-YM-3XMLW2Zg/TwR0tDA9IxI/AAAAAAAAATw/hsaVQaq_2Qc/s400/DRO_7Digit.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="13"&gt;To receive updates should the ruleset change, enter your email address.&amp;nbsp; Only applies to North American users.&lt;/li&gt;
&lt;li&gt;After pressing&amp;nbsp;&lt;strong&gt;Generate Rules&lt;/strong&gt;, wait a minute for the rules to be generated.&lt;/li&gt;
&lt;li&gt;The program will generate a single&amp;nbsp;&lt;strong&gt;.PS1&lt;/strong&gt;&amp;nbsp;file. &amp;nbsp;Save this file onto your desktop. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Right-click the .PS1 file and click &lt;b&gt;Properties&lt;/b&gt;. &amp;nbsp;Click the &lt;b&gt;Unblock &lt;/b&gt;button to allow the script to be run. &amp;nbsp;Alternatively, run the Powershell command &lt;b&gt;Set-ExecutionPolicy -ExecutionPolicy Unrestricted&lt;/b&gt; on your Lync server.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-fLG6wa1Euj0/T0_Rj_nSHwI/AAAAAAAAAZM/Kf1ZPpN4JgY/s1600/Properties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-fLG6wa1Euj0/T0_Rj_nSHwI/AAAAAAAAAZM/Kf1ZPpN4JgY/s400/Properties.png" width="291" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li value="17"&gt;Run the .PS1 file by typing &lt;b&gt;.\Filename.ps1&lt;/b&gt;. For the above example, use &lt;b&gt;.\Toronto-ON-416678-Lync.ps1&lt;/b&gt;. You will be prompted to select the site to apply the dialing rules.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-6WLeXiY_n0E/TwSJso4E1nI/AAAAAAAAAUI/K-VIy3Th2-4/s1600/DRO_SiteInput.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://4.bp.blogspot.com/-6WLeXiY_n0E/TwSJso4E1nI/AAAAAAAAAUI/K-VIy3Th2-4/s640/DRO_SiteInput.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li value="18"&gt;If there are multiple mediation pools or PSTN gateways in the specified site, the script will prompt you to select one. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;If the Optimizer detects multiple Lync sites, it will ask if you want to apply least-cost/failover routing to the new voice policies.&lt;/li&gt;
&lt;li&gt;The script will then create all the necessary dial plans, routes, usages etc. to get you going.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-7thTsCc_KYg/TwSKFLDmSWI/AAAAAAAAAUU/uDTIpSQHsmU/s1600/DRO_Output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://1.bp.blogspot.com/-7thTsCc_KYg/TwSKFLDmSWI/AAAAAAAAAUU/uDTIpSQHsmU/s640/DRO_Output.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="font-size: x-large;"&gt;After Running the Optimizer Script&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;If you have multiple mediation pools and/or PSTN gateways in the site, you can re-run the script and select the other gateway. &amp;nbsp;The script will add the gateway to the existing routes. &amp;nbsp;Calls using that route will round-robin between the gateways.&lt;/li&gt;
&lt;li&gt;If you want least-cost/failover routing applied to all the sites where you've applied Optimizer-generated scripts, run each of the scripts again, ensuring you select the option to configure least-cost/failover routing. &amp;nbsp;It will update the voice policy to include the additional PSTN usages. &amp;nbsp;See this post for more information.&lt;/li&gt;
&lt;li&gt;If you have users from different countries using a single Enterprise Voice deployment, run the Optimizer for each country and run the resulting script. &amp;nbsp;It will create user-level dial plans so those users can have localized dialing rules, as described in &lt;a href="http://ucken.blogspot.com/2012/03/localized-dialing-rules-in-lync.html" target="_blank"&gt;this post&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&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;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Verifying Settings&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
To verify the settings were applied properly, go to the &lt;b&gt;Voice Routing&lt;/b&gt; section of the Lync Control Panel.&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;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Dial Plan Settings&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
The script creates a site level dial plan for the site you selected in the script. &amp;nbsp;All users assigned to the Lync servers in that site will have this dial plan automatically applied to them.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-vuyga2YiRcQ/TwSUcjsHv_I/AAAAAAAAAUg/xi7f3xAVgfI/s1600/DRO_DialPlanAll.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://4.bp.blogspot.com/-vuyga2YiRcQ/TwSUcjsHv_I/AAAAAAAAAUg/xi7f3xAVgfI/s640/DRO_DialPlanAll.png" width="640" /&gt;&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;
Drilling down into the details of the dial plan shows the normalization rules applied to the dial plan. &amp;nbsp;You'll note the External access prefix has been set in this example. &amp;nbsp;For more information on what this does, see my post on &lt;a href="http://ucken.blogspot.com/2011/03/internal-extension-dialing-in-lync.html" target="_blank"&gt;internal extension dialing&lt;/a&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
If you've setup &lt;a href="http://ucken.blogspot.com/2012/03/localized-dialing-rules-in-lync.html" target="_blank"&gt;localized dialing rules&lt;/a&gt; against a central Lync deployment, there will be user-level dial plans here. &amp;nbsp;This will allow people homed in different countries to use their local dialing rules, instead of the rules assigned to the central pool. &amp;nbsp;You will have to manually assign the dial plan to the appropriate users, or use a Powershell script.&lt;br /&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;
The normalization rule for call park is highest in the list (if selected), followed by internal extensions (if selected), then national, international, service and in the specific case of Canada, 310 numbers.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-u9teCzK3X3g/TwSXEDroxzI/AAAAAAAAAU4/xgm84oQJolQ/s1600/DRO_DialPlanDetail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="590" src="http://4.bp.blogspot.com/-u9teCzK3X3g/TwSXEDroxzI/AAAAAAAAAU4/xgm84oQJolQ/s640/DRO_DialPlanDetail.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Voice Policy Settings&lt;/span&gt;&lt;br /&gt;
The script then creates multiple voice policies. &amp;nbsp;Voice policies are used to assign calling features to groups of users. &amp;nbsp;A site-level policy is assigned to everyone by default and allows local, national and international calls. Three user-level policies allow varying degrees of calling rights. &amp;nbsp;The &lt;b&gt;Local &lt;/b&gt;policy allows only local calls (excluding mobile phones in non-NA countries), the &lt;b&gt;National &lt;/b&gt;policy allows local, mobile&amp;nbsp;and national calling, and the &lt;b&gt;International &lt;/b&gt;policy allows all calls, including premium rate calls. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-49z_i6AK-F8/TwSZSGk7b6I/AAAAAAAAAVE/6bQlpyBh9nA/s1600/DRO_VoicePolicy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://1.bp.blogspot.com/-49z_i6AK-F8/TwSZSGk7b6I/AAAAAAAAAVE/6bQlpyBh9nA/s640/DRO_VoicePolicy.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The calling rights assigned to each policy is summarized in the table below:&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1" style="text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td colspan="7"&gt;&lt;div style="text-align: center;"&gt;
&lt;strong&gt;Calling Rights&lt;/strong&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Policy&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Local&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;National&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Toll-Free&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Premium&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;International&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Site&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;User-Local&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;User-National&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;User-International&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;td&gt;&lt;div style="text-align: center;"&gt;
X&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
You can elect to change&amp;nbsp;any&amp;nbsp;policy to allow any combination of dialing abilities. You do this by editing the&amp;nbsp;appropriate policy and adding or removing the appropriate PSTN usage records as shown below. &amp;nbsp;You can also change the calling features available to users.&amp;nbsp; You can always create new policies if the default ones don't match your needs.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Ll8_SEEYpgs/TwSahwwyEyI/AAAAAAAAAVQ/_WgkY_ubFY4/s1600/DRO_VoicePolicyDetails.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="592" src="http://2.bp.blogspot.com/-Ll8_SEEYpgs/TwSahwwyEyI/AAAAAAAAAVQ/_WgkY_ubFY4/s640/DRO_VoicePolicyDetails.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Routes&lt;/span&gt;&lt;br /&gt;
Each route created are assigned to a&lt;b&gt;&amp;nbsp;&lt;/b&gt;PSTN gateway as selected at the beginning of script execution (if there are more than one choice). &amp;nbsp;If you have multiple PSTN gateways assigned to a mediation pool, you can run the Optimizer script multiple times, selecting a different PSTN gateway each time. &amp;nbsp;The script will add the gateway to each route. &amp;nbsp;With multiple PSTN gateways in a route, calls will round-robin between the gateways.&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://1.bp.blogspot.com/-CaKbgvWnQa8/TwSd5Yfx3iI/AAAAAAAAAVo/pDBxnNrKoN4/s1600/DRO_Routes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="390" src="http://1.bp.blogspot.com/-CaKbgvWnQa8/TwSd5Yfx3iI/AAAAAAAAAVo/pDBxnNrKoN4/s640/DRO_Routes.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;PSTN Usages&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Usages are the links between voice policies and routes. &amp;nbsp;A usage can have multiple routes assigned to it, and can be assigned to multiple voice policies. &amp;nbsp;This provides a very flexible and easily modified structure for voice rules. &amp;nbsp;There are 5 usages for each site (6 for non-NA countries): &amp;nbsp;&lt;strong&gt;Local &lt;/strong&gt;(if local dialing available in selected country), &lt;b&gt;National&lt;/b&gt;, &lt;strong&gt;International&lt;/strong&gt;,&lt;strong&gt; Mobile&amp;nbsp;&lt;/strong&gt;(for non-NA countries), &lt;b&gt;Premium&lt;/b&gt; and &lt;b&gt;Service&lt;/b&gt;. &amp;nbsp;Each usage has the appropriate routes assigned (ie. the Local usage has routes for local, internal and toll-free numbers).&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Qf4HjKkGKr8/TwShTpjPXII/AAAAAAAAAV0/U5pubGSR6GU/s1600/DRO_Usages.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-Qf4HjKkGKr8/TwShTpjPXII/AAAAAAAAAV0/U5pubGSR6GU/s640/DRO_Usages.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Trunk Configuration&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
The trunk configuration does final outgoing phone number manipulation before sending the call to the PSTN gateway. &amp;nbsp;Since all phone numbers are coming to the gateway in E.164 format, its simple to strip digits as required. &amp;nbsp;For instance, local calls strip the national prefix, international calls add the international prefix for the selected location, and so on.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
If the SIP Connection option was selected in the Optimizer, there will be no modification of outbound phone numbers. &amp;nbsp;Everything will be sent to the SIP provider in E.164 format. &amp;nbsp;Also, REFER support will be turned off, and encryption will be set to &lt;b&gt;Optional&lt;/b&gt;. &amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-N0vVc5w0hUo/TwSkHpDcpcI/AAAAAAAAAWA/hHE9QJq7cuU/s1600/DRO_Trunk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://3.bp.blogspot.com/-N0vVc5w0hUo/TwSkHpDcpcI/AAAAAAAAAWA/hHE9QJq7cuU/s640/DRO_Trunk.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-5nkI7fyb5D8/TwSkIudkRVI/AAAAAAAAAWI/JPkWuhrGuGA/s1600/DRO_TrunkDetail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="586" src="http://1.bp.blogspot.com/-5nkI7fyb5D8/TwSkIudkRVI/AAAAAAAAAWI/JPkWuhrGuGA/s640/DRO_TrunkDetail.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Blocked Premium Numbers&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
If you selected the &lt;b&gt;Block Premium Numbers &lt;/b&gt;option, the program will automatically setup the unassigned number range and&amp;nbsp;relevant&amp;nbsp;announcement for your country. &amp;nbsp;For more details on this feature see my post on &lt;a href="http://ucken.blogspot.com/2011/09/block-premium-rate-numbers-with-dialing.html" target="_blank"&gt;blocking premium numbers in Lync&lt;/a&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-CD_n7ksnsEA/TwSoMaUzJ3I/AAAAAAAAAWU/ht911ikeLvk/s1600/DRO_PremNum.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" src="http://3.bp.blogspot.com/-CD_n7ksnsEA/TwSoMaUzJ3I/AAAAAAAAAWU/ht911ikeLvk/s640/DRO_PremNum.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Call Park&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
If you selected the &lt;b&gt;Call Park &lt;/b&gt;option, the script will create the relevant call park orbit, and also a normalization rule to ensure the number range is never normalized to something else.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-hIrpddWnfb8/TwSs-j-mN9I/AAAAAAAAAWg/x1qfUnyv2FE/s1600/DRO_CallParkDetails.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://1.bp.blogspot.com/-hIrpddWnfb8/TwSs-j-mN9I/AAAAAAAAAWg/x1qfUnyv2FE/s640/DRO_CallParkDetails.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Next Steps&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
If you only have a single Lync site, then your work is pretty much done. &amp;nbsp;You can enable users for Enterprise Voice and things should work just fine (assuming your PSTN gateway connection is setup properly).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
If you have multiple sites, and selected the option to apply least-cost/failover routing, ensure the ordering of the usages meets your requirements. &amp;nbsp;Change the order as required.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Conclusion&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
This should give you a good overview on what the Lync Dialing Rule Optimizer does. &amp;nbsp;As mentioned earlier, this page will be updated as new features are added. &amp;nbsp;If you have any questions, feel free to drop me a line.&lt;br /&gt;
&lt;br /&gt;
Also, if you find&amp;nbsp;the Lync Optimizer&amp;nbsp;useful, please consider donating using the PayPal link on the bottom of the Optimizer page.&amp;nbsp; I've invested a significant amount of my own time putting this tool together (and continue to do so), and I do have hosting costs to consider.&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/b7nNhJOpApg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/7289427367563425265/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2012/01/complete-guide-to-lync-optimizer.html#comment-form" title="123 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7289427367563425265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7289427367563425265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/b7nNhJOpApg/complete-guide-to-lync-optimizer.html" title="Complete Guide to the Lync Optimizer" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-qFZkhIb8mHs/T1IoxI1EwwI/AAAAAAAAAZU/itpbRC-gC-o/s72-c/LyncOptimizer76.png" height="72" width="72" /><thr:total>123</thr:total><feedburner:origLink>http://ucken.blogspot.com/2012/01/complete-guide-to-lync-optimizer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkICSXwzeip7ImA9WhRQFEg.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-7688019689190393770</id><published>2011-12-09T09:59:00.001-05:00</published><updated>2011-12-09T12:09:28.282-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T12:09:28.282-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="mobility" /><title>Lync Mobility Documentation Now Available</title><content type="html">The Lync Mobility Planning, Deploying and Monitoring documentation and associated autodiscover service are now online. &amp;nbsp;Get the documentation &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28355" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp;and the server bits &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28356" target="_blank"&gt;here&lt;/a&gt;. &amp;nbsp;The Windows Mobile 7 client will be available on Monday, December 12. &amp;nbsp;The iOS and Android clients should be available sometime that same week (pending the appropriate market approvals).&lt;br /&gt;
&lt;br /&gt;
The documentation surrounding this is quite complex. &amp;nbsp;This is not a simple setup. &amp;nbsp;Already, people are finding out what happens when you try to blindly run setup for the autodisover service (see&amp;nbsp;&lt;a href="http://ariprotheroe.wordpress.com/2011/12/09/how-not-to-install-the-lync-2010-mobility-and-autodiscover-services/"&gt;http://ariprotheroe.wordpress.com/2011/12/09/how-not-to-install-the-lync-2010-mobility-and-autodiscover-services/&lt;/a&gt;). &amp;nbsp;It pays to read the documentation carefully before running setup.&lt;br /&gt;
&lt;br /&gt;
One thing that I find disappointing is the requirement for a new DNS namespace (&lt;b&gt;lyncdiscover&lt;/b&gt; and &lt;b&gt;lyncdiscoverinternal&lt;/b&gt;). &amp;nbsp;When I was at the Exchange 15 summit last August, they made a big deal about reducing the number of namespaces required for a functional Exchange deployment. &amp;nbsp;I hope there's a good reason why the Lync team has decided to increase the namespace requirements for Lync. &amp;nbsp;Why not use the existing SRV-based infrastructure to publish the required information?&lt;br /&gt;
&lt;br /&gt;
There's a Microsoft conference this afternoon about the Lync mobility service. &amp;nbsp;Hopefully there will be an explanation about this. &amp;nbsp;I will update this post with more information as I get it.&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/H9ZEZhTd_ik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/7688019689190393770/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2011/12/lync-mobility-documentation-now.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7688019689190393770?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/7688019689190393770?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/H9ZEZhTd_ik/lync-mobility-documentation-now.html" title="Lync Mobility Documentation Now Available" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://ucken.blogspot.com/2011/12/lync-mobility-documentation-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QEQnY5eSp7ImA9WhRSF04.&quot;"><id>tag:blogger.com,1999:blog-2156539095375223979.post-8176384462569458265</id><published>2011-11-18T13:17:00.001-05:00</published><updated>2011-11-19T16:48:23.821-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-19T16:48:23.821-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lync" /><category scheme="http://www.blogger.com/atom/ns#" term="commentary" /><title>Lync and 3rd Party PBX Integration</title><content type="html">I've been reading the comments over at &lt;a href="http://voipnorm.blogspot.com/2011/11/what-avaya-arent-telling-you-about-ace.html" target="_blank"&gt;VOIPNorm's blog post about Avaya ACE&lt;/a&gt;. &amp;nbsp;There's a lot to wade through there, but it got me thinking about customer expectations around unified communications. &amp;nbsp;I've got this one particular customer who's got Cisco phones deployed everywhere. &amp;nbsp;They've also got Lync everywhere and people love it. &amp;nbsp;They recognize that Lync has nailed the user experience, encompassing a full featureset along with an easy-to-use interface. &amp;nbsp;Naturally, this customer doesn't want to toss out their significant investment in Cisco hardware, and they want Cisco and Lync to work together. &amp;nbsp;They want Lync to work with their existing phone system with little fuss, and still maintain the rich UI experience of Lync. &lt;br /&gt;
&lt;br /&gt;
What I want to tell them is that you will NEVER have a truly seamless easy-to-use experience when you try to join two competitors' UC products together. &amp;nbsp;To paraphrase one of the commentors at VOIPNorm's blog: when you mix a nice red wine with a nice white wine, the end result isn't a great rosé.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
At this client, we attempted to go down the integration path with OCS and a third-party product that promised seamless remote call control with Cisco. &amp;nbsp;They were looking at a 3rd party for RCC rather than Cisco's Unified Presence Server (CUPS), because of apparent scalability issues with CUPS. &amp;nbsp;From an administrative standpoint, the 3rd party product was an absolute nightmare to configure and troubleshoot. &amp;nbsp;Once we did get it working, it did provide remote call control, but there were significant usability issues. &amp;nbsp;The product worked fine when the user was in the office. &amp;nbsp;Users could make or take calls on their deskphone using Lync to control it. &amp;nbsp;However, when the user went home they got frustrated when they couldn't answer incoming calls they could see on their Communicator client because it would answer it on the deskphone back in the office. &lt;br /&gt;
&lt;br /&gt;
We tried giving them the best of both worlds by enabling them for Enterprise Voice, but that became a support nightmare when they got confused about which way to answer the phone or to make calls. &amp;nbsp;If they were set to answer via Communicator, they were confused why their deskphone didn't go off-hook. &amp;nbsp;If they made a call from home and they were set to RCC mode, then they didn't understand what was going on when they dialed a number and they couldn't hear anything (because the call was going out via the deskphone at the office). &amp;nbsp;Not only that, but we now had two separate phone systems to manage.&lt;br /&gt;
&lt;br /&gt;
We tried CuciMOC and CuciLync as well. I remember saying that if CuciMOC could deliver on even half of what they were promising, then our integration problems would be solved. &amp;nbsp;Unfortunately, the end-user experience was so lacking that the project never went beyond the IT pilot phase. &amp;nbsp;Not only that, but the administrative burden involved in configuring and maintaining it was not something that the IT group wanted to deal with on a large scale.&lt;br /&gt;
&lt;br /&gt;
Both projects died a well-deserved death, but the CIO has been demanding seamless connectivity between Cisco and OCS/Lync ever since. &amp;nbsp;It's interesting that people expect so much more from Microsoft than any other vendor. &amp;nbsp;I don't think I've ever heard anyone demanding that Cisco and Avaya integrate with each other. &amp;nbsp;Why should Microsoft get such different treatment?&lt;br /&gt;
&lt;br /&gt;
Unfortunately, when we are dealing with two COMPETING vendors like Cisco and Microsoft, there will never be the sort of tight integration that will allow companies to both leverage their existing investment AND take full advantage of the UC capabilities of Lync. &amp;nbsp;Each vendor has their own very good reasons to push the benefits of their own particular solution. &amp;nbsp;Companies need to stop trying to get the best of both worlds and fully invest in either one or the other solution, not both. &lt;br /&gt;
&lt;br /&gt;
I truly believe that Lync is the best and most cost-effective unified communications solution out there. &amp;nbsp;No other vendor has the same level of product functionality built into the base product as Lync. &amp;nbsp;Companies can get IM, presence, video/audio conferencing, whiteboarding, application/desktop sharing and Enterprise Voice with as little as ONE server. &amp;nbsp;Of course, high availability requirements and larger deployments do require more servers, but it does serve to illustrate what is possible with just one server. &amp;nbsp;Add ONE more server for seamless external connectivity with other companies and remote users. &amp;nbsp;Lync can provide companies with the sort of unified communications their users desire, but sadly even with my best pre-sales pitch, I can't convince everyone. &lt;br /&gt;
&lt;br /&gt;
We are in the early days of a true revolution in communications. &amp;nbsp;Its natural to be resistant to the big changes necessary to put the pieces in place. &amp;nbsp;However, once the switch is made, it will pay dividends in terms of ease-of-communications, cost and flexibility.&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/-XifINt3m698/Tsa4OkHo2DI/AAAAAAAAARs/EpmPBQM3TRU/s1600/the-more-you-know.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://1.bp.blogspot.com/-XifINt3m698/Tsa4OkHo2DI/AAAAAAAAARs/EpmPBQM3TRU/s320/the-more-you-know.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/aLLnFU/~4/HYVCjU-bqXw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ucken.blogspot.com/feeds/8176384462569458265/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ucken.blogspot.com/2011/11/lync-and-3rd-party-pbx-integration.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8176384462569458265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2156539095375223979/posts/default/8176384462569458265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/aLLnFU/~3/HYVCjU-bqXw/lync-and-3rd-party-pbx-integration.html" title="Lync and 3rd Party PBX Integration" /><author><name>Ken Lasko</name><uri>https://plus.google.com/105170586304827912664</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-eOYeXTh4cRk/AAAAAAAAAAI/AAAAAAAAAc4/K81Tf-8iuac/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XifINt3m698/Tsa4OkHo2DI/AAAAAAAAARs/EpmPBQM3TRU/s72-c/the-more-you-know.jpg" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://ucken.blogspot.com/2011/11/lync-and-3rd-party-pbx-integration.html</feedburner:origLink></entry></feed>
