<?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>The Manageability Guys</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/manageabilityguys/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/feed.xml</link>
    <description>The PFE UK Manageability team</description>
    <lastBuildDate>Mon, 19 Feb 2018 15:53:05 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Don’t forget the SSRS switches!!</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/dont-forget-the-ssrs-switches</link>
      <pubDate>Mon, 19 Feb 2018 15:53:05 GMT</pubDate>
      <dc:creator><![CDATA[Bob Bird]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/?p=3175</guid>
      <description><![CDATA[A short post but I hope it is useful.

SCOM has some great inbuilt reports that you can get to...]]></description>
      <content:encoded><![CDATA[A short post but I hope it is useful.

SCOM has some great inbuilt reports that you can get to from the console.

But what if you don’t want loads of consoles installed (there is a limit in a Management Group after all). That is easy, use SSRS. OK so you set up a link to a report. The only thing is now your user gets the Smart Header but in SSRS format, which is not really desirable.

SSRS has a neat way to get round this.

Two switches fit here:

&amp;rc:Parameter=false

&amp;rc:Toolbar=false

The key part here is to use the url form the “ReportServer” page not the “Reports” page as you might expect.

So create a link that looks something like this:

<a href="https://%3cssrs_server%3e/ReportServer/ReportName.rdl&amp;rc:Parameter=false">https://&lt;SSRS_Server&gt;/ReportServer/ReportName.rdl&amp;rc:Parameter=false&amp;rc:Toolbar=false</a>

You will get a web rendered report but with no header or toolbar (clearly).

You can then use this in SharePoint web parts for example to give people access to the reports they want but without the “clutter”

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Setting System Center Orchestrator Runbook Operator Privileges</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/setting-system-center-orchestrator-runbook-operator-privileges</link>
      <pubDate>Wed, 23 Nov 2016 13:00:00 GMT</pubDate>
      <dc:creator><![CDATA[S.Carrilho]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/?p=2865</guid>
      <description><![CDATA[Hi,  Common question I keep getting asked by my customers is: How do I set Orchestrator Operator...]]></description>
      <content:encoded><![CDATA[<p><font size="2">Hi, </font> <p><font size="2">Common question I keep getting asked by my customers is: How do I set Orchestrator Operator privileges in specific Runbook contexts? </font> <p><font size="2">This post is all about providing you with a simple and precise set of guidelines to enable to answer the question above. </font> <h2>The Scenario: </h2> <p><font size="2">"WSUS Operators" Domain Group needs to only gain Operator access to Start/Stop/Assess Runbook execution on the WSUS Runbook structure within Orchestrator while using the Orchestrator Console. </font> <h2>Enabling listing of Runbooks\Folders </h2> <p><font size="2">This is required otherwise nothing is listed on the Orchestrator Console. </font> <p><font size="2">Set User or Group (recommended) on "Runbooks" root folder on the Designer Tool </font> <ul> <li><font size="2">Right-click Runbooks &gt; Permissions</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00123.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00124.png"><img title="clip_image001" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image001_thumb10.png" width="317" height="260"></a></font></a><font size="1"> </font> <ul> <li><font size="2">Click Add to include the Group ("WSUS Operators" in this example)</font></li></ul> <p><font size="1">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00212.png"><img title="clip_image002" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image002_thumb8.png" width="717" height="305"></a></font> <ul> <li><font size="2">Click Advanced </font> <li><font size="2">Select the group you added </font> <li><font size="2">Click Edit </font> <li><font size="2">Click Show Advanced Permissions </font> <li><font size="2">Set permissions as follows:</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00310.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00311.png"><img title="clip_image003" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image003" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image003_thumb6.png" width="519" height="315"></a></font></a><font size="1"> </font> <ul> <li><font size="2">Click Ok &gt; Apply &gt; OK &gt; OK </font> <li><font size="2">Permissions should then show as follows:</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00411.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image00412.png"><img title="clip_image004" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image004_thumb6.png" width="719" height="257"></a></font></a><font size="1"> </font> <p><font size="2">NOTE: To make changes quickly effective run the following SQL statement against your Orchestrator Database: </font> <p><font size="1"><font size="2">TRUNCATE TABLE [Microsoft.SystemCenter.Orchestrator.Internal].AuthorizationCache</font> </font> <p><font size="1"></font>&nbsp; <h2>Setting specific Runbook Execution privileges </h2> <p><font size="2">Set permissions for User or Group (recommended) on Specific Runbooks\Folders (Read, List, Publish)</font> <ul> <li><font size="2">Right-click the specific folder (in this case "WSUS") &gt; Permissions</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0052.png"><font size="1"><img title="clip_image005" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image005" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image005_thumb1.png" width="214" height="244"></font></a><font size="1"> </font> <ul> <li><font size="2">Click Add to include the Group ("WSUS Operators" in this example)</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0066.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0066.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0067.png"><img title="clip_image006" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image006_thumb1.png" width="651" height="317"></a></font></a></font></a><font size="1"> </font> <ul> <li><font size="2">Click Advanced </font> <li><font size="2">Select the group you added </font> <li><font size="2">Click Edit </font> <li><font size="2">Click Show Advanced Permissions </font> <li><font size="2">Set permissions as follows:</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0077.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0078.png"><img title="clip_image007" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image007" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image007_thumb1.png" width="612" height="338"></a></font></a><font size="1"> </font> <ul> <li><font size="2">Click Ok &gt; Apply &gt; OK &gt; OK </font> <li><font size="2">Permissions should then show as follows:</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0085.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0086.png"><img title="clip_image008" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image008_thumb1.png" width="517" height="340"></a></font></a><font size="1"> </font> <p><font size="2">NOTE: To make changes quickly effective run the following SQL statement against your Orchestrator Database: </font> <p><font size="2">TRUNCATE TABLE [Microsoft.SystemCenter.Orchestrator.Internal].AuthorizationCache </font> <p><font size="1"></font>&nbsp; <ul> <li><font size="2">The Orchestrator Console should show as follows, hence preventing access to the other Runbook contexts for a given Operator member of the "WSUS Operators" group:</font></li></ul> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0097.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0098.png"><img title="clip_image009" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image009" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image009_thumb2.png" width="757" height="308"></a></font></a><font size="1"> </font> <p><font size="2">The above is shown regardless of the additionally existent Runbooks\Folders: </font> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0106.png"><font size="1"><a href="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image0107.png"><img title="clip_image010" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/2016/11/clip_image010_thumb1.png" width="406" height="266"></a></font></a><font size="1"> </font> <p><font size="1"></font>&nbsp; <p><font size="1"><font size="2">Hope the above helps!</font> </font> <p><font size="1"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Update your VMM Managed Hyper-V Host Agents with PowerShell</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/update-your-vmm-managed-hyper-v-host-agents-with-powershell</link>
      <pubDate>Tue, 14 Jun 2016 09:28:26 GMT</pubDate>
      <dc:creator><![CDATA[SimmoLeigh]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/?p=2465</guid>
      <description><![CDATA[Hey there, the kids are finally in bed and the dog is snoring on the sofa, which means I've got some...]]></description>
      <content:encoded><![CDATA[Hey there, the kids are finally in bed and the dog is snoring on the sofa, which means I've got some time to get this blog finished.

Firstly, I need to start this post with a caveat, a PowerShell related caveat...  I'm not a PowerShell guru!  The PowerShell gurus out there can probably smell the lack of PowerShell guru-ness emanating from my blog already... but I'm going to plough on regardless as this particular script should make upgrading the Host Agent on your VMM Managed computers much easier.

The scenario goes something like this... After you’ve deployed an Update Rollup to your VMM Server(s), you will need to update the Agent version on all VMM Managed servers (Hyper-V Hosts, Library Servers, Update Server, PXE Server etc…).  Notice in my environment, the Hosts are showing a status of "Needs Attention"...

&nbsp;
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image9.png"><img width="448" height="129" class="alignnone size-full wp-image-2585" alt="Image9" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image9.png" /></a></p>
&nbsp;

You can update the Hosts manually from within the VMM Console by highlighting the Hosts in the Fabric view and clicking “Update Agent”...

&nbsp;
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image10.png"><img width="540" height="363" class="alignnone size-full wp-image-2595" alt="Image10" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image10.png" /></a></p>
&nbsp;

This is fairly straightforward for small scale implementations like mine, however, if you have a large number of Hosts and/or Clusters, (or you like to do everything in PowerShell because you’re too cool for GUIs) then automating the update via PowerShell is a better option.

Let’s deconstruct the the script and walk through the steps required to identify the Agent versions in your estate and then push the latest version to all Managed Computers via PowerShell…

&nbsp;

<strong>STEP 1:</strong>  Check the build version of the VMM Server, this should be the latest version and all your managed Hosts, Library Servers etc will need to be updated to the same version…

&nbsp;

<em>Update your script and replace $VMMServer with the name of your VMM Server below</em>
<p style="padding-left: 30px"> #Get the current version of the VMM Server</p>
<p style="padding-left: 30px"> $VMMServer = "VMMSERVERNAME"</p>
<p style="padding-left: 30px"> Get-SCVMMServer -ComputerName $VMMServer | ft Name, ProductVersion</p>
&nbsp;

Notice the VMM Build version in my lab is 4.0.1381.0 - which is Cumulative Update 2 for SCVMM 2016 TP5. The Managed Servers should be running the same version...

&nbsp;
<p style="text-align: center"><strong> <a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image2.png"><img width="495" height="116" class="alignnone size-full wp-image-2576" alt="Image2" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image2.png" /></a></strong></p>
&nbsp;

<strong>STEP 2:</strong> List all the Managed Computers and their version numbers

&nbsp;

Get a list of all Servers managed by VMM (My environment only has a few servers as I've only just built it, you should see Library Servers, Update Servers, Hosts etc...)

&nbsp;
<p style="padding-left: 30px">Get-SCVMMManagedComputer  | ft Name, Role, AgentVersion</p>
Notice that some of the servers are still at a lower version:

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image3.png"><img width="589" height="111" class="aligncenter size-full wp-image-2525" alt="Image3" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image3.png" /></a>

&nbsp;

<strong>Step 3:</strong>  Narrow down the list to include only the Servers that are not up to date with the latest version. I’m doing this by listing all Managed Computers where the agent version is not equal to the version running on my VMM Server.  You could tweak this to say “less than” rather than “not equal”, but we should never have an Agent managed by VMM that is running a version greater than the VMM Server.

&nbsp;

Get list of Managed Servers that do not have the latest version of the agent compared to the VMM Server build version

&nbsp;
<p style="padding-left: 30px">Get-SCVMMManagedComputer | ? {$_.AgentVersion -ne "4.0.1381.0"} | ft Name, Role, AgentVersion</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image4.png"><img width="864" height="101" class="aligncenter size-full wp-image-2535" alt="Image4" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image4.png" /></a>

&nbsp;

So we now have a list of targets and we can go ahead and push the Agent to them…

&nbsp;

<strong>Step 4:</strong> To deploy the Agent we need to use a Run As Account that has local Admin permissions on the Managed Computers, you can find your Host Management Account in the Run As Accounts view in the Settings section of the console...

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image5.png"><img width="594" height="301" class="aligncenter size-full wp-image-2545" alt="Image5" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image5.png" /></a>

&nbsp;

<b>Step 5:</b> Now it's time to update the Managed Server...

&nbsp;

Copy the script below, update the VMM Server and Host Management Account variables and run it against your test environment:

&nbsp;
<p style="padding-left: 30px">$VMMServer = "INSERTVMMSERVERNAMEHERE"
$HostManAccount = "INSERTHOSTMANAGEMENTACCOUNTNAMEHERE"</p>
<p style="padding-left: 30px">$VMMBuild = Get-SCVMMServer -ComputerName $vmmserver
$VMMBuildVersion = $VMMBuild.ProductVersion</p>
<p style="padding-left: 30px">#Set the variables for the Run As Account
$credential = Get-SCRunAsAccount -Name $HostManAccount</p>
<p style="padding-left: 30px">#Create the list of target Servers by identifying those that are out of date and put them into an array
$managedComputers = Get-SCVMMManagedComputer | ? {$_.AgentVersion -ne $VMMBuildVersion}</p>
<p style="padding-left: 30px">#Deploy the Agent update to all servers identified as being out of date
Foreach($managedComputer in $managedComputers)
{
Update-SCVMMManagedComputer -Credential $credential -RunAsynchronously -VMMManagedComputer $managedComputer
}</p>
After you execute the script, you can open the Jobs window in the VMM Console and you should see each Managed Host being updated…

&nbsp;

Job Running…

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image6.png"><img width="952" height="339" class="aligncenter size-full wp-image-2555" alt="Image6" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image6.png" /></a>

&nbsp;

Job Completed…  You can see that the Agent version now matches the VMM Server...

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image7.png"><img width="941" height="304" class="aligncenter size-full wp-image-2565" alt="Image7" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image7.png" /></a>

&nbsp;

If you run the Get-SCVMMManagedComputer cmdlet again you should see that all your Agents are up to date!

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/05/Image8.png"><img width="591" height="119" class="aligncenter size-full wp-image-2575" alt="Image8" src="https://msdnshared.blob.core.windows.net/media/2016/05/Image8.png" /></a>

&nbsp;

Hope this saves you some time and effort!

Leigh]]></content:encoded>
    </item>
    <item>
      <title>Troubleshooting PXE boot issues in Configuration Manager 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/troubleshooting-pxe-boot-issues-in-configuration-manager-2012</link>
      <pubDate>Wed, 27 Apr 2016 00:46:49 GMT</pubDate>
      <dc:creator><![CDATA[Rob York]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2016/04/27/troubleshooting-pxe-boot-issues-in-configuration-manager-2012/</guid>
      <description><![CDATA[A very short one from me today, we recently published an interactive tutorial in troubleshooting...]]></description>
      <content:encoded><![CDATA[<p>A very short one from me today, we recently published an interactive tutorial in troubleshooting PXE. Choose to get straight down to it or go through an overview and background of PXE first:</p>
<p></p>
<p>https://support.microsoft.com/en-us/help/10082/troubleshooting-pxe-boot-issues-in-configuration-manager-2012</p>
<p></p>
<p>Rob York<br /><br />Premier Field Engineer</p>]]></content:encoded>
    </item>
    <item>
      <title>What's New With ConfigMgr's Client Notification Feature</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/whats-new-with-configmgrs-client-notification-feature</link>
      <pubDate>Tue, 29 Mar 2016 03:50:29 GMT</pubDate>
      <dc:creator><![CDATA[rickysimpson]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2016/03/29/whats-new-with-configmgrs-client-notification-feature/</guid>
      <description><![CDATA[With the release of Configuration Manager this month - ConfigMgr 1602, was the introduction of some...]]></description>
      <content:encoded><![CDATA[<p>With the release of Configuration Manager this month - ConfigMgr 1602, was the introduction of some new features within the console in regards to how an administrator can interact with a client.&nbsp; This blog will look to explain these new features, how they work and where they&rsquo;ve been developed from.&nbsp;</p>
<p>Firstly, some background.&nbsp; Way back when, ConfigMgr 2012 SP1 introduced a feature called &quot;Client Notification&quot;.&nbsp; This added an option on the right click context menu for a client or a collection that granted the administrator the ability to trigger a machine or user policy retrieval and evaluation cycle.&nbsp; Admins may be forgiven for thinking that this is a &ldquo;push&rdquo; action to the client, as it&rsquo;s actually a client initiated &ldquo;pull&rdquo; after the admin triggers it.&nbsp; This is ConfigMgr after all &ndash; the client requests everything.&nbsp; Quite simply, the client is notified to start an action normally controlled by a schedule.</p>
<p>This feature was designed in order for vital deployments to be sent to clients a lot quicker and to save them waiting for their computer policy retrieval cycle, set to every 60 minutes by default.&nbsp; Scenarios this would help with would be a zero-day patch, an urgent anti-malware definition or some other kind of scripted fix that needed to go out to all clients very quickly.</p>
<p>I won&rsquo;t go into details about the ins and outs of Client Notification, although you can read the Product Group&rsquo;s original blog about the feature release <a href="https://blogs.technet.microsoft.com/configmgrteam/2012/09/27/fast-channel-for-system-management-client-notification-in-system-center-2012-configuration-manager-sp1/"><span style="color:#0563c1;">here</span></a>. &nbsp;In a nutshell, clients communicate over TCP or HTTP every 15 minutes to confirm they&rsquo;re still online.&nbsp; Once an action is triggered using Client Notification, only clients that have reported back as &ldquo;online&rdquo; will be notified to begin an action.&nbsp; This means that your infrastructure won&rsquo;t be wasting resources trying to open up individual WMI connections to clients in order to trigger these actions.&nbsp; Other tools that <i>seem</i> to perform these actions can be quite costly in terms of wasted resources, especially when targeting a large collection.&nbsp; &nbsp;&nbsp;That&rsquo;s why we would suggest using the out of the box tools whenever possible.</p>
<p><b>&ldquo;But Ricky, sometimes I need to do more than just a policy retrieval on a group of computers and using other tools to perform this seems like the only way!&rdquo;&nbsp; </b></p>
<p>That&rsquo;s a very good point, and the very reason that the list of actions that can be performed in the Client Notification has now been extended in the 1602 release.&nbsp; Check it out&hellip;</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/2a.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/2a.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/2a.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/2a.png" border="0" /></a></p>
<p>You can see along with computer and user policy retrieval; we now have the ability to collect discovery data, start a hardware or software inventory cycle, evaluate any deployed applications, or start a software update deployment evaluation too.&nbsp; As stated above, triggering any of these actions will see that only clients that have reported back in the last 15 minutes will be given the notification to begin the chosen action.&nbsp;</p>
<p>One more feature that was introduced that takes advantage of the &ldquo;keep-alive&rdquo; message sent by clients every 15 minutes is being able to see if a client is online or not when viewing it in a collection.&nbsp; Have a look&hellip;</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1541.7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1541.7.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1541.7.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1541.7.png" border="0" /></a></p>
<p>The grey icon represents that the client is offline, and the green icon shows that the client&rsquo;s keep-alive message has been received in the last 15 minutes.</p>
<p>I hope this helps explain this small feature introduction, which seems to have slipped under most admins&rsquo; radars.&nbsp; Remember, if you have any suggestions about ConfigMgr, please log them at the <a href="https://configurationmanager.uservoice.com/forums/300492-ideas"><span style="color:#0563c1;">UserVoice site</span></a> and get those votes assigned to any other features you like the look of.&nbsp;</p>
<p>As always, please leave any comments or questions below.</p>
<p>Ricky</p>]]></content:encoded>
    </item>
    <item>
      <title>Enabling the Microsoft Monitoring Agent in Windows JSON Templates</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/enabling-the-microsoft-monitoring-agent-in-windows-json-templates</link>
      <pubDate>Thu, 19 Nov 2015 13:01:00 GMT</pubDate>
      <dc:creator><![CDATA[G Davies]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2015/11/19/enabling-the-microsoft-monitoring-agent-in-windows-json-templates/</guid>
      <description><![CDATA[Remember the good old days when operating systems came on floppy disks and a cheese fondue was the...]]></description>
      <content:encoded><![CDATA[<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">Remember the good old days when operating systems came on floppy disks and a cheese fondue was the height of culinary sophistication. These days, there is no need to worry about the dog eating disk 65 of 132 when a couple of clicks of a mouse can deploy complex infrastructure quickly to a repeatable standard while you much on cheese on toast with a splash of Worcester sauce. </span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">So the challenge for me was to deploy a Windows Virtual Machine into Azure and as part of that deployment, enable the Microsoft Monitoring Agent to connect into the Operations Management Suite. And I wanted to use the new Resource Manager functionality rather than the classic service management model - more on the differences <a href="https://azure.microsoft.com/en-gb/documentation/articles/resource-manager-deployment-model/" target="_blank">here</a>. <br /></span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">You&rsquo;ll need to have Visual Studio 2013 or 2015 and along with Azure PowerShell, Microsoft Azure Authoring Tools and Microsoft Azure Tools for Visual Studio (version 2.8 at the time of writing).</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">The create a new project and choose Azure Resource Group</span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1_Cloud.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1_5F00_Cloud.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1_Cloud.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1_5F00_Cloud.png" border="0" /></a></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">I&rsquo;ll keep it simple and choose Windows Virtual Machine</span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/2_WindowsVM.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/2_5F00_WindowsVM.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/2_WindowsVM.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/2_5F00_WindowsVM.png" border="0" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">If you have never used this before, I&rsquo;ll run through a quick example.</span></span></p>
<p><span style="font-family:Calibri;font-size:medium;">If you take a look at the left hand side of the Visual Studio, then you&rsquo;ll see four parameters (which we&rsquo;ll fill in when we deploy the virtual machine and then a list of variables where we can set the vmName, size etc. </span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/3_Code.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/3_5F00_Code.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/3_Code.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/3_5F00_Code.png" border="0" /></a></span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;">Then we need to right click on the project and create a new deployment.</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/4_Deploy.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/4_5F00_Deploy.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/4_Deploy.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/4_5F00_Deploy.png" border="0" /></a><br /></span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">I&rsquo;ve created a new Resource Group as below:</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/5_ResourceGroup.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/5_5F00_ResourceGroup.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/5_ResourceGroup.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/5_5F00_ResourceGroup.png" border="0" /></a><br /></span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">Then I need to click Edit Parameters to provide the parameter information</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/6_Parameters.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/6_5F00_Parameters.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/6_Parameters.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/6_5F00_Parameters.png" border="0" /></a><br /></span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">Once that is done, click deploy &hellip; and we&rsquo;ll soon have ourselves a windows virtual machine as part of a resource group</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/7_DeployToResourceGroup.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/7_5F00_DeployToResourceGroup.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/7_DeployToResourceGroup.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/7_5F00_DeployToResourceGroup.png" border="0" /></a><br /></span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:medium;">But, we don&rsquo;t have the Microsoft Monitoring Agent installed. We can&rsquo;t (as of November 2015) enable the Microsoft Monitoring Agent in the Azure Preview Console for Resource Manager Virtual Machines which leaves us the options of retrospectively scripting a solution or, even better, enabling the Microsoft Monitoring Agent as part of the json template. </span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:medium;">I&rsquo;ve taken my inspiration from here but I couldn&rsquo;t get this to work due to issues with the formatting and the location parameter</span></p>
<p></p>
<p><a href="https://www.danielstechblog.de/azure-azure-stack-iaas-vm-arm-mma-operational-insights-template-integration/"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">https://www.danielstechblog.de/azure-azure-stack-iaas-vm-arm-mma-operational-insights-template-integration/</span></a></p>
<p></p>
<p><span style="font-family:Calibri;font-size:medium;">In the parameters section we need to add the following (which will allow us to state the name of the extension we are installing and the workspace id and key):</span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;vmExtensionMonitoringAgent&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;type&quot;: &quot;string&quot;,</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;metadata&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;description&quot;: &quot;Monitoring Agent extension name&quot;</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">}</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;"><span>&nbsp;},</span></span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;monitoringAgentWorkspaceID&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;type&quot;: &quot;string&quot;,</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;metadata&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;description&quot;: &quot;Monitoring Agent Workspace ID extension name&quot;</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">}</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;"><span>&nbsp;},</span></span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;monitoringAgentWorkspaceKey&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;type&quot;: &quot;securestring&quot;,</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;metadata&quot;: {</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">&quot;description&quot;: &quot;Monitoring Agent Workspace Key extension name&quot;</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;">}</span></em></span></p>
<p><span style="font-size:small;"><em><span style="font-family:Calibri;"><span>&nbsp;}</span></span></em></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Then we need to add the following resources</span></p>
<p><em><span style="font-family:Calibri;font-size:small;">{</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;apiVersion&quot;: &quot;2015-06-15&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;type&quot;: &quot;Microsoft.Compute/virtualMachines/extensions&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;name&quot;: &quot;[concat(variables(&#39;vmName&#39;),&#39;/&#39;, parameters(&#39;vmExtensionMonitoringAgent&#39;))]&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;location&quot;: &quot;[resourceGroup().location]&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;dependsOn&quot;: [</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;[concat(&#39;Microsoft.Compute/virtualMachines/&#39;, variables(&#39;vmName&#39;))]&quot;</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">],</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;properties&quot;: {</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;publisher&quot;: &quot;Microsoft.EnterpriseCloud.Monitoring&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;type&quot;: &quot;MicrosoftMonitoringAgent&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;typeHandlerVersion&quot;: &quot;1.0&quot;,</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;settings&quot;: {</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;workspaceId&quot;: &quot;[parameters(&#39;monitoringAgentWorkspaceID&#39;)]&quot;</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">},</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;protectedSettings&quot;: {</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">&quot;workspaceKey&quot;: &quot;[parameters(&#39;monitoringAgentWorkspaceKey&#39;)]&quot;</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;">}</span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;"><span>&nbsp;}</span></span></em></p>
<p><em><span style="font-family:Calibri;font-size:small;"><span>&nbsp;}</span></span></em></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">Or <a href="https://1drv.ms/1S7ieJp" target="_blank">copy and paste the following</a> to replace the existing code.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">I have then updated the vmname and some other naming details.</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/8_Parameters.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/8_5F00_Parameters.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/8_Parameters.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/8_5F00_Parameters.png" border="0" /></a></span></span></span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;">I can now deploy the template, creating a new resource group &ndash; RG123WithMMA</span></span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/9_DeploytoRG.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/9_5F00_DeploytoRG.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/9_DeploytoRG.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/9_5F00_DeploytoRG.png" border="0" /></a><br /></span></span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">And now when I click on Edit Parameters, I can fill in my OMS details:</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"> </span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/10_EditParameters.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/10_5F00_EditParameters.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/10_EditParameters.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/10_5F00_EditParameters.png" border="0" /></a><br /></span></span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">And then save and deploy.</span></p>
<p></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">And when the virtual machine is deployed, you have the Microsoft Monitoring Agent installed and the virtual machine appearing in the OMS workspace.</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/11_MMA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/11_5F00_MMA.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/11_MMA.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/11_5F00_MMA.png" border="0" /></a><br /></span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="line-height:107%;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;"><span style="font-family:Times New Roman;font-size:medium;"> </span><br /></span></span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Monitoring Database Replication Efficiency in Configuration Manager 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/monitoring-database-replication-efficiency-in-configuration-manager-2012</link>
      <pubDate>Thu, 12 Nov 2015 01:08:48 GMT</pubDate>
      <dc:creator><![CDATA[Rob York]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2015/11/12/monitoring-database-replication-efficiency-in-configuration-manager-2012/</guid>
      <description><![CDATA[In this blog post I want to look at DRS replication within System Center Configuration Manager and...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">In this blog post I want to look at DRS replication within System Center Configuration Manager and discuss some impacts that can be seen in a busy site.&nbsp; If you are running a single site environment, then this article is not for you.&nbsp; If you run a CAS and multiple primary sites then you <i>might</i> just see some issues.&nbsp; Be aware however that we mean that the site is busy for a protracted period of time &ndash; for example if you migrate around 50,000 new clients into your site in 5 days then you might see the issue and the environment recovers quickly as it is supposed, but if this kind of activity goes on for some time you may experience issues and the simple checks in this blog will be of help.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">So, to review DRS replication there is nothing really that we can add to Umair Kahn&rsquo;s excellent discussion on DRS here </span><a href="/b/umairkhan/archive/2014/02/18/configmgr-2012-data-replication-service-drs-unleashed.aspx"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">https://blogs.technet.com/b/umairkhan/archive/2014/02/18/configmgr-2012-data-replication-service-drs-unleashed.aspx</span></a><span style="font-family:Calibri;font-size:medium;">.&nbsp; Umair explains in his post that there are two main types of data:</span></p>
<ul>
<li>
<p><b>Global</b> data, which as its name suggests is replicated between all primary sites and CAS within the hierarchy.&nbsp; There is a derivation of this called <b>Global Proxy</b> data which is replicated from the primary site to any secondary sites under it.</p>
</li>
<li>
<p><b>Site</b> data, which is unique to this primary site and then is replicated up to the CAS</p>
</li>
</ul>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">We then read on to find that the data that we replicate is arranged into articles and these <b>articles</b> are then arranged into <b>replication groups</b>.&nbsp; The replication groups then replicate between the sites.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">The transport mechanism for this data to be replicated is via a SQL Server feature called <b>change tracking</b>.&nbsp; Quoting from Umair&rsquo;s blog post:</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p>Change tracking is to identify and keep track of what changed in the Database like a row insertion, updation or deletion. We need this as we have to now only send the changes to the CAS and not the whole global data again as both the CAS and primary are now in page.</p>
<p>Question can come how Change Tracking works in background &ndash;</p>
<p>The answer is simple for every table that is enabled for change tracking we have one more internal table change_tracking_&lt;object_id &gt;. When a row gets inserted in the actual table then a corresponding entry (containing) only the primary key information gets added in the internal table change_tracking_&lt;object_id &gt;</p>
<p><span style="font-family:Calibri;font-size:medium;">So, whenever a row is changed within the local database then a second table is updated with that information.&nbsp; We then replicate that data to the other site.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Umair&rsquo;s blog post then goes on to say:</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">For every successful transaction that is committed for a table we see a row in the <i>sys.syscommittab</i> table. The <i>sys.syscommittab</i> is a system table which can be referenced by the <i>sys.dm_tran_commit_table</i> view</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">So the sys.syscommittab table is what I want to spend a little time discussing.&nbsp; From the database we need to look at the sys.dm_tran_commit_table view which gives us something which looks like this:</span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:medium;">So, the change tracking process looks into this table and picks up transactions which have not been committed, locates the un-replicated transactions and then when they are replicated, updates the table.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">So, then what?&nbsp; Well, we keep the records in this table for 5 days (by default).&nbsp; If you have looked into DRS replication then you will have also seen that DRS can recover from an outage which is shorter than 5 days &ndash; more than that, then we will re-initialise the database.&nbsp; This is why we have the 5 days limit.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">When a transaction is committed and it is more than 5 days old then it will be removed from sys.syscommittab.&nbsp; This occurs within a SQL process that runs every 62 seconds.&nbsp; This process however has a rowcount limit of 10,000 records so we are good to prune up to 14.4 million rows per day.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">If you have a few days where the number of replicated transactions is greater than 14.4 million then this will not be a problem &ndash; sys.syscommittab can accommodate for this growth and the excess records will be pruned when the growth in this table is not so great (for example, over a weekend).&nbsp; However, what happens if there never really is a quiet time in your site?</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Well, sys.syscommttab will do what it is supposed to do and contain the older records until it is able to prune them.&nbsp; Left unchecked then the growth in this table can adversely affect performance of replication, but this will likely be a slow-burn for several months before you see it.&nbsp; If you are in that situation then when you run the SQL below to see the busiest SQL statements then towards the top you will see not the usual stored procedures that you expect to see but SQL code including sys.syscommittab showing.</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="260" valign="top"><span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">To determine the busiest processes running on the SQL Server</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span></td>
<td width="474" valign="top"><span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">SELECT TOP 50</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ObjectName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = OBJECT_SCHEMA_NAME(qt.objectid,dbid) + &#39;.&#39; + OBJECT_NAME(qt.objectid, qt.dbid)</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,TextData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qt.text</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,DiskReads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.total_physical_reads&nbsp;&nbsp; -- The worst reads, disk reads</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,MemoryReads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.total_logical_reads&nbsp;&nbsp;&nbsp; --Logical Reads are memory reads</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,Executions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.execution_count</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,TotalCPUTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.total_worker_time</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,AverageCPUTime&nbsp;&nbsp;&nbsp;&nbsp; = qs.total_worker_time/qs.execution_count</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,DiskWaitAndCPUTime = qs.total_elapsed_time</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,MemoryWrites&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.max_logical_writes</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,DateCached&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = qs.creation_time</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,DatabaseName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = DB_Name(qt.dbid)</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; ,LastExecutionTime&nbsp; = qs.last_execution_time</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp; FROM sys.dm_exec_query_stats AS qs</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp; CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp; ORDER BY qs.total_worker_time DESC</span></span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span></td>
</tr>
</tbody>
</table>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">At this stage, while it&rsquo;s nothing to panic about it would be best to log a support incident with Microsoft in order to run the correct SQL statements to bring things back into order.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Much better however is to simply monitor the growth of entries in sys.syscommittab and ensure that you are maintaining a healthy equilibrium.&nbsp; With my customer we simply added a command <b>select count (*) from sys.dm_tran_commit_table</b> and trend this in SCOM, with an alert if the value goes above 100 million rows (we based this on 14.4 million is within bounds for their 5 days retention plus some headroom for those occasional busy times).&nbsp; My colleague Rob York however took this and wrote a much more professional piece of code below:</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="601" valign="top"><span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* Declare Variables */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @transaction_count int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @changetrackperiod int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @oldestentrydate datetime</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @committimedelta int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @cleanupcap int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @dailytransactioncount int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @issuefound int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* Set daily cleanup cap. 14.4m bases on 10,000 transactions per cycle once every 62 seconds */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">set @cleanupcap = 14400000</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">set @issuefound = 0</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* get number of transactions */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">select @transaction_count = count(*) from sys.dm_tran_commit_table</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* get change tracking retention period. 5 days is default. 14days is max allowed setting */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">select @changetrackperiod = CTDB.retention_period from sys.change_tracking_databases as CTDB</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">join sys.databases as DB on DB.database_id = CTDB.database_id</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">where DB.name like &#39;CM_%&#39;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* get the age of the oldest entry in change tracking */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">select @oldestentrydate = min(commit_time) from sys.dm_tran_commit_table</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">select @committimedelta = DATEDIFF(day,@oldestentrydate,getdate())</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* Print out informationals */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">print &#39;Total Transactions: &#39; + RTRIM(CAST(@transaction_count as nvarchar))</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">print &#39;Change Tracking Period: &#39; + RTRIM(CAST(@changetrackperiod as nvarchar))</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">/* Check for signs of backlogs */</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">if (@transaction_count &gt; (@changetrackperiod * @cleanupcap)) </span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">BEGIN</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Potential Backlog Based on Total Number of Transactions&#39;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set @issuefound = 1</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">END</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">if (@committimedelta &gt; @changetrackperiod)</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">BEGIN</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Potential Backlog Based on Stale Transactions&#39;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set @issuefound = 1</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">END</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">declare @i int</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">set @i = @changetrackperiod</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">while @i &gt; 0</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">begin</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">select @dailytransactioncount = count (*)&nbsp; from sys.dm_tran_commit_table where datepart(dd,commit_time) = dateadd(day,-@i,datepart(dd,getdate()))</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">if (@dailytransactioncount &gt; @cleanupcap) </span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">BEGIN</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Potential Backlog Based on Daily Transaction Count for: &#39;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + RTRIM(CAST(convert(varchar(11),(dateadd(day,-@i,getdate())),103)as nvarchar)) </span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;+ &#39; (&#39; + RTRIM(CAST(@dailytransactioncount as nvarchar)) + &#39;)&#39; </span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;set @issuefound = 1</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">END</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">set @i = @i - 1</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">end</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">if (@issuefound = 0)</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">BEGIN</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#39;Change Tracking Cleanup Appears Healthy&#39;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">END</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<span style="font-family:Times New Roman;font-size:medium;"> </span></td>
</tr>
</tbody>
</table>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Lastly, if you do see that these are an issue for you then logging a call with Microsoft Support will be the best way to bring your environment back into line.</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Making your Product Connector Highly Available in OpsMgr 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/making-your-product-connector-highly-available-in-opsmgr-2012</link>
      <pubDate>Mon, 21 Sep 2015 06:48:20 GMT</pubDate>
      <dc:creator><![CDATA[alex young ms]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2015/09/21/making-your-product-connector-highly-available-in-opsmgr-2012/</guid>
      <description><![CDATA[During testing with a customer it was noted that the 3rd party product connector they were using to...]]></description>
      <content:encoded><![CDATA[<p>During testing with a customer it was noted that the 3<sup>rd</sup> party product connector they were using to forward alerts did not work if the management server holding the RMS emulator role was unavailable.  <p>The connector itself seemed to be targeted at the all management server resource pool (AMSRP) but no alerts got updated to be forwarded when the RMSe was down.  <p>On investigation we noted that the connector subscription created which resides in the Notifications Internal Library management pack was targeted at the Root Management Server. We tested changing it over to target the AMSRP and hey presto we made the connector highly available.  <p>Below are the steps to change the subscription over to target the AMSRP.  <p><b>Please note this involves direct MP editing so caution should be taken when running in production environments.</b>  <p>1) Export the Notifications Internal Library and open with your favourite XML editor, in my case XML notepad.  <p>2) Search for the connectors subscription name in the displaystrings section and find its element ID. It should start with productconnectorsubscription to make it easy for you.  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_2CB8768F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_2CB8768F.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_thumb_235F420C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_thumb_5F00_235F420C.png" width="595" height="78" /></a>  <p>3) Search in the monitoring &gt; rules section of the MP using the elementid value and confirm the target is set as: Target=&quot;SystemCenter!Microsoft.SystemCenter.<font style="background-color:#ffff00;">RootManagementServer</font>&quot;  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_531CEA8B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_531CEA8B.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_thumb_4DCE03DA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_thumb_5F00_4DCE03DA.png" width="600" height="116" /></a>  <p>&nbsp;</p> <p>4) Change the target to: <font style="background-color:#ffff00;"></font>SystemCenter!Microsoft.SystemCenter<font style="background-color:#ffff00;">.AllManagementServersPool:</font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_5D709F9C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_5D709F9C.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/image_thumb_6FBBF70F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/image_5F00_thumb_5F00_6FBBF70F.png" width="603" height="159" /></a>  <p>5) Save the changes and reimport the MP back in your environment. The subscription will now be running as a workflow within the AMSRP.  <p>We are hoping this get updated at the product level so connector subscriptions automatically get targeted at the AMSRP on creation but until then the workaround can be used.  <p>Hope this helps  <p>Alex </p></p></p></p></p></p></p></p></p></p></p></p></p></p></p></p>]]></content:encoded>
    </item>
    <item>
      <title>Operations Manager 2012 R2 “Perfect Failover Service”.</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/operations-manager-2012-r2-perfect-failover-service</link>
      <pubDate>Fri, 18 Sep 2015 01:01:19 GMT</pubDate>
      <dc:creator><![CDATA[Bob Bird]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2015/09/18/operations-manager-2012-r2-perfect-failover-service/</guid>
      <description><![CDATA[Over my time using SCOM 2012 I have found that there is still some confusion about how the core of a...]]></description>
      <content:encoded><![CDATA[<p>Over my time using SCOM 2012 I have found that there is still some confusion about how the core of a SCOM Management Group, now with the Resource Pools, actually functions. You may have heard of the Perfect Failover Service before.</p> <p>I have delved around for documentation and found that public information for this is not commonplace.</p> <p>This post from Rob Kuehfus has good information the changes in topology between SCOM 2007 and SCOM 2012:</p> <p><a title="https://blogs.technet.com/b/momteam/archive/2011/08/22/topology-changes-in-system-center-2012-operations-manager-overview.aspx" href="https://blogs.technet.com/b/momteam/archive/2011/08/22/topology-changes-in-system-center-2012-operations-manager-overview.aspx">https://blogs.technet.com/b/momteam/archive/2011/08/22/topology-changes-in-system-center-2012-operations-manager-overview.aspx</a></p> <p>It covers off Resource Pool nicely but it still does not actually explain, in a way I like, how the Management Group Failover Service works.</p> <p>So here is <em><font color="#000000">my</font></em> explanation of how this works. I am aware that potentially not all permutations and combinations will be covered in writing as I did not wish to drop down a deep Rabbit Hole with every eventuality being covered in minutiae. My endeavour is that from this post you, dear reader, will be equipped with the understanding to be able to look at your own environment understanding how failover in the All Management Servers Resource Pool works and run all the permutations yourself to see if you are in “a good place”. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/rincewindP_3AE11C92.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/rincewindP_5F00_3AE11C92.jpg"><img title="rincewindP" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="rincewindP" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/rincewindP_thumb_5F753AC7.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/rincewindP_5F00_thumb_5F00_5F753AC7.jpg" width="95" height="78" /></a></p> <p>OK, lets get started.</p> <p>SCOM can be crafted with all of its components installed onto one server. SQL instance, management server, console, SSRS – you get the picture. It will likely have lots of issues but it will work. One thing it will <strong><font color="#ff0000">not</font></strong> be however is <strong><font color="#ff0000">Fault Tolerant</font></strong>!</p> <p>En Passant, I may be being a pedant but there is a distinction between Fault Tolerance (FT) and High Availability (HA). Here I am talking about a level of FT <em>not</em> making your whole SCOM solution HA.</p> <p>In Rob Kuehfus Blog, towards the end it states</p> <blockquote> <p>“Moving forward the Product Group recommendation will always be to have two management servers in a Management Group at all times.&nbsp; By doing this you will always have High Availability for your management group and a much easier recovery during a disaster.”</p></blockquote> <p>Right, so I need to make my single server management group more fault tolerant so I will follow the advice and add a second management server. This will automatically be included in the All Servers Resource Pool (assuming I have not changed any setting on membership from the defaults). Now I will have my original server with ALL the SCOM roles and a additional second one with only the management server role installed. OK, so I am there now?</p> <p>My answer is: No, but it is a lot closer!</p> <p>I have gone from Bad to Good. But now to go from Good to Better….</p> <p>To get from Good to Better I really need to separate out more of the SCOM roles. SQL is not (in a production level environment at any rate) recommended to be installed onto a management server. So I should split this off. I now have a management group with two management servers and a separate SQL server. This is Better.</p> <p>Now, how does splitting these roles out help with the Perfect Failover Service?</p> <p>To help explain this I am going to enter into one of my Analogies.</p> <p>In the words of the Paul Daniels,&nbsp; You&#39;ll like this, ……..</p> <h5><u>The Resource Scenario:</u></h5> <p>Every hour I like to have coffee and biscuits which I share with my office friends. So I set my schedule and on the hour get coffee and biscuits for them. This is great but the treat stops if I am ill or something – no one gets coffee and biscuits.</p> <p>(The single management server has gone offline so the management group can’t function).</p> <p>So to mitigate this I am going to get a friend to help (lets call him Ruben). Now Ruben could just be a passive standby. Does not do any coffee and biscuity stuff when I am around, only if I am unavailable.</p> <p>(This is principle behind the clustering of a 2007 RMS)</p> <p>Ideally what I really want is to spread the load rather than just doing the task myself. Having Ruben sitting around “just in case” is a waste. Lets split the task, I will always do the coffee, Ruben will always do the biscuits.</p> <p>(The idea behind SCOM 2012, with the Resource Pools. The servers in the resource pools share out the management group tasks)</p> <p>Back to the biscuit task! The task will run smoothly enough but what happens when either I or Rubens is unavailable? We need to have some way to confirm with each other that we will (or will not) be able to do our half of the process.</p> <p>Lets set up a system that on each hour Ruben will contact me to make sure I am on for the coffee and I will confirm with a reply. Likewise I will contact Ruben to confirm he is on for the biscuits and he will reply. (OK, that bit is a little contrived but run with it).&nbsp; If I don’t get a reply from Ruben I will get the biscuits as well as the coffee. And vice versa.</p> <p>That has solved the problem yes? Well no, not really. What if we are both still coming for coffee and biscuits and it is just our communication connection that is down between us. We will each turn up with both coffee and biscuits (In some peoples worlds I am aware that this would not actually be a problem <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Open-mouthed smile" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/wlEmoticon-openmouthedsmile_217BAA09.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/wlEmoticon_2D00_openmouthedsmile_5F00_217BAA09.png" /> but for the sake of this, it is). The job has been done twice which could cause an issue.</p> <p>What we need is another reference point, some mechanism by which we can confirm the situation. So we ask Kate to help. She will act as a third point of reference. If I cannot communicate to Ruben I will go to Kate for a confirmation and she will try to reach him too. If she can communicate to him she can let me know and I will continue to bring coffee knowing that Ruben will bring the biscuits. If Kate can’t get to Ruben then I will know I will need to do both tasks to bring coffee <strong>and</strong> biscuits.</p> <p>Kate is our Observer, if you will.</p> <p>This does need a little extra in the procedure to make it more like Mary Poppins.</p> <p>If Ruben is actually in the office but cannot communicate with me he will also try Kate. If he cannot get a reply from either of us, even though he is actually available we have agreed he will stop his coffee and biscuity questing as he knows I will be doing it. And vice versa.</p> <p>(Yes – this process does give us the situation that if Kate is unavailable and Ruben and I cannot “talk” we will both stop our half of the overall task and we will all be sad because no one gets coffee and biscuits <img class="wlEmoticon wlEmoticon-sadsmile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Sad smile" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/metablogapi/wlEmoticon-sadsmile_60D95D99.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75-metablogapi/wlEmoticon_2D00_sadsmile_5F00_60D95D99.png" />. But that is a potential outcome of this process and that is how it is supposed to works). Maybe we need to make Kate’s role Fault Tolerant too – but another Rabbit hole beckons at this point so I will stop here.</p> <p>There is a “Resource Pool” in place with Ruben and I in it and we have a third “Observer”, Kate, to insure Quorum.</p> <p><strong><font color="#ff0000">We now have a fail over system of sorts in place.</font></strong></p> <h4><u>The Perfect Failover Service in Operations Manager</u></h4> <p>If you have got this far we will now apply that to SCOM.</p> <p>The tasks that a management group once performs only on the RMS in Operations Manager 2007 are now spread over the servers in the All Server Resource Pool in Operations Manager 2012.</p> <p>All the servers in this pool communicate back and forth with each other to make sure that they are all available to carry out their assigned tasks. This process means that the management servers need to be on low latency connection with each other.</p> <p>If we only have two management servers we need an observer node so we can get a quorum. In a two management server scenario this is the Operations Manager database.</p> <p>If a management server loses communication with its partner then it will contact the database to verify that the other management server is actually offline for this observer node as well. If it finds that to be the case it will assume that its partner management server is down and take over the tasks assigned to it.</p> <p>If the failed management server is actually dead then there is no real problem. If however it is still running but, say the network connection has be broken, this management server, if it cannot connect to its partner or the observer will assume that the other management server has taken all the tasks and so shut itself down (commit suicide).</p> <p>The database server can exist on one of the two management servers, this gives fault tolerance for the SCOM services. We have gone from Bad to Good here.</p> <p>This is however not a recommended configuration and having multiple roles on one management server will increase the risk of any one application failure taking down this management server and hence SQL as well. (No SQL and the management group will just plain not work). Move SQL off and we go from Good to Better.</p> <p>Best would be things like clustered SQL, redundant network paths and all that other good stuff to get to a truly High Available solution.</p> <h4><u>Summary</u></h4> <p>In summary, the <strong><font color="#0000ff">recommended</font></strong> configuration to get a level of Fault Tolerance in a SCOM 2012 management group you need:</p> <p><strong>Two</strong> management servers in the All servers Resource Pool and a <strong>separate</strong> Database Server as the observer node.</p> <p>Three members of the system to enable quorum – a bit like in Minority Report.</p> <h4>&nbsp;</h4> <h6>Disclaimer</h6> <p>This posting is provided &quot;AS IS&quot; with no warranties, and confers no rights. Use of included utilities are subject to the terms specified at <a href="https://www.microsoft.com/info/copyright.htm">https://www.microsoft.com/info/copyright.htm</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>SCOM Alerts from Windows Events</title>
      <link>https://docs.microsoft.com/archive/blogs/manageabilityguys/scom-alerts-from-windows-events</link>
      <pubDate>Tue, 15 Sep 2015 09:04:00 GMT</pubDate>
      <dc:creator><![CDATA[Graham Davies]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/manageabilityguys/2015/09/15/scom-alerts-from-windows-events/</guid>
      <description><![CDATA[Having spent some time on the Service Model, I&rsquo;ll start to look at some monitoring to help us...]]></description>
      <content:encoded><![CDATA[<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;">Having spent some time on the Service Model, I&rsquo;ll start to look at some monitoring to help us build a Health Model. </span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;">I&rsquo;ll start with what is usually a straight forward requirement &ndash; monitoring a windows log e.g. the application log &ndash; and generating an alert if a specific event id is detected. I&#39;ve made it a little more complex by alerting on either of 2 event id&#39;s but it is straight forward to simplify the expression filter if required.</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><span>And I&rsquo;ll assume that you have followed by initial </span><a href="/b/manageabilityguys/archive/2015/08/24/visual-studio-management-pack-authoring-series-overview.aspx"><span style="color:#0563c1;">MP authoring series</span></a><span> (steps 1 to 3) and have created a management pack and configured the basic properties as well as having created a couple of empty folders in the solution explorer view (see below).</span></span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1_Folder.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1_5F00_Folder.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/1_Folder.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/1_5F00_Folder.png" border="0" /></a><br /></span></span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;">We&rsquo;ll go through the process of right clicking Rules, Add, New Item</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><span><span style="font-family:Times New Roman;font-size:medium;"> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/0677.2_AddNewItem.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/0677.2_5F00_AddNewItem.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/0677.2_AddNewItem.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/0677.2_5F00_AddNewItem.png" border="0" /></a></span></span></span></p>
<p style="margin:0cm 0cm 8pt;"></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;">And then choose Empty Management Pack Fragment which for ease of identification I&rsquo;ve called MultipleEvents.</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/3_EmptyFragment.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/3_5F00_EmptyFragment.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/3_EmptyFragment.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/3_5F00_EmptyFragment.png" border="0" /></a><br /></span></p>
<p><span style="font-family:Calibri;font-size:medium;">Copy and paste <a title="this code" href="https://1drv.ms/1W0ne5e" target="_blank">this code </a>into the empty fragment &ndash; you can change the following:</span></p>
<ol>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Find \ replace gd.myapp with the namespace details of your management pack</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">If necessary, update the target </span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/4_MultiEventsTarget.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/4_5F00_MultiEventsTarget.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/4_MultiEventsTarget.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/4_5F00_MultiEventsTarget.png" border="0" /></a></span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Find \ Replace the event ids with the event you are looking to alert against</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Find \ Replace EventCreate with the event source of the event you want to alert against</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Change (if necessary) the Priority and Severity:<br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/5_MultiEventsSev.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/5_5F00_MultiEventsSev.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/78/75/5_MultiEventsSev.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-78-75/5_5F00_MultiEventsSev.png" border="0" /></a><br /></span></p>
</li>
</ol>
<p><span style="font-family:verdana,geneva;font-size:small;">Severity = 2 for Critical, 1 for Warning and 0 for Informational.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">Priority = 2 for High, 1 for Medium and 0 for Low.</span></p>
<p><span style="font-family:verdana,geneva;font-size:medium;"><span style="font-size:small;">And you should be ready to go.</span> </span></p>
<p></p>
<p>Disclaimer: <br /> All information on this blog is provided on an as-is basis with no warranties and for informational purposes only. Use at your own risk.</p>
<p>The opinions and views expressed in this blog are those of the author and do not necessarily state or reflect those of my employer.<span style="font-family:verdana,geneva;font-size:small;"></span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><span style="font-family:Times New Roman;font-size:medium;"> </span><br /></span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;">&nbsp;</span></p>
<p style="margin:0cm 0cm 8pt;"><span style="font-family:verdana,geneva;font-size:small;"><span><span style="font-family:Times New Roman;font-size:medium;"> </span><br /></span></span></p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>