<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Emre&amp;#39;s OpsMgr Blog</title><subtitle type="html" /><id>http://blogs.technet.com/b/emreguclu/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/b/emreguclu/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2011-09-26T14:51:00Z</updated><entry><title>SQL MP Extensions - MP Authoring Tutorial Part 1 - Getting Ready</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2013/02/21/sql-mp-extensions-mp-authoring-tutorial-part-1-getting-ready.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2013/02/21/sql-mp-extensions-mp-authoring-tutorial-part-1-getting-ready.aspx</id><published>2013-02-21T21:04:00Z</published><updated>2013-02-21T21:04:00Z</updated><content type="html">&lt;p&gt;In the main post (&lt;a href="http://blogs.technet.com/b/emreguclu/archive/2013/02/11/sql-mp-extensions-unused-databases-and-more.aspx"&gt;here&lt;/a&gt;) I published the SQL MP Extensions Management Pack and within this post series I will be providing an Authoring Tutorial explaining the MP. This first post of the tutorial series is focusing how to get ready to start authoring.&lt;/p&gt;
&lt;p&gt;To author an MP requires to be confident on the following bullets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Knowing the Scenario;&lt;/strong&gt; Learn the problem and scope your solution to an achievable goal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knowing the Target Technology&lt;/strong&gt;; Colloborate with the SMEs of the techonolgy you are going to monitor. Try to understand
&lt;ul&gt;
&lt;li&gt;How to monitor, What method?&lt;/li&gt;
&lt;li&gt;What are the cons of the method advised?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knowing SCOM;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;With what MPElements will you achieve your goal?
&lt;ul&gt;
&lt;li&gt;Do I need a custom &lt;strong&gt;MonitorType&lt;/strong&gt;? Custom DataSource?&lt;/li&gt;
&lt;li&gt;Is &lt;strong&gt;cookdown&lt;/strong&gt; needed?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Can this be achievable via SCOM Console?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Knowing the Scenario&lt;/h4&gt;
&lt;p&gt;It was a common request from customers that they need to figure out unused databases in order to decomission and gain resources back (disk, cpu, memory). So the major idea here was return of unused resources.&lt;/p&gt;
&lt;h4&gt;Knowing the Target Technology&lt;/h4&gt;
&lt;p&gt;I queried my SQL colleagues Sibel (CTS) and Batuhan (PFE)&amp;nbsp; on how to pull this information out of SQL. There was no perfect feature for this but we had one. SQL Index Usage Statistics (&lt;strong&gt;sys.dm_db_index_usage_stats&lt;/strong&gt; - &lt;a href="http://msdn.microsoft.com/en-us/library/ms188755.aspx)"&gt;http://msdn.microsoft.com/en-us/library/ms188755.aspx)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sth similar to this will do fine;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;select DB_NAME(database_id) as dbname, datediff(dd,max(isnull(isnull(last_user_scan, last_user_update), isnull(last_user_seek, last_system_scan))),GETDATE()) as numofdays from sys.dm_db_index_usage_stats&amp;nbsp; group by DB_NAME(database_id)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;My colleagues also warned my that these statistics are reset once the SQL service restarted which is very important on my monitoring model. I was fine with this because my main goal was to figure out if a database was unused for "sometime" so it might reset the state to "green" when the service starts but if it is really unused it will go "red" after the threshold speciefied is reached. Kind of flip-flop but as rare as the service starts.&lt;/p&gt;
&lt;p&gt;The only problem might be the databases which are idle for long and only used in long intervals (payrolls db once a month???) but if this is documented (&lt;strong&gt;Knowledge Articles&lt;/strong&gt;) then the DBA and SCOM Admin knows how to override the threshold and the problem is solved.&lt;/p&gt;
&lt;h4&gt;Knowing SCOM&lt;/h4&gt;
&lt;p&gt;I now know that index usage tables has the information and I have the sql query that pulls the information as well as the problems I might hit with acceptable solutions. There was nothing stopping me (Really??? - Actually no - just be patient:) ) to use the existing Monitor type Timed Script Two State Monitor and Author the MP Through Operations Console (hell no!).&lt;/p&gt;
&lt;p&gt;I would have easily jumped in the Operations Console and create a monitor based on the &amp;ldquo;Timed Script Two State Monitor&amp;rdquo; type &lt;strong&gt;(I didnt!!!)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4540.image_5F00_32FB9AFB.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/5100.image_5F00_thumb_5F00_703C4FC2.png" alt="image" width="413" height="297" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But when I finish NEXTing this Wizard My Monitor will be targeted to the SQL 2008 Database Class since I want to affec the health of the Databases. What about if I have a SQL Server with 10 Instances and 50 databases on each instance??? the answer is easy if I use the OOB MonitorType 500 scripts will run at a time. I wouldnt want this to occur on my servers.&lt;/p&gt;
&lt;p&gt;The existing MonitorType didnt help in this case (it only does if you have few instances of what you target) and I need to create my own MonitorType which does run the script once and collects data for all (this is named as&lt;strong&gt; cookdown&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tools Required&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Authoring a monitortype which has a datasource that supports cookdown is not avaiable in Operations Console. But is available via&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MP authoring console &amp;ndash; This is retired and we wont use it.&lt;/li&gt;
&lt;li&gt;Visual Studio Authoring Extensions &amp;ndash; This is the new tool with following major benefits.
&lt;ul&gt;
&lt;li&gt;Great documentation on &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5236.visual-studio-authoring-extensions-for-system-center-2012-operations-manager-en-us.aspx"&gt;TechNet Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Management Pack Browser; makes it super easy to find out what you refer to&lt;/li&gt;
&lt;li&gt;Keeps you tidy with MP Fragments / folders&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8228.image_5F00_7FFBE4C6.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0218.image_5F00_thumb_5F00_1D218CD1.png" alt="image" width="791" height="347" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;Supports advanced build options (seal the mp, edit mp header)&lt;/li&gt;
&lt;li&gt;Solve the problem before you import (Visual Studio Build errors)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;A favorite text editor &amp;ndash; you always need one, choose your own, I have one : )&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;SUMMARY&lt;/h4&gt;
&lt;p&gt;I am now confident that I will need;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to Develop a vbscript that queries to figure out unused Databsaes through Index Usage Statistics of SQL&lt;/li&gt;
&lt;li&gt;a custom MonitorType that runs this script but in a way that will not burn cpu with hundreds of vb scripts (cookdown support)&lt;/li&gt;
&lt;li&gt;to document my cons so that I can help managing false positive alerts and noise&lt;/li&gt;
&lt;li&gt;a way to Show the results (a custom report maybe)&lt;/li&gt;
&lt;li&gt;to use Visual Studio Authoring Extensions as the development environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My Scope is done for now, on the next post I will be starting the Cookdown supporting datasaource development.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3554262" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="MP Authoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/MP+Authoring/" /><category term="SQL Monitoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/SQL+Monitoring/" /><category term="VSAE" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/VSAE/" /></entry><entry><title>SQL MP Extensions – Unused Databases and More</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2013/02/11/sql-mp-extensions-unused-databases-and-more.aspx" /><link rel="enclosure" type="application/octet-stream" length="24576" href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-55-16-93/SQL.MPExtensions.mp" /><id>http://blogs.technet.com/b/emreguclu/archive/2013/02/11/sql-mp-extensions-unused-databases-and-more.aspx</id><published>2013-02-11T15:41:00Z</published><updated>2013-02-11T15:41:00Z</updated><content type="html">&lt;p&gt;Figuring out (monitoring) &lt;strong&gt;unused SQL databases&lt;/strong&gt; using SCOM was one of the common requests I got from DBAs of enterprise customers. I authored a management pack (SQL MP Extensions &amp;ndash; &lt;strong&gt;download available&lt;/strong&gt;) to&amp;nbsp; address this feature and also took this an opportunity to provide a tutorial for MP authoring with a real life scenario.&lt;/p&gt;
&lt;p&gt;I hopefully will be updating this MP with new features and publish the new versions monthly within this post. The &lt;strong&gt;MP Authoring tutorial&lt;/strong&gt; will be a series of &lt;strong&gt;different posts&lt;/strong&gt; explaining the elements of the MP starting with this &lt;a href="http://blogs.technet.com/b/emreguclu/archive/2013/02/21/sql-mp-extensions-mp-authoring-tutorial-part-1-getting-ready.aspx"&gt;one.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;MP Features (7.0.2.1)&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Monitors / Alerts / Reports Unused Databases based on Index Usages (only for 2008 databases currently , next version&lt;img class="wlEmoticon wlEmoticon-smile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0458.wlEmoticon_2D00_smile_5F00_32F79C93.png" alt="Smile" /&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7888.image_5F00_120429EC.png"&gt;&lt;img style="background-image: none; float: none; margin-left: auto; display: block; margin-right: auto;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3175.image_5F00_thumb_5F00_3E40B0D0.png" alt="image" width="499" height="177" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scripts in this MP support &lt;strong&gt;CookDown&lt;/strong&gt; (only one script per SQL instance)&lt;/li&gt;
&lt;li&gt;Uses existing SQL MP Profile (SQL Server Monitoring Account) so &lt;strong&gt;no extra security configuration required&lt;/strong&gt; (if there&amp;rsquo;s already one)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Well documentation&lt;/strong&gt; via &amp;lt;KnowledgeArticles&amp;gt; (just check the Product Knowledge of the Rule / Monitor / Reports etc. Everything needed is there).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0743.image_5F00_4DA018AD.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/6607.image_5F00_thumb_5F00_6C96167E.png" alt="image" width="569" height="392" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Noise is &lt;strong&gt;pre-filtered&lt;/strong&gt; (only necessary objects are enabled)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2068.image_5F00_68C84BE1.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8420.image_5F00_thumb_5F00_0AD0A7A8.png" alt="image" width="545" height="180" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ready to Run Reports&lt;/strong&gt; included (objects are pre-filtered)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/6648.image_5F00_0E263982.png"&gt;&lt;img style="background-image: none; float: none; margin-left: auto; display: block; margin-right: auto;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8880.image_5F00_thumb_5F00_7A2CA6EB.png" alt="image" width="559" height="179" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Support Statement&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;There is &lt;span style="color: #ff0000;"&gt;no support &lt;/span&gt;for this MP, &lt;span style="color: #ff0000;"&gt;test &lt;/span&gt;and use under own risk&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;I only will test this mp against Operations Manager 2012 test environment therefore the schema is 2.0, for 2007 users I reccomend to move to 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Important Notes&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The &amp;ldquo;Database Usage&amp;rdquo; Monitor is based on Index usages (kept on masterdb of every instance) and these counts are reset every time the SQL service starts. So this monitor will resetting to green on every server/service restart but if the database is unused again for the same days (default 7) the state will go back to RED. This is not a big deal and does not break figuring out Unused Databases but only worth to notice to inform about the behavior.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;System Center Monitoring Pack for SQL Server; &lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=10631" href="http://www.microsoft.com/en-us/download/details.aspx?id=10631"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=10631&lt;/a&gt; has to be installed and configured (please check SQL MP guide)&lt;/li&gt;
&lt;li&gt;Currently Workflows are targeted to only SQL Server 2008 Databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;How to Use the MP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Before importing the MP Ensure that System Center Monitoring Pack for SQL server is installed and configured&lt;/li&gt;
&lt;li&gt;Please create a new Management Pack for Overrides and save the Overrides in this New Overrides Management Pack&lt;/li&gt;
&lt;li&gt;Import the MP using any method desired&lt;/li&gt;
&lt;li&gt;Change the thresholds / Alerting / Intervals as required after checking &amp;ldquo;Workflows in This MP&amp;rdquo; table&lt;/li&gt;
&lt;li&gt;Please check Product Knowledges, the behavior of the workflows/reports are explained in detail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Workflows in This MP&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Following is the table for the Workflows included in this MP and their defaults&lt;/p&gt;
&lt;table style="width: 824px;" border="1" cellspacing="0" cellpadding="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="67"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Workflow Type&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="133"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="67"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Data Source&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="42"&gt;&lt;strong&gt;Threshold&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="60"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Intervals&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="64"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Enabled By Default&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="58"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Alerting&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="70"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td valign="top" width="265"&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;Comment&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="68"&gt;Monitor&lt;/td&gt;
&lt;td valign="top" width="129"&gt;Database Usage&lt;/td&gt;
&lt;td valign="top" width="67"&gt;Script Based&lt;/td&gt;
&lt;td valign="top" width="42"&gt;7 Days&lt;/td&gt;
&lt;td valign="top" width="61"&gt;14400&lt;/td&gt;
&lt;td valign="top" width="64"&gt;Yes&lt;/td&gt;
&lt;td valign="top" width="58"&gt;Yes&lt;/td&gt;
&lt;td valign="top" width="70"&gt;Yes&lt;/td&gt;
&lt;td valign="top" width="265"&gt;Enabled for Non-System Databases Group(for details please check knowledge of the monitor). Health is reset if SQL service is restarted.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="69"&gt;Rule&lt;/td&gt;
&lt;td valign="top" width="127"&gt;Collection Rule For Database Usage&lt;/td&gt;
&lt;td valign="top" width="68"&gt;Script Based&lt;/td&gt;
&lt;td valign="top" width="43"&gt;N/A&lt;/td&gt;
&lt;td valign="top" width="62"&gt;14400&lt;/td&gt;
&lt;td valign="top" width="65"&gt;No&lt;/td&gt;
&lt;td valign="top" width="58"&gt;No&lt;/td&gt;
&lt;td valign="top" width="70"&gt;Yes&lt;/td&gt;
&lt;td valign="top" width="265"&gt;Enable if a graph is really required (for details please check knowledge of the rule)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3551693" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="MP Authoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/MP+Authoring/" /><category term="SQL Monitoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/SQL+Monitoring/" /></entry><entry><title>Undiscovering / Stop Monitoring SQL 2008 Express Editions</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2013/01/21/undiscovering-stop-monitoring-sql-2008-express-editions.aspx" /><link rel="enclosure" type="text/xml" length="7939" href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-71-04/SQLExpress.RemoveMP.xml" /><id>http://blogs.technet.com/b/emreguclu/archive/2013/01/21/undiscovering-stop-monitoring-sql-2008-express-editions.aspx</id><published>2013-01-21T14:24:00Z</published><updated>2013-01-21T14:24:00Z</updated><content type="html">&lt;p&gt;In this post I will try to cover an &lt;strong&gt;alternate method&lt;/strong&gt; of &lt;strong&gt;undiscovering &lt;/strong&gt;SQL Express editions other than using the ExcludeList Property where I have a decent reason to do so.&amp;nbsp; The MP explained in detail is also attached to the post so that you can test an deploy.&lt;/p&gt;
&lt;p&gt;Even though SQL MP has &lt;strong&gt;ExcludeList&lt;/strong&gt; override property for &amp;ldquo;Discover SQL Server 2008 Database Engines (Windows Server)&amp;rdquo; this property requires &lt;strong&gt;manually&lt;/strong&gt; specifying Instance Names in format of (SQLExpress;MICROSOFT##SSEE). Therefore if a 3rd party application using instance name other than the default ones SCOM Admin has to know the name and exclude it manually for the discovery. This method is very well documented in &lt;a href="http://blogs.technet.com/b/kevinholman/archive/2010/02/13/stop-monitoring-sql-express-and-windows-internal-database.aspx"&gt;Kevins Blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My method is a bit more complex but more dynamic so that SCOM Admin has almost nothing else to do.&amp;nbsp; For the ones who &lt;strong&gt;are not&lt;/strong&gt; interested how this method works ,they can use &lt;strong&gt;the MP attached&lt;/strong&gt;&amp;nbsp; in this blog of course &lt;strong&gt;after testing&lt;/strong&gt; and reading&lt;strong&gt; How to Use The MP section&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The High Level Logic&lt;/strong&gt;;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a custom seed class&lt;/strong&gt; whose base class is Microsoft.SQLServer.2008.Seed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discover this custom class&lt;/strong&gt; and add property of Edition using a wmi query through Microsoft.Windows.Discovery.WMISinglePropertyProvider2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create&amp;nbsp; a custom Group&lt;/strong&gt; of Computers which contains the Custom Seed Class&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discover the Members&lt;/strong&gt; of the Group&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable the DB Engine Discovery&lt;/strong&gt; in SQL MP through an Override for our Custom Group&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remove disabled instances&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With the above logic you will be able stop discovering SQL DB Engines on the Computers where SQL Express editions is installed.&lt;/p&gt;
&lt;p&gt;I am sure you are wondering what will happen to the group (in step 3 above) once the instances are removed (step 6). This a question I got from my friends that &amp;ldquo;wont the group be emptied once the instances are deleted??&amp;rdquo; The answer is a big &lt;strong&gt;&amp;ldquo;NO&amp;rdquo;.&lt;/strong&gt; That&amp;rsquo;s why I created a custom seed class taking the SQL&amp;nbsp; seed class as the base class which is upper than the DB engines (DB engines will be removed not the seed) in the hierarchy. I also added the edition property to my seed class (please check step 2 details below in MP Explained) so that I can group filtering the seeds of express editions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important notes&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;if a computer has SQL express edition plus the Standard or Enterprise edition all of them will be undiscovered (but I guess this is a very minor case but just wanted to point out if you have such configurations).&lt;/li&gt;
&lt;li&gt;the discovery for the seed class has an interval of one hour (it will be ok in terms of performance since this is a basic wmi discovery). If SQL DB Engine discovery runs before our seed class discovcery than the sql express edition will be discovered. This is not going to happen frequently but once a month running Remove-SCOMDisabledClassInstance would do the trick&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Recommended Reading&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://blogs.technet.com/b/emreguclu/archive/2012/11/07/extending-windows-computer-class-using-visual-studio-authoring-extensions-vsae.aspx" href="http://blogs.technet.com/b/emreguclu/archive/2012/11/07/extending-windows-computer-class-using-visual-studio-authoring-extensions-vsae.aspx"&gt;Extending Windows Computer Class using VSAE&lt;/a&gt;; I wont be starting from scratch to mp Authoring but this post will do fine for the ones who want to adapt to Visual Studio Authoring.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MP Explained&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Create a custom seed class;&lt;/strong&gt; First we need to declare our seed class which is based on the seed class in SQL MP.&lt;/p&gt;
&lt;table style="width: 795px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="793"&gt;
&lt;p&gt;&amp;lt;ClassType ID="SQLExpress.RemoveMP.SQLSeed.Class" Base="MS2D!&lt;strong&gt;Microsoft.SQLServer.2008.Seed&lt;/strong&gt;" Accessibility="Public" Abstract="false" Hosted="true" Singleton="false" Extension="false"&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Property ID="&lt;strong&gt;SQLEdition&lt;/strong&gt;" Type="string" Key="false" CaseSensitive="false" MaxLength="256" MinLength="0" /&amp;gt; &lt;br /&gt;&amp;lt; /ClassType&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; &lt;strong&gt;Discover this custom class; &lt;/strong&gt;The edition string (PropertyStrValue) exists&amp;nbsp; in WMI of the SQL Server computer under Root\Microsoft\SQLServer\ComputerManagement10 Namespace on SqlServiceAdvancedProperty. to discover this property I used Microsoft.Windows.Discovery.WMISinglePropertyProvider2&amp;nbsp; Data Source (documented &lt;a href="http://msdn.microsoft.com/en-us/library/ee692988.aspx"&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style="width: 793px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="791"&gt;
&lt;p&gt;&amp;lt;Discovery ID="SQLExpress.RemoveMP.SQLSeed.Class.Discovery" Comment="Discovers SQL Edition Seeds" Target="MS2D!Microsoft.SQLServer.2008.Seed" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal"&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt; DiscoveryTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; DiscoveryClass TypeID="SQLExpress.RemoveMP.SQLSeed.Class"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property TypeID="SQLExpress.RemoveMP.SQLSeed.Class" PropertyID="SQLEdition" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DiscoveryClass&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/DiscoveryTypes&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt; DataSource ID="DiscoveryDS" TypeID="Windows!&lt;strong&gt;Microsoft.Windows.Discovery.WMISinglePropertyProvider2&lt;/strong&gt;"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; NameSpace&amp;gt;&lt;strong&gt;Root\Microsoft\SQLServer\ComputerManagement10&lt;/strong&gt;&amp;lt;/NameSpace&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Query&amp;gt;&lt;strong&gt;SELECT * from SqlServiceAdvancedProperty WHERE propertyname='SKUNAME' and PropertyStrValue like '%Express%'&lt;/strong&gt;&amp;lt;/Query&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Frequency&amp;gt;3600&amp;lt;/Frequency&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; ClassID&amp;gt;$MPElement[Name="SQLExpress.RemoveMP.SQLSeed.Class"]$&amp;lt;/ClassID&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; PropertyName&amp;gt;PropertyStrValue&amp;lt;/PropertyName&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; InstanceSettings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Settings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="SQLExpress.RemoveMP.SQLSeed.Class"]/SQLEdition$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Data/Property[@Name="PropertyStrValue"]$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Settings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/InstanceSettings&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/DataSource&amp;gt; &lt;br /&gt;&amp;lt; /Discovery&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Once the above discovery works you will notice this custom seed class instances in Discovered Inventory.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4846.image_5F00_1C1773E3.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2605.image_5F00_thumb_5F00_43FA7342.png" alt="image" width="737" height="276" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;strong&gt;Create&amp;nbsp; a custom Group;&lt;/strong&gt;&amp;nbsp; Creating a custom group is easy we just first need to declare the class like any other classes but use the Microsoft.SystemCenter.InstanceGroup class as the base class and chance the class type to Singleton.&lt;/p&gt;
&lt;table style="width: 791px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="789"&gt;&amp;lt;ClassType ID="SQLExpress.RemoveMP.SQL.Express.Group" Accessibility="Public" Abstract="false" Base="SCIGL!&lt;strong&gt;Microsoft.SystemCenter.InstanceGroup&lt;/strong&gt;" Hosted="false" &lt;strong&gt;Singleton="true"&lt;/strong&gt; /&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; &lt;strong&gt;Discover the Members; &lt;/strong&gt;We will use GroupPopulator like in all other group membership discoveries but will utilize the &amp;lt;Contains&amp;gt; expression documented &lt;a href="http://msdn.microsoft.com/en-us/library/ff472337.aspx"&gt;here&lt;/a&gt;&amp;nbsp; and sample mps &lt;a href="http://blogs.technet.com/b/jimmyharper/archive/2012/03/20/3487667.aspx"&gt;here&lt;/a&gt;. This discovery will populate the Microsoft.Windows.Computer instances which contains our custom seed class (step 1 - SQLExpress.RemoveMP.SQLSeed.Class)&lt;/p&gt;
&lt;table style="width: 793px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="791"&gt;
&lt;p&gt;&amp;lt;Discovery ID="SQLExpress.RemoveMP.SQL.Express.Group.Discovery" Enabled="true" Target="SQLExpress.RemoveMP.SQL.Express.Group" ConfirmDelivery="true" Remotable="true" Priority="Normal"&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt; DiscoveryTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; DiscoveryRelationship TypeID="SCIGL!Microsoft.SystemCenter.InstanceGroupContainsEntities" /&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/DiscoveryTypes&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt; DataSource ID="DiscoveryDS" TypeID="SC!&lt;strong&gt;Microsoft.SystemCenter.GroupPopulator&lt;/strong&gt;"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; RuleId&amp;gt;$MPElement$&amp;lt;/RuleId&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; GroupInstanceId&amp;gt;$MPElement[Name="SQLExpress.RemoveMP.SQL.Express.Group"]$&amp;lt;/GroupInstanceId&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; MembershipRules&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; MembershipRule&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; MonitoringClass&amp;gt;$MPElement[Name="&lt;strong&gt;Windows!Microsoft.Windows.Computer&lt;/strong&gt;"]$&amp;lt;/MonitoringClass&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; RelationshipClass&amp;gt;$MPElement[Name="SCIGL!Microsoft.SystemCenter.InstanceGroupContainsEntities"]$&amp;lt;/RelationshipClass&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Expression&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;Contains&amp;gt;&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; MonitoringClass&amp;gt;$MPElement[Name="&lt;strong&gt;SQLExpress.RemoveMP.SQLSeed.Class&lt;/strong&gt;"]$&amp;lt;/MonitoringClass&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;/Contains&amp;gt;&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Expression&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/MembershipRule&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/MembershipRules&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/DataSource&amp;gt; &lt;br /&gt;&amp;lt; /Discovery&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;5. Disable the DB Engine Discovery;&lt;/strong&gt; This is just an override to DB Engine Discovery for our class created in step 3 (SQLExpress.RemoveMP.SQL.Express.Group).&lt;/p&gt;
&lt;table style="width: 796px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="794"&gt;
&lt;p&gt;&amp;lt;Overrides&amp;gt; &lt;br /&gt;&amp;lt; DiscoveryPropertyOverride ID="SQLExpress.RemoveMP.DisableDBEDiscovery.Override" Context="&lt;strong&gt;SQLExpress.RemoveMP.SQL.Express.Group&lt;/strong&gt;" Enforced="false" Discovery="MS2D!&lt;strong&gt;Microsoft.SQLServer.2008.DBEngineDiscoveryRule.Server&lt;/strong&gt;" Property="Enabled"&amp;gt; &lt;br /&gt;&amp;lt; Value&amp;gt;false&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;lt; /DiscoveryPropertyOverride&amp;gt; &lt;br /&gt;&amp;lt; /Overrides&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The whole MP is attached to this post so that you can also see the references, displaystrings how the mp comes together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Remove disabled instances;&lt;/strong&gt; just run the Remove-SCOMDisabledClassInstance command on OpsMgr Shell&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use the MP&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Import the mp (like in all other mps)&lt;/li&gt;
&lt;li&gt;Wait till you get the mp active in your sql agents and you notice the seed class is populated (check the screenshot in step 2 of MP explained section above) and also you will see the members populated for the group in powershell. Once you verify you can proceed with the next step.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7485.image_5F00_0F79A0FA.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4784.image_5F00_thumb_5F00_0715CBA3.png" alt="image" width="665" height="92" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Open SCOM Powershell console and run the following command.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;Remove-SCOMDisabledClassInstance&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REFERENCES;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1) Stop monitoring SQL Express and Windows Internal Database &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/kevinholman/archive/2010/02/13/stop-monitoring-sql-express-and-windows-internal-database.aspx"&gt;http://blogs.technet.com/b/kevinholman/archive/2010/02/13/stop-monitoring-sql-express-and-windows-internal-database.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2) Microsoft.Windows.Discovery.WMISinglePropertyProvider2 &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee692988.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee692988.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3) ExpressionType (GroupPopulationSchema) &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff472337.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff472337.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4) Creating a Group of Windows Computer and Health Service Watcher Objects &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/jimmyharper/archive/2012/03/20/3487667.aspx"&gt;http://blogs.technet.com/b/jimmyharper/archive/2012/03/20/3487667.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3547104" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="MP Authoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/MP+Authoring/" /><category term="SQL Monitoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/SQL+Monitoring/" /></entry><entry><title>Extending Windows Computer Class using Visual Studio Authoring Extensions (VSAE)</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2012/11/07/extending-windows-computer-class-using-visual-studio-authoring-extensions-vsae.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2012/11/07/extending-windows-computer-class-using-visual-studio-authoring-extensions-vsae.aspx</id><published>2012-11-06T22:38:00Z</published><updated>2012-11-06T22:38:00Z</updated><content type="html">&lt;p&gt;We can utilize Operations Manager Console to create attributes to existing classes (if you havent met Kevin&amp;rsquo;s great &lt;a href="http://blogs.technet.com/b/kevinholman/archive/2009/06/10/creating-custom-dynamic-computer-groups-based-on-registry-keys-on-agents.aspx"&gt;blog&lt;/a&gt; with a real life scenario please do so). Using SCOM console is great but when you need to add only &lt;strong&gt;ONE &lt;/strong&gt;Property.&lt;/p&gt;
&lt;p&gt;Once you need a second or third property, advanced authoring MP is required. The real life case&amp;nbsp; might be sth like;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;We want to create Views, set Overrides , set Notifications for specific to the Departmant that owns the Server and/or for the test environments. &amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I wanted to take this scenario as an opportunity to use &lt;strong&gt;VSAE&lt;/strong&gt; for authoring.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2134.image_5F00_4D9A7CAD.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8321.image_5F00_thumb_5F00_424142A3.png" alt="image" width="681" height="476" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We will achieve this via deploying a registry key (during server provisioning, via a startup script &amp;ndash; whatever you prefer) and then extending Windows computer class based on this registry key.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0385.image_5F00_6B8864D4.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0572.image_5F00_thumb_5F00_091A3FD4.png" alt="image" width="644" height="338" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once we have the registry entries deployed time to author the MP but before start authoring followings are required&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visual Studio 2010 Professional&lt;/li&gt;
&lt;li&gt;Vsual Studio Authoring Extensions (&lt;a title="http://www.microsoft.com/en-us/download/details.aspx?id=30169" href="http://www.microsoft.com/en-us/download/details.aspx?id=30169"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30169&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Basic things to know for a kick start VSAE Authoring&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Management Pack Versions;&lt;/strong&gt; There are two options while creating a Project.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Opearations Manager 2012 Add-On Management Pack;&lt;/strong&gt; This is for only OM12 (Schema is 2.0). Use this Project if you are going to utilise the new Schema (widgets etc) in your MP and you wont be needing this MP to be imported to 2007 management group.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations Manager Core Monitoring Management Pack;&lt;/strong&gt; This is valid for both versions (Schema is 1.0) 2007 and 2012. Use this Project if you wont need the widgets etc in your mp. (In our scenario in this post &lt;em&gt;&lt;strong&gt;we will use the this one&lt;/strong&gt;&lt;/em&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;MP Fragments;&lt;/strong&gt; These are part of the MP and are XML containining the class/discovery (for our case we will only need a class and a discovery) definitions. These fragments (we may call them small part of MPs) are merged into the resulting MP XML (or even the .mp file &amp;ndash; VSAE is capable of providing the seal management pack) that can be found in the bin\debug folder of the Project). MP Fragements are .mpx files those are added to the solution and contains the actual mp xml parts within the &amp;lt;ManagementPackFragment&amp;gt;&amp;lt;/ManagmentPackFragment&amp;gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1452.image_5F00_0DB04A8E.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7725.image_5F00_thumb_5F00_770DFC46.png" alt="image" width="644" height="119" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Management Pack Templates;&lt;/strong&gt; There are two types and we will be using the simple one.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Simple Templates;&lt;/strong&gt; These are basic xml skeletons (skelaton ready mp fragments) and you need to edit the xml to complete the element. We will be using Class Simple Template to create our extended Windows.Computer class in &amp;ldquo;Computer Class.Mpx&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced Templates;&lt;/strong&gt; We wont be using these ones in this sample but just for simple explanation, these are half ui &amp;ndash; half xml templates. Used for Workflows especially. Personally I prefer editing the xml myself so my discovery will be pure XML Editing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Folders;&lt;/strong&gt; To be more organised you can use folders to keep our fragments (.mpx files).&lt;/p&gt;
&lt;p&gt;With the above kickstart my Project will look sth like this;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/5658.image_5F00_755D3072.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3515.image_5F00_thumb_5F00_7ACBA116.png" alt="image" width="304" height="243" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Highlevel Steps&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Design Your MP (decide your class type, what datasources you will use etc)&lt;/li&gt;
&lt;li&gt;Create VSAE Project (we will be using the Core One &amp;ndash; Schema 1.0)&lt;/li&gt;
&lt;li&gt;Add Folders as necessary (my preference here is to add folder containing class declarations and a folder for discoveries)&lt;/li&gt;
&lt;li&gt;Add MP Fragments using the Templates (one for class one for discovery) and Edit the XML&lt;/li&gt;
&lt;li&gt;Check for errors , correct them.&lt;/li&gt;
&lt;li&gt;Generate the MP&lt;/li&gt;
&lt;li&gt;import into Management Group&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Design Your MP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From the simplest to the most complex mps the author needs the design. In our case we will need a custom class based on the Windows.Computer Class and the datasource module we will use is Microsoft.Windows.RegistryDiscoveryProvider (&lt;a title="http://msdn.microsoft.com/en-us/library/ff400189.aspx" href="http://msdn.microsoft.com/en-us/library/ff400189.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff400189.aspx&lt;/a&gt;) because this provider lets multiple keys discovered at the same time for the class. The Provider that Operations Manager Console uses the Microsoft.Windows.RegistryDiscoverySingleProvider &lt;a title="http://msdn.microsoft.com/en-us/library/ff400197.aspx" href="http://msdn.microsoft.com/en-us/library/ff400197.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff400197.aspx&lt;/a&gt; which is limited by one key and is the reason for this post : ) )&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create VSAE Project&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Easiest step. Just create an MP Project choosing the core on.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3583.image_5F00_329DE53A.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0878.image_5F00_thumb_5F00_5E020634.png" alt="image" width="644" height="177" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Add Folders&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create two folders name what ever you like, mine were &amp;ldquo;Class&amp;rdquo; and &amp;ldquo;Discovery&amp;rdquo; (see Folders section above).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Add MP Fragments and Edit the XML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First we need our class to be declared and defined to do so add a &amp;ldquo;new item&amp;rdquo; under the &amp;ldquo;Class&amp;rdquo; folder and select the basic xml template for &amp;ldquo;&lt;strong&gt;Class&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3515.image_5F00_0246EAB7.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3583.image_5F00_thumb_5F00_1F6C92C1.png" alt="image" width="644" height="214" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And then fill the XML skelaton as follows (added comments that might help in xml). Save close and rename this fragment as &amp;ldquo;computer class.mpx&amp;rdquo;&lt;/p&gt;
&lt;table style="width: 815px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="813"&gt;
&lt;p&gt;&amp;lt;ManagementPackFragment SchemaVersion="1.0" xmlns:xsd="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;TypeDefinitions&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EntityTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- First we have the declare our class which will be based on Windows.Computer &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; since we need its properties and relationships --&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassType ID="CONTOSO.CustomComputerDiscovery.Computer" Base="Windows!Microsoft.Windows.Computer" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Accessibility="Public" Abstract="false" Hosted="false" Singleton="false"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- We&amp;nbsp; declared our Class above (the mpelement), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; now we need to declare the subelements (the properties).--&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property ID="Owner" Key="false" Type="string" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property ID="Environment" Key="false" Type="string" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property ID="ServiceName" Key="false" Type="string" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ClassType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ClassTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EntityTypes&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/TypeDefinitions&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;LanguagePacks&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LanguagePack ID="ENU" IsDefault="true"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayStrings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- IN this Section we are providing the actual Display Strings to be shown in Operations Console &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for our main (class) and sub elements (properties) --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.Computer"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Custom Computer Class for ING&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.Computer" SubElementID="Owner"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer Owner&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;TH Owner&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.Computer" SubElementID="Environment"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer Environment&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Test, Prod or Development&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.Computer" SubElementID="ServiceName"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer Service&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Service that owns CONTOSO Computer&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayStrings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LanguagePack&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/LanguagePacks&amp;gt; &lt;br /&gt;&amp;lt;/ManagementPackFragment&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Now we need the Discovery to be created , I wont be using the Advanced template as mentioned earlier since this is a very basic discovery I will edit the XML from scratch refering the providers MSDN Sample. To do so please add a &amp;ldquo;new item&amp;rdquo; under the &amp;ldquo;Discovery&amp;rdquo; folder naming &amp;ldquo;Computer Discovery.Mpx&amp;rdquo; and by selecting the &amp;ldquo;&lt;strong&gt;Empty Management Pack Fragment Template&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0878.image_5F00_20EDAED5.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8877.image_5F00_thumb_5F00_45329357.png" alt="image" width="644" height="227" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Paste the below fragment (I added comments that might help)&lt;/p&gt;
&lt;table style="width: 735px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="733"&gt;
&lt;p&gt;&amp;lt;ManagementPackFragment SchemaVersion="1.0" xmlns:xsd="&lt;a href="http://www.w3.org/2001/XMLSchema&amp;quot;"&gt;http://www.w3.org/2001/XMLSchema"&lt;/a&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Monitoring&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Discoveries&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Discovery ID="CONTOSO.CustomComputerDiscovery.ComputerDiscovery" Comment="Discover Extended Properties using Registry" Enabled="true" Target="Windows!Microsoft.Windows.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- IN previous Fragment (computer class.mpx we declared our class now are are discovering the instances using the &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.Windows.RegistryDiscoveryProvider the reason behind this provider is it lets multiple keys to be discovered at once. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DiscoveryTypes&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DiscoveryClass TypeID="CONTOSO.CustomComputerDiscovery.Computer"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property TypeID="CONTOSO.CustomComputerDiscovery.Computer" PropertyID="Owner" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property TypeID="CONTOSO.CustomComputerDiscovery.Computer" PropertyID="Environment" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property TypeID="CONTOSO.CustomComputerDiscovery.Computer" PropertyID="ServiceName" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DiscoveryClass&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DiscoveryTypes&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;lt;DataSource ID="ComputerDiscoveryDS" TypeID="Windows!Microsoft.Windows.RegistryDiscoveryProvider"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ComputerName&amp;gt;$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$&amp;lt;/ComputerName&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RegistryAttributeDefinitions&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeName&amp;gt;Owner&amp;lt;/AttributeName&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Path&amp;gt;SOFTWARE\CONTOSO\ComputerProperties\Owner&amp;lt;/Path&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PathType&amp;gt;1&amp;lt;/PathType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeType&amp;gt;1&amp;lt;/AttributeType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeName&amp;gt;Environment&amp;lt;/AttributeName&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Path&amp;gt;SOFTWARE\CONTOSO\ComputerProperties\Environment&amp;lt;/Path&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PathType&amp;gt;1&amp;lt;/PathType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeType&amp;gt;1&amp;lt;/AttributeType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeName&amp;gt;ServiceName&amp;lt;/AttributeName&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Path&amp;gt;SOFTWARE\CONTOSO\ComputerProperties\ServiceName&amp;lt;/Path&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PathType&amp;gt;1&amp;lt;/PathType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AttributeType&amp;gt;1&amp;lt;/AttributeType&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RegistryAttributeDefinition&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/RegistryAttributeDefinitions&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Frequency&amp;gt;86400&amp;lt;/Frequency&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClassId&amp;gt;$MPElement[Name="CONTOSO.CustomComputerDiscovery.Computer"]$&amp;lt;/ClassId&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;InstanceSettings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Settings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="CONTOSO.CustomComputerDiscovery.Computer"]/Owner$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Data/Values/Owner$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="CONTOSO.CustomComputerDiscovery.Computer"]/Environment$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Data/Values/Environment$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;$MPElement[Name="CONTOSO.CustomComputerDiscovery.Computer"]/ServiceName$&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Value&amp;gt;$Data/Values/ServiceName$&amp;lt;/Value&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Setting&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Settings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/InstanceSettings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DataSource&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/Discovery&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/Discoveries&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/Monitoring&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;LanguagePacks&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LanguagePack ID="ENU" IsDefault="true"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayStrings&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- This is the string users of the Operations Console and Web Console will see. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Descriptions are also helpful when the user is doing a search in the Console. --&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.ComputerDiscovery" SubElementID="ComputerDiscoveryDS"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer Discovery DataSource&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Registry Discovery Data Source based on Microsoft.Windows.RegistryDiscoveryProvider&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DisplayString ElementID="CONTOSO.CustomComputerDiscovery.ComputerDiscovery"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;CONTOSO Computer Discovery&amp;lt;/Name&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Registry Discovery based on Microsoft.Windows.RegistryDiscoveryProvider&amp;lt;/Description&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayString&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DisplayStrings&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LanguagePack&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/LanguagePacks&amp;gt; &lt;br /&gt;&amp;lt;/ManagementPackFragment&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check for Errros and Correct Them&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While building the solution VSAE will let you know if there are any issues like syntax errors, logical issues etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generate the MP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Press F6 or click Build\Build Solution in the menu bar. You will notice the MP XML output in the Bin\Debug in your Project Folder.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Import the MP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;VSAE has the capability of importing to the MG during build but I do this old school way by importing through Operations Manager console.&lt;/p&gt;
&lt;p&gt;Once the Discovery Runs for the comptuers those have the registry keys deployed you will see the properties populated. I wont be going through create a dynamic group in this post but just to refer again you can check with the Kevins post refered and use the groups in creating views, setting overrides or notifications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2134.image_5F00_4D9A7CAD.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8321.image_5F00_thumb_5F00_424142A3.png" alt="image" width="681" height="476" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope you enjoyed this post and helps as a kick start to VSA MP Authoring.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REFERENCES;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kevins &amp;ldquo;Creating Custom Dynamic Computer&amp;nbsp; Group&amp;rdquo; Post - &lt;a title="http://blogs.technet.com/b/kevinholman/archive/2009/06/10/creating-custom-dynamic-computer-groups-based-on-registry-keys-on-agents.aspx" href="http://blogs.technet.com/b/kevinholman/archive/2009/06/10/creating-custom-dynamic-computer-groups-based-on-registry-keys-on-agents.aspx"&gt;http://blogs.technet.com/b/kevinholman/archive/2009/06/10/creating-custom-dynamic-computer-groups-based-on-registry-keys-on-agents.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft.Windows.RegistryDiscoverySingleProvider - &lt;a title="http://msdn.microsoft.com/en-us/library/ff400197.aspx" href="http://msdn.microsoft.com/en-us/library/ff400197.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff400197.aspx&lt;/a&gt; (the provider scom console uses to create attributes)&lt;/li&gt;
&lt;li&gt;Microsoft.Windows.RegistryDiscoveryProvider - &lt;a title="http://msdn.microsoft.com/en-us/library/ff400189.aspx" href="http://msdn.microsoft.com/en-us/library/ff400189.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff400189.aspx&lt;/a&gt; (the provider I used to be able to use multiple keys as properties)&lt;/li&gt;
&lt;li&gt;Technet Wiki for using VSAE - &lt;a title="http://social.technet.microsoft.com/wiki/contents/articles/5236.visual-studio-authoring-extensions-for-system-center-2012-operations-manager-en-us.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/5236.visual-studio-authoring-extensions-for-system-center-2012-operations-manager-en-us.aspx"&gt;http://social.technet.microsoft.com/wiki/contents/articles/5236.visual-studio-authoring-extensions-for-system-center-2012-operations-manager-en-us.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3530985" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="MP Authoring" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/MP+Authoring/" /><category term="VSAE" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/VSAE/" /></entry><entry><title>Activating Expired OM 2012 to RTM</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2012/10/12/activating-expired-om-2012-to-rtm.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2012/10/12/activating-expired-om-2012-to-rtm.aspx</id><published>2012-10-12T13:23:00Z</published><updated>2012-10-12T13:23:00Z</updated><content type="html">&lt;p&gt;As we all know, Operations Manager 2012 requires activation through entering the well-known powershell command &amp;ldquo;set-scomlicense&amp;rdquo;. This is documented in &lt;a title="http://support.microsoft.com/kb/2699998" href="http://support.microsoft.com/kb/2699998"&gt;http://support.microsoft.com/kb/2699998&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Even though the license isn&amp;rsquo;t entered, OM12 will let you work &lt;strong&gt;180 days&lt;/strong&gt; and at the end SDK service will not authorize the connections from &lt;strong&gt;ANY console&lt;/strong&gt; including powershell &amp;ndash; hey wait! how am I supposed to run the powershell command then??? &amp;ndash; wait till the end of the post &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/5344.wlEmoticon_2D00_smile_5F00_5C5BCB3B.png" alt="Smile" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before diving into the details please check your license status using &amp;ldquo;Get-SCOMManagementGroup&amp;rdquo; and if your MG is not expired please set the license &lt;strong&gt;ASAP&lt;/strong&gt; not to cause an operations outage.&lt;/p&gt;
&lt;p&gt;The exception details can be found in Operations Manager Event Log , Event id 26319 (a generic authorization event);&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Exception message: &lt;strong&gt;You have exceeded the evaluation period of this product.&lt;/strong&gt; Please upgrade to the retail version to continue using the product. For information on purchasing the retail version of this product, go to &lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=74446"&gt;&lt;em&gt;http://go.microsoft.com/fwlink/?LinkID=74446&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;br /&gt;Full Exception: System.UnauthorizedAccessException: You have exceeded the evaluation period of this product. Please upgrade to the retail version to continue using the product. For information on purchasing the retail version of this product, go to &lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=74446"&gt;&lt;em&gt;http://go.microsoft.com/fwlink/?LinkID=74446&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;With &lt;strong&gt;Operations Manager 2012 Update Rollup 2&lt;/strong&gt; license can be entered after the period expired but if only you can connect to SDK right?? (Actually No)&lt;/p&gt;
&lt;p&gt;If you Install UR2 and try to open SCOM PowerShell console (Operations Manager Shell) you will receive the same exception because the console will try to connect to SDK service. However the Set-SCOMLicense cmdlet does not require SDK connection and does its job on the Management Server side with UR2.&lt;/p&gt;
&lt;p&gt;The easier solution (Solution 1) is based on bypassing the SDKconnection requirement by just loading the OM module but not connecting to SDK, the second option (Solution 2) is a Disaster Recovery of an MS (actually all MSs)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution 1;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The high-level steps of Activating the expired OM12;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Update to UR2 For details on UR2 please check Kevin&amp;rsquo;s Blog &lt;a title="http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx" href="http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx"&gt;http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On the updated MS open a Windows PowerShell Console (with run as Admin of course)&lt;/li&gt;
&lt;li&gt;Load OperationsManager Module&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;import-module OperationsManager&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;set the license without connecting to SDK&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Set-SCOMLicense -ProductId "yourlicensekey&amp;ldquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Restart SDK Service&lt;/li&gt;
&lt;li&gt;Please wait a couple minutes if you get a timeout, it might take sometime for SDK to initialize&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Solution 2;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In case the above steps don&amp;rsquo;t work (I hope it won&amp;rsquo;t be required) the second option is to run a disaster recovery for the management servers for details &lt;a title="http://technet.microsoft.com/en-us/library/hh531578.aspx" href="http://technet.microsoft.com/en-us/library/hh531578.aspx"&gt;http://technet.microsoft.com/en-us/library/hh531578.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The high-level steps of MS Recovery are as follows &amp;ndash; This has to be applied on all Management Servers;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Uninstall the MS role&lt;/li&gt;
&lt;li&gt;Reinstall the MS using the &amp;ldquo;to recover a Management Server&amp;rdquo; section in above technet article.&lt;/li&gt;
&lt;li&gt;Reenter all RunAs Accounts (all of them) using the steps &amp;ldquo;to Reconfigure the RunAs Accounts&amp;rdquo; and &amp;ldquo;To Remove SQL server Authentication&amp;rdquo; sections of the same article&lt;/li&gt;
&lt;li&gt;Once you can connect to SDK run Set-SCOMLicense&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I hope this explains and helps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disaster Recovery in System Center 2012 - Operations Manager - &lt;a title="http://technet.microsoft.com/en-us/library/hh531578.aspx" href="http://technet.microsoft.com/en-us/library/hh531578.aspx"&gt;http://technet.microsoft.com/en-us/library/hh531578.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kevin&amp;rsquo;s UR2 Experience - &lt;a title="http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx" href="http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx"&gt;http://blogs.technet.com/b/kevinholman/archive/2012/07/31/opsmgr-2012-update-rollup-2-ships-and-my-experience-installing-it.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to add a product key to an eval version of System Center 2012 Operations Manager - &lt;a title="http://support.microsoft.com/kb/2699998" href="http://support.microsoft.com/kb/2699998"&gt;http://support.microsoft.com/kb/2699998&lt;/a&gt; (please note this valid before the expiration)&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3525716" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="setup" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/setup/" /><category term="Troubleshooting" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Troubleshooting/" /></entry><entry><title>Adding Class Filter to Object Picker For Custom SCOM Reports</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2011/10/18/adding-class-filter-to-object-picker-for-custom-scom-reports.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2011/10/18/adding-class-filter-to-object-picker-for-custom-scom-reports.aspx</id><published>2011-10-18T11:45:00Z</published><updated>2011-10-18T11:45:00Z</updated><content type="html">&lt;p&gt;We all know selecting the correct object type in the reports had been an issue since RTM till R2. With SCOM R2 Object Picker Control has a new feature that allows you to filter report author to put a filter so that the Report Operator does not need figure out which one is right.&lt;/p&gt;
&lt;p&gt;New Management Packs usually utilize this feature and the reports are pre-filtered for us. In this post we will be adding this functionality to our custom reports those are Linked and as the sample report we will be using the one in my previous post &lt;a href="http://blogs.technet.com/b/emreguclu/archive/2011/10/13/using-linked-reports-in-scom-to-create-custom-availability-reports-for-specified-monitors.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the following steps were applied our report will have the functionality of out of box filtering.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2275.image_5F00_thumb_5F00_6F2B5B2F.png" alt="image" width="393" height="218" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;High Level Steps&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find out the class system name to filter&lt;/li&gt;
&lt;li&gt;Download the RPDL file from Report Manager&lt;/li&gt;
&lt;li&gt;Edit the RPDL (maybe a rename to xml)&lt;/li&gt;
&lt;li&gt;Upload the RPDL to Report Manager&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Find out the class name to filter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our report is based on the &amp;ldquo;Computer Not Reachable&amp;rdquo; monitor. Monitor Target is the class default name which is &amp;ldquo;Health Service Watcher&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4747.image_5F00_6CA22971.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7571.image_5F00_thumb_5F00_2ABB4423.png" alt="image" width="350" height="264" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But in the RPDL we are going to edit we will be using the ManagedEntityTypeSystemName. The following query will help finding out this (highlighted)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7077.image_5F00_081705A8.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8561.image_5F00_thumb_5F00_5DE757BF.png" alt="image" width="522" height="219" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp; we are going to use is the Microsoft.SystemCenter.HealthServiceWatcher.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download the RPDL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To Download the RPDL browse to the folder and download&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4857.image_5F00_thumb_5F00_5FF430BB.png" alt="image" width="391" height="241" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit The RPDL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The RPDLs are in XML format you can use any xml editor of your choice. I have cut the section in the xml which is our concern in this case&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0640.image_5F00_0439153E.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8156.image_5F00_thumb_5F00_05BA3152.png" alt="image" width="687" height="98" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;is the Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.MonitoringObjectXmlPicker control which is our object picker.&lt;/p&gt;
&lt;p&gt;By adding the property nodes circled with filtering the highlighted class (gathered in the first step)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1538.image_5F00_638225CB.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8081.image_5F00_thumb_5F00_68183085.png" alt="image" width="696" height="200" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once our properties were edited the RPDL don&amp;rsquo;t forget to save it before upload :).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Upload the RPDL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Upload is not worth to mention other then;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;keep the RPDL name save with the RDL name&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t forget to Overwrite the existing one&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3288.image_5F00_53463805.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4784.image_5F00_thumb_5F00_38999BEC.png" alt="image" width="413" height="236" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;How to Create a Linked Availability Report -&amp;nbsp; &lt;a title="http://technet.microsoft.com/en-us/library/ff833010.aspx" href="http://technet.microsoft.com/en-us/library/ff833010.aspx"&gt;http://technet.microsoft.com/en-us/library/ff833010.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3459926" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="Custom Reports" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Custom+Reports/" /><category term="Reporting" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Reporting/" /></entry><entry><title>Using Linked Reports in SCOM to Create Custom Availability Reports for Specified Monitors</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2011/10/13/using-linked-reports-in-scom-to-create-custom-availability-reports-for-specified-monitors.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2011/10/13/using-linked-reports-in-scom-to-create-custom-availability-reports-for-specified-monitors.aspx</id><published>2011-10-13T11:14:00Z</published><updated>2011-10-13T11:14:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As a SCOM engineer we face a common scenario when the Generic Report Library Availability Reports&amp;nbsp; returns more than we expected. This is because the Generic Report returns the result for System.Health.AvailabilityState including the states that we don&amp;rsquo;t want to include in our reports.&lt;/p&gt;
&lt;p&gt;For example; Lets think of the scenario we are just interested in The Computer Not Reachable Monitor&amp;nbsp; (the one that does a wmi ping when heartbeats are missed) and would like to provide just the Availability of this monitor. If we used the generic availability it will be including the action account misconfigurations, heartbeats etc.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0020.image_5F00_7CB5ABD3.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0284.image_5F00_thumb_5F00_48A10C80.png" alt="image" width="481" height="181" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This blog post tries to address this kind of customization using &lt;strong&gt;linked reports&lt;/strong&gt; and at the end you will be able to create a report like this (note the highlighted monitor name).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3833.image_5F00_11777E87.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2744.image_5F00_thumb_5F00_23DFCF3C.png" alt="image" width="634" height="377" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This solution can be very useful in if you are interested in the duration of the peak of a performance counter like total CPU utilization peak durations by just changing the MonitorName parameter explained in this post.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a great blog on details of the linked reports (please check references) of Eugene covering the xml internals of the linked reports with almost the same example scenario.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;High Level Steps&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create A linked Report to existing Availability Report in Generic Report Library&lt;/li&gt;
&lt;li&gt;Customize the linked Report to filter the monitor (change the MonitorName parameter) that we require in our scenario&lt;/li&gt;
&lt;li&gt;Copy the Report Definition File of the Original Availability report to use the controls in scom reporting.&lt;/li&gt;
&lt;li&gt;Run the report.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Creating the Linked Report&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The report and the we are going to link is in the The report in this example we are going to link is in DataWarehouse library. We will be using report manager for this (default: &lt;a href="http://servername/reports"&gt;http://servername/reports&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3632.image_5F00_4CCDC702.png"&gt;&lt;img style="display: inline; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0412.image_5F00_thumb_5F00_21C5B330.png" alt="image" width="457" height="161" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The report we are going to link (the Availability) report and the RPDL to be copied are both highlighted.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1373.image_5F00_5C7A537C.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7043.image_5F00_thumb_5F00_40F55179.png" alt="image" width="476" height="142" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the properties of the Availability Report we use the &lt;strong&gt;Create Linked Report&lt;/strong&gt; button/link (this is the same for 2005 reporting services and 2008) and then specify the name and target location of where our new linked report will be stored. Note that the default is the same location of the existing report so it would be a good practice to create in a custom folder.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4010.image_5F00_37B91638.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0513.image_5F00_thumb_5F00_3CBB53E7.png" alt="image" width="429" height="172" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customize the linked Report To filter for the desired monitor&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now we have our linked report (Computer Not Reachable Availability) in Emres Custom Reports Folder waiting to be customized. First we browse to the properties of the report.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/6560.image_5F00_3B0A8813.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/0525.image_5F00_thumb_5F00_2B1B434F.png" alt="image" width="690" height="222" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Under Parameters we will be changing the&lt;strong&gt; MonitorName&lt;/strong&gt; to from System.Health.Availability to HealthService.ComputerDown&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8623.image_5F00_36D08A81.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7462.image_5F00_thumb_5F00_202E3C3A.png" alt="image" width="692" height="88" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We need to use the Monitor System Name to pass to MonitorName Parameter. Using a query similar to the following one will help in figuring out the System Name for the monitor. In&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8055.image_5F00_77432730.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3660.image_5F00_thumb_5F00_223B1536.png" alt="image" width="514" height="333" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Copy the RPDL to be able to use the controls&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We now have our linked report customized for the desired monitor (Computer Not Reachable) and to be able to use the SCOM Reporting controls like datetime picker, objectpicker etc. we need to provide the report definition file. (RPDL is highlighted in the &amp;ldquo;creating linked report&amp;rdquo; section).&lt;/p&gt;
&lt;p&gt;From the Datawarehouse Report Library Folder copy the Microsoft.SystemCenter.Datawarehouse.Report.Availability.rpdl to the folder where the linked report exists with the same name of the report (highlighted)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1033.image_5F00_38ADB3BD.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8055.image_5F00_thumb_5F00_5784279B.png" alt="image" width="349" height="208" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Run The Report&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Running the report is just the same experience with the existing availability reports, we just need to be careful in adding objects that are of the target type of the monitor we filtered.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/3833.image_5F00_11777E87.png"&gt;&lt;img style="display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2744.image_5F00_thumb_5F00_23DFCF3C.png" alt="image" width="634" height="377" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Things not to forget&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Be careful in adding the objects of the target class of the monitor to your report&lt;/li&gt;
&lt;li&gt;Use the Monitor System Name in the linked report not the display name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Rerefences:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to Add linked reports to an MP - &lt;a title="http://blogs.msdn.com/b/eugenebykov/archive/2007/05/21/linked-reports.aspx" href="http://blogs.msdn.com/b/eugenebykov/archive/2007/05/21/linked-reports.aspx"&gt;http://blogs.msdn.com/b/eugenebykov/archive/2007/05/21/linked-reports.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Great detail on the XMLs for the SCOM linked Reports - &lt;a title="http://blogs.msdn.com/b/eugenebykov/archive/2007/09/14/linked-availability-reports.aspx" href="http://blogs.msdn.com/b/eugenebykov/archive/2007/09/14/linked-availability-reports.aspx"&gt;http://blogs.msdn.com/b/eugenebykov/archive/2007/09/14/linked-availability-reports.aspx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3459053" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="Custom Reports" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Custom+Reports/" /><category term="Reporting" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Reporting/" /></entry><entry><title>Empty Exchange 2010 Server Statistics/Mailflow Reports if default log directory has changed</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/emreguclu/archive/2011/09/26/empty-exchange-2010-server-statistics-mailflow-reports-if-default-log-directory-has-changed.aspx" /><id>http://blogs.technet.com/b/emreguclu/archive/2011/09/26/empty-exchange-2010-server-statistics-mailflow-reports-if-default-log-directory-has-changed.aspx</id><published>2011-09-26T11:51:00Z</published><updated>2011-09-26T11:51:00Z</updated><content type="html">&lt;p&gt;Exchange 2010 mp 14.02.0071.0&lt;/p&gt;
&lt;p&gt;You might be experiencing empty report issues for the following reports if the default log paths for exchange message tracking are changed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daily Mailflow Statistics&lt;/li&gt;
&lt;li&gt;Hourly Mailflow Statistics&lt;/li&gt;
&lt;li&gt;Distribution Group Usage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post is covering the solution and the way that Exchange 2010 MP collecting the data for these Reports.&lt;/p&gt;
&lt;p&gt;Exchange 2010 MP utilizes System.ApplicationLog.GenericCSVLogReader module type as the datasource to collect data from message tracking logs for server statistics. The overridable parameters for this data source (therefore the rules using this datasource) are LogFileDirectory and LogFilePattern.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/4705.image_5F00_1FA425BB.png"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2664.image_5F00_thumb_5F00_60DF0287.png" alt="image" width="716" height="437" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are 6 rules using this datasource module with write actions collecting the data to DW in Microsoft.Exchange.2010.Reports.mp.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1425.image_5F00_468E7396.png"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1033.image_5F00_thumb_5F00_0D6770C7.png" alt="image" width="717" height="257" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These rules collect the data which can be viewed through the vServerStatisticsRawV14 view in DW. Then the data is aggregated to hourly and daily views using custom aggregations (lest pause our story here and leave these custom aggregations not to distract from the root issue) so that the reports (mentioned in the beginning) query.&lt;/p&gt;
&lt;p&gt;The default LogFileDirectory for all these roles (edge and hub transport roles) includes the default exchange installation path are as follows.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For ServerStats:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/8461.image_5F00_2140B7C3.png"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/1440.image_5F00_thumb_5F00_71366641.png" alt="image" width="668" height="98" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For ActiveUserStats:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/7331.image_5F00_039EB6F7.png"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2541.image_5F00_thumb_5F00_5F49ACA7.png" alt="image" width="680" height="83" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If the Exchange Admin Decides to change this path to a custom one then the rule in OpsMgr wont be aware of the change unless the OpsMgr Admin overrides and therefore wont be collected to DW.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following Exchange shell command could be used to determine which servers are not on defaults.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/2553.image_5F00_3F6B231F.png"&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-96-metablogapi/6663.image_5F00_thumb_5F00_58F2B04C.png" alt="image" width="694" height="122" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;for determining the ActiveUserStatistics &amp;ldquo;get-transportServer | Format-Table Name,ActiveUserStatisticsLogPath&amp;rdquo; can be used.&lt;/p&gt;
&lt;p&gt;Once the servers and the custom LogFileDirectories are Identified the following rules needs to be overrided for the new ones.&lt;/p&gt;
&lt;p&gt;Below is a simple table with what to override and how.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style="width: 764px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="10"&gt;&lt;strong&gt;Rule Name&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="202"&gt;&lt;strong&gt;Override&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="448"&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Edge Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Edge.ActiveUserMailflowStatistics.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ActiveUsersStats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Edge Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Edge.ServerMailflowStatistics.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ServerStats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Edge Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Edge.ServerMailflowStatisticsNew.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ServerStats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Hub Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Hub.ActiveUserMailflowStatistics.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ActiveUsersStats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Hub Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Hub.ServerMailflowStatistics.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ServerStats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="102"&gt;Hub Transport&lt;/td&gt;
&lt;td valign="top" width="10"&gt;Microsoft.Exchange.2010.Reports.Transport.Hub.ServerMailflowStatisticsNew.DataCollection&lt;/td&gt;
&lt;td valign="top" width="202"&gt;LogFileDirectory&lt;/td&gt;
&lt;td valign="top" width="448"&gt;F:\Exchange Logs\ServerStats&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;System.ApplicationLog.GenericCSVLogReader - &lt;a title="http://msdn.microsoft.com/en-us/library/ff427477.aspx" href="http://msdn.microsoft.com/en-us/library/ff427477.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff427477.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Exchange 2010 MP Guide - &lt;a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=692" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=692"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=692&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3455529" width="1" height="1"&gt;</content><author><name>Emre Guclu</name><uri>http://blogs.technet.com/emreguclu/ProfileUrlRedirect.ashx</uri></author><category term="Troubleshooting" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Troubleshooting/" /><category term="Exchange 2010 MP" scheme="http://blogs.technet.com/b/emreguclu/archive/tags/Exchange+2010+MP/" /></entry></feed>