OpsMgr 2007: Discovery data processing fails with "Invalid monitoring class property value" message

Here's a cool tip from Michael Sadoff, a Senior Support Escalation Engineer in North Carolina.  If you're seeing Health Service Modules throw 10801 events then this may be your issue:

========

Issue: When you upgrade a custom management pack in System Center Operations Manager 2007, discovery of a class defined in the management pack starts to fail. This occurs even if you did not modify the class or the discovery for that class. When the discovery data is submitted from agents, management servers fail to process the discovery data and log an event that is similar to the following:

Event Type: Error
Event Source: Health Service Modules
Event Category: None
Event ID: 10801
Description: Discovery data couldn't be inserted to the database. This could have happened because  of one of the following reasons:

                - Discovery data is stale. The discovery data is generated by an MP recently deleted.
                - Database connectivity problems or database running out of space.
                - Discovery data received is not valid.

The following details should help to further diagnose:

DiscoveryId: 4c00eda6-1913-4c16-6636-059f423f13cf
HealthServiceId: 4a7a1065-7d87-c70f-8aad-815b9e7fd124
Invalid monitoring class property value specified in the discovery data item.The value needs to adhere to the type.
MonitoringClassPropertyName: Vendor.Product.Class.Property
MonitoringClassPropertyValue:
RuleId: 4c00eda6-1913-4c16-6636-059f423f13cf

<Raw XML for the discovery appears here>

In the above message, the MonitoringClassPropertyValue is null.

Cause: This can occur if a class property is defined with a MinLength attribute that is greater than or equal to 1, such as the properties in the following class definition:

        <ClassType ID="Microsoft.SNMP.Service" Accessibility="Public" Abstract="false" Base="NetworkDevice!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
          <Property ID="Snmp_Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_OID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_Uptime" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_Contact" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_Name" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_Location" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Snmp_Services" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>

In this scenario, if the property value returned by the discovery is null, the discovery data is rejected because it does not meet the MinLength requirement. This issue was reported in a class derived from the SNMP Network Device class, however other class types could be affected.

Resolution: MinLength is an optional attribute. If omitted from a property definition, the default is 0. Therefore, you can resolve this by removing the MinLength attribute from the property definition or changing it to MinLength=0.

========

Thanks Michael!

J.C. Hornbeck | Manageability Knowledge Engineer