Skip to content

Hyper-V class and relationship model ​

The object model must represent operational ownership without making transient placement part of an object's identity. A VM can move between cluster nodes; its SCOM identity must survive that move. A host adapter cannot move between computers; its identity can be hosted by the host. This distinction drives class keys, hosting, relationship discovery, workflow placement, and upgrade safety.

ADR 0028 accepts the namespace and identity strategy. The functional development Library MP now implements the first-release model; operator lab migration, scale, and upgrade tests follow installation and feed version-increased corrections.

Conceptual object model ​

Rendering diagram…

This is a service model, not a promise to discover every possible child by default. High-cardinality classes such as virtual disks and VM network adapters require an explicit catalog and scale decision.

Class categories ​

CategoryCandidate classesIdentity and placement rule
Service boundaryDeployment, Cluster, Standalone Host BoundaryStable cluster identity or host principal name; never a display name alone
ComputeHyper-V Host Role, Cluster Node, VMHost follows Windows computer; VM uses Hyper-V VM GUID and is contained by the stable boundary
ClusterCluster, Quorum, Clustered Role, Cluster Resource, Cluster NetworkPrefer stable cluster identifiers and approved Microsoft cluster base types where supportable
StorageCSV, volume, virtual disk, VHD/VHDX, storage path, Replica relationshipKeys use provider IDs or canonical paths with documented normalization
NetworkPhysical adapter, switch, port, VM adapter, Network ATC intent, SDN authorityHost-local components are hosted by host; authority objects are scoped to the boundary
ManagementSCVMM management relationship, Network Controller dependencyReference relationships only when the topology selects that authority
MonitoringBoundary monitoring pipeline and discovery freshnessOne platform-owned instance per DA boundary

Identity decision tree ​

Rendering diagram…

VM mobility contract ​

Rendering diagram…

The VM is not hosted by a cluster node. Hosting it by a node would change its SCOM identity when it moves and could orphan health history, alerts, relationships, and overrides.

Relationship semantics ​

Rendering diagram…
RelationshipUseDo not use for
HostingA child truly exists on one parent and workflows must execute thereMobile VMs, cross-node cluster objects, or presentation-only grouping
ContainmentA boundary or component group owns members for service modelingInferring where a workflow can execute
ReferenceCurrent placement, Replica pairing, external authority, or another non-lifecycle dependencyDeleting a child when a source disappears

Candidate keys ​

EntityPreferred keyFallback requiring proofNever use alone
Failover clusterStable cluster/provider IDCanonical cluster fully qualified domain nameFriendly display name
Standalone boundaryWindows computer principal name plus role identityMachine GUID with rename migration planNetBIOS name only
VMHyper-V VM GUIDNone unless Microsoft changes the provider contractVM name or current host
CSVCluster-scoped volume unique IDNormalized CSV path plus cluster keyOwner node or drive label
Virtual switchHost key plus switch GUIDHost key plus invariant provider nameDisplay name without host
Physical adapterHost key plus interface GUIDHost key plus permanent hardware identifierInterface index alone
ReplicaSource VM ID plus target relationship/provider IDNormalized endpoint tupleFriendly replication name

Class modeling rules ​

  • Model only entities that need independent health, targeting, properties, relationships, views, overrides, or lifecycle. A property bag is preferable when a first-class object adds no value.
  • Target workflows at the narrowest stable class that owns the signal.
  • Keep class properties small, stable, operationally meaningful, and safe to store. Do not store rapidly changing measurements as properties.
  • Every discovered class has a deterministic display name and every public property has a localized display string.
  • Never use a mutable friendly name as the sole key.
  • Avoid deep hosting chains; each level increases identity, discovery, and workflow complexity.
  • Separate current placement from identity for every mobile or failover-capable object.
  • Explicitly document whether disappearance means deletion, stale topology, monitoring failure, or temporary unavailability.

Implemented class reference ​

The following table documents every class implemented in the Hyper-V Private Cloud Monitoring solution:

Core Service and Distributed Application Classes ​

Class IDBase ClassHosting ParentKey PropertyRole in Solution
HyperVPrivateCloud.ServiceSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceUnhosted (Root)BoundaryIdRoot of the Distributed Application representing a Failover Cluster or Standalone Host.
HyperVPrivateCloud.ComputeComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains HyperVPrivateCloud.HostRole and physical server hardware objects.
HyperVPrivateCloud.VirtualMachineComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains HyperVPrivateCloud.VirtualMachine instances with 25% rollup policy.
HyperVPrivateCloud.StorageComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains CSVs, S2D pools, Pure Storage arrays, and SMB shares.
HyperVPrivateCloud.NetworkComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains virtual switches, physical adapters, ToR ports, and firewalls.
HyperVPrivateCloud.AvailabilityComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains cluster quorum, clustered roles, and heartbeat monitors.
HyperVPrivateCloud.ManagementInfrastructureComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains AD domain services, DNS resolution services, and WDS deployment services.
HyperVPrivateCloud.MonitoringPipelineComponentSystemCenter!Microsoft.SystemCenter.ServiceDesigner.ServiceComponentUnhosted (DA Branch)IdContains HyperVPrivateCloud.MonitoringPipeline self-monitoring instances.

Operational Managed Object Classes ​

