<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Steve Moore’s blog on all things Skype for Business and Office 365</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/stevemoore/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/stevemoore/feed.xml</link>
    <description>Exploring Skype, Skype for Business, Cloud and other things I find kewl!</description>
    <lastBuildDate>Wed, 14 Feb 2018 03:17:48 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Cool new Surface Pro Bluetooth Keyboard from Brydge</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/cool-new-surface-pro-bluetooth-keyboard-from-brydge</link>
      <pubDate>Wed, 14 Feb 2018 13:17:48 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2215</guid>
      <description><![CDATA[Hi All
I just picked a Brydge keyboard for Surface Pro. I use it with my Surface Pro 4 mainly as I...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>I just picked a Brydge keyboard for Surface Pro. I use it with my Surface Pro 4 mainly as I often use the tablet to work on my lap on the couch. For that sort of scenario it really enhances the Surface Pro usability. It is a Bluetooth keyboard that is supposed to have 3 months battery life. My initial experience is that the usability is phenomenal despite being connected over Bluetooth. I am typing this blog with the keyboard.
</p><p>The device is a fair bit heavier then the typical type cover so that is a factor for those looking at a light device. For me weight isn't a factor, but usability is the key driver. I find the key press depth is great and feels like a really solid keyboard. It is also pretty good for typing in a meeting, as key presses as quite quiet. I am also finding the mouse pad quite nice as well. The other thing I have liked is the gesture support in the track pad, there are about 6 gestures you can use. 
</p><p>The main advantage is of course the hinge and lappability. The device slides into a hinge that is pretty robust and has a 160 degree turn capability. You can even squiz the hands holding the Surface if you want a tighter grab on the device. It's basically held with pressure from the device clips that have a rubber inner and basically grips the surface screen. I am finding the contact point does the job really well. It also looks really smart, in fact most people double take when they look at the device not realising it is a Surface but looks like a kewl HP or Mac book .
</p><p>If you want to know more check out the brydge links below:
</p><ul><li>Device info - https://www.brydgekeyboards.com/products/brydge-12-3-microsoft-surface-pro-keyboard
</li><li>Usage info - <a href="https://www.brydgekeyboards.com/pages/product-instruction-manuals">https://www.brydgekeyboards.com/pages/product-instruction-manuals</a>
		</li></ul><p>
 </p><p>Happy Skype'ing Team'ing
</p><p>
 </p><p>Steve</p>]]></content:encoded>
    </item>
    <item>
      <title>Enable Office 365 MFA for Skype for Business On Premises Users</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/enable-office-365-mfa-for-skype-for-business-on-premises-users</link>
      <pubDate>Fri, 29 Dec 2017 13:49:44 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2185</guid>
      <description><![CDATA[Hi All
I have been playing around with MFA today in a lab and working on getting MFA working for my...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>I have been playing around with MFA today in a lab and working on getting MFA working for my on premises users. I have SFB setup in hybrid mode (split domain), i.e both O365 and SFB On premises are looking after by domain. 
</p><p>On December 6<sup>th</sup> 2017 we announced that we support MFA for SFB On premises users (with EXO mailboxes) which is pretty cool. Blog post here <a href="https://techcommunity.microsoft.com/t5/Skype-for-Business-Blog/Hybrid-Modern-Auth-for-SfB-and-Exchange-goes-GA/ba-p/134756">https://techcommunity.microsoft.com/t5/Skype-for-Business-Blog/Hybrid-Modern-Auth-for-SfB-and-Exchange-goes-GA/ba-p/134756</a>
	</p><p>So I figured I had better give it a go. Fortunately we have a pretty comprehensive guide out on how to turn it on, just here <a href="https://support.office.com/en-us/article/How-to-configure-Skype-for-Business-on-premises-to-use-Hybrid-Modern-Authentication-522d5cec-4e1b-4cc3-937f-293570717bc6">https://support.office.com/en-us/article/How-to-configure-Skype-for-Business-on-premises-to-use-Hybrid-Modern-Authentication-522d5cec-4e1b-4cc3-937f-293570717bc6</a>
	</p><p>So I followed the key steps and voila worked a treat. Some thoughts to be aware of:
</p><ul><li><div>Once you turn on SFB MFA auth in on premises, all users will start to be authenticated against O365, not just those you enable for MFA in O365. i.e I enabled a user victor for MFA and he started working beautifully. I then tried to sign in as Anna, another onprem user who wasn't enabled for MFA in O365. When signing in, I am now prompted to auth against Office 365 from the SFB client. (see below).
</div><p><img src="https://msdnshared.blob.core.windows.net/media/2017/12/122917_0355_EnableOffic1.png" alt="" />
			</p></li><li>Once having signed in with a password, you will of course be prompted for a 2<sup>nd</sup> factor, in my case using a One time code from O365 text'd to my mobile phone. After putting in the code (see prompt in SFB client below), voila I was in .<br /><img src="https://msdnshared.blob.core.windows.net/media/2017/12/122917_0355_EnableOffic2.png" alt="" />
		</li><li>You need to turn on per user MFA in Office 365, and the user then needs to setup how they would like to use MFA when signing into O365 apps including SFB. Once those two steps are done, the SFB client will start using O365 MFA.
</li><li>Make sure you check out the pre-reqs as this is designed for SFB Hybrid and Exchange Online scenarios, and will not work with all customer scenarios (so please be careful here and read up on all the supported scenarios).
</li><li>There is a great video on SFB Modern Auth from Ignite 2017, go here to have a look <a href="https://myignite.microsoft.com/videos/53262">https://myignite.microsoft.com/videos/53262</a>;
</li><li>It's also worth reading the Planning for MFA in Office 365 before tackling this approach <a href="https://support.office.com/en-us/article/Plan-for-multi-factor-authentication-for-Office-365-Deployments-043807b2-21db-4d5c-b430-c8a6dee0e6ba?ui=en-US&amp;rs=en-US&amp;ad=US">https://support.office.com/en-us/article/Plan-for-multi-factor-authentication-for-Office-365-Deployments-043807b2-21db-4d5c-b430-c8a6dee0e6ba?ui=en-US&amp;rs=en-US&amp;ad=US</a>;
</li></ul><p>Anyway, it is exciting we now have this as it will help a lot of my customers who want SFB MFA but still have users on premises. So exciting stuff.
</p><p>
 </p><p>Happy Skype'ing/Team'ing
</p><p>
 </p><p>Steve<br />PS. Don't forget lab this stuff up before you go and do in production, test test and test 
</p>]]></content:encoded>
    </item>
    <item>
      <title>Ignite Video – Call Quality Management Reporting for Skype for Business and Microsoft Teams in O365</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/ignite-video-call-quality-management-reporting-for-skype-for-business-and-microsoft-teams-in-o365</link>
      <pubDate>Wed, 18 Oct 2017 11:55:15 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2165</guid>
      <description><![CDATA[Hi Everyone
I have been really enjoying listening to a presentation by William Looney and Troy Funk...]]></description>
      <content:encoded><![CDATA[<p>Hi Everyone
</p><p>I have been really enjoying listening to a presentation by William Looney and Troy Funk on CQD and Call Analytics for Skype for Business Online and Microsoft Teams. You can listen to the session here in Youtube <a href="https://www.youtube.com/watch?v=335OuqsTiNA">https://www.youtube.com/watch?v=335OuqsTiNA</a>, or view the deck here <a href="https://view.officeapps.live.com/op/embed.aspx?src=https%3A%2F%2F8gportalvhdsf9v440s15hrt.blob.core.windows.net%2Fignite2017%2Fsession-presentations%2FBRK2010.PPTX">https://view.officeapps.live.com/op/embed.aspx?src=https%3A%2F%2F8gportalvhdsf9v440s15hrt.blob.core.windows.net%2Fignite2017%2Fsession-presentations%2FBRK2010.PPTX</a>
	</p><p>It's a really good session, and why I liked it so much was William Looney went into generating custom reports in CQD.
</p><p>William starts by taking you through the vanilla out of the box CQD reports and there is some good data there. He then looks at problem sites/subnets for call quality. I won't rehash what William and Troy talk about as I recommend you go and have a listen. I will include a couple of screen shots to show William in action slicing and dicing through CQD data to get to the bottom of some poor calls.
</p><p>Happy Skype/Team'ing.
</p><p>Steve
</p><p><strong>Creating a custom CQD Report for packet loss rate
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/10/101817_0155_IgniteVideo1.png" alt="" />
	</p><p>Resulting bar chart for above data.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/10/101817_0155_IgniteVideo2.png" alt="" />
	</p><p>
 </p><p><strong>Filtering Custom Reports based on Wifi and for a particular location/site
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/10/101817_0155_IgniteVideo3.png" alt="" />
	</p><p>
 </p><p><strong>Audio Poor for a particular site
</strong></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/10/101817_0155_IgniteVideo4.png" alt="" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Great content on Skype for Business and Microsoft Teams from Ignite</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/great-content-on-skype-for-business-and-microsoft-teams-from-ignite</link>
      <pubDate>Thu, 05 Oct 2017 09:06:00 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2135</guid>
      <description><![CDATA[Hi Everyone
There have been some exciting announcements made at Ignite 2017 in the US. Some of my...]]></description>
      <content:encoded><![CDATA[<p>Hi Everyone
</p><p>There have been some exciting announcements made at Ignite 2017 in the US. Some of my favourite videos (and ones I have yet to listen to but are on my to do list) from the conference include:
</p><ul><li>Microsoft 365: Transform your communications with Microsoft Teams and Skype for Business - <a href="https://myignite.microsoft.com/videos/56548">https://myignite.microsoft.com/videos/56548</a>;
</li><li>Plan your UC refresh correctly: Skype for Business on-premises vNext - <a href="https://myignite.microsoft.com/videos/53241">https://myignite.microsoft.com/videos/53241</a>;
</li><li>Microsoft 365: Unlock creativity and empower teamwork in the modern workplace - <a href="https://myignite.microsoft.com/videos/56547">https://myignite.microsoft.com/videos/56547</a>;
</li><li>Understanding Media Flows in Microsoft Teams and Skype for Business - <a href="https://myignite.microsoft.com/videos/53247">https://myignite.microsoft.com/videos/53247</a> (yes Thomas Binder, he rocks!);
</li><li>Learn from large scale Skype for Business Voice deployments - <a href="https://myignite.microsoft.com/videos/53592">https://myignite.microsoft.com/videos/53592</a>;
</li><li>Call quality management for Skype for Business and Microsoft Teams - <a href="https://myignite.microsoft.com/videos/53222">https://myignite.microsoft.com/videos/53222</a>;
</li><li>Deploying and supporting clients for Skype for Business - <a href="https://myignite.microsoft.com/videos/53225">https://myignite.microsoft.com/videos/53225</a> oohh, Bryan Nyce the guy is a super hero;
</li><li>Migrating from your Avaya PBX to Skype for Business Voice - <a href="https://myignite.microsoft.com/videos/53570">https://myignite.microsoft.com/videos/53570</a>;
</li><li>Plan and configure Hybrid Voice in Skype for Business and Office 365 - <a href="https://myignite.microsoft.com/videos/53489">https://myignite.microsoft.com/videos/53489</a>;
</li><li>Demystifying internet connectivity to Skype for Business Online and Microsoft Teams - <a href="https://myignite.microsoft.com/videos/53245">https://myignite.microsoft.com/videos/53245</a>;
</li><li>How to enable and configure Microsoft Teams for your users - <a href="https://myignite.microsoft.com/videos/53318">https://myignite.microsoft.com/videos/53318</a>;
</li><li>Deploying and Managing Skype Room Systems and Microsoft certified devices - <a href="https://myignite.microsoft.com/videos/53584">https://myignite.microsoft.com/videos/53584</a>;
</li><li>Bringing the Modern Workplace to Life with Surface and Microsoft 365 - <a href="https://myignite.microsoft.com/videos/53724">https://myignite.microsoft.com/videos/53724</a>;
</li></ul><p>
 </p><p>Happy Skype'ing/Team'ing 
</p><p>
 </p><p>Steve
</p>]]></content:encoded>
    </item>
    <item>
      <title>Call controls are unavailable due to network issues – Call via work</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/call-controls-are-unavailable-due-to-network-issues-call-via-work</link>
      <pubDate>Wed, 14 Jun 2017 13:01:42 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2096</guid>
      <description><![CDATA[Hi All
I was playing around with Call Via Work today, bolting into a CUCM instance on Hyper-V , and...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>I was playing around with Call Via Work today, bolting into a CUCM instance on Hyper-V , and got this error.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/06/061417_0319_Callcontrol1.png" alt="" />
	</p><p>
 </p><p>So I was head scratching for a bit thinking this will work. I bing'd the error and hit a great article by skypeadmin Anthony Caragol on the error. It was basically I didn't have my external web service URL available when I was running my lab (as I was just doing internal stuff).
</p><p>Have a read of the article, it is great <a href="http://www.skypeadmin.com/2015/06/09/quick-tip-call-via-work-call-controls-are-unavailable/">http://www.skypeadmin.com/2015/06/09/quick-tip-call-via-work-call-controls-are-unavailable/</a>
	</p><p>Because my lab runs a split DNS zone for my sip domain, and as I didn't have the ability to route internal traffic out to my proxy and back in (to get to the pool external webservice name for UCWA), I decided to create a new VIP on my internal HLB to pass thru traffic to my FEs for internal traffic. So I created a new VIP, listened for traffic on 443/80 and mapped through to 4443 and 8080. Then I just added a new internal A record for external webservice name.
</p><p>Hopefully no one else hits the issue, a massive thanks to Anthony!
</p><p>Happy Skype'ing
</p><p>
 </p><p>Steve</p>]]></content:encoded>
    </item>
    <item>
      <title>Convert VMDK to VHD fails with the entry 2 is not a supported disk database entry</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/convert-vmdk-to-vhd-fails-with-the-entry-2-is-not-a-supported-disk-database-entry</link>
      <pubDate>Thu, 08 Jun 2017 11:35:43 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2035</guid>
      <description><![CDATA[Hi All
I have been playing around with a PBX platform that runs only on VMWare and of course in vmdk...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>I have been playing around with a PBX platform that runs only on VMWare and of course in vmdk format. I was keen to use it in Hyper-V so I needed to build in VMWare and convert to Hyper-V after the fact. Microsoft provide a VMDK to VHD/VHDX converter tool called the Microsoft Virtual Machine Converter. You can download it here <a href="https://www.microsoft.com/en-us/download/details.aspx?id=42497">https://www.microsoft.com/en-us/download/details.aspx?id=42497</a>.
</p><p>The nice thing about the tool is that you can convert using Powershell the vmdks you have. Anyway, when I ran the conversion cmdlet I got the error below.
</p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">PS E:\VMDK&gt; ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\VMDK\vm1.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -DestinationLiteralPath e:\vmdk\vhdx
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">ConvertTo-MvmcVirtualHardDisk : The entry 2 is not a supported disk database entry for the descriptor.
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">At line:1 char:1
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\vmdk\vm1.vmdk - ...
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">    + CategoryInfo          : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">   rtualHardDisk], VmdkDescriptorParseException
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">    + FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">   ommand
</span></p><p>
 </p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">ConvertTo-MvmcVirtualHardDisk : One or more errors occurred.
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">At line:1 char:1
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\vmdk\vm1.vmdk - ...
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">    + CategoryInfo          : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">   rtualHardDisk], AggregateException
</span></p><p><span style="color:yellow;font-size:9pt;background-color:darkblue">    + FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
</span></p><p><span style="color:yellow;font-size:9pt"><span style="background-color:darkblue">   ommand</span>
		</span></p><p>
 </p><p>So not being a VMWare guy I had not much idea of what the error was. Luckily others have hit the issue before and I stumbled onto a workaround on stackoverflow. <a href="https://stackoverflow.com/questions/37481737/error-when-converting-vmware-virtual-disk-to-hyperv">https://stackoverflow.com/questions/37481737/error-when-converting-vmware-virtual-disk-to-hyperv</a>. The recommendation was to use a dsfok toolset to update the vmdk descriptor information on the file, to make the Microsoft VM Converter tool happy. Once doing this it worked a treat. I used the commands
</p><p><span style="font-family:Courier New">C:\scratch\dsfk\dsfok&gt;dsfo.exe "e:\vmdk\vm1.vmdk" 512 1024 descriptor1.txt
</span></p><p><span style="font-family:Courier New">OK, written 1024 bytes at offset 512
</span></p><p>I then edited the descriptor1.txt file in Notepad++ and commented out the tools.InstallType attribute.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/06/060817_0541_ConvertVMDK1.png" alt="" />
	</p><p>Then I needed to reapply the descriptor to the vmdk to make it convertible. You use the dsfi.exe tool to do that.
</p><p><strong>#After you edit the descriptor.txt file
</strong></p><p><span style="font-family:Courier New">C:\scratch\dsfk\dsfok&gt;dsfi.exe "e:\vmdk\vm1.vmdk" 512 1024 descriptor1.txt
</span></p><p><span style="font-family:Courier New">OK, written 1024 bytes at offset 512
</span></p><p>You can get the dsfok tools from here <a href="http://www.softpedia.com/get/System/Back-Up-and-Recovery/dsfok.shtml">http://www.softpedia.com/get/System/Back-Up-and-Recovery/dsfok.shtml</a>
	</p><p>
 </p><p><span style="color:#0070c0">And yehhhh, now my VMDK convert Powershell is working……
</span></p><p><span style="color:yellow;font-family:Courier New"><span style="font-size:9pt;background-color:darkblue">ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\VMDK\vm1.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -DestinationLiteralPath e:\vmdk\vhdx</span>
		</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/06/060817_0541_ConvertVMDK2.png" alt="" />
	</p><p>Now to see if can get the VM running in Hyper-V. Fingers crossed as will be kewl to add to my SfB lab 
</p><p>
 </p><p>Happy Skype'ing 
</p><p>
 </p><p>Steve</p>]]></content:encoded>
    </item>
    <item>
      <title>Troubleshoot individual calls in Skype for Business Online</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/troubleshoot-individual-calls-in-skype-for-business-online</link>
      <pubDate>Tue, 04 Apr 2017 14:01:23 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=2005</guid>
      <description><![CDATA[Hi All
The Skype for Business Online team have released a new blog post on troubleshooting calls...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>The Skype for Business Online team have released a new blog post on troubleshooting calls with the <span style="color:blue;font-family:Lucida Console;font-size:9pt">Get-CsUserSession </span>cmdlet. It looks like a pretty good blog. Check out at the below link.
</p><p><a href="https://techcommunity.microsoft.com/t5/Skype-Operations-Framework-Skype/Troubleshoot-individual-calls-in-Skype-for-Business-Online/ba-p/30707">https://techcommunity.microsoft.com/t5/Skype-Operations-Framework-Skype/Troubleshoot-individual-calls-in-Skype-for-Business-Online/ba-p/30707</a>
	</p><p>The Call Analytics blog looks good too….
</p><p><a href="https://techcommunity.microsoft.com/t5/Skype-Operations-Framework-Skype/Introducing-Call-Analytics/ba-p/57309">https://techcommunity.microsoft.com/t5/Skype-Operations-Framework-Skype/Introducing-Call-Analytics/ba-p/57309</a>
	</p><p>Happy Skype'ing
</p><p>Steve</p>]]></content:encoded>
    </item>
    <item>
      <title>Assigning Skype for Business Meeting Broadcast Policies using members of a Group (O365 or AD Group)</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/assigning-skype-for-business-meeting-broadcast-policies-using-members-of-a-group-o365-or-ad-group</link>
      <pubDate>Wed, 29 Mar 2017 14:24:32 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=1935</guid>
      <description><![CDATA[Hi all
I just spent a bit of time mucking around assigning policies to a group of users to restrict...]]></description>
      <content:encoded><![CDATA[<p>Hi all
</p><p>I just spent a bit of time mucking around assigning policies to a group of users to restrict access to Meeting Broadcast creation and so I thought I'd share.
</p><p>We can control who has access to Meeting Broadcast bookings. You can check the Meeting Broadcast policies out here:
</p><p><a href="https://technet.microsoft.com/en-us/library/mt589285.aspx">https://technet.microsoft.com/en-us/library/mt589285.aspx</a>
	</p><p>And here is the link on assigning the policies to users:
</p><p><a href="https://technet.microsoft.com/en-us/library/mt589284.aspx">https://technet.microsoft.com/en-us/library/mt589284.aspx</a>
	</p><p>If you need to prevent SfBO users from creating Meeting Broadcasts then you assign those staff the Meeting Broadcast policy <span style="color:black"><strong>BroadcastMeetingPolicyDisabled.
</strong></span></p><p>
 </p><p><span style="color:black;font-size:14pt"><strong>Assigning Meeting Broadcast Policies to a group of people in a Office365 Group
</strong></span></p><p><span style="color:black">Below I have some examples on setting Meeting Broadcast Policies to members of a Office365 group. Note, when running this script you will need to have a connection to both Azure Active Directory and Skype for Business Online. To connect to both systems run the following commands:
</span></p><p><span style="color:#0070c0;font-family:Courier New">$cred = get-credential -credential yourid@yourtenant.onmicrosoft.com
</span></p><p><span style="color:#0070c0;font-family:Courier New">$session = New-CsOnlineSession -Credential $cred
</span></p><p><span style="color:#0070c0;font-family:Courier New">Import-PSSession $session
</span></p><p><span style="color:#0070c0;font-family:Courier New">Connect-MsolService -Credential $cred
</span></p><p style="background: white">
 </p><p style="background: white"> 
 </p><p><span style="color:black">Then once connected you can look at the commands required to assign policies as per a group of users.</span>
	</p><p><span style="color:#0070c0;font-family:Courier New">$strPolicyName="BroadcastMeetingPolicyAllEnabled"
</span></p><p><span style="color:#0070c0;font-family:Courier New">#OR $strPolicyName="BroadcastMeetingPolicyDisabled"
</span></p><p><span style="color:#0070c0;font-family:Courier New">$strGroupName="O365-GP-SfBOUsers"
</span></p><p style="background: white">
 </p><p style="background: white"><span style="font-family:Lucida Console;font-size:8pt"><span style="background-color:yellow">#WARNING: I am using the –SearchString with Get-MsolGroup, so if you used "Users" as a search string you would get hits for groups called "Sydney Users" and "Perth Users"</span>
		</span></p><p style="background: white"><span style="color:darkgreen;font-family:Lucida Console;font-size:8pt">#Update the group members and assign Meeting Broadcast Policy
</span></p><p><span style="color:#0070c0;font-family:Courier New">Get-MsolGroupMember -GroupObjectId (Get-MsolGroup -SearchString $strGroupName).ObjectId  |  %{ $strWho = $_.DisplayName; $strSip=$_.EmailAddress; `
</span></p><p><span style="color:#0070c0;font-family:Courier New">write-host "Processing $strWho - $strSip"; Get-CSOnlineUser $_.EmailAddress -ErrorAction SilentlyContinue | `
</span></p><p><span style="color:#0070c0;font-family:Courier New">Grant-CsBroadcastMeetingPolicy -PolicyName $strPolicyName}
</span></p><p style="background: white">
 </p><p style="background: white"><span style="color:darkgreen;font-family:Lucida Console;font-size:8pt">#Review settings of group members
</span></p><p><span style="color:#0070c0;font-family:Courier New">Get-MsolGroupMember -GroupObjectId (Get-MsolGroup -SearchString $strGroupName).ObjectId  |  %{ $strWho = $_.DisplayName; $strSip=$_.EmailAddress; `
</span></p><p><span style="color:#0070c0;font-family:Courier New">write-host "Processing $strWho - $strSip"; Get-CSOnlineUser $_.EmailAddress -ErrorAction SilentlyContinue | fl *name*,*meeting* }
</span></p><p>
 </p><p><span style="color:#1f497d">I have an example down below.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032917_0453_AssigningSk1.png" alt="" /><span style="color:#1f497d">
		</span></p><p>
 </p><p><span style="color:black;font-size:14pt"><strong>Assigning Meeting Broadcast Policies to a group of people in an Active Directory Group
</strong></span></p><p><span style="color:#1f497d">If you would like to enable (or disable) Meeting Broadcast for a group of users (Active Directory group in AD) then you can use the following command:
</span></p><p><span style="color:#0070c0;font-family:Courier New">(Get-ADGroupMember "GP-SfBOnlineUsers") | %{ Get-CSOnlineUser $_.Samaccountname -ErrorAction SilentlyContinue | Grant-CsBroadcastMeetingPolicy -PolicyName BroadcastMeetingPolicyAllEnabled } 
</span></p><p style="background: white"><span style="font-family:Lucida Console;font-size:8pt"><strong>OR<span style="color:darkgreen">
				</span></strong></span></p><p><span style="color:#0070c0;font-family:Courier New">(Get-ADGroupMember "GP-SfBOnlineUsers") | %{ Get-CSOnlineUser $_.Samaccountname -ErrorAction SilentlyContinue | Grant-CsBroadcastMeetingPolicy -PolicyName BroadcastMeetingPolicyDisabled }
</span></p><p><span style="color:#1f497d">You can check Policy settings with the following command:
</span></p><p><span style="color:#0070c0;font-family:Courier New">(Get-ADGroupMember "GP-SfBOnlineUsers") | %{ Get-CSOnlineUser $_.samaccountname -ErrorAction SilentlyContinue | fl sipaddress, *meeting* } 
</span></p><p style="background: white">
 </p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032917_0453_AssigningSk2.png" alt="" /><span style="color:#1f497d">
		</span></p><p><span style="color:#1f497d">So that is pretty much it. Don't forget, test, test and test before running in prod!
</span></p><p><span style="color:#1f497d">Happy Skype'ing
</span></p><p><span style="color:#1f497d">Steve
</span></p><p>
 </p><p>
 </p>]]></content:encoded>
    </item>
    <item>
      <title>Skype for Business Dial Plans for Hybrid Voice/Cloud PBX scenario</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/skype-for-business-dial-plans-for-hybrid-voicecloud-pbx-scenario</link>
      <pubDate>Tue, 28 Mar 2017 13:21:10 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=1725</guid>
      <description><![CDATA[Hi All
I was helping a customer look at Enterprise Voice for Office 365 Skype for Business users...]]></description>
      <content:encoded><![CDATA[<p>Hi All
</p><p>I was helping a customer look at Enterprise Voice for Office 365 Skype for Business users recently. In Australia, we don't have PSTN Calling available unfortunately and so a On Premise Enterprise Voice solution is required if you want to host your users in Skype for Business online. Fortunately for my customer they had a Lync Server 2013 Enterprise Voice environment and we could leverage that service for cloud users to make calls.
</p><p>What I didn't know a lot about was how Dial Plans work in that scenario. When a user is moved to the cloud, and you want them to retain Enterprise Voice capabilities, you need to enable Hybrid Voice in your on premise Lync / Skype environment and also need to tell Skype for Business Online the same (that you are using Split domain). There is a fair bit of planning information on the deployment process, this link should help to get you started <a href="https://technet.microsoft.com/en-us/library/jj205403.aspx">https://technet.microsoft.com/en-us/library/jj205403.aspx</a>.
</p><p>Anyway, one of the issues we encountered when moving users to the cloud, users who were using Enterprise Voice on premise successfully, was that when they moved to the cloud Dial Plan functionality was no longer working. Dial Plans is one of those nice to have features that helps to massage phone numbers that are typed in the Skype client keypad into a number in the E164 format. For example, if I typed 1234 as a 4 digit extension, a Dial Plan would convert that 4 digit number into a E164 format that is globally routable on the PSTN and makes sense for my organisation i.e. +61212345678. The numbers 1234 cannot be routed on the PSTN but this might be a number format our users are used to typing when calling someone in the organisation. So it is a pretty handy tool. 
</p><p>Some other examples where Dial Plans are handy are handling 13 numbers i.e. 1300 123456 - +611300123456 (notice no spaces), or 134567 to +61134567.
</p><p>So when a Dial Plan is not working and I type in 1234, the number isn't massaged at all and in fact my client realises that and so doesn't let me place the call. I don't have a matching normalisation rule. So for my customer, this was happening. What we did know was if we typed in a phone number in E164 format into the keypad, the number was successfully able to be routed (so call routing was working from a raw telephony point of view).
</p><p>So my initial thoughts were, what's happening are Dial Plans in the cloud not available? Let's go digging and have a look at my cloud users to see what settings are assigned to them! So using Get-CSOnlineUser I had a look at my test user <a href="mailto:izzym@steverm.info">izzym@steverm.info</a>. <span style="background-color:lime">Izzy had a Dial Plan setting of "<strong>AU</strong></span>". Ok the plot thickens, let's look at that Dial Plan see what we can determine about it.<br /><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus1.png" alt="" />
	</p><p>So I had a look at Get-CSDialPlan for the AU dial plan to see what it contained. What I found was there is a lot of normalization rules in there, and they look to be largely what I was expecting to see in place in the cloud.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus2.png" alt="" />
	</p><p>You can expand out the Normalization Rules to have a better look. Do that with the select –ExpandProperty option.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus3.png" alt="" />
	</p><p><span style="color:white"><span style="background-color:blue">Interestingly the second option (AU Long Distance Dialing Rule) will break calling 000 and will convert to +6100, so something to work on there (thanks Bill).</span>
		</span></p><p>So looking at the online <strong>"AU" </strong>dial plan the rules look good, so number manipulation SHOULD be working. While the rules are pretty basic, a number in the format 02 12345678 should be converted to +61212345678. But for some reason, at my customer's location the Dial Plan was not taking.
</p><p><span style="background-color:yellow">So where to now? Lucky a good colleague of mine, Agus, said you need to remember there is a Tenant setting that can be configured to tell Office 365 to use the on premise dial plans.</span> Ahhh, so let's go check that setting. Now as it turns out, by default we set the UseOnPremDialPlan to $true. This was the case in my customer's tenant as well. So I now knew that I needed to look at why the On Prem dial plans were not taking. 
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus4.png" alt="" />
	</p><p>When I had a look at the Dial Plan setup in my customer I noticed that they had three Dial Plans, the Global Default Dial Plan, a Site targeted Dial Plan and a test User scoped Dial Plan. All the rules were in the Site scoped dial plan and nothing was in the Global Dial Plan. So this was interesting. My customer and their associated User account did not have a User scoped Dial Plan assigned, and all the Dial Plan rules they had setup were located in the Site targeted Dial Plan. 
</p><p>So what we found was as the user who is using CloudPBX, having been hosted in the cloud on Skype for Business Online, now has no understanding of Sites. This of course means that if we put all our rules in a Site scoped dial plan then those NormalizationRules will not be assigned to Office 365 Skype for Business users. So the trick for this scenario was to either update the Global default dial plan or create a new Office 365 Users Dial Plan (Sydney_Users in my lab example) and assign it to my pilot users who were living in the cloud. In our case I went with creating a new User scoped Dial Plan.
</p><p>I used the cmdlet <span style="font-family:Courier New">get-csuser sip:izzym@steverm.info | Grant-CsDialPlan -PolicyName "Sydney Users"</span> to assign my test user Izzy the "Sydney Users" dial plan. I then confirmed the DialPlan had been assigned with Get-CSuser.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus5.png" alt="" />
	</p><p>Once the dial plan had been assigned I then re-signed into Skype for Business. I was then able to have my numbers manipulated as per a normal Dial Plan is expected to work, the difference being my user account was managed by the cloud.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus6.png" alt="" />
	</p><p>Just for interest I thought I'd check in the UCCAPILOGS what came through. I confirmed that the Sydney Users dial plan rules were being downloaded.
</p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus7.png" alt="" /><span style="color:#1f497d">
		</span></p><p><span style="color:#1f497d">You can see here that I am signing into SfB Online.
</span></p><p><img src="https://msdnshared.blob.core.windows.net/media/2017/03/032817_1224_SkypeforBus8.png" alt="" /><span style="color:#1f497d">
		</span></p><p>
 </p><p>So the interesting lesson for me was, that out of the box a tenant is configured to use the OnPrem Dial Plans, and that cloud based users will not understand the concept of sites. So you will need to assign user scoped Dial Plans to them. The other interesting thing I need to explore is if the UseOnPremDialPlan setting was set to False, would the "AU" online Dial Plan worked?
</p><p>
 </p><p>Well I hope this helps and as always, test, test and test.
</p><p>
 </p><p>Happy Skype'ing
</p><p>
 </p><p>Steve
</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Teams is now Generally Available - Yehhh</title>
      <link>https://docs.microsoft.com/archive/blogs/stevemoore/microsoft-teams-is-now-generally-available-yehhh</link>
      <pubDate>Thu, 16 Mar 2017 17:15:26 GMT</pubDate>
      <dc:creator><![CDATA[Steve Moore - SFB - Office 365 Engineer]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/stevemoore/?p=1675</guid>
      <description><![CDATA[Hi all
Microsoft Teams is now Generally Available and so will mean you can start to use in your...]]></description>
      <content:encoded><![CDATA[<p>Hi all
</p><p>Microsoft Teams is now Generally Available and so will mean you can start to use in your Office 365 Teams. If you want to read more check out the Office blog on the release.
</p><p><a href="https://blogs.office.com/2017/03/14/microsoft-teams-rolls-out-to-office-365-customers-worldwide/">https://blogs.office.com/2017/03/14/microsoft-teams-rolls-out-to-office-365-customers-worldwide/</a>
	</p><p>Happy Skype'ing
</p><p>Steve
</p><p>PS I put some Microsoft Teams training links on a blog a few months back. <br />You can get to the training links here <a href="https://blogs.technet.microsoft.com/stevemoore/2016/11/16/microsoft-teams-training-content-starting-to-come-out/">https://blogs.technet.microsoft.com/stevemoore/2016/11/16/microsoft-teams-training-content-starting-to-come-out/</a>
	</p>]]></content:encoded>
    </item>
  </channel>
</rss>