This document describes the compile-time compatibility support in the System Center 2012 – Operations Manager software development kit (SDK) by guiding you through the process of updating your old Operations Manager 2007 R2 client code to support the new Operations Manager binaries.
This document also contains descriptions of the key areas in the Operations Manager SDK that have changed.
Setting Up Your Visual Studio Environment
- Ensure that you have the Microsoft .NET Framework 4
installed on your system.
- Start Microsoft Visual Studio 2008 or
Visual Studio 2010.
- Open the project that contains your old Operations Manager 2007
R2 client code.
- Remove all references to the following Operations Manager 2007
R2 binaries:
- Microsoft.EnterpriseManagement.OperationsManager.Common.dll
- Microsoft.EnterpriseManagement.OperationsManager.dll
- Microsoft.EnterpriseManagement.UI.Extensibility.dll
- Microsoft.EnterpriseManagement.OperationsManager.Common.dll
- In the project’s properties dialog box, change the target
framework for your project to .NET Framework 4.
- Add references to the following Operations Manager
binaries:
- Microsoft.EnterpriseManagement.Core.dll
- Microsoft.EnterpriseManagement.OperationsManager.dll
- Microsoft.EnterpriseManagement.Runtime.dll
- Microsoft.EnterpriseManagement.Core.dll
- Compile your project. Check the warning list regarding obsolete
APIs. Fix the obsolete APIs as directed.
Although the warning messages tell you how to change your old code, in many cases a little more information is helpful. The following section contains information about some of the class library changes in Operations Manager. You can use this information to find the new APIs.
Class Library Implementation Changes
The following are the key areas in the Operations Manager SDK that have changed.
- ManagementGroup Class
- In the Operations Manager 2007 R2 SDK, the ManagementGroup class had more than 5,000
members. To simplify the use of this class and make it easier to
find members, its members have been split into functional
interfaces and corresponding class implementations. These class
implementations are accessible by their corresponding properties on
the ManagementGroup class. Almost all of the Get-
methods that are defined in this class have been marked as
obsolete.
- Management Pack Classes
- In the Operations Manager 2007 R2 SDK, all management pack type
classes had names that contained a Monitoring- prefix. For example,
the class that represented a rule type that was defined in a
management pack was called a MonitoringRule. In the System
Center 2012 – Operations Manager SDK, all classes
that represent or relate to the type definition instance in a
management pack now have a ManagementPack- prefix. See the
following table for some examples.
-
Operations Manager 2007 R2 SDK version System Center 2012 – Operations Manager SDK version - MonitoringClass
- MonitoringClassProperty
- MonitoringRuleCriteria
- MonitoringRule
- MonitoringViewType
- MonitoringFolder
- MonitoringFolderCriteria
- ManagementPackClass
- ManagementPackClassProperty
- ManagementPackRuleCriteria
- ManagementPackRule
- ManagementPackViewType
- ManagementPackFolder
- ManagementPackFolderCriteria
- MonitoringClass
- Accessing Monitoring Objects: IObjectReader
- In the Operations Manager 2007 R2 SDK, you used the
GetMonitoringObjects method from the management group object. This
method is now obsolete. In the System
Center 2012 – Operations Manager SDK, you must get
an interface reference from the ManagementGroup’s property. When you get the
interface, you can then call the method, which returns an
IEnumeration object:
-
private static MonitoringObject GetComputerMonitoringObject(string computerFQDN) { ManagementPackClass windowsComputerClass = mg.EntityTypes.GetClass(SystemMonitoringClass.WindowsComputer); MonitoringObjectGenericCriteria monitoringObjectCriteria = new MonitoringObjectGenericCriteria(string.Format("PrincipalName = '{0}'", computerFQDN)); IObjectReader<MonitoringObject> reader = mg.EntityObjects.GetObjectReader<MonitoringObject>(monitoringObjectCriteria, windowsComputerClass, ObjectQueryOptions.Default); List<MonitoringObject> monitoringObjects = new List<MonitoringObject>(); monitoringObjects.AddRange (reader); return (monitoringObjects[0]); }
- Getting and Setting Monitoring Object Properties
- In the Operations Manager 2007 R2 SDK, you were able to get or
set a monitoring or partial monitoring object property by calling
the GetMonitoringPropertyValue method on the object. In the System
Center 2012 – Operations Manager SDK, the monitoring
or partial monitoring objects are defined with a dictionary indexer
that makes it possible for you to get or set any one property by
passing in that property definition object:
-
static void GetSetPropertyValues(MonitoringObject mObject) { foreach(ManagementPackProperty property in mObject.GetProperties()) { mObject[property] = “Some Value”; Console.WriteLine(" " + property.Name + " = " + mObject[property].Value.ToString()); } }
- Getting and Setting Management Pack Class Properties
- Getting and setting management pack class properties is similar
to getting and setting monitoring object properties. (See the
previous section.) You can access the indexer on the management
pack class object to set or get the property value:
-
static void GetSetPropertyValues(ManagementPackClass mClass) { mClass[“PropertyName2”].Value =”1”; mClass[“PropertyName2”].Value =”2”; Console.WriteLine(mClass[“PropertyName1”].Value.ToString()); Console.WriteLine(“\n”); Console.WriteLine(mClass[“PropertyName2”].Value.ToString()); }
- Collections
- In the Operations Manager 2007 R2 SDK, most of the collection
Get- methods returned a ReadOnlyCollection<T> collection
object. In the System Center 2012 – Operations
Manager SDK, all of the new Get- methods now return an
IList<T> collection object:
-
ManagementGroup mg = new ManagementGroup("localhost"); IList<ManagementPackMonitor> monitors = mg.Monitoring.GetMonitors(); IList<ManagementPackRule> rules = mg.Monitoring.GetRules();
- Criteria Objects
- In the Operations Manager 2007 R2 SDK, you had the option of
passing in a criteria string as a single parameter. In the System
Center 2012 – Operations Manager SDK, none of the
Get- methods support a string parameter. Instead, you must always
use the corresponding criteria object as a parameter:
-
ManagementGroup mg = new ManagementGroup(“localhost”); string criteria = string.Format("DisplayName = '{0}'", displayName); ManagementPackCriteria mpCriteria = new ManagementPackCriteria(criteria); ManagementPack mp = mg.ManagementPacks.GetManagementPacks(mpCriteria)[0];