<?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>Arnab’s Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/arnabm/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/arnabm/feed.xml</link>
    <description>Sharing my experiences with System Center products</description>
    <lastBuildDate>Tue, 21 May 2019 21:54:45 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>ConfigMgr Application Approval via Email</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/configmgr-application-approval-via-email</link>
      <pubDate>Sun, 09 Dec 2018 00:16:44 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=12455</guid>
      <description><![CDATA[ConfigMgr 1810 introduced the feature to receive email-based notifications for application approval...]]></description>
      <content:encoded><![CDATA[ConfigMgr 1810 introduced the feature to receive email-based notifications for application approval requests.

Here's a step by step configuring the flow for a user requesting an application, an email is sent to the application approver to either Approve or Deny the request.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp1.png" />
<h1>Prerequisites</h1>
<ul>
 	<li>Turn on the Feature "<strong>Approve application requests for users per device</strong>"</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp2.png" />
<h3>Configure Email Notification</h3>
<ul>
 	<li>Go to Monitoring &gt; Overview &gt; Alerts &gt; Subscription</li>
 	<li>Click on <strong>Configure Email Notification</strong> from the ribbon menu.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp3.png" />
<ul>
 	<li>Populate SMTP server information and Port. For Office 365 EXO use <strong>smtp.office365.com</strong> with port <strong>587
</strong></li>
 	<li>Specify a connection account.<strong>
</strong></li>
 	<li>Specify sender email address for the notification.<strong>
</strong></li>
</ul>
Use the Test SMTP Server button to send a test email for validation. Refer the <strong>NotiCtrl.log</strong> for troubleshooting.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp4.png" />
<h2>Access SMS Provider over Internet</h2>
You may want the approval/deny workflow to work even outside corporate network. It's now possible to access WMI over HTTPS via CMG leveraging the <a href="https://blogs.technet.microsoft.com/arnabm/2018/03/31/step-by-step-cloud-management-gateway-on-arm/">ARM model</a> with <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/configure-discovery-methods">AAD User Discovery</a> enabled.
<ul>
 	<li>On your ConfigMgr console go to <strong>Administration</strong> &gt; <strong>Site Configuration</strong> &gt; <strong>Servers and Site System Roles</strong></li>
 	<li>Select the Server holding SMS Provider Role. [<em>If unsure, check the Site Properties to confirm</em>]</li>
 	<li>Go to the Properties of <strong>SMS Provider</strong> and check the box <strong>Allow Configuration Manager cloud management gateway traffic for administration service</strong>.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp5.png" />
<ul>
 	<li>Back in ConfigMgr console go to<strong> Administration </strong>&gt; <strong>Cloud Services</strong> &gt; <strong>Azure Services</strong></li>
 	<li>Select the Cloud Management Azure Service and go to its <strong>Properties </strong>&gt; <strong>Applications</strong> tab.</li>
 	<li>Make a note of the <strong>Native Client App</strong></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp6.png" />
<ul>
 	<li>Click the <strong>Discovery</strong> tab to ensure AAD User discovery is enabled.</li>
 	<li>Back in ConfigMgr console go to<strong> Administration </strong>&gt; <strong>Cloud Services</strong> &gt; <strong>Cloud Management Gateway</strong></li>
 	<li>Make a note of the CMG <strong>Service Name</strong></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp7.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: black">Go to the <a href="https://portal.azure.com/">Azure portal</a>, select <strong>Azure Active Directory</strong>, and then select <strong>App registrations</strong>. You may need to click <strong>View all applications</strong>
</span></div></li>
 	<li>
<div style="background: white"><span style="color: black">Search for the <strong>Native Client App</strong> you noted from ConfigMgr console.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: black">Click to open the app and select <strong>Settings</strong>
</span></div>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp8.png" /><span style="color: black">
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: black">From the Settings blade select <strong>Redirect URIs</strong>.
</span></div>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp9.png" /><span style="color: black">
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: black">In the <strong>Redirect URIs</strong> blade, paste in the following path: https://&lt;CMG FQDN&gt;/CCM_Proxy_ServerAuth/ImplicitAuth
</span></div>
<p style="background: white"><span style="color: black">[<em>Replace &lt;CMG FQDN&gt; with the CMG Service Name you noted from the ConfigMgr console.</em>]
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: black">Click <strong>Save</strong>. Close the <strong>Settings</strong> pane.
</span></div>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp10.png" /><span style="color: black">
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: black">In the app properties, select <strong>Manifest</strong>.
</span></div>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp11.png" /><span style="color: black">
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: black">In the <strong>Edit manifest</strong> blade, find the <strong>oauth2AllowImplicitFlow</strong> property.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: black">Change its value to <strong>true</strong>. For example, the entire line should look like the following line: "oauth2AllowImplicitFlow": true,
</span></div></li>
 	<li>
<div style="background: white"><span style="color: black">Select <strong>Save</strong>.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp12.png" />
<h1>Deploy Application</h1>
Now its time to deploy your desired application to a User Group.
<ul>
 	<li>Check the box <strong>An administrator must approve a request for this application on the device</strong>.</li>
 	<li>You can also specify email address of the application owner or approver. This can be unique for each application and supports multiple email addresses.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp13.png" />

From here the user requests the Application from Software Center

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp14.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp15.png" />

The approver receives the email notification to Approve/Deny.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp16.png" />

When I hover over the approve link, it points to my CMG to access the SMS Provider over Internet.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp17.png" />

The application is automatically installed, and the requestor doesn't need any action to take! However for a decline, the user isn't notified and has to check Software Center.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp18.png" />
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/120918_0512_ConfigMgrAp19.png" />

<strong>Thanks,
</strong>

<strong>Arnab Mitra</strong>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server Native Client Update Warning Prerequisite for ConfigMgr 1810</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/sql-server-native-client-update-warning-prerequisite-for-configmgr-1810</link>
      <pubDate>Wed, 28 Nov 2018 00:13:55 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=12255</guid>
      <description><![CDATA[If you are planning to upgrade your ConfigMgr infrastructure to the latest 1810 release, plan for...]]></description>
      <content:encoded><![CDATA[If you are planning to upgrade your ConfigMgr infrastructure to the latest <a href="https://techcommunity.microsoft.com/t5/Configuration-Manager-Blog/Update-1810-for-Configuration-Manager-current-branch-is-now/ba-p/289522">1810 release</a>, plan for updating the SQL Server Native Client to support TLS 1.2

If the SQL Server native client isn't already updated, the prerequisite check will fail with below warning.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa1.png" />

The details are available in the ConfigMgrPrereq.log

&lt;11-27-2018 20:27:21&gt; PRIMARY1&lt;FQDN&gt;; SQL Server Native Client version; Warning; Configuration Manager sites require a supported SQL Server Native Client version. To enable TLS 1.2 support, you must install a supported version of SQL Server Native Client on the specified site database server. For more information, see <a href="https://go.microsoft.com/fwlink/?linkid=2026746">https://go.microsoft.com/fwlink/?linkid=2026746</a>
<h1>Update SQL Native Client</h1>
You do have the option to ignore the prerequisite check, however if you want to support TLS 1.2 now or in even in future, you should upgrade the SQL Native Client.

Refer <a href="https://go.microsoft.com/fwlink/?linkid=2026746">the link</a> from log snippet to identify the applicable version. You can check Programs and Feature on the Server to identify the currently installed version.

In my case I have SQL Server 2012 Native Client.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa2.png" />

From here I can choose to install the applicable version.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa3.png" />

This takes me to <a href="https://www.microsoft.com/en-us/download/details.aspx?id=50402">https://www.microsoft.com/en-us/download/details.aspx?id=50402</a>

The version number here is in fact lower than what we see in Programs and feature screenshot above.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa4.png" />

Launch <strong>ODBC</strong> 64 bit &gt; <strong>Drivers</strong> tab to validate the right version. 110.6540 is lower.

<img width="586" height="228" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa5.png" />

Install the SQL Native Client Update installer, this will also confirm you are running the lower version and may request a reboot post install.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa6.png" />    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa7.png" />

Launch ODBC once again to validate the updated version to support TLS 1.2

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/11/112818_0505_SQLServerNa8.png" />

Happy Upgrading!

&nbsp;

&nbsp;

<strong>Thanks,
</strong>

<strong>Arnab Mitra</strong>]]></content:encoded>
    </item>
    <item>
      <title>CMG with just One Cert</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/cmg-with-just-one-cert</link>
      <pubDate>Wed, 24 Oct 2018 18:48:56 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=11555</guid>
      <description><![CDATA[You read it correct! Cloud Management Gateway has evolved and its now easier than ever to deploy...]]></description>
      <content:encoded><![CDATA[You read it correct! Cloud Management Gateway has evolved and its now easier than ever to deploy one. All you need is a single Web Server Authentication Certificate from a public CA.
<h1>What changed?</h1>
Primarily the introduction of a new feature in ConfigMgr 1806 called Enhanced HTTP Site System which replaces the requirement of an HTTPS Management Point for CMG communication. The site server generates a certificate for the management point allowing it to communicate via a secure channel.

Another addition in 1806 is the Azure AD Device Identity can be leveraged for both Hybrid &amp; Azure AD joined devices to securely communicate with its assigned site without a logged-on user.
<h1>Prerequisites</h1>
The modern workplace in a cloud first world is possible when your resources are accessible from anywhere. Below are two important prerequisites for stepping into one.
<h3>Sync On-Prem Domain Users to Azure AD</h3>
If you are an Office 365 user, your domain users are already synchronized in Azure Active Directory. This is configured via Azure AD Connect and requires planning.

Refer this link as a starter - <a href="https://docs.microsoft.com/en-us/azure/active-directory/hybrid/whatis-hybrid-identity">https://docs.microsoft.com/en-us/azure/active-directory/hybrid/whatis-hybrid-identity</a>
<h3>Register the Domain Joined devices to Azure aka Hybrid Azure AD Joined</h3>
Once your users are synchronized into Azure AD, the next step is to ensure the domain joined Windows 10 devices are also registered in AAD.

All you need is to run AAD Connect and choose the option below (<em>available in version 1.1.819.0 and higher</em>). Refer <a href="https://docs.microsoft.com/en-us/azure/active-directory/devices/hybrid-azuread-join-managed-domains">this link for more info</a>.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust1.png" />

Configure GPO to automatically register the devices in AAD.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust2.png" />
<h1>Prepare ConfigMgr</h1>
<h3>Enhanced HTTP Site System</h3>
Introduced in 1806 as a pre-release (fully supported in production) replaces the requirement of an HTTPS Management Point for CMG communication.

The site server generates a self-signed certificate for the management point allowing it to communicate via a secure channel. Only <strong>Hybrid &amp; Azure AD Joined</strong> devices connected via CMG can communicate with the Enhanced HTTP MP.

Since this is a pre-release feature, make sure you <span style="text-decoration: underline">Consent</span> it in the <strong>Hierarchy Settings</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust3.png" />

<strong>Turn On</strong> the feature Enhanced HTTP Site System

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust4.png" />

This will light up the feature in the <strong>Site Properties</strong> &gt; <strong>Client Computer Communication</strong> tab.

Check the box <strong>Use Configuration Manager-generated certificates for HTTP site systems</strong>.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust5.png" />
<h3>Configure Azure Services for CMG – ARM based deployment</h3>
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">On the ConfigMgr Console, go to <strong>Administration</strong> &gt; Cloud Services &gt; Azure Services.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click <strong>Configure Azure Services</strong> on the ribbon menu.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Select <strong>Cloud Management</strong> in the Wizard.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Provide a <strong>Name</strong> and click Next to proceed.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust6.png" />    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust7.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click on <strong>Browse</strong> to either Import an existing App or click Create to start with a fresh App.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust8.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust9.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Provide an Application Name
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">You need to <strong>Sign</strong> in with a Subscription Admin.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click <strong>OK</strong> to complete
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust10.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust11.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Repeat the steps to create a Client App and click <strong>OK</strong> to complete.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust12.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust13.png" />
<ul>
 	<li>Click <strong>Next</strong> in the wizard</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust14.png" />
<ul>
 	<li>Check the box <strong>Enable Azure Active Directory User Discovery</strong>.</li>
 	<li>Click <strong>Next</strong> to summarize and finish the wizard.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust15.png" />

Domain User accounts will be populated with Azure AD information.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust16.png" />
<h2>Setup CMG</h2>
<p style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Now we are all set to configure CMG.
</span></p>

<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">On the ConfigMgr Console, go to <strong>Administration</strong> &gt; Cloud Services &gt; Cloud Management Gateway
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click <strong>Create Cloud Management Gateway</strong> on the ribbon menu.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust17.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Choose <strong>Azure Resource Manager deployment</strong>
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt"><strong>Sign In</strong> with Azure Subscription Admin account
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">The subscription info and the Web App created in the previous section will auto populate. Click <strong>Next</strong> to proceed.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust18.png" />
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click <strong>Browse</strong> to specify the CMG Certificate obtained by a public CA [</span>desired_service_name.yourdomain.xxx<span style="color: #333333;font-family: Segoe UI;font-size: 10pt">]. This will auto populate the Service name in the wizard.
</span></div>
<p style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt"><strong>Note</strong> – Choose the service name carefully as this name should not exist in Azure. You can check for available name by attempting to create a classic service.
</span></p>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust19.png" /><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">
</span></p>
</li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Choose your Azure <strong>Region</strong>
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Choose <strong>Create new</strong> under Resource Group.
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Optionally select the option to function CMG as a Cloud DP
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Click Next to summarize and finish the wizard.
</span></div></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust20.png" />

<strong>Note</strong> -Azure appends the CMG Service name with <strong>.cloudapp.net</strong> domain name. You have to create a CNAME record in public DNS pointing &lt;yourservicename.cloudapp.net&gt; to &lt;yourservicename.yourdomain.xxx&gt;

Monitor the state of deployment and proceed to next step once the <strong>Status</strong> is <span style="text-decoration: underline">Ready</span>.

<img align="left" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust21.png" />
<h2>CMG – Connection Point</h2>
This is the on-premise site system role which communicates with the CMG.

Add a new Site System Role and select <strong>Cloud management gateway connection point</strong>.

This auto-populates the CMG name and its region. Click Next to summary and finish the wizard.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust22.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust23.png" />
<h2>Allow CMG Traffic</h2>
On your HTTP Management Point, check the box to allow CMG traffic.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust24.png" />
<h1>Validation</h1>
We are now ready to test the CMG connection on a domain joined client computer.

The first thing you need to validate is ensure the device is Hybrid Azure AD Joined. You can run the command <strong>DSRegCMD /Status</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust25.png" />

The device will also be listed in Azure portal under devices with a Join Type as <strong>Hybrid Azure AD joined</strong>.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust26.png" />

Reference snapshot of domain joined client certificate snap-in. All I have is two certificates from Azure.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust27.png" />

Open the ConfigMgr control panel applet to validate the CMG information is populated in the <strong>Network</strong> tab.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust28.png" />

Deploy a test application to validate a successful download of the policy via CMG.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust29.png" />

Install the application to further validate.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust30.png" /><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/102418_2345_CMGwithjust31.png" />

<strong>Note</strong> – I don't have a public domain or cert hence I used .cloudapp.net for DNS validations.

<strong>Thanks,
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>Deploy CCMSetup.exe via Intune</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/deploy-ccmsetup-exe-via-intune</link>
      <pubDate>Sun, 14 Oct 2018 20:46:16 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=11165</guid>
      <description><![CDATA[Intune recently added the option to deploy Win32 Apps which allows the ability to directly deploy...]]></description>
      <content:encoded><![CDATA[Intune recently added the option to <a href="https://techcommunity.microsoft.com/t5/Enterprise-Mobility-Security/Sneak-peek-Public-preview-of-Win32-application-deployment-using/ba-p/264460">deploy Win32 Apps</a> which allows the ability to directly deploy CCMSetup.exe via Intune.

The process is straightforward -
<ul>
 	<li>Wrap CCMSetup.exe with Intune Win App Util.</li>
 	<li>Add the App to Intune</li>
 	<li>Assign to group.</li>
</ul>
<h2>Wrap CCMSetup.exe with Intune Win App Util</h2>
Download the <a href="https://github.com/Microsoft/Microsoft-Win32-Content-Prep-Tool">Intune-Win32-App-Packaging-Tool</a>

Run IntuneWinAppUtil.exe and specify -
<ul>
 	<li>Source Folder: &lt;Location of the folder which contains CCMSetup.exe&gt;</li>
 	<li>Setup File: &lt;Specify the file name which is CCMSetup.exe&gt;</li>
 	<li>Output Folder: &lt;Destination folder which will generate the CCMSetup.Intunewin file as Output&gt;</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe1.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe2.png" />
<h2>Add the App to Intune</h2>
Grab the resultant output <strong>CCMSetup.intunewin</strong> from the above operation.
<h3><span style="color: black;font-family: Segoe UI">Specify the software setup file
</span></h3>
<ol>
 	<li><span style="color: black;font-family: Segoe UI">Sign in to the <a href="https://portal.azure.com/">Azure portal</a>.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">Select <strong>All services</strong> &gt; <strong>Intune</strong>. Intune is in the <strong>Monitoring + Management</strong> section.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">In the <strong>Intune</strong> pane, select <strong>Client apps</strong> &gt; <strong>Apps</strong> &gt; <strong>Add</strong>.
</span></li>
 	<li>
<div><span style="color: black;font-family: Segoe UI">In the <strong>Add</strong> app pane, select <strong>Windows app (Win32) </strong>from the provided drop-down list.
</span></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe3.png" /><span style="color: black;font-family: Segoe UI">
</span></li>
</ol>
<h3><span style="color: black;font-family: Segoe UI">Upload the app package file [CCMSetup.intunewin]
</span></h3>
<ol>
 	<li>
<div><span style="color: black;font-family: Segoe UI">In the <strong>Add app</strong> pane, select <strong>App package file</strong> to select a file. The App package file pane will be displayed.
</span></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe4.png" /><span style="color: black;font-family: Segoe UI">
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">In the <strong>App package file</strong> pane, select the browse button. Then, select <strong>ccmsetup<em>.intunewin</em></strong>
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">When you're finished, select <strong>OK</strong>.
</span></li>
</ol>
<h3><span style="color: black;font-family: Segoe UI">Configure Program
</span></h3>
Install Command: ccmsetup.exe &lt;Copy the rest from Co-Management window&gt;

Don't forget to remove <span style="color: red">CCMSETUPCMD = ""</span>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe5.png" />

In my lab I am using an internal CA hence I also added /nocrlcheck

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe6.png" />
<h3><span style="color: black;font-family: Segoe UI">Configure Properties
</span></h3>
Customize <em>App Information, Requirements, Detection Rules and Return Codes</em> as desired.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe7.png" />
<h3><span style="color: black;font-family: Segoe UI">Add the app
</span></h3>
<ol>
 	<li><span style="color: black;font-family: Segoe UI">In the <strong>Add app</strong> pane, verify that you configured the app information correctly.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">Select <strong>Add</strong> to upload the app to Intune.
</span></li>
</ol>
<h3><span style="color: black;font-family: Segoe UI">Assign the app
</span></h3>
<ul>
 	<li><span style="color: black;font-family: Segoe UI">In the app pane, select <strong>Assignments</strong>.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">Select <strong>Add Group</strong> to open the <strong>Add group</strong> pane that is related to the app.
</span></li>
 	<li>
<div><span style="color: black;font-family: Segoe UI">For the specific app, select an <strong>assignment type</strong>:
</span></div>
<ul>
 	<li><span style="color: black;font-family: Segoe UI"><strong>Available for enrolled devices</strong>: Users install the app from the Company Portal app or Company Portal website.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI"><strong>Required</strong>: The app is installed on devices in the selected groups.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI"><strong>Uninstall</strong>: The app is uninstalled from devices in the selected groups.
</span></li>
</ul>
</li>
 	<li><span style="color: black;font-family: Segoe UI">Select <strong>Included Groups</strong> and assign the groups that will use this app.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">In the <strong>Assign</strong> pane, select <strong>OK</strong> to complete the included groups selection.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">If you want to exclude any groups of users from being affected by this app assignment, select <strong>Exclude Groups</strong>.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">In the <strong>Add group</strong> pane, select <strong>OK</strong>.
</span></li>
 	<li><span style="color: black;font-family: Segoe UI">In the app <strong>Assignments</strong> pane, select <strong>Save</strong>.
</span></li>
</ul>
Validate a successful install

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/10/101518_0156_DeployCCMSe8.png" />

<strong>Thanks,
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>Step-by-step: Highly available Site server</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/step-by-step-highly-available-site-server</link>
      <pubDate>Sat, 01 Sep 2018 16:03:53 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=10115</guid>
      <description><![CDATA[The release of ConfigMgr 1806 introduced the concept of high availability of the Site server by...]]></description>
      <content:encoded><![CDATA[The release of ConfigMgr 1806 introduced the concept of high availability of the Site server by adding an additional primary site as passive node.

This post takes you through a step by step journey in configuring a highly available Site Server.

Here's a high-level architecture overview of the configuration which depicts a remote SQL AlwaysOn availability group hosting the ConfigMgr database and a remote shared Content Library.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH1.png" />
<h1>Prerequisites and Recommendations–</h1>
<h2>Remote SQL</h2>
As you plan to prepare your site for HA, the first thing to ensure is your SQL is also HA. This can be a SQL AlwaysOn or a SQL Cluster.

You can also start with a remote standalone SQL and later add it to an Availability Group. Refer <a href="https://blogs.technet.microsoft.com/arnabm/2016/05/14/step-by-step-configuration-manager-site-database-hosted-on-sql-server-alwayson-availability-group/">this link</a> for guidance.
<h2>Remote Content Library</h2>
<strong>Note</strong> - Make sure the Distribution Point role is not installed locally on the primary site and needs to be removed before proceeding.

The Content Library also needs to be moved off the primary to a centralized location which can be a network/SAN share.
<h3>Moving Content Library –</h3>
<ul>
 	<li>Create a Shared Folder</li>
 	<li>
<div>Add the System/Computer Accounts of the both the Site Server (Active and Passive) with full permissions to this share.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH2.png" /></li>
 	<li>Open ConfigMgr Console <strong>&gt;</strong> Administration <strong>&gt;</strong> Site Configuration <strong>&gt;</strong> Sites</li>
 	<li>
<div>Click <strong>Manage Content Library</strong> from the ribbon menu</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH3.png" /></li>
 	<li>
<div>From the dialog, specify a folder inside the share (<span style="color: red">Not the root of the share</span>) and click <strong>Move</strong>.</div>
<em>Selecting the root of the share will result in the following error - <span style="color: red;font-size: 10pt">CContentDefinition::SyncFolder failed; 0x800700a1    SMS_DISTRIBUTION_MANAGER</span>
</em>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH4.png" /></li>
 	<li>
<div>The console will show the move in-progress. You can also refer to the DistMgr.log</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH5.png" /></li>
</ul>
<h2>Remote SMS Provider</h2>
If the SMS provider is not already remote, install an additional SMS Provider [<span style="color: red">do not choose the passive site server</span>] which is not local to the Primary Site.

Note – <a href="https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install">ADK</a> is a prerequisite for SMS Provider
<ul>
 	<li>
<div>Run the ConfigMgr setup and choose <strong>Modify SMS Provider configuration</strong></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH6.png" /></li>
 	<li>
<div>Add the FQDN of the remote server [<span style="color: red">do not choose the passive site server</span>] where you plan to install the SMS Provider and click <strong>Next</strong></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH7.png" /></li>
 	<li>
<div>Validate a successful install from the console.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH8.png" /></li>
</ul>
<h2>Remote SUP</h2>
If the SUP role is not already remote, do plan to offload it from the Primary Site Server to a remote Server.
<ul>
 	<li>Add additional SUP Server/s</li>
 	<li>
<div>Remove SUP role from Primary Site and choose one of the remote SUP's as the new active source.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH9.png" /></li>
</ul>
<h1>Passive Site Server - Prerequisites</h1>
<h2>Operating System:</h2>
The passive site server can run <a href="https://docs.microsoft.com/en-us/sccm/core/plan-design/configs/supported-operating-systems-for-site-system-servers">any supported OS</a> and doesn't need to match the existing Primary Site Server OS.

This enables the scenario where you might want to move to a new OS for your Primary Site without performing an in-place upgrade or a backup/restore.
<h2>OS Features and ADK</h2>
<ul>
 	<li>Download and Install <a href="https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install">ADK</a><strong>
</strong></li>
</ul>
Install the following features –
<ul>
 	<li>Remote Differential Compression</li>
 	<li>
<div>Remote Server Administration Tools &gt; <strong>Windows Server Update Services Tools </strong>[WSUS sync will fail without this]</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH10.png" /></li>
</ul>
<h2>Permissions:</h2>
Add the System/Computer account of the Passive Site Server to the following locations –
<ul>
 	<li>Content Library Share – In case you missed from the previous step of moving the content library.</li>
 	<li>Administrators Group of Active/Current Primary Site Server.</li>
 	<li>Administrators Group of SQL Server (All nodes for SQL Clusters/AlwaysOn).</li>
 	<li>SMS Admins group on all SMS Providers.</li>
 	<li>System Management Container in AD.</li>
 	<li>
<div>SysAdmin on SQL Server (All nodes for SQL AlwaysOn). – Follow the instructions below –</div>
<ul>
 	<li>Launch SQL Server Management Studio</li>
 	<li>Expand <strong>Security</strong> and select the machine account of the current Active Primary Site (<em>Contoso\CM1$</em>)</li>
 	<li>
<div>Right click and choose <strong>Script Login as</strong> &gt; <strong>CreateTo</strong> &gt; <strong>New Query Editor Window</strong></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH11.png" /></li>
 	<li>
<div>Replace the computer account of the Active Primary Site to the Passive Primary Site and click <strong>Execute</strong>.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH12.png" /></li>
 	<li>Expand Databases &gt; ConfigMgr DB CM_P01 &gt; Security</li>
 	<li>Select the machine account of the current Active Primary Site (<em>Contoso\CM1$</em>)</li>
 	<li>
<div>Right click and choose <strong>Script Login as</strong> &gt; <strong>CreateTo</strong> &gt; <strong>New Query Editor Window</strong></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH13.png" /></li>
 	<li>
<div>Replace the computer account of the Active Primary Site to the Passive Primary Site and click <strong>Execute</strong>.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH14.png" /></li>
</ul>
</li>
</ul>
<h1>Installing Passing Site Server</h1>
Adding the Passive Site Server system is straight forward.
<ul>
 	<li>
<div>Create a new Site System Server from the Administration node.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH15.png" /></li>
 	<li>
<div>Browse the desired Passive Primary Site Server FQDN and click <strong>Next</strong></div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH16.png" /></li>
 	<li>
<div>From the Role Selection page, choose <strong>Site server in passive mode </strong>and click Next</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH17.png" /></li>
 	<li>Choose your desired option to provide the Source files.</li>
 	<li>
<div>Specify the Installation directory. [<span style="color: red">do not choose the root of the Program Files, it must be a directory inside and doesn't needs to be already present</span>]</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH18.png" /></li>
 	<li>
<div>Click Next to complete and finish the wizard.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH19.png" /></li>
 	<li>Validate the progress in the FailOverMgr.log</li>
</ul>
The Scheduler and Sender creates job to copy the files to the Passive Site Server. You can also check the ConfigMgrSetup.log on the root of the Passive Site Server.
<p style="margin-left: 18pt">Refer the <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/passive-site-server-flowchart">Installation Workflow</a> in this link.</p>

<ul>
 	<li>Validate the successful completion on the console. Both the Active and Passive Site Servers with status OK</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH20.png" />
<p style="margin-left: 18pt">The following Registry Keys are created which reflects the Passive Site Server –</p>

<ul>
 	<li>
<div>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Identification</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH21.png" /></li>
 	<li>
<div>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Site Failover</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH22.png" /></li>
</ul>
<h2>Troubleshooting Installation</h2>
If you experience issues while installation, let's say you missed a prerequisite and the installation failed, refer the below steps.
<ul>
 	<li>
<div>The Console status shows the Passive Site Server as Installation failed. You will get the right click option to Retry Installation</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH23.png" /></li>
 	<li>The reason for the failure is available under Monitoring &gt; Site Server Status</li>
 	<li>
<div>Click on Show Status to view the reason of failure.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH24.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH25.png" /></li>
 	<li>Once you resolve the issue, click Retry Installation.</li>
</ul>
<h2>Console</h2>
The ConfigMgr console is not installed as a part of the Passive Site Server installation and needs to be manually installed.
<ul>
 	<li>
<div>Go to Installation directory &gt; Tools &gt; ConsoleSetup folder to initiate the installation.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH26.png" /></li>
 	<li>Connect to the Passive Primary Site Server</li>
</ul>
<h1>Promote Passive Site Server - Planned</h1>
Its now time to test the Passive Site Server by promoting it as Active.
<ul>
 	<li>Console &gt; Administration &gt; Site Configuration &gt; Sites &gt; Nodes Tab</li>
 	<li>
<div>Select Passive Site Server &gt; Right click and choose Promote to Active and confirm.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH27.png" /></li>
 	<li>
<div>Note the change in Status from OK to <strong>Promoting </strong>(Passive to Active) and <strong>Installing</strong> for the Active to Passive site.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH28.png" />

Subsequent failover will only change to Promoting for the Passive Site as it doesn't need to install any components

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH29.png" /></li>
 	<li>Review the FailOverMgr.log on both the nodes.</li>
 	<li>
<div>The <strong>Mode</strong> (Active/Passive) switches between the two Site Servers and Status to <strong>OK</strong>.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH30.png" /></li>
 	<li>
<div>The Primary Site Server name changes to the Passive Site Server which we just promoted to Active.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH31.png" /></li>
</ul>
Here's a <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/promote-site-server-flowchart">Flowchart - Promote site server (planned)</a>
<h1>Promote Passive Site Server – Unplanned [<span style="color: red">30-minute delay]
</span></h1>
This will be an actual disaster scenario where the Active Primary Site Server is offline, and you need to promote the Passive Site Server to Active. There is no automatic failover.

The steps are same as above to switch a Passive Site Server to Active via the ConfigMgr Console.

<strong>Note</strong> – There is a 30-minute wait before the Passive Site Server switches to Active mode. Refer the <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/promote-site-server-unplanned-flowchart">Unplanned Workflow</a> snippet below. The time start when you click Promote Active and not since the server is actually offline which could be longer.

I had to restart the Site Server to fully initialize and act as an Active Site Server.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/09/090118_2103_StepbystepH32.png" />
<h1>Limitations and Non-HA Site System Roles</h1>
<ul>
 	<li>
<div>Refer the Site Server HA Limitations in <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/site-server-high-availability">this link</a>.</div></li>
 	<li>
<div>Certain Site System roles do not support high availability (example – Service Connection Point), the option is to Uninstall and Reinstall the role on a new server. Refer <a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/configure/high-availability-options">this link</a> for guidance on each role.</div></li>
 	<li>When you have two primary sites(active/passive), it may get confusing when you are troubleshooting and looking at logs. Always check the time stamps to be sure.</li>
</ul>
<strong>Thanks,
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>Inventory Installed Updates missing from QFE Class</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/inventory-installed-updates-missing-from-qfe-class</link>
      <pubDate>Fri, 22 Jun 2018 22:07:17 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=9605</guid>
      <description><![CDATA[In ConfigMgr we have the capability to inventory the QFE [Win32_Quick Fix Engineering] class to...]]></description>
      <content:encoded><![CDATA[In ConfigMgr we have the capability to inventory the QFE [Win32_Quick Fix Engineering] class to query the installed Hotfixes. The <span style="text-decoration: underline">challenge</span> here is not all updates are reported in this Class like the Quality Rollups.

So how do we capture the missing updates? Here's a PowerShell query to gather the desired information -

<img width="374" height="94" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn1.png" />

For reporting purposes, we need to capture this data into the ConfigMgr DB. I did this by creating a custom WMI Class and dumping the output of the above query as a WMI Instance of the custom Class and extend the Hardware Inventory for reporting purposes.
<h2>Import Hardware Inventory MOF</h2>
Let's start by importing the Custom inventory class MOF to ConfigMgr. This can be only done from the Default Settings and not a custom device setting.

Open the Default Client Settings &gt; Hardware Inventory &gt; Click Set Classes

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn2.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn3.png" />

Click Import and here's the .MOF file, you need to import. &lt;<a target="_blank" href="https://msdnshared.blob.core.windows.net/media/2018/06/Query_Updates.MOF_.txt" rel="noopener">Download Query_Updates.MOF</a>&gt;

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn4.png" />

Click OK on the default option and verify a successful import.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn5.png" />    <img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn6.png" />
<h2>Customizations</h2>
The attached PowerShell script &lt;<a target="_blank" href="https://msdnshared.blob.core.windows.net/media/2018/06/Query_Updates.ps1_.txt" rel="noopener">Download Query_Updates.ps1</a>&gt; does the following –
<ul>
 	<li>Creates the Custom WMI Class and Instance</li>
 	<li>Gather's installed updates data [Thanks to <a target="_blank" href="https://social.technet.microsoft.com/profile/Russ+Rimmerman+%5BMSFT%5D" rel="noopener">Russ Rimmerman</a> for helping me on this part]</li>
 	<li>Inserts into each Instance of the custom WMI class</li>
 	<li>
<div>Executes a Hardware Inventory Cycle.</div></li>
</ul>
<h2>Deploy Script</h2>
You can create a Package and a Program to execute the above PowerShell script and schedule to re-run.

<strong>Program Command Line</strong> - PowerShell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -NonInteractive -File Query_Updates.ps1

<strong>Schedule</strong> – No recommendation here. (I've configured it to execute every 5 days and always rerun program.)

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn7.png" />
<h2>Output</h2>
Refer the Resource Explorer to view the captured data.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn8.png" />

You can also query this information directly from the Database.

<span style="font-family: Consolas;font-size: 9pt"><span style="color: blue">select</span> <span style="color: gray">*</span> <span style="color: blue">from</span> Query_Updates_DATA
</span>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/062318_0212_InventoryIn9.png" />

&nbsp;

<a target="_blank" href="https://msdnshared.blob.core.windows.net/media/2018/06/Query_Updates.ps1_.txt" rel="noopener">Query_Updates.ps1</a>

<a target="_blank" href="https://msdnshared.blob.core.windows.net/media/2018/06/Query_Updates.MOF_.txt" rel="noopener">Query_Updates.MOF</a>

&nbsp;

<strong>Thanks,
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>Step-By-Step: Cloud Management Gateway on ARM</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/step-by-step-cloud-management-gateway-on-arm</link>
      <pubDate>Sat, 31 Mar 2018 22:57:33 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=7225</guid>
      <description><![CDATA[Introduction
Starting ConfigMgr 1802 Cloud Management Gateway is NO longer a Pre-release feature...]]></description>
      <content:encoded><![CDATA[<h1>Introduction</h1>
Starting ConfigMgr 1802 Cloud Management Gateway is NO longer a Pre-release feature and introduced the option of Azure Resource Manager [ARM] deployment.

This removes the requirement of the traditional Azure Management Certificate and relies on Azure AD auth. to create the modern resources.

<strong>Note</strong> – The CMG deployment with ARM continues to use the classic cloud service, which the Cloud Service Provider [CSP] doesn't support.

This blog post intents to give you a step by step instructions of implementing CMG on ARM.
<h1>Environment</h1>
Here's a snapshot of the lab environment I used to implement this feature.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC1.png" />

<strong>Note</strong> - Starting 1802 you can no longer host an HTTP MP to listen to CMG traffic. The change is introduced to provide better support for Azure AD token-based auth.
<h1>1    Certificates</h1>
The following certificates are required -
<ul>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Client Authentication Certificate – For Clients and MP
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Server Authentication Certificate – For HTTPS - MP
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Cloud Management Gateway Certificate – For CMG
</span></div></li>
 	<li>
<div style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Trusted Root Certificate – For CMG
</span></div></li>
</ul>
<p style="background: white"><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">Here's a table for additional clarification –
</span></p>
<p style="background: white"><img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC2.png" /><span style="color: #333333;font-family: Segoe UI;font-size: 10pt">
</span></p>

<h2>1.1     Instructions</h2>
Refer this table for instructions to generate the required certificates.
<div>
<table style="border-collapse: collapse" border="0"><colgroup> <col style="width: 192px" /> <col style="width: 1385px" /></colgroup>
<tbody valign="top">
<tr style="height: 45px;background: #5b9bd5">
<td style="padding-left: 18px;padding-right: 18px;border-top: solid #5b9bd5 0.5pt;border-left: solid #5b9bd5 0.5pt;border-bottom: solid #5b9bd5 0.5pt;border-right: none">
<p style="text-align: center"><span style="color: white"><strong>Type</strong></span></p>
</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: solid #5b9bd5 0.5pt;border-left: none;border-bottom: solid #5b9bd5 0.5pt;border-right: solid #5b9bd5 0.5pt">
<p style="text-align: center"><span style="color: white"><strong>Instructions to create</strong></span></p>
</td>
</tr>
<tr style="height: 108px">
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">Client Authentication Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt"><a href="https://technet.microsoft.com/en-us/library/gg682023.aspx">https://technet.microsoft.com/en-us/library/gg682023.aspx#Deploying%20the%20Client%20Certificate%20for%20Windows%20Computers</a></td>
</tr>
<tr style="height: 117px">
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">Client – Trusted Root Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">On a client PC, follow the instructions –
<ol>
 	<li>MMC &gt; Add remove snap-in</li>
 	<li>Certificates &gt; Local Computer</li>
 	<li>Personal &gt; Certificates</li>
 	<li>Right click and Open</li>
 	<li>Click on Details Tab</li>
 	<li>Click Copy to File</li>
</ol>
Follow the defaults from the wizard to save the certificate file.</td>
</tr>
<tr style="height: 117px">
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">CMG – Trusted Root Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">The above certificate will work if you are using the same CA, else get the Trusted Root CA cert from the Certificate authority. Not needed for public CA's</td>
</tr>
<tr style="height: 117px">
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">Server Authentication Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt"><a href="https://technet.microsoft.com/en-us/library/gg682023.aspx">https://technet.microsoft.com/en-us/library/gg682023.aspx#Deploying%20the%20Web%20Server%20Certificate%20for%20Site%20Systems%20that%20Run%20IIS</a></td>
</tr>
</tbody>
</table>
</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC3.png" />

I have generated the following certificates from my CA (Trusted Root cert was copied from client cert) -
<div>
<table style="border-collapse: collapse" border="0"><colgroup> <col style="width: 585px" /> <col style="width: 435px" /> <col style="width: 660px" /></colgroup>
<tbody valign="top">
<tr style="background: #5b9bd5">
<td style="padding-left: 18px;padding-right: 18px;border-top: solid #5b9bd5 0.5pt;border-left: solid #5b9bd5 0.5pt;border-bottom: solid #5b9bd5 0.5pt;border-right: none"><span style="color: white"><strong>Type</strong></span></td>
<td style="padding-left: 18px;padding-right: 18px;border-top: solid #5b9bd5 0.5pt;border-left: none;border-bottom: solid #5b9bd5 0.5pt;border-right: none"><span style="color: white"><strong>Name</strong></span></td>
<td style="padding-left: 18px;padding-right: 18px;border-top: solid #5b9bd5 0.5pt;border-left: none;border-bottom: solid #5b9bd5 0.5pt;border-right: solid #5b9bd5 0.5pt"><span style="color: white"><strong>Notes</strong></span></td>
</tr>
<tr>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">CMG Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">cmgarm.contoso.net</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">For Cloud Management Gateway</td>
</tr>
<tr>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">Server Authentication Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">remote2.contoso.net</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">For HTTPS Management Point</td>
</tr>
<tr>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: solid #9cc2e5 0.5pt;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">Client Authentication Certificate</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">win102.contoso.net</td>
<td style="padding-left: 18px;padding-right: 18px;border-top: none;border-left: none;border-bottom: solid #9cc2e5 0.5pt;border-right: solid #9cc2e5 0.5pt">For the test client running Windows 10</td>
</tr>
</tbody>
</table>
</div>
<h1>2    HTTPS Configuration</h1>
We need to configure the Primary Site &amp; Management Point for certificate authentication.
<h2>2.1    Primary Site -</h2>
<ul>
 	<li>Go to <strong>Administration</strong> &gt; Site Configuration &gt; Sites</li>
 	<li>Properties of Primary site &gt; <strong>Client Computer Communication</strong> Tab</li>
 	<li>Check the box – <strong>Use PKI client certificate (client authentication capability) when available</strong>.</li>
 	<li>Clear the box – Clients check the certificate revocation list (CRL) for site systems. [<span style="color: red"><strong>Clear this only if you haven't published the CRL on internet.</strong></span>]</li>
 	<li>Under Trusted Root Certification Authorities click <strong>Set</strong> to specify the Client Root Certificate from section 1.1</li>
 	<li>Click <strong>OK</strong> to commit the changes.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC4.png" />
<h2>2.2    Management Point –</h2>
Before proceeding, make sure that you have already associated the Server Auth. Certificate (remote2.contoso.net in my case) in the IIS website Bindings as per <a href="https://technet.microsoft.com/en-us/library/gg682023.aspx">instructions</a> (<em>Configuring IIS to Use the Web Server Certificate</em>) in step 1.1

Next Steps -
<ul>
 	<li>Go to <strong>Administration</strong> &gt; Site Configuration &gt; Servers and Site System Roles</li>
 	<li>Select the Site Server holding the MP role which you plan to change to HTTPS. [Remote2.contoso.net in my case]</li>
 	<li>Under Site System Roles, select <strong>Management point</strong> and go to it properties</li>
 	<li>
<div>Change the Client connections to <strong>HTTPS</strong> and click OK</div>
<em>Monitor the mpsetup.log for a successful install and mpcontrol.log to validate the health
</em></li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC5.png" />
<h1>3    Configure – Azure Services</h1>
For the new CMG-ARM model, we first need to configure Azure Services by creating a Web and Client applications which will be leveraged by CMG to create Azure resources.
<ul>
 	<li>On the ConfigMgr Console, go to <strong>Administration</strong> &gt; Cloud Services &gt; Azure Services.</li>
 	<li>Click <strong>Configure Azure Services</strong> on the ribbon menu.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC6.png" />
<ul>
 	<li>Select <strong>Cloud Management</strong> in the Wizard.</li>
 	<li>Provide a <strong>Name</strong> and click Next to proceed.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC7.png" />
<ul>
 	<li>Click on <strong>Browse</strong> to either Import an existing App or click Create to start with a fresh App.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC8.png" />
<ul>
 	<li>You need to <strong>Sign</strong> in with a Subscription Admin.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC9.png" />

Follow the steps for both Web and Client App to proceed with the wizard.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC10.png" />

Click <strong>Next</strong>, Enable Azure AD User discovery is not required for CMG and is optional if you'd like to check it and finish the wizard.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC11.png" />
<h1>4    Setup CMG</h1>
Now we are all set to configure CMG.
<ul>
 	<li>On the ConfigMgr Console, go to <strong>Administration</strong> &gt; Cloud Services &gt; Cloud Management Gateway</li>
 	<li>Click <strong>Create Cloud Management Gateway</strong> on the ribbon menu.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC12.png" />
<ul>
 	<li>Choose <strong>Azure Resource Manager deployment</strong></li>
 	<li><strong>Sign In</strong> with Azure Subscription Admin account</li>
 	<li>The subscription info and the Web App created in Section 3 will auto populate. Click <strong>Next</strong> to proceed.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC13.png" />
<ul>
 	<li>
<div>Click <strong>Browse</strong> to specify the CMG Certificate generated by following instructions from Step 1.1 in my lab I used cmgarm.contoso.net</div>
This will auto populate the Service name.</li>
 	<li>Choose your Azure <strong>Region</strong></li>
 	<li>Choose <strong>Create new</strong> under Resource Group.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC14.png" />
<ul>
 	<li><strong>Add</strong> the Client Trusted Root Certificate from section 1.1</li>
 	<li>Verify Client Certificate Revocation checkbox [<span style="color: red"><strong>Clear this only if you haven't published the CRL on internet.</strong></span>]</li>
 	<li>Click <strong>Next</strong> to finish the Wizard.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC15.png" />

The deployment in azure begins -

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC16.png" />

<strong>CloudMgr.log</strong> will show the details of the CMG deployment. Sample snippet below –

<span style="font-size: 10pt"><em>Resource Manager - <span style="background-color: yellow">Creating resource group cmgarm with location South Central US</span>        SMS_CLOUD_SERVICES_MANAGER        3/27/2018 6:02:27 PM        3140 (0x0C44)
</em></span>

<span style="font-size: 10pt"><em>Resource Manager - Resource group cmgarm created        SMS_CLOUD_SERVICES_MANAGER        3/27/2018 6:02:28 PM        3140 (0x0C44)
</em></span>

<span style="font-size: 10pt"><em>Resource Manager - <span style="background-color: yellow">Creating cloud service cmgarm</span> with deployment CreateCloudServiceba0f51cf-SMS_CLOUD_SERVICES_MANAGER        3/27/2018 6:02:28 PM        3140 (0x0C44)
</em></span>

<span style="font-size: 10pt"><em>Resource Manager - <span style="background-color: yellow">Creating storage service cmgarm</span> with deployment CreateStorageService7cabb6ec-SMS_CLOUD_SERVICES_MANAGER        3/27/2018 6:02:45 PM        3140 (0x0C44)
</em></span>

<span style="font-size: 10pt"><em>Uploading file C:\Program Files\Microsoft Configuration Manager\inboxes\cloudmgr.box\CloudProxyService.cspkg to container deploymentcontainer with blob name cmgarm.cspkg in storage account cmgarm        SMS_CLOUD_SERVICES_MANAGER        3/27/2018 6:08:44 PM        3140 (0x0C44)</em>
</span>

Log in to the <strong>Azure Console</strong> to view the resources

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC17.png" />

Validate the status Ready from ConfigMgr console.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC18.png" />
<h2>4.1    CMG – Connection Point</h2>
This is the on-premise site system role dedicated for communication with CMG in Azure.
<ul>
 	<li>Add new site system role and choose Cloud Management Gateway connection point</li>
 	<li>Validate the Gateway name we just created and the Region to finish the wizard.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC19.png" />

The Connection Point server will show as associated in the console. For troubleshooting this component, you can check <strong>SMS_Cloud_ProxyConnector.log</strong>.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC20.png" />
<h2>4.2    Allow Gateway Traffic</h2>
We need to configure the Management Points and Software Update Points to listen to CMG traffic from Internet clients.
<ul>
 	<li>On the Management Point Properties, check the box <strong>Allow Configuration Manager cloud management gateway traffic</strong></li>
 	<li>Follow the same steps for Software Update Point.</li>
</ul>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC21.png" />

Once associated, the server endpoints will be listed under CMG – Connection Point

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC22.png" />
<h1>5    Client Validation</h1>
The client machines will receive CMG connection info which can be verified by the following registry key – <span style="color: #333333;font-family: Segoe UI;font-size: 10pt;background-color: white"><strong>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Client\Internet Facing
</strong></span>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC23.png" />

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC24.png" />

On a test client outside corporate network, check <strong>CCMMessaging.log</strong> to validate a successful communication with CMG

<span style="font-size: 10pt">Raising event:
</span>

<span style="font-size: 10pt">instance of CCM_CcmHttp_Status
</span>

<span style="font-size: 10pt">{
</span>
<p style="margin-left: 27pt"><span style="font-size: 10pt">ClientID = "GUID:12EF623B-2210-4C6B-A718-5CB7EB768BF7";
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt">DateTime = "20180328050333.897000+000";
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt"><span style="background-color: yellow">HostName = "CMGARM.CONTOSO.NET";</span>
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt">HRESULT = "0x00000000";
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt">ProcessID = 2100;
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt">StatusCode = 0;
</span></p>
<p style="margin-left: 27pt"><span style="font-size: 10pt">ThreadID = 5228;
</span></p>
<span style="font-size: 10pt">};
</span>
<p style="margin-left: 27pt"><span style="font-size: 10pt">CcmMessaging        3/27/2018 10:03:33 PM        5228 (0x146C)
</span></p>
Initiate a Machine Policy Cycle and verify a successful download from <strong>PolicyAgent.log</strong>

<span style="font-size: 10pt">Initializing download of policy 'CCM_Policy_Policy5.PolicyID="{bbeea4ad-d0bf-4d64-b0a3-fabe72e99c56}",PolicySource="SMS:P01",PolicyVersion="33.00"' from '<a href="https://CMGARM.CONTOSO.NET/CCM_Proxy_MutualAuth/72057594037927959/SMS_MP/.sms_pol?%7bbbeea4ad-d0bf-4d64-b0a3-fabe72e99c56%7d.33_00">https://CMGARM.CONTOSO.NET/CCM_Proxy_MutualAuth/72057594037927959/SMS_MP/.sms_pol?{bbeea4ad-d0bf-4d64-b0a3-fabe72e99c56}.33_00</a>'        PolicyAgent_ReplyAssignments        3/27/2018 10:05:04 PM        7588 (0x1DA4)
</span>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2018/03/040118_0357_StepByStepC25.png" />

<strong>Thanks,
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>Using ConfigMgr Co-Management to offload Windows Updates to Intune</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/using-configmgr-co-management-to-offload-windows-updates-to-intune</link>
      <pubDate>Tue, 12 Dec 2017 01:18:12 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=5925</guid>
      <description><![CDATA[This post walks through moving Windows Update workloads to Intune. Co-Management for Windows 10...]]></description>
      <content:encoded><![CDATA[This post walks through moving Windows Update workloads to Intune. <a href="https://docs.microsoft.com/en-us/sccm/core/clients/manage/co-management-overview">Co-Management for Windows 10 devices</a> introduced in ConfigMgr 1710 release which enables you to move various workloads from traditional on-premise management to newer modern management capabilities hosted in cloud like Intune.

One of the most sought-after requirement by enterprises is patch compliance and keep devices secure no matter where they are. For machines outside the corporate network, this typically requires hosting SUP in DMZ with IBCM or implementing CMG. However, in this case we will use Intune to deploy Windows 10 Quality and Feature updates.
<h2>Requirements –</h2>
<a href="https://docs.microsoft.com/azure/active-directory/device-management-hybrid-azuread-joined-devices-setup">Hybrid Azure AD joined</a> (joined to AD and Azure AD)

<a href="https://docs.microsoft.com/intune/windows-enroll">Azure AD automatic enrollment</a>

Intune Subscription

Windows 10 version 1709
<h2>Co-Management Setup –</h2>
From a ConfigMgr 1710 console click <strong>Administration</strong> &gt; <strong>Cloud Services</strong> &gt; <strong>Co-management</strong> to launch the wizard. Sign In with your Intune account.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig1.png" />

<strong>Note </strong>– If its failing to connect, check the account has license for Intune/EMS.

Now as we are ready to setup co-management, you want to decide if you'd like to Pilot the setting or apply for all clients. I am going with Pilot for testing.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig2.png" />

Now its time to move the workloads. In this case, we are moving the Windows Update policies to Intune.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig3.png" />

Choose a <span style="text-decoration: underline">collection</span> for the pilot group of computers.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig4.png" />

Click <strong>Next</strong> to finish the wizard.

You will notice a configuration policy deployment is created and targeted against the collection you chose. A corresponding Production policy is also created and targeted against All System collection.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig5.png" />
<h2>Intune Software Updates Configuration –</h2>
Next, we need to configure Software Updates policies in Intune.

From the Intune console, click on <strong>Software Updates</strong> &gt; <strong>Windows 10 Updates Rings</strong>.

Create policy as desired settings and <strong>Assign</strong> to a Group of devices. (sample screenshots). For guidance on these settings refer this link - <a href="https://docs.microsoft.com/en-us/intune/windows-update-for-business-configure">https://docs.microsoft.com/en-us/intune/windows-update-for-business-configure</a>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig6.png" />

The client will receive new MDM policies for deployment. MDM Registry settings are stored in - <strong>HKLM\Software\Microsoft\PolicyManager\current\device\Update</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig7.png" />

If you notice above screenshot has a policy named "<strong>Do not connect to any Windows Update Internet locations</strong>" This is in fact the Dual Scan Policy Enabled by ConfigMgr which blocks the client's ability to scan against Internet (Microsoft Update)

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig8.png" />
<h2>ConfigMgr Windows Update for Business Policy –</h2>
From the ConfigMgr console, create a Windows Update for Business Policy (matching the Intune policy) and target against the same collection of machines. This will disable the dual scan deferral policy.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig9.png" />

Now the client is ready to receive updates as per Intune defined settings for Software Updates.

I have a 30-day deferral for Quality Updates, below is a screenshot of device after only applying the October updates. Checking for new updates don't offer November updates.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig10.png" />
<h2>Reporting –</h2>
The ConfigMgr compliance reports will stop reporting the compliance for Quality &amp; Feature Updates. You will have to rely on Intune dashboard &gt; Software Updates Overview which isn't very detailed and I highly recommend implementing <a href="https://docs.microsoft.com/en-us/windows/deployment/update/update-compliance-monitor">Windows Analytics Updates Compliance</a> feature in OMS.
<h2>Managing Office 365 Updates –</h2>
You can continue using ConfigMgr to deploy Office 365 updates and report its compliance
<h2>Troubleshooting –</h2>
<strong>Verify Azure AD Hybrid Join Status</strong> – Use the command <strong>dsregcmd /status</strong> If the machine isn't Hybrid Azure AD joined, implementing Co-Management features will not help. You will see the device listed in <strong>Azure AD</strong> &gt; <strong>All Devices</strong>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig11.png" />

<strong>Verify Intune Management</strong> – You should see the device listed in <strong>Intune</strong> &gt; <strong>All Devices</strong>. If you don't see your device, make sure its member of CoMgmt collection and Intune device group which has targeted Software Updates Policies.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig12.png" />

For troubleshooting you can refer <strong>CoManagementHandler.log</strong> on client PC.

Sync device to receive Intune MDM Policies. If you don't see Info button, its an indication machine isn't registered in Intune yet.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/12/121217_0631_UsingConfig13.png" />

<strong>Thanks
</strong>

<strong>Arnab Mitra
</strong>]]></content:encoded>
    </item>
    <item>
      <title>CMG Tip – Why you shouldn’t disable CMG from the default client setting</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/cmg-tip-why-you-shouldnt-disable-cmg-from-the-default-client-setting</link>
      <pubDate>Wed, 01 Nov 2017 00:21:04 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=5705</guid>
      <description><![CDATA[If you are planning to use the Default Client Settings from 1706 to disable cloud management gateway...]]></description>
      <content:encoded><![CDATA[If you are planning to use the <strong>Default Client Settings</strong> from 1706 to disable cloud management gateway which is enabled by default, you should reconsider your decision if you'd like to perform <a href="https://blogs.technet.microsoft.com/arnabm/2017/08/27/client-installation-over-internet/">client installation over internet</a> because the client will never receive the custom device settings.
<h2>Finding</h2>
If you end up in the above situation, you won't see any policy downloads –

<em>PolicyAgent.log</em> -

<em><span style="color: red">Synchronous policy assignment request with correlation guid {14F22612-ECB8-4D5E-B9A0-0FEC930CF69A} for Machine DESKTOP-OAV38LH completed with status <span style="background-color: yellow">87D00231</span>        PolicyAgent_RequestAssignments        10/28/2017 8:49:42 PM        6368 (0x18E0)</span>
</em>

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/110117_0519_CMGTipWhyy1.png" />

From the ClientLocation.log you will find the actual cause -

<em><span style="color: red"><span style="background-color: yellow">Cloud Management Gateway is not allowed to use on this machine</span>        ClientLocation        10/28/2017 9:10:12 PM        3840 (0x0F00)</span>
</em>

The resultant client setting can be misleading here –

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/110117_0519_CMGTipWhyy2.png" />

Using the PolicySpy tool, I could confirm CMG is in fact disabled.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/110117_0519_CMGTipWhyy3.png" />
<h2>Recommendation</h2>
A better approach to disable the cloud management gateway for clients which are always on-premise (Desktops/Servers) would be to create a client setting for Intranet Only devices.

Changing this now won't remediate this existing Internet facing client because it's not allowed to receive any polices from CMG unless you reinstall the agent to receive the default client settings.

&nbsp;

&nbsp;

&nbsp;

<span style="font-size: 12pt"><strong>Thanks,
</strong></span>

<span style="font-size: 12pt"><strong>Arnab Mitra</strong>
</span>]]></content:encoded>
    </item>
    <item>
      <title>Windows 10 Compatibility Scan with Configuration Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/arnabm/windows-10-compatibility-scan-with-configuration-manager</link>
      <pubDate>Thu, 21 Sep 2017 18:23:05 GMT</pubDate>
      <dc:creator><![CDATA[Arnab Mitra [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/arnabm/?p=5286</guid>
      <description><![CDATA[Before deploying Windows 10, it's a good idea to check the readiness of your existing machines...]]></description>
      <content:encoded><![CDATA[Before deploying Windows 10, it's a good idea to check the readiness of your existing machines running Windows 7, 8/8.1, Or even Windows 10.

In this blog post I will use <strong>setup.exe</strong> with <strong>/compat scanonly</strong> switch to check the compatibility without performing the upgrade. The reason for not choosing the Upgrade task sequence for this job is to avoid sending the whole 3.5 GB source files over the network.
<h3>Package &amp; Command line</h3>
Here's the command line with switches to silently check the compatibility. <span style="font-size: 10pt"><strong><em>setup.exe /Auto Upgrade /Quiet /NoReboot /Compat ScanOnly</em></strong></span>

Since the clients don't need to download the full set of source files to check the compatibility, as the setup.exe only validates the existence of the files which can be even on a network share. Instead of creating a package with full set of source files, all i am using is a 1KB batch file to call a network share where the source files are located.

Command line of the batch file: -

<span style="font-size: 10pt"><strong><em>start /wait \\&lt;ServerShare&gt;\setup.exe /Auto Upgrade /Quiet /NoReboot /Compat ScanOnly
</em></strong></span>

<span style="font-size: 10pt"><strong><em>exit /b %errorlevel%</em></strong></span>

The client will still download some source files which is significantly less than the whole set. Here's a snapshot of the SMB traffic during this operation -

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co1.png" />
<h3>Program</h3>
The program for the package above simply executes the batch file. Based on the above network traffic, you might want to set the estimated disk space and the Max allowed run time.

It should run regardless a user is logged on or not.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co2.png" />
<h3>Results</h3>
The resultant output of the scan results is not the typical 0 for success, refer the table below for the list expected <strong>Decimal Output</strong> returned by ConfigMgr and <strong>Hex Code</strong> returned by the windows setup log files.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co3.png" />
<h3>Reporting</h3>
For reporting purposes, you can leverage the <em>attached report</em> which takes the package name as input. Refer the screenshot below.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co4.png" />
<h1>Task Sequence</h1>
The above package can also be called out in a Task Sequence where you can add additional steps to capture logs in case of failure. <em>Attaching the exported TS for reference</em>.

Step 1 – Add an Install Package step to run the above package. Make sure you check the box <strong><em>Continue on error</em></strong> in the Options tab.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co5.png" />

Step 2- Add a group to Capture Logs if the result is anything other than -1047526896 which is Success/No issues found.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co6.png" />

Step 3 – Map Network Drive to a server share where you want to dump the log files

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co7.png" />

Step 4 – Create Folder for each computer.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co8.png" />

Step 5 – Copy the Log files to the network share.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co9.png" />

Step 6 – Copy the XML files to the network share.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co10.png" />

Step 7 – Disconnect the Network Drive

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co11.png" />
<h3>Reporting – TS</h3>
Refer the <em>attached report</em> which takes the Task Sequence name as input to display the compatibility results. Screenshot below.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/092117_2104_Windows10Co12.png" />

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/Reports.zip">Download Reports</a> - <strong>Note</strong> – The reports are built using SSRS 2016 schema.

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/Legacy.zip">Legacy Reports</a> - For importing into SSRS 2008 R2, 2012 &amp; 2014

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/TS.zip">Download Task Sequence</a>

&nbsp;

&nbsp;

<strong>Thanks,
</strong>

<strong>Arnab Mitra</strong>]]></content:encoded>
    </item>
  </channel>
</rss>