Class IDBase ClassHosting ParentKey PropertyPurpose
HyperVPrivateCloud.HostRoleWindows!Microsoft.Windows.ComputerRoleWindows!Microsoft.Windows.ComputerPrincipalName (inherited)Represents the Hyper-V host role on a Windows Server node.
HyperVPrivateCloud.VirtualMachineSystem!System.LogicalEntityHyperVPrivateCloud.HostRoleVirtualMachineId (VM GUID)Discovered per-VM object tracking configuration, heartbeat, integration services, and memory.
HyperVPrivateCloud.ClusterSharedVolumeSystem!System.LogicalEntityHyperVPrivateCloud.HostRoleVolumeIdDiscovered CSV volume representing shared cluster disk storage.
HyperVPrivateCloud.ActiveDirectoryServiceSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, DomainFqdnTracks host AD secure channel, domain controller connectivity, and AD site.
HyperVPrivateCloud.DnsServiceSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, DnsServerAddressesTracks adapter DNS resolver configuration and forward name resolution.
HyperVPrivateCloud.DeploymentServiceSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, ServerNameTracks Windows Deployment Services (WDSServer), TFTP, and PXE listeners.
HyperVPrivateCloud.PhysicalChassisSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, ChassisIdTracks physical server hardware, chassis, manufacturer, model, and serial number.
HyperVPrivateCloud.TopOfRackSwitchSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, SwitchIdTracks physical Top-of-Rack data switch uplinks, role, and chassis correlation.
HyperVPrivateCloud.OutOfBandSwitchSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, SwitchIdTracks physical Out-of-Band management network switch infrastructure.
HyperVPrivateCloud.EdgeFirewallSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, FirewallIdTracks perimeter firewall appliances, HA cluster role, and routing gateway health.
HyperVPrivateCloud.ConsoleServerSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, ApplianceIdTracks Opengear out-of-band console servers, cellular failover, and serial ports.
HyperVPrivateCloud.DhcpServiceSystem!System.LogicalEntityUnhosted (DA Member)BoundaryId, ServiceIdTracks DHCP and IPAM scope availability and pool exhaustion.
HyperVPrivateCloud.MonitoringPipelineWindows!Microsoft.Windows.LocalApplicationWindows!Microsoft.Windows.ComputerPipelineIdTracks PowerShell 7 engine health, discovery freshness, and probe execution.

Capability Classes & Adapters ​

CapabilityTarget Class IDBase ClassHosting ParentIntegration Scope
ClusterHyperVPrivateCloud.Capability.Cluster.ClusterRoleWindows!Microsoft.Windows.ComputerRoleCluster!Microsoft.Windows.Cluster.VirtualServerExecutes once per cluster on the active core quorum node.
StorageHyperVPrivateCloud.Capability.Storage.StorageFabricRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleEvaluates MPIO paths, iSCSI sessions, and Fibre Channel fabrics.
S2DHyperVPrivateCloud.Capability.S2D.S2DFabricRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleEvaluates Storage Spaces Direct pools, virtual disks, and faults.
Pure StorageHyperVPrivateCloud.Capability.PureStorage.PureStorageArrayRoleSystem!System.LogicalEntityUnhostedCorrelates FlashArray hardware and volume health into the DA.
File ServicesHyperVPrivateCloud.Capability.FileServices.FileServicesRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleMonitors SMB clients, shares, and SOFS storage endpoints.
Physical NetworkHyperVPrivateCloud.Capability.PhysicalNetwork.PhysicalNetworkRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleMonitors physical adapters, link states, discards, and ToR switch port LLDP info.
Network ATCHyperVPrivateCloud.Capability.NetworkATC.NetworkATCRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleMonitors Network ATC intent compliance, drift, and RDMA/QoS policies.
SDNHyperVPrivateCloud.Capability.SDN.SDNRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleMonitors host-side Network Controller binding, certificates, and virtual networks.
VMMHyperVPrivateCloud.Capability.VMM.VMMRoleWindows!Microsoft.Windows.ComputerRoleHyperVPrivateCloud.HostRoleMonitors SCVMM fabric connectivity, agent versions, and failed jobs.
OpengearHyperVPrivateCloud.Capability.Opengear.ConsoleServerRoleSystem!System.LogicalEntityUnhostedOut-of-band serial console appliance, cellular failover, and rack sensors.
FortinetHyperVPrivateCloud.Capability.Fortinet.FirewallRoleSystem!System.LogicalEntityUnhostedFortiGate perimeter firewall, HA failover, and firewall-managed DHCP scopes.
Dell OMEHyperVPrivateCloud.Capability.DellOME.HardwareChassisRoleSystem!System.LogicalEntityUnhostedDell OpenManage Enterprise physical server hardware, PSU, and thermal telemetry.
Generic SNMPHyperVPrivateCloud.Capability.Network.GenericSNMPRoleSystem!System.LogicalEntityUnhostedVendor-neutral SNMP v2c/v3 adapter for any ToR switch (Cisco, Arista) or firewall.

Boundary variants ​

Rendering diagram…

Release-validation gates ​

Before the first signed release, topology and lab research must prove:

  1. the stable key for every supported entity;
  2. the appropriate Microsoft base class and library dependency;
  3. workflow execution location for hosted, unhosted, and cluster-owned objects;
  4. deletion and rediscovery behavior during rename, live migration, failover, drain, and role removal;
  5. scale/cardinality for optional child classes; and
  6. whether SCVMM/SDN objects are modeled directly or represented as external dependencies.

Released under the MIT License.