<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>beanexpert</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/beanexpert/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/beanexpert/feed.xml</link>
    <description>Let&amp;#039;s talk about Mobile first, Cloud first...</description>
    <lastBuildDate>Sat, 04 Feb 2017 07:22:19 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Microsoft System Center Configuration Manager Cookbook - Second Edition</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/microsoft-system-center-configuration-manager-cookbook-second-edition</link>
      <pubDate>Sat, 04 Feb 2017 16:22:19 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=585</guid>
      <description><![CDATA[Hi folks,

Just wanted to do a quick post to announce my book on the latest System Center...]]></description>
      <content:encoded><![CDATA[Hi folks,

Just wanted to do a quick post to announce my book on the latest System Center Configuration Manager CM that I wrote last year with my ex-coworker from Microsoft, Chuluunsuren Damdinsuren aka Chuka (PFE).

<span style="text-decoration: underline"><strong>Important note</strong></span>: this book has been written on my private time and I'm not talking on behalf of Microsoft (as I used to work there) but just as me sharing my own experiences over the years. Since I don't work at Microsoft anymore, this blog will be probably discontinued, thank you for reading me until now!! (I will still try to convince my ex-coworker Chuka to continue this blog).

<a href="https://msdnshared.blob.core.windows.net/media/2017/02/1206EN_5188_Microsoft-System-Center-2016-Configuration-Manager-Cookbook-Second-Edition.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/02/1206EN_5188_Microsoft-System-Center-2016-Configuration-Manager-Cookbook-Second-Edition.png" alt="1206en_5188_microsoft-system-center-2016-configuration-manager-cookbook-second-edition" width="302" height="373" class="alignnone size-full wp-image-595" /></a>

<a href="https://www.packtpub.com/virtualization-and-cloud/microsoft-system-center-configuration-manager-cookbook-second-edition">https://www.packtpub.com/virtualization-and-cloud/microsoft-system-center-configuration-manager-cookbook-second-edition</a>

This practical cookbook is based on the 1602 current branch of System Center Configuration Manager (SCCM). It shows you how to administer SCCM, giving you an essential toolbox of techniques to solve real-world scenarios. Packed with over 60 task-based and instantly usable recipes, you’ll discover how design a SCCM Infrastructure, and dive into topics such as the recommended SQL configuration for SCCM and how to deploy Windows 10 with Operating System Deployment (OSD).

You will learn to easily manage Windows 10 devices by deploying applications, software updates, and feature upgrades, andl be able to leverage Mobile Device Management (MDM) using SCCM and Microsoft Intune. Finally, you see how to gather the inventory of all your PC park and create reports based on it. By the end of the book, you will have learned the best practices when working with SCCM and have a handy reference guide for troubleshooting.

Good reading!!

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Large banner -->
<ins class="adsbygoogle" style="width: 728px;height: 90px"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>]]></content:encoded>
    </item>
    <item>
      <title>How to install Office using a Provisioning Package</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/how-to-install-office-using-a-provisioning-package</link>
      <pubDate>Wed, 06 Jul 2016 21:17:37 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=535</guid>
      <description><![CDATA[Hi everyone,

Sorry, it took me quite a while to write that article about how to install Office...]]></description>
      <content:encoded><![CDATA[Hi everyone,

Sorry, it took me quite a while to write that article about how to install Office using a Provisioning Package (PPKG).

As you might know, there's some challenges deploying  a <span style="text-decoration: underline">Win32 apps using PPKG</span> because of the limitation of the file you can upload inside a PPKG to use with "<strong>ProvisioningCommands</strong>" feature. Indeed, it's not currently possible to have a folder structure within the "<strong>CommandFiles</strong>" field; only files, not folders. This makes importing Office sources a big challenge since Office has a quite deep folder structure.

Fortunately there's a <strong>workaround</strong> for that!

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Large banner -->
<ins class="adsbygoogle" style="width:728px;height:90px"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Let me show you how to install Office using PPKG and in the below explanation, i will use the Click-to-Run version of Office 2016 but it would work the same for Office 2016 Professional Plus (you might have to modify the PowerShell script to reflect the correct installation command line).
<h3>Creating the ZIP file containing Office source</h3>
The first thing you need to do is downloading the source of Office 2016 Click-to-Run and to do that, you need a free tool called "<strong>Office 2016 Deployment Tool</strong>" that you can download <a href="https://www.microsoft.com/en-us/download/details.aspx?id=49117">here</a>.
<ul>
 	<li>Create a folder named "<strong>C:\O365</strong>" on the computer where you installed <strong>Windows ICD</strong></li>
 	<li>Extract the <strong>Office Deployment Tool</strong> inside "<strong>C:\O365</strong>" folder.</li>
 	<li>Edit the "<strong>Configuration.xml</strong>" file using Notepad. I put an example below.</li>
</ul>
<pre>&lt;Configuration&gt;
  &lt;Add SourcePath="" OfficeClientEdition="32" Branch="Current"&gt;
    &lt;Product ID="O365ProPlusRetail"&gt;
      &lt;Language ID="en-us" /&gt;
    &lt;/Product&gt;
  &lt;/Add&gt;
  &lt;!--  &lt;Updates Enabled="TRUE" Branch="Current" /&gt; --&gt;
  &lt;Display Level="None" AcceptEULA="TRUE" /&gt;
  &lt;Logging Level="Standard" Path="C:\Windows\Debug" /&gt;
  &lt;!--  &lt;Property Name="AUTOACTIVATE" Value="1" /&gt;  --&gt;
&lt;/Configuration&gt;</pre>
<ul>
 	<li>Open a <strong>Command Prompt</strong> and run the following command to download Office source.
<pre>C:\O365\setup.exe /download configuration.xml</pre>
<ul>
 	<li>That will download Office source inside "<strong>C:\O365</strong>" folder</li>
</ul>
</li>
 	<li>ZIP the "<strong>C:\O365</strong>" folder into a file called "<strong>O365.zip</strong>"</li>
</ul>
<h3>Create the PowerShell script to install silently Office</h3>
<ul>
 	<li>Copy the sample code below and save it into a file called "<strong>Start-ProvisioningCommands.ps1</strong>"</li>
</ul>
<pre>&lt;#
.Synopsis
 Office 2016 installation sample script
.DESCRIPTION
 Extract the ZIP and run the Office setup.exe with the configuration file as a parameter
#&gt;
[CmdletBinding()]
[Alias()]
[OutputType([int])]

Param
(
 [Parameter(Mandatory=$false,
 ValueFromPipelineByPropertyName=$true,
 Position=0)]
 $Log = "$env:windir\debug\Start-ProvisioningCommands.log"
)

Begin
{
 &lt;#
 # Start logging
 #&gt;
 Start-Transcript -Path $Log -Force -ErrorAction SilentlyContinue

&lt;#
 # Extract the ZIP
 #&gt; 
 $Archives = Get-ChildItem -Path $PSScriptRoot -Filter *.zip | Select-Object -Property FullName
 ForEach-Object -InputObject $Archives -Process { Expand-Archive -Path $_.FullName -DestinationPath "$env:TEMP" -Force }
}

Process
{
 &lt;#
 # Office 2016 installation
 #&gt; 
 $WorkingDirectory = "$env:TEMP\O365"
 $Configuration = Get-ChildItem -Path $WorkingDirectory -Filter *.xml | Select-Object -Property FullName
 [XML]$XML = Get-Content -Path $Configuration.FullName
 $XML.Configuration.Add.SourcePath = $WorkingDirectory
 $XML.Save($Configuration.FullName)

 # Run Office 2016 setup.exe
 Start-Process -FilePath "$WorkingDirectory\Setup.exe" -ArgumentList ('/Configure "{0}"' -f $Configuration.FullName) -WorkingDirectory $WorkingDirectory -Wait -WindowStyle Hidden

 # If you want to remove the extracted Office source, uncomment below
 # Remove-Item -Path $WorkingDirectory -Force
}
End
{
 &lt;#
 # Stop logging
 #&gt; 
 Stop-Transcript -ErrorAction SilentlyContinue
}</pre>
<h3>Create the Provisioning Package using Windows ICD</h3>
<ul>
 	<li>Open Windows ICD and navigate to [<strong>Runtime Settings</strong>]&gt;[<strong>ProvisioningCommands</strong>]&gt;[<strong>DeviceContext</strong>]
<ul>
 	<li>Under [<strong>CommandFiles</strong>] add "<strong>O365.zip</strong>" and "<strong>Start-ProvisioningCommands.ps1</strong>" files</li>
 	<li>Under [<strong>CommandLine</strong>], type the following command which will install silently Office:
<pre>PowerShell.exe –ExecutionPolicy Unrestricted .\Start-ProvisioningCommands.ps1</pre>
</li>
</ul>
</li>
</ul>
You should get something which look like this:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/WICDPPKG1.png"><img class="alignnone size-medium wp-image-545" src="https://msdnshared.blob.core.windows.net/media/2016/07/WICDPPKG1-300x154.png" alt="WICDPPKG1" width="300" height="154" /></a>

Create the PPKG and voila :)

PS: I want to thank my coworker Ryan Hall working as a Senior PFE in Australia who explained me that method to deploy Office using PPKG.]]></content:encoded>
    </item>
    <item>
      <title>Provisioning packages - What can or cannot be done?</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/provisioning-packages-what-can-or-cannot-be-done</link>
      <pubDate>Fri, 13 May 2016 16:08:29 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=475</guid>
      <description><![CDATA[Hi Windows 10 folks!

Today I wanted to talk about a topic that I like: Windows 10...]]></description>
      <content:encoded><![CDATA[Hi Windows 10 folks!

Today I wanted to talk about a topic that I like: Windows 10 provisioning.

There's a lot of discussion on Internet if the new Windows 10 deployment method (aka provisioning) was really a doable scenario. And to be honest, from my experience, I don't see a lot of customer adopting that method. To verify that, I've even done an internal survey within Microsoft Japan and <span style="text-decoration: underline">gathered Windows 10 deployment method chosen by 60 out of the top 200 companies</span>: 90% of them decided to go with the traditional "<strong>Wipe and Load</strong>".

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Large banner -->
<ins class="adsbygoogle" style="width:728px;height:90px"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Why? well, there's many reason for that. The first one I can think about is that customers are used to the traditional deployment method which works great on Windows 10 as well. They might have documented the whole deployment method and might want to limit cost of a complete new deployment design and documentation. In Japan, for instance, most of our customers consider migrating to Windows 10 at the specific time a bulk device replacement is planned. In this particular case, they will most of the time adopt the "<strong>Wipe and Load</strong>" method.

The second reason which comes to my mind is that the provisioning method has some limitation and challenges:  for instance, it doesn't offer an easy way to remove bloatware from an Windows 10 device bought in a store (you can script this but this won't work the same for all the devices available in the market). Another one would be that the edition upgrade only works from Pro (or Edu) to Enterprise, whereas most of consumer devices you can buy comes with Windows 10 Home edition (there's actually a way to do Home to Pro, then Pro to Ent using PPKG). And lastly, Windows ICD tool which might not be (for now) the most user friendly tool (it lacks some information about settings and some input format).

For me, provisioning should only be used for one scenario: <strong>BYOD</strong>. It is a solution which can solve some business critical situation where a sales person during a business trip would lose/break/get stolen his device and would need to replace it without the intervention of an IT pro. Provisioning will help him get back to work quickly by upgrading his device to Enterprise edition, installing Office 2016, setting up VPN profile and even domain join if needed.

For any other scenario, you should consider <strong>in-place upgrade</strong> (from Windows 7, 8, 8.1 devices) or <strong>wipe and load</strong> for any new devices.

Even though we face some limitations in the provisioning method, I wanted to gather here all the testing results I got from PPKG (what works and what doesn't) so that you have all the keys in hand while deciding the best deployment method which fit your needs.
<ul>
	<li>Register device in the Corporate infra
<ul>
	<li>Domain Join --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[Accounts]&gt;[Computer Account]
<ul>
	<li>[Account] domain\account (i.e. contoso\admin)</li>
	<li>[DomainName] domain FQDN (i.e. contoso.com)</li>
	<li>[Password] domain join account password</li>
</ul>
</li>
</ul>
</li>
	<li>Azure AD Join --&gt; NO (it's related to the authentication method of enrollment offered by PPKG which is not compatible with Azure AD Join as well as Intune)</li>
	<li>Intune enrollment --&gt; NO (same as above)</li>
	<li>SCCM On-prem MDM enrollment --&gt; OK (not tested personally but found a <a href="https://ccmexec.com/2015/10/confimgr-vnext-feature-windows-10-bulk-enrollment/">great article</a> explaining how to do it)</li>
</ul>
</li>
	<li>Profiles
<ul>
	<li>WIFI --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[ConnectivityProfiles]&gt;[WLAN]&gt;[WLANSetting]
<ul>
	<li>Add the [SSID] of the WiFi</li>
	<li>Under [WLANXmlSettings], fill [AutoConnect], [HiddenNetwork], [SecurityKey] and [Security Type]</li>
</ul>
</li>
</ul>
</li>
	<li>Certificates --&gt; OK
<ul>
	<li>For Root CA Certificate, [Runtime Settings]&gt;[Certificates&gt;[RootCertificates]
<ul>
	<li>Type a [CertificateName] and click [Add]</li>
	<li>[CertificatePath] path to the CER root CA certificate file</li>
</ul>
</li>
</ul>
</li>
	<li>Email profile --&gt; since in a BYOD scenario you don't know the domain or azure AD account, I don't think it's something possible with provisioning</li>
</ul>
</li>
	<li>OS Customization
<ul>
	<li>Start Menu --&gt; OK (note: it doesn't apply to the current user but to any new users on the computer)</li>
	<li>Wallpaper --&gt; NO (copy the image file but doesn't apply it, don't know yet if it's an expected behavior. will update you later again on that)</li>
	<li>Local Account creation --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[Accounts]&gt;[Users]</li>
	<li>Type a [User Name] and click [Add]</li>
	<li>[Password: password of the newly created account</li>
	<li>[UserGroup] add the user to "Administrators" group for instance</li>
</ul>
</li>
	<li>UWF --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[UnifiedWriteFilter]</li>
	<li>[FilterEnabled] TRUE</li>
	<li>[OverlaySize] in MB (i.e. 1024)</li>
	<li>[OverlayType] select RAM or Disk</li>
	<li>[Volumes]
<ul>
	<li>Type the [DriveLetter] to filter (i.e. "C:") and click [Add]</li>
	<li>[Protected] TRUE</li>
</ul>
</li>
</ul>
</li>
	<li>Bitlocker --&gt; NO (yes using <strong>manage-bde</strong> command within a script)</li>
	<li>Edition upgrade --&gt; OK (only from Pro/Edu to Enterprise)
<ul>
	<li>[Runtime Settings]&gt;[EditionUpgrade]</li>
	<li>[UpgradeEditionWithProductKey] type the Enterprise product key</li>
</ul>
</li>
</ul>
</li>
	<li>Universal Applications
<ul>
	<li>Install --&gt; OK (don't forget to enable sideloading, deploy the certificate, dependencies as well as the app file)
<ul>
	<li>To enable sideloading, [Runtime Settings]&gt;[Policies]&gt;[ApplicationManagement]&gt;[AllowAllTrustedApps]&gt;[Yes]</li>
	<li>To deploy certificate, [Runtime Settings]&gt;[Certificates]&gt;[TrustedPeopleCertificates]
<ul>
	<li>Type [CertificateName] and click [Add]</li>
	<li>[TrustedCertificate] specify the path to the app certificate file</li>
</ul>
</li>
	<li>To import app with dependencies, [Runtime Settings]&gt;[UniversalAppInstall]
<ul>
	<li>Type [PackageFamilyName] and click [Add] (can be any name)</li>
	<li>[ApplicationFile] specify the ".appxbundle" file</li>
	<li>[DependencyAppxFiles] add one by one all the dependencies files</li>
</ul>
</li>
</ul>
</li>
	<li>Uninstall --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[UniversalAppUninstall]</li>
	<li>On a computer where the app to uninstall is installed, run the PowerShell command get-appxpackage to find the package family name.</li>
	<li>Type the [PackageFamilyName] found using the above command.</li>
</ul>
</li>
</ul>
</li>
	<li>Win32 applications installation
<ul>
	<li>MSI --&gt; OK
<ul>
	<li>[Runtime Settings]&gt;[ProvisioningCommands]&gt;[DeviceContext]</li>
	<li>[CommandFiles] add the MSI file</li>
	<li>[CommandLine] type the command line to install the MSI package: "msiexec.exe /i xxx.msi /q"</li>
</ul>
</li>
	<li>Office --&gt; OK (I will write another article to explain how to do that using WICD).</li>
</ul>
</li>
</ul>
Hope this list will help you decide what's possible with provisioning. Obviously, I haven't covered all the possible settings available in Windows ICD so if you need any other settings, I can only recommend digging through the Windows ICD tool to search for it :)

<span style="text-decoration: underline"><strong>Note:</strong></span> I will be presenting a session at DE:CODE 2016 about that topic, DE:CODE is the TechEd+Build conference in Japan, If you live in Japan (and speak Japanese), I strongly recommend attending my session INF-024 about OS deployment :)]]></content:encoded>
    </item>
    <item>
      <title>Surface Pro 4 and Surface Book April 2016 Updates available!</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/surface-pro-4-and-surface-book-april-2016-updates-available</link>
      <pubDate>Wed, 20 Apr 2016 11:51:27 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=477</guid>
      <description><![CDATA[Hi Surface owners :)

Today, we released the latest set of drivers and firmwares for Surface Pro 4...]]></description>
      <content:encoded><![CDATA[Hi Surface owners :)

Today, we released the latest set of drivers and firmwares for Surface Pro 4 and Surface Book. This is quite a huge set of updates which fixes many of the Surface issues.

You will find the details about Surface Pro 4 and Surface Book updates on the following links:

<a href="https://www.microsoft.com/surface/en-us/support/install-update-activate/surface-pro-4-update-history">Surface Pro 4 Update History</a>

<a href="https://www.microsoft.com/surface/en-us/support/install-update-activate/surface-book-update-history">Surface Book Update History</a>

Those updates include improvements made to:
<ol>
	<li>Windows Hello stability (should solve the Windows Hello camera getting stuck issue)</li>
	<li>Fan tuning</li>
	<li>Wake up from sleep issues</li>
	<li>WiFi performance on SP4</li>
	<li>Surface Dock display improvements (new firmware).</li>
</ol>
Concerning Surface Dock update, you should refer to those 2 links below, which explain the 2 methods offered to update the new Surface Dock:

<a href="https://technet.microsoft.com/en-us/windows/mt703783.aspx">About methods for updating Surface Dock firmware</a>

<a href="https://technet.microsoft.com/en-us/windows/mt703784.aspx">Microsoft Surface Dock Updater method</a>

<strong>*UPDATE 2*</strong> The Surface Dock Updater tool can now be downloaded from <a href="https://aka.ms/toolsforit">here</a>.

For now, those updates are only available through Windows Update. I will update this post as soon as it is available in MSI/ZIP format.

<strong>*UPDATE*</strong> looks like some of you are facing <a href="https://answers.microsoft.com/en-us/surface/forum/surfbook-surfupdate/april-19-surface-book-update-failure/286685a3-186c-42d4-a69f-2fa92bf8cbe0">some issues</a> while applying the Surface updates. If you face the same issues, please contact your support contact. I'm also sure that the engineering team is already working on these issues. I will update this post as soon as I get some updates!

<strong>*UPDATE 3*</strong> Steps were taken in order to prevent the problem from happening to additional users (you should now be able to update your Surface Pro 4 / Book device from Windows Update safely). And engineering team is developing a solution for people who are impacted by this problem.

<strong>*UPDATE 4*</strong> MSI/ZIP files have been made available on DLC.

Surface Pro 4 MSI/ZIP can be downloaded from <a href="https://www.microsoft.com/en-us/download/details.aspx?id=49498">here</a>.

Surface Book MSI/ZIP can be downloaded from <a href="https://www.microsoft.com/en-us/download/details.aspx?id=49497">here</a>.]]></content:encoded>
    </item>
    <item>
      <title>Device Group Mapping available in Microsoft Intune</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/device-group-mapping-available-in-microsoft-intune</link>
      <pubDate>Tue, 12 Apr 2016 12:37:30 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=461</guid>
      <description><![CDATA[Hi everyone :)

Today I just wanted to create a short post about a new Microsoft Intune I'm very...]]></description>
      <content:encoded><![CDATA[Hi everyone :)

Today I just wanted to create a short post about a new Microsoft Intune I'm very excited about: "<strong>Device Group Mapping</strong>" (DGM). This new feature released in the March 2016 update offers the possibility for the user enrolling a device to select a <strong>device group</strong> where the enrolled device will be registered. That means that you can finally automatically put a device in a specific Intune group without an administrator manual intervention.

Before DGM, every device enrolled in Intune where registered in the default "<strong>Ungrouped devices</strong>" and you had to manually move them into the correct device group, which will receive the corresponding policies and apps.

Now, with <strong>DGM</strong>, let's say we have 2 device categories to manage: "<strong>Sales</strong>" and "<strong>HR</strong>". We create 2 empty device groups in Intune: "<strong>Sales devices</strong>" and "<strong>HR devices</strong>". You can deploy different set of policies and apps to those 2 groups.

You can configure DGM from the <a href="https://manage.microsoft.com">Microsoft Intune console</a>:
<ol>
	<li>From [<strong>Admin</strong>] &gt; [<strong>Mobile Device Management</strong>] &gt; [<strong>Device Group Mapping</strong>]</li>
	<li>Click on "<strong>Add</strong>" to create a new category
<ol>
	<li>We create a "<strong>Sales</strong>" category and link it to the "<strong>Sales Devices</strong>" group</li>
	<li>We create a "<strong>HR</strong>" category and link it to the "<strong>HR Devices</strong>" group</li>
</ol>
</li>
	<li>Done!</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/intune1.png"><img class="alignnone  wp-image-463" src="https://msdnshared.blob.core.windows.net/media/2016/04/intune1-300x240.png" alt="intune1" width="653" height="522" /></a>

Now whenever you try to join a device, you get a prompt to select a <strong>device category</strong>. By selecting the <strong>device category</strong>, the enrolled device will be added to the <strong>device group associated to the device category</strong>.

For more details about Device Group Mapping, visit the <a href="https://technet.microsoft.com/en-us/library/mt679178.aspx">technet site</a>.]]></content:encoded>
    </item>
    <item>
      <title>Copyprofile, IE11 crash on Windows 10</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/copyprofile-ie11-crash-windows-10</link>
      <pubDate>Thu, 07 Apr 2016 13:35:11 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=313</guid>
      <description><![CDATA[Hi everyone!

Today I would like to talk about an issue I faced recently. I think many of our...]]></description>
      <content:encoded><![CDATA[Hi everyone!

Today I would like to talk about an issue I faced recently. I think many of our customers are still using the "CopyProfile" setting available in the answer file (unattend.xml) to copy the built-in administrator profile to the default profile. That way, when a new user is created on that machine, it will get all the customization done on the administrator profile.

Before explaining how to solve that issue, I strongly recommend avoiding using CopyProfile and doing all the customization during the deployment using task sequences for instance.
<h3>Symptom</h3>
The recent issue I faced is IE11 (with Protected mode enabled) crashing continuously on Windows 10 computers where CopyProfile has been used.
<h3>Reason</h3>
The reason for those crashed has been identified and it appears that after running sysprep with copyprofile setting enabled, all of the <strong>Low Mandatory Level ACL</strong> of "<strong>%userprofile%\AppData\LocalLow</strong>" folder are missing.
<h3>Workaround</h3>
There's 2 solutions whether you have already deployed computers using copyprofile or if you want to solve that issue proactively on not yet deployed computers.
<h5>For already deployed computers</h5>
Deploy through script under the user context the following command line to add the missing permissions:

icacls %userprofile%\appdata\locallow /setintegritylevel (OI)(CI)L

icacls %userprofile%\appdata\locallow\microsoft /setintegritylevel (OI)(CI)L

icacls "%userprofile%\appdata\locallow\microsoft\Internet Explorer" /setintegritylevel (OI)(CI)L
<h5>For computers not yet deployed</h5>
For computers which are not yet deployed, we can solve that issue editing the master image. After having captured your master image, delete the following folder:

C:\Users\Default\AppData\LocalLow

You can also do that during the final image deployment within a MDT/SCCM task sequence. To do that, you just need to be aware that the <strong>RD (rmdir)</strong> command line cannot delete hidden folder. In our case, "<strong>Default</strong>" and "<strong>AppData</strong>" folders are both hidden. To automate the deletion of the <strong>LocalLow</strong> folder, we need to unhide, delete then hide again the concerned folders.

Here is a sample script to delete <strong>LocalLow</strong> folder:

ATTRIB -H "C:\Users\Default"
ATTRIB -H "C:\Users\Default\AppData"
rd /Q /S "C:\Users\Default\AppData\LocalLow"
ATTRIB +H "C:\Users\Default\AppData"
ATTRIB +H "C:\Users\Default"

Hope it will help solving the IE crash issues on computers where CopyProfile has been used :)

Good Windows 10 deployment to everyone!!]]></content:encoded>
    </item>
    <item>
      <title>Block Windows 10 Public Store using Microsoft Intune (but still allow the business store)</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/block-windows-10-public-store-using-microsoft-intune-but-still-allow-the-business-store</link>
      <pubDate>Tue, 29 Mar 2016 11:04:06 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=403</guid>
      <description><![CDATA[Hi Windows 10 experts and lovers :)

Today I want to talk to you about a very exciting feature...]]></description>
      <content:encoded><![CDATA[Hi Windows 10 experts and lovers :)

Today I want to talk to you about a very exciting feature which has been released in Windows 10 managed by Microsoft Intune. <strong><span style="text-decoration: underline">Now it's possible to disable the Windows 10 public store while keeping access to the business store (Windows Store for Business)</span></strong>.

<strong>Side note:</strong> We also have released in Microsoft Intune the integration with Windows Store for Business, which let you finally deploy silently modern apps from the store to users without having them to manually install the app. A coworker made a <a href="https://blogs.technet.com/b/home_is_where_i_lay_my_head/archive/2016/03/25/silently-push-the-intune-company-portal-to-azure-ad-joined-windows-10-devices.aspx" target="_blank">great article</a> about how to implement this integration.

To block the public store, you need to create a new custom Windows 10 policy in Microsoft Intune (we create a new one because this one will target users and not devices).
<ul>
	<li>Connect to <a href="https://manage.microsoft.com" target="_blank">Microsoft Intune management portal</a></li>
	<li>From "<strong>Policy</strong>", create a new "<strong>Custom Configuration</strong>" policy for Windows 10.</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/store1.png"><img class="alignnone  wp-image-413" src="https://msdnshared.blob.core.windows.net/media/2016/03/store1-300x173.png" alt="store1" width="472" height="272" /></a>
<ul>
	<li>Create a new <strong>OMA-URI</strong> setting. You will find details on the <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/dn904962(v=vs.85).aspx" target="_blank">CSP policy reference page</a>.
<ul>
	<li><strong>OMA-URI</strong>: ./User/Vendor/MSFT/Policy/Config/ApplicationManagement/RequirePrivateStoreOnly</li>
	<li><strong>Value</strong>: 1</li>
</ul>
</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/store2.png"><img class="alignnone  wp-image-423" src="https://msdnshared.blob.core.windows.net/media/2016/03/store2-244x300.png" alt="store2" width="290" height="357" /></a>
<ul>
	<li>Then validate the policy.</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/store3.png"><img class="alignnone  wp-image-433" src="https://msdnshared.blob.core.windows.net/media/2016/03/store3-300x190.png" alt="store3" width="542" height="343" /></a>

&nbsp;
<ul>
	<li>And deploy that policy to a user collection. Here is the end result after you refresh MDM policy on a Windows 10 computer: public store's tabs has disappear but business store is still there :)</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/store4.png"><img class="alignnone  wp-image-443" src="https://msdnshared.blob.core.windows.net/media/2016/03/store4-300x225.png" alt="store4" width="636" height="477" /></a>

Everyday we're working hard to make Windows 10 more manageable using MDM. Hope you will enjoy this new feature :)

See you next time!]]></content:encoded>
    </item>
    <item>
      <title>Surface 3/Pro 4/Book updates available in WSUS!</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/surface-3pro-4book-updates-available-in-wsus</link>
      <pubDate>Fri, 25 Mar 2016 13:48:08 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=314</guid>
      <description><![CDATA[This news will be a very happy one for IT Pros managing Surface devices in a corporate...]]></description>
      <content:encoded><![CDATA[This news will be a very happy one for IT Pros managing Surface devices in a corporate environment.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/MS-Surface_rgb_Blue.png"><img class="alignnone size-medium wp-image-383" src="https://msdnshared.blob.core.windows.net/media/2016/03/MS-Surface_rgb_Blue-300x151.png" alt="MS-Surface_rgb_Blue" width="300" height="151" /></a>

You might already know that until now, you had only 2 choices to manage drivers and firmware updates for Surface devices:
<ol>
	<li>Download and install from Microsoft Update</li>
	<li>Download the MSI version of the drivers/firmware update and deploy it either manually or by another management tool (like SCCM)</li>
</ol>
WSUS wasn't part of this equation because we were using a detection mechanism for Surface drivers that was compatible with Microsoft Update but not WSUS.

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Large banner -->
<ins class="adsbygoogle" style="width:728px;height:90px"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Things have recently changed and you can finally see those Surface updates in WSUS and deploy them that way! Those updates only concern Windows 10.
<h3>Microsoft Update Catalog</h3>
For any update to appear in WSUS, it first needs to be available in Microsoft Update catalog. To sync those updates to WSUS, we need to know their <strong>product</strong> and <strong>classification</strong>.

To verify that the Surface updates are available in the Microsoft Update catalog, navigate to this <a href="https://catalog.update.microsoft.com">URL</a>. If you search for the word "<strong>Surface</strong>", you will see updates listed as below:

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/MUCatalogSurface.png"><img class="alignnone  wp-image-323" src="https://msdnshared.blob.core.windows.net/media/2016/03/MUCatalogSurface-300x46.png" alt="MUCatalogSurface" width="717" height="110" /></a>

&nbsp;

We see that Surface updates appear under:
<ul>
	<li><strong>Product</strong>: Windows 10 and later drivers; Windows 10 and later upgrade &amp; servicing drivers (you can select either one)</li>
	<li><strong>Classification</strong>: Drivers</li>
</ul>
<h3>WSUS</h3>
Now let's enable those product and classification in WSUS.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS.png"><img class="alignnone  wp-image-331" src="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS-275x300.png" alt="WSUS" width="309" height="337" /></a><a href="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS2.png"><img class="alignnone  wp-image-341" src="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS2-275x300.png" alt="WSUS2" width="308" height="336" /></a>

Then you just need to sync WSUS with Microsoft Update. Once the sync is finished, you can search in WSUS for the word "Surface" and you will see those Surface updates appearing in WSUS.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS3.png"><img class="alignnone  wp-image-351" src="https://msdnshared.blob.core.windows.net/media/2016/03/WSUS3-300x263.png" alt="WSUS3" width="407" height="357" /></a>

Happy management of Surface devices!!

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>SCCM 1602 available now!</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/sccm-1602-available-now</link>
      <pubDate>Mon, 14 Mar 2016 07:27:03 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/?p=283</guid>
      <description><![CDATA[Hi SCCM experts,

As you might have seen, SCCM 1602 has been released on March 11th 2016.

You...]]></description>
      <content:encoded><![CDATA[Hi SCCM experts,

As you might have seen, SCCM 1602 has been released on March 11th 2016.

You will find the official announcement here: <a href="https://blogs.technet.microsoft.com/configmgrteam/2016/03/11/now-available-update-1602-for-system-center-configuration-manager/" target="_blank">SCCM Official Blog Annoucement</a>

You will find details about what’s new in SCCM 1602 here: <a href="https://technet.microsoft.com/en-us/library/mt622084.aspx" target="_blank">What's new in SCCM 1602</a>

To install the 1602, the prerequisite is to have SCCM 1511 running. The latest 1602 is made available directly through the SCCM console under the “<strong>Updates and Servicing</strong>” node.

You will also find an excellent upgrade guide made by one of our PFE here: <a href="https://blogs.technet.microsoft.com/configmgr_geek_speak/2016/03/11/configuration-manager-1511-to-1602-upgrade-walkthrough/" target="_blank">SCCM 1511 to 1602 Upgrade Walkthrough</a>

A lot of the new features <span style="text-decoration: underline">require an Intune subscription</span> linked to SCCM. For example, if you want to use the new <a href="https://technet.microsoft.com/en-us/library/mt691743.aspx" target="_blank">Conditional Access to O365 for PCs managed by SCCM agent</a>, you will need to have an Intune subscription configured in SCCM. You will notice that Microsoft Intune will become more and more crucial in many Windows 10 management scenarios where cloud solutions access security becomes an important part of it :)]]></content:encoded>
    </item>
    <item>
      <title>Restrict iOS apps which can access to Office 365 services (ADFS required)</title>
      <link>https://docs.microsoft.com/archive/blogs/beanexpert/restrict-ios-apps-which-can-access-to-office-365-services-adfs-required</link>
      <pubDate>Thu, 24 Dec 2015 20:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Samir Hammoudi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/beanexpert/2015/12/24/restrict-ios-apps-which-can-access-to-office-365-services-adfs-required/</guid>
      <description><![CDATA[Merry Christmas everyone!!

Today is Christmas and finally got some time to focus on a new article...]]></description>
      <content:encoded><![CDATA[Merry Christmas everyone!!

Today is Christmas and finally got some time to focus on a new article I wanted to write for a while.

A lot of my Microsoft Intune customers in Japan are asking me the same question over and over again: how can I restrict the applications which can connect to Office 365? and that’s a question with lot of sense. Why? Because in Intune, we offer the MAM capacity for data loss prevention (DLP). As you might know, when you open a corporate document in a MAM enabled app like <a href="https://itunes.apple.com/us/app/microsoft-word/id586447913?mt=8">Microsoft Word</a>, you can't paste the content of that document in a non-managed app.

Those customer are basically asking me if it is possible to restrict access to Office 365 to only Microsoft MAM enabled apps like <a href="https://itunes.apple.com/us/app/microsoft-outlook-email-calendar/id951937596?mt=8">Microsoft Outlook</a>, <a href="https://itunes.apple.com/us/app/microsoft-word/id586447913?mt=8">Word</a>, <a href="https://itunes.apple.com/us/app/microsoft-excel/id586683407?mt=8">Excel</a>, <a href="https://itunes.apple.com/us/app/microsoft-powerpoint/id586449534?mt=8">PowerPoint</a>, <a href="https://itunes.apple.com/us/app/onedrive-cloud-storage-for/id477537958?mt=8">OneDrive</a> or <a href="https://itunes.apple.com/jp/app/microsoft-intune-managed-browser/id943264951?mt=8">Intune Managed Browser</a> (check this <a href="https://technet.microsoft.com/en-us/library/dn708489.aspx">TechNet link</a> to see all the MAM enabled apps in Intune).

<strong><span style="text-decoration: underline">The answer in short is: with only Intune, you can’t but if you have a federated domain with ADFS, then there is a solution (not a perfect one) to the problem</span></strong>.

If you have already used ADFS and its claim rules, you know that you can create conditions based of parameters (claims) that the client presents to ADFS. Within the available claims, there’s only one which can help you identify the application which tries to authenticate to ADFS services: user agent (<strong><span style="text-decoration: underline">x-ms-client-user-agent</span></strong>). Btw I have done all my testing with <span style="text-decoration: underline">ADFS 3.0 (Windows Server 2012 R2)</span> but it should work the same on ADFS 2.0.

<span style="color: #ff0000"><strong><span style="text-decoration: underline">Disclaimer</span></strong>: I’m not an ADFS nor a security expert but I do know that it’s not a perfect solution. User agent can change and are not unique to a software vendor. Even though Microsoft apps are all using the same user agent, other non-Microsoft apps could in the future use the same user agent or even spoof the same user agent to be seen as a Microsoft apps. So if you implement this solution in production, you should know the risk you are taking.</span>

If you want to restrict Office 365 access based on location of the client, you should take a look at the excellent <a href="https://technet.microsoft.com/en-us/library/hh526961(v=ws.10).aspx">TechNet article</a> describing the ADFS rules needed to implement that.

Coming back to my user agent story, every app has an user agent. For Microsoft apps like Outlook, Word, Excel PowerPoint, OneDrive and Intune Managed Browser on iOS, they are all sharing the same user agent.

Here’s the user agent of <strong>Microsoft Outlook/Word/Excel/PowerPoint/OneDrive/Intune Managed Browser</strong> on an iOS 8.4.1 device.

<em>Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321</em>

And this is an example of user agent of <strong>Safari browser</strong> on iOS 8.4.1:

<em>Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) <span style="text-decoration: underline">Version/8.0</span> Mobile/12H321 <span style="text-decoration: underline">Safari/600.1.4</span></em>

Last example is the user agent of <strong>Chrome browser</strong> on iOS 8.4.1:

<em>Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) <span style="text-decoration: underline">CriOS/44.0.2403.67</span> Mobile/12H321 <span style="text-decoration: underline">Safari/600.1.4</span></em>

You can notice the <span style="text-decoration: underline">slight differences</span> between those user agents, right? So an easy way to allow MS apps’ user agent to access Office 365 would be the following claim rule (whitelist way):

<em>exists([Type == "</em><a href="https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent&quot;"><em>https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent"</em></a><em>, Value == "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321"])
=&gt; issue(Type = "</em><a href="https://schemas.microsoft.com/authorization/claims/permit&quot;"><em>https://schemas.microsoft.com/authorization/claims/permit"</em></a><em>, Value = "true");</em>

As you might notice, there’s many variable characters and numbers in the above user agent: form factor of the phone (iPhone/iPod/iPad), iOS version, webkit version, iOS build number. And all of these numbers will change when iOS will be updated or when the app itself will be updated.

To ensure that we are not affected by any of these variable in the user agent, I used <span style="text-decoration: underline">regex</span> (regular expression) to only match the other characters. Here’s an example of what an ADFS claim rule looks like with regex:

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/69/36/metablogapi/3542.image_636C56EC.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/69/36/metablogapi/0488.image_thumb_2572C62E.png" alt="image" width="329" height="369" border="0" /></a>

<em>exists([Type == "</em><a href="https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent&quot;"><em>https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent"</em></a><em>, Value =~ "^Mozilla\/5.0 \((iPhone|iPad|iPod); (CPU|CPU iPhone) (?:OS\s*\d+_\d+(?:_\d+)?\s*)? like Mac OS X\) (?:AppleWebKit\/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)? \(KHTML, like Gecko\) (?:Mobile\/\w+\s*)?$"])
=&gt; issue(Type = "</em><a href="https://schemas.microsoft.com/authorization/claims/permit&quot;"><em>https://schemas.microsoft.com/authorization/claims/permit"</em></a><em>, Value = "true");</em>

Again I repeat, this is not a perfect solution but it can help limiting potential access to Office 365 from unwanted applications. <span style="text-decoration: underline">Implement this at your own risk</span>.

PS: To find the user agent of an app, I recommend setting the default ADFS rule to deny all access in a lab environment. You also need to enable auditing of ADFS access (follow that <a href="https://jorgequestforknowledge.wordpress.com/2013/07/08/enabling-auditing-of-issued-claims-in-adfs-v2-x-and-adfs-v3-x/">article</a> to enabled auditing on ADFS). Then when trying to authenticate to ADFS from an app, you will be denied (as expected) and in the security logs of your ADFS server, you will find the user agent of the application!
<h5>Additional notes for Android:</h5>
It works the same way for Android apps but there’s a difference between Office apps user agent and Intune Managed Browser user agent on this platform.

<span style="text-decoration: underline">Microsoft Word for Android user agent:</span>

Mozilla/5.0 (Linux; Android 5.0.1; GT-I9505 Build/LRX22C; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36 <span style="background-color: #ffff00">PKeyAuth/1.0</span>

<span style="text-decoration: underline">Intune Managed Browser for Android user agent:</span>

Mozilla/5.0 (Linux; Android 5.0.1; GT-I9505 Build/LRX22C; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36]]></content:encoded>
    </item>
  </channel>
</rss